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