diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index c4f0ab3a4..b6b12a842 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -9,7 +9,7 @@ class StatusMessagesController < ApplicationController respond_to :mobile # Called when a user clicks "Mention" on a profile page - # @option [Integer] person_id The id of the person to be mentioned + # @param person_id [Integer] The id of the person to be mentioned def new if params[:person_id] && @person = Person.where(params[:person_id]).first @aspect = :profile @@ -19,7 +19,6 @@ class StatusMessagesController < ApplicationController @aspects_with_person = @contact.aspects @aspect_ids = @aspects_with_person.map(&:id) @contacts_of_contact = @contact.contacts - render :layout => nil end else @@ -33,6 +32,9 @@ class StatusMessagesController < ApplicationController @aspects = current_user.aspects @selected_contacts = @aspects.map { |aspect| aspect.contacts }.flatten.uniq @aspect_ids = @aspects.map{|x| x.id} + + pp @aspect_ids.inspect + render :layout => nil end @@ -51,7 +53,14 @@ class StatusMessagesController < ApplicationController if @status_message.save Rails.logger.info("event=create type=status_message chars=#{params[:status_message][:text].length}") - aspects = current_user.aspects_from_ids(params[:aspect_ids]) + # always send to all aspects if public + if params[:status_message][:public] || params[:status_message][:aspect_ids].first == "all_aspects" + aspect_ids = current_user.aspects.map{|a| a.id} + else + aspect_ids = params[:aspect_ids] + end + + aspects = current_user.aspects_from_ids(aspect_ids) current_user.add_to_streams(@status_message, aspects) receiving_services = current_user.services.where(:type => params[:services].map{|s| "Services::"+s.titleize}) if params[:services] current_user.dispatch_post(@status_message, :url => short_post_url(@status_message.guid), :services => receiving_services) @@ -81,7 +90,8 @@ class StatusMessagesController < ApplicationController end def normalize_public_flag! - public_flag = params[:status_message][:public] + # mobile || desktop conditions + public_flag = params[:status_message][:aspect_ids].first == 'public' || params[:status_message][:public] public_flag.to_s.match(/(true)|(on)/) ? public_flag = true : public_flag = false params[:status_message][:public] = public_flag public_flag diff --git a/app/views/layouts/application.mobile.haml b/app/views/layouts/application.mobile.haml index 3c1dc141b..a10ff2e25 100644 --- a/app/views/layouts/application.mobile.haml +++ b/app/views/layouts/application.mobile.haml @@ -30,6 +30,7 @@ / Stylesheets = include_stylesheets :mobile + = yield(:custom_css) %script{:src => "/javascripts/vendor/mbp-modernizr-custom.js"} / Media Queries Polyfill https://github.com/shichuan/mobile-html5-boilerplate/wiki/Media-Queries-Polyfill diff --git a/app/views/shared/_publisher.mobile.haml b/app/views/shared/_publisher.mobile.haml index 1a0c78bde..584fe81ea 100644 --- a/app/views/shared/_publisher.mobile.haml +++ b/app/views/shared/_publisher.mobile.haml @@ -2,26 +2,38 @@ -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. +- content_for :custom_css do + :css + body { + background-color: #eee; + } + + = form_for StatusMessage.new, {:data => {:ajax => false}} do |status| #message_container = status.text_area :text, :placeholder => t('.whats_on_your_mind'), :style => "width:300px", :rows => 4, :autofocus => "autofocus" - - for aspect_id in aspect_ids - = hidden_field_tag 'aspect_ids[]', aspect_id.to_s - %fieldset %div{:style => 'float:right;'} - = select_tag 'aspect_ids[]', options_from_collection_for_select(current_user.aspects, "id", "name") - /%input{:type => 'checkbox', :name => 'status_message[public]', :id => 'public', :class => 'custom', :value => 'true'} - /%label{:for => 'public'} - / = t('.make_public') - - unless current_user.services.empty? - %div{:data => {:role => 'fieldcontain'}} - %label{:for => 'services', :class => 'select'} - - current_user.services.each do |service| - %input{:type => 'checkbox', :name => "services[]", :id => "#{service.provider}", :class => 'custom', :value => "#{service.provider}"} - %label{:for => "#{service.provider}"} - = "#{service.provider}" + = status.submit t('.share'), :class => 'action' + + %select{:id => "aspect_ids_", :name => "aspect_ids[]"} + %option{:value => 'public'} + = t('public') + + %option{:value => 'all_aspects', :selected => true} + = t('all_aspects') + + - current_user.aspects.each do |aspect| + %option{:value => aspect.id} + = "ยท #{aspect.name}" + + /- unless current_user.services.empty? + / %div{:data => {:role => 'fieldcontain'}} + / %label{:for => 'services', :class => 'select'} + / - current_user.services.each do |service| + / %input{:type => 'checkbox', :name => "services[]", :id => "#{service.provider}", :class => 'custom', :value => "#{service.provider}"} + / %label{:for => "#{service.provider}"} + / = "#{service.provider}" - = status.submit t('.share'), :class => 'action' diff --git a/app/views/shared/_stream_element.mobile.haml b/app/views/shared/_stream_element.mobile.haml index cae1a5851..494ea5c78 100644 --- a/app/views/shared/_stream_element.mobile.haml +++ b/app/views/shared/_stream_element.mobile.haml @@ -5,10 +5,13 @@ .stream_element{:data=>{:guid=>post.id}} .photo_area - - if post.is_a?(StatusMessage) && post.photos.size > 0 - - photos = post.photos - .photo_attachments - = image_tag photos.first.url(:thumb_large), :class => "stream-photo big-stream-photo", 'data-small-photo' => photos.first.url(:thumb_medium), 'data-full-photo' => photos.first.url + - if post.is_a?(StatusMessage) + -if post.photos.size > 0 + .photo_attachments + - if post.photos.size > 1 + .additional_photo_count + = "+ #{post.photos.size-1}" + = image_tag post.photos.first.url(:thumb_large), :class => "stream-photo big-stream-photo" - elsif post.activity_streams? = image_tag post.image_url @@ -19,6 +22,13 @@ .info %span.time{:integer => post.created_at.to_i} = t('ago', :time => time_ago_in_words(post.created_at)) + – + %span.scope_scope + - if post.public? + = t('public') + - else + = t('limited') + %span.via - if post.activity_streams? = t('.via', :link => link_to("#{post.provider_display_name}", post.actor_url)).html_safe diff --git a/app/views/status_messages/_status_message.mobile.haml b/app/views/status_messages/_status_message.mobile.haml index 2fa37d692..8a34f126f 100644 --- a/app/views/status_messages/_status_message.mobile.haml +++ b/app/views/status_messages/_status_message.mobile.haml @@ -2,6 +2,17 @@ -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. +- if defined?(reshare) && reshare + .photo_area + - if post.is_a?(StatusMessage) + -if post.photos.size > 0 + .photo_attachments + - if post.photos.size > 1 + .additional_photo_count + = "+ #{post.photos.size-1}" + = image_tag post.photos.first.url(:thumb_large), :class => "stream-photo big-stream-photo" + - elsif post.activity_streams? + = image_tag post.image_url %div{:class => direction_for(post.text)} != markdownify(post, :youtube_maps => post[:youtube_titles]) diff --git a/spec/controllers/aspects_controller_spec.rb b/spec/controllers/aspects_controller_spec.rb index e7807873f..e668fe1b2 100644 --- a/spec/controllers/aspects_controller_spec.rb +++ b/spec/controllers/aspects_controller_spec.rb @@ -154,18 +154,6 @@ describe AspectsController do end end - context "mobile" do - it "renders a share button when you don't pass aspect IDs" do - get :index, :format => :mobile - response.body.should =~ /#{Regexp.escape('id="status_message_submit"')}/ - end - - it "renders a share button when you pass aspect IDs" do - get :index, :a_ids => [@alices_aspect_1], :format => :mobile - response.body.should =~ /#{Regexp.escape('id="status_message_submit"')}/ - end - end - describe 'performance', :performance => true do before do require 'benchmark' @@ -357,7 +345,6 @@ describe AspectsController do it 'should not 500' do get :index, :format => :mobile response.should be_success - end end end diff --git a/spec/controllers/status_messages_controller_spec.rb b/spec/controllers/status_messages_controller_spec.rb index 32bc27900..ab3d6a9c3 100644 --- a/spec/controllers/status_messages_controller_spec.rb +++ b/spec/controllers/status_messages_controller_spec.rb @@ -65,7 +65,6 @@ describe StatusMessagesController do post :create, status_message_hash.merge(:format => 'js') json = JSON.parse(response.body) save_fixture(json['html'], "created_status_message") - end it 'escapes XSS' do @@ -76,6 +75,14 @@ describe StatusMessagesController do end end + it 'takes public in aspect ids' do + post :create, status_message_hash.merge(:aspect_ids => ['public']) + end + + it 'takes all_aspects in aspect ids' do + post :create, status_message_hash.merge(:aspect_ids => ['all_aspects']) + end + it "dispatches the post to the specified services" do s1 = Services::Facebook.new alice.services << s1