From dd0052361638903435ccce0ecce9322960f26425 Mon Sep 17 00:00:00 2001 From: danielgrippi Date: Wed, 26 Oct 2011 16:36:35 -0700 Subject: [PATCH] show flash messages when adding a person to an aspect --- app/helpers/aspect_global_helper.rb | 2 +- app/views/layouts/application.html.haml | 13 +++++++------ app/views/shared/_aspect_dropdown.html.haml | 2 +- config/locales/javascript/javascript.en.yml | 2 ++ public/javascripts/aspects-dropdown.js | 10 ++++++++++ public/javascripts/widgets/flash-messages.js | 15 ++++++++++----- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/app/helpers/aspect_global_helper.rb b/app/helpers/aspect_global_helper.rb index d10338bf5..e84bfa666 100644 --- a/app/helpers/aspect_global_helper.rb +++ b/app/helpers/aspect_global_helper.rb @@ -56,7 +56,7 @@ module AspectGlobalHelper end def aspect_membership_dropdown(contact, person, hang, aspect=nil) - selected_aspects = all_aspects.select{|aspect| contact.in_aspect?(aspect) } + selected_aspects = all_aspects.select{|aspect| contact.in_aspect?(aspect)} render "shared/aspect_dropdown", :selected_aspects => selected_aspects, diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0beb4d220..24176a87a 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -87,18 +87,19 @@ %link{:rel => "alternate", :href => "#{@person.public_url}.atom", :type => "application/atom+xml", :title => "#{t('.public_feed', :name => @person.name)}"} %body{:class => "#{yield(:body_class)}"} + + - unless @page == :logged_out + - flash.each do |name, msg| + %div{:id => "flash_#{name}"} + .message + = msg + - unless @landing_page %a{:id=>"back-to-top", :title=>"Back to top", :href=>"#"} ⇧ #notifications - - unless @page == :logged_out - - flash.each do |name, msg| - %div{:id => "flash_#{name}"} - .message - = msg - %header{:class=>('landing' unless current_user)} = render 'layouts/header' diff --git a/app/views/shared/_aspect_dropdown.html.haml b/app/views/shared/_aspect_dropdown.html.haml index 550b0b1e0..1f278cdd6 100644 --- a/app/views/shared/_aspect_dropdown.html.haml +++ b/app/views/shared/_aspect_dropdown.html.haml @@ -13,7 +13,7 @@ ▼ .wrapper - %ul.dropdown_list{:unSelectable => 'on', 'data-person_id' => (person.id if defined?(person) && person), 'data-service_uid' => (service_uid if defined?(service_uid))} + %ul.dropdown_list{:unSelectable => 'on', 'data-person_id' => (person.id if defined?(person) && person), 'data-service_uid' => (service_uid if defined?(service_uid)), 'data-person-short-name' => (person.first_name if defined?(person) && person)} - for aspect in all_aspects = aspect_dropdown_list_item(aspect, selected_aspects.include?(aspect) ) diff --git a/config/locales/javascript/javascript.en.yml b/config/locales/javascript/javascript.en.yml index 26f1dd42b..6c5eedd22 100644 --- a/config/locales/javascript/javascript.en.yml +++ b/config/locales/javascript/javascript.en.yml @@ -39,6 +39,8 @@ en: add_to_aspect: "Add contact" select_aspects: "Select aspects" all_aspects: "All aspects" + stopped_sharing_with: "You have stopped sharing with {{name}}." + started_sharing_with: "You have started sharing with {{name}}!" toggle: zero: "Select aspects" one: "In {{count}} aspect" diff --git a/public/javascripts/aspects-dropdown.js b/public/javascripts/aspects-dropdown.js index 02bd67d89..d6ea1ff29 100644 --- a/public/javascripts/aspects-dropdown.js +++ b/public/javascripts/aspects-dropdown.js @@ -9,18 +9,28 @@ var AspectsDropdown = { allAspects = dropdown.children().length, replacement; + console.log(dropdown); + if (number == 0) { button.removeClass(inAspectClass); if( dropdown.closest('#publisher').length ) { replacement = Diaspora.I18n.t("aspect_dropdown.select_aspects"); } else { replacement = Diaspora.I18n.t("aspect_dropdown.add_to_aspect"); + /* flash message prompt */ + var message = Diaspora.I18n.t("aspect_dropdown.stopped_sharing_with", {name: dropdown.data('person-short-name')}); + Diaspora.page.flashMessages.render({success: true, notice: message}); } }else if (selectedAspects == allAspects) { replacement = Diaspora.I18n.t('aspect_dropdown.all_aspects'); }else if (number == 1) { button.addClass(inAspectClass); replacement = dropdown.find(".selected").first().text(); + /* flash message prompt */ + if( dropdown.closest('#publisher').length == 0 ) { + var message = Diaspora.I18n.t("aspect_dropdown.started_sharing_with", {name: dropdown.data('person-short-name')}); + Diaspora.page.flashMessages.render({success: true, notice: message}); + } }else if (number < 3) { replacement = Diaspora.I18n.t('aspect_dropdown.toggle.few', { count: number.toString()}) }else if (number > 3) { diff --git a/public/javascripts/widgets/flash-messages.js b/public/javascripts/widgets/flash-messages.js index 7f55cd97f..1cd951972 100644 --- a/public/javascripts/widgets/flash-messages.js +++ b/public/javascripts/widgets/flash-messages.js @@ -10,17 +10,22 @@ var flashMessages = $("#flash_notice, #flash_error, #flash_alert"); flashMessages.animate({ top: 0 - }).delay(4000).animate({ + }, 400).delay(4000).animate({ top: -100 - }, flashMessages.remove); + }, 400, function(){ + $(this).remove(); + }); }; this.render = function(result) { $("
", { - id: (result.success) ? "flash_notice" : "flash_error" + id: result.success ? "flash_notice" : "flash_error" }) - .prependTo(document.body) - .html(result.notice); + .html($("
", { + class: "message" + }) + .html(result.notice)) + .prependTo(document.body); self.animateMessages(); };