diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 6b2df3bd6..b231140ba 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -18,6 +18,7 @@ class ApplicationController < ActionController::Base @object_aspect_ids = [] @all_aspects = current_user.aspects.includes(:aspect_memberships) @notification_count = Notification.for(current_user, :unread =>true).count + @user_id = current_user.id end end diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 96fdceab1..f0b486d3d 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -15,9 +15,7 @@ class AspectsController < ApplicationController else @aspects = current_user.aspects.includes(:contacts => {:person => :profile}) end - current_user.open_aspects = params[:a_ids] - current_user.save - + # redirect to signup if current_user.getting_started == true || @aspects.blank? redirect_to getting_started_path diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 03c4a95f8..0ba9f9ac4 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -21,8 +21,10 @@ class UsersController < ApplicationController params[:user].delete(:password) if params[:user][:password].blank? params[:user].delete(:password_confirmation) if params[:user][:password].blank? and params[:user][:password_confirmation].blank? params[:user].delete(:language) if params[:user][:language].blank? + - # change email notifications + + # change email notifications if params[:user][:disable_mail] @user.update_attributes(:disable_mail => params[:user][:disable_mail]) flash[:notice] = I18n.t 'users.update.email_notifications_changed' @@ -39,6 +41,13 @@ class UsersController < ApplicationController else flash[:error] = I18n.t 'users.update.language_not_changed' end + elsif params[:user][:a_ids] + if params[:user][:a_ids] == ["home"] + @user.open_aspects = nil + else + @user.open_aspects = params[:user][:a_ids] + end + @user.save! end redirect_to edit_user_path(@user) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3ca7167af..791acaa44 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -135,7 +135,7 @@ module ApplicationHelper end def person_image_tag(person, size=:thumb_small) - "\"#{h(person.name)}\"".html_safe + "\"#{h(person.name)}\"".html_safe end def person_link(person) diff --git a/public/javascripts/aspect-filters.js b/public/javascripts/aspect-filters.js index 4b59482c1..83de67d5e 100644 --- a/public/javascripts/aspect-filters.js +++ b/public/javascripts/aspect-filters.js @@ -17,6 +17,7 @@ $(document).ready(function(){ } }); + $("a.hard_aspect_link").live("click", function(e){ e.preventDefault(); requests++; @@ -101,6 +102,31 @@ $(document).ready(function(){ return baseURL; } + $("a.home_selector").live("click", function(e){ + performAspectUpdate("home"); + }); + + function performAspectUpdate(home){ + // update the open aspects in the user + updateURL = "/users/" + $('div.avatar').children('img').attr("data-owner_id"); + updateURL += '?'; + if(home == 'home'){ + updateURL += 'user[a_ids][]=home'; + } else { + for(i=0; i < selectedGUIDS.length; i++){ + updateURL += 'user[a_ids][]='+ selectedGUIDS[i] +'&'; + } + } + +//alert(updateURL); + $.ajax({ + url : updateURL, + type: "PUT", + }); + + } + + function performAjax(newURL) { var post = $("#publisher textarea").val(), photos = {}; @@ -150,14 +176,16 @@ $(document).ready(function(){ // reinit listeners on stream photozone.html(photos_html); Stream.initialize(); - + // fade contents back in if(requests == 0){ $("#aspect_stream_container").fadeTo(100, 1); $("#aspect_contact_pictures").fadeTo(100, 1); + performAspectUpdate(); } } }); + } }); diff --git a/spec/controllers/aspects_controller_spec.rb b/spec/controllers/aspects_controller_spec.rb index 9e20ff0c8..4cba9836f 100644 --- a/spec/controllers/aspects_controller_spec.rb +++ b/spec/controllers/aspects_controller_spec.rb @@ -88,22 +88,7 @@ describe AspectsController do assigns(:posts).length.should == 8 end - context "storing state" do - before do - @index_params = {:a_ids => [@aspect0.id.to_s, @aspect1.id.to_s]} - end - it "stores the aspect params in the user" do - get :index, @index_params - @user.reload.open_aspects.should == @index_params[:a_ids] - end - it "correctly stores the aspect params" do - @user.open_aspects = @index_params[:a_ids] - @user.save - get :index - @user.reload.open_aspects.should == nil - end - end end context 'performance' do diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 628bd5531..06ace0a34 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -10,6 +10,7 @@ describe UsersController do before do @user = alice @aspect = @user.aspects.first + @aspect1 = @user.aspects.create(:name => "super!!") sign_in :user, @user end @@ -29,6 +30,24 @@ describe UsersController do }.should_not change(@user, :diaspora_handle) end + context "open aspects" do + before do + @index_params = {:id => @user.id, :user => {:a_ids => [@aspect.id.to_s, @aspect1.id.to_s]} } + end + + it "stores the aspect params in the user" do + put :update, @index_params + @user.reload.open_aspects.should == @index_params[:user][:a_ids] + end + + it "correctly resets the home state" do + @index_params[:user][:a_ids] = ["home"] + + put :update, @index_params + @user.reload.open_aspects.should == nil + end + end + context 'password updates' do before do @password_params = {:current_password => 'bluepin7',