From ed4020b9b3e409d9ca6af2a16108db0bbbedc402 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabi=C3=A1n=20Rodr=C3=ADguez?= <fabianrbz@gmail.com>
Date: Tue, 1 Jan 2013 18:00:58 -0200
Subject: [PATCH] Update stream's title and publisher's dropdown on aspect
 selection

---
 .../javascripts/app/collections/aspects.js    |  2 +-
 app/assets/javascripts/app/router.js          |  4 ++-
 .../app/views/aspects_list_view.js            |  6 ++++
 .../app/views/publisher/aspects_selector.js   | 35 +++++++++++++++----
 4 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/app/assets/javascripts/app/collections/aspects.js b/app/assets/javascripts/app/collections/aspects.js
index 1351db0440..aeeacb5428 100644
--- a/app/assets/javascripts/app/collections/aspects.js
+++ b/app/assets/javascripts/app/collections/aspects.js
@@ -20,6 +20,6 @@ app.collections.Aspects = Backbone.Collection.extend({
   },
 
   toSentence: function(){
-    return this.selectedAspects('name').join(", ").replace(/,\s([^,]+)$/, ' and $1')
+    return this.selectedAspects('name').join(", ").replace(/,\s([^,]+)$/, ' and $1') || 'My Aspects'
   }
 })
diff --git a/app/assets/javascripts/app/router.js b/app/assets/javascripts/app/router.js
index 2cd7d775df..f1aa32b956 100644
--- a/app/assets/javascripts/app/router.js
+++ b/app/assets/javascripts/app/router.js
@@ -97,7 +97,9 @@ app.Router = Backbone.Router.extend({
     app.stream.fetch();
 
     app.page = new app.views.Stream({model : app.stream});
-    app.publisher = new app.views.Publisher({collection : app.stream.items});
+    app.publisher = app.publisher || new app.views.Publisher({collection : app.stream.items});
+    app.publisher.updateAspectsSelector(ids);
+
     var streamFacesView = new app.views.StreamFaces({collection : app.stream.items});
 
     $("#main_stream").html(app.page.render().el);
diff --git a/app/assets/javascripts/app/views/aspects_list_view.js b/app/assets/javascripts/app/views/aspects_list_view.js
index ef33d2ad5e..468a79b8ab 100644
--- a/app/assets/javascripts/app/views/aspects_list_view.js
+++ b/app/assets/javascripts/app/views/aspects_list_view.js
@@ -9,11 +9,13 @@ app.views.AspectsList = app.views.Base.extend({
 
   initialize: function(){
     this.collection.on('change', this.toggleSelector, this);
+    this.collection.on('change', this.updateStreamTitle, this);
   },
 
   postRenderTemplate: function() {
     this.collection.each(this.appendAspect, this);
     this.$('a[rel*=facebox]').facebox();
+    this.updateStreamTitle();
     this.toggleSelector();
   },
 
@@ -45,5 +47,9 @@ app.views.AspectsList = app.views.Base.extend({
     } else {
       selector.text(Diaspora.I18n.t('aspect_navigation.select_all'));
     }
+  },
+
+  updateStreamTitle: function(){
+    $('.stream_title').text(this.collection.toSentence());
   }
 })
diff --git a/app/assets/javascripts/app/views/publisher/aspects_selector.js b/app/assets/javascripts/app/views/publisher/aspects_selector.js
index ecb2c57643..d3b3642655 100644
--- a/app/assets/javascripts/app/views/publisher/aspects_selector.js
+++ b/app/assets/javascripts/app/views/publisher/aspects_selector.js
@@ -21,16 +21,28 @@
       }
 
       // update the selection summary
-      AspectsDropdown.updateNumber(
-        el.closest(".dropdown_list"),
-        null,
-        el.parent().find('li.selected').length,
-        ''
-      );
+      this._updateAspectsNumber(el);
 
       this._updateSelectedAspectIds();
     },
 
+    updateAspectsSelector: function(ids){
+      var el = this.$("ul.dropdown_list");
+      this.$('.dropdown_list > li').each(function(){
+        var el = $(this);
+        var aspectId = el.data('aspect_id');
+        if (_.contains(ids, aspectId)) {
+          el.addClass('selected');
+        }
+        else {
+          el.removeClass('selected');
+        }
+      });
+
+      this._updateAspectsNumber(el);
+      this._updateSelectedAspectIds();
+    },
+
     // take care of the form fields that will indicate the selected aspects
     _updateSelectedAspectIds: function() {
       var self = this;
@@ -52,6 +64,15 @@
       });
     },
 
+    _updateAspectsNumber: function(el){
+      AspectsDropdown.updateNumber(
+        el.closest(".dropdown_list"),
+        null,
+        el.parent().find('li.selected').length,
+        ''
+      );
+    },
+
     _addHiddenAspectInput: function(id) {
       var uid = _.uniqueId('aspect_ids_');
       this.$('.content_creation form').append(
@@ -59,4 +80,4 @@
       );
     }
   };
-})();
\ No newline at end of file
+})();
-- 
GitLab