From a96b77555e489f5af46fb044f1baed19c4aee6a7 Mon Sep 17 00:00:00 2001 From: danielgrippi Date: Tue, 5 Jul 2011 22:26:44 -0700 Subject: [PATCH] DHHHHHHHHHHHHHHHHHHHHHHHHHH hovercard caching with subscription on state change --- public/javascripts/contact-edit.js | 4 +++- public/javascripts/diaspora.js | 9 ++++++--- public/javascripts/widgets/hovercard.js | 4 ++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/public/javascripts/contact-edit.js b/public/javascripts/contact-edit.js index bcdb86542..5c6b5036d 100644 --- a/public/javascripts/contact-edit.js +++ b/public/javascripts/contact-edit.js @@ -24,7 +24,7 @@ var ContactEdit = { }else if (number > 3) { replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.many', { count: number.toString()}) }else { - //the above one are a totalogy, but I want to have them here once for once we figure out a neat way i18n them + //the above one are a tautology, but I want to have them here once for once we figure out a neat way i18n them replacement = Diaspora.widgets.i18n.t('aspect_dropdown.toggle.other', { count: number.toString()}) } @@ -51,6 +51,8 @@ var ContactEdit = { }, function(aspectMembership) { ContactEdit.toggleCheckbox(checkbox); ContactEdit.updateNumber(li.closest(".dropdown_list"), li.parent().data("person_id"), aspectMembership.aspect_ids.length); + + Diaspora.widgets.publish("aspectDropdown/updated", [li.parent().data("person_id"), li.parents(".dropdown").get(0).outerHTML]); }); }, }; diff --git a/public/javascripts/diaspora.js b/public/javascripts/diaspora.js index 8543f8afc..55a4bf509 100644 --- a/public/javascripts/diaspora.js +++ b/public/javascripts/diaspora.js @@ -39,11 +39,14 @@ }; Diaspora.WidgetCollection.prototype.subscribe = function(id, callback, context) { - this.eventsContainer.bind(id, $.proxy(callback, context)); + var ids = id.split(" "); + for(var id in ids) { + this.eventsContainer.bind(ids[id], $.proxy(callback, context)); + } }; - Diaspora.WidgetCollection.prototype.publish = function(id) { - this.eventsContainer.trigger(id); + Diaspora.WidgetCollection.prototype.publish = function(id, args) { + this.eventsContainer.trigger(id, args); }; Diaspora.widgets = new Diaspora.WidgetCollection(); diff --git a/public/javascripts/widgets/hovercard.js b/public/javascripts/widgets/hovercard.js index 2ea406e4d..b93bb6015 100644 --- a/public/javascripts/widgets/hovercard.js +++ b/public/javascripts/widgets/hovercard.js @@ -22,6 +22,10 @@ $(document.body).delegate("a.author", "hover", self.handleHoverEvent); self.hoverCard.tip.hover(self.hoverCardHover, self.clearTimeout); + + Diaspora.widgets.subscribe("aspectDropdown/updated aspectDropdown/blurred", function(evt, personId, dropdownHtml) { + self.dropdownCache.cache["/people/" + personId + "/aspect_membership_button"] = $(dropdownHtml).removeClass("active").get(0).outerHTML; + }); }; this.handleHoverEvent = function(evt) {