diff --git a/.gitignore b/.gitignore index 81ed4083b..379d97a20 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ config/app_config.yml config/fb_config.yml config/initializers/secret_token.rb .bundle +vendor/bundle/* # Generated files log/* diff --git a/Gemfile b/Gemfile index b7a54ebf9..aefce4437 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'http://rubygems.org' -gem 'rails', '3.0.0' +gem 'rails', '>= 3.0.0' gem 'bundler', '>= 1.0.0' #Security diff --git a/Gemfile.lock b/Gemfile.lock index 01e6f4688..b184b3559 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,9 +15,9 @@ GIT GIT remote: git://github.com/dcu/magent.git - revision: fe08cc6e9d4c1772035f84bcfb665d17b00ac625 + revision: 59b8563961b830f491cd6f6592cced67791ce0ef specs: - magent (1.0.0) + magent (0.5.0) em-websocket mongo uuidtools @@ -70,12 +70,12 @@ GEM remote: http://rubygems.org/ specs: abstract (1.0.0) - actionmailer (3.0.0) - actionpack (= 3.0.0) + actionmailer (3.0.1) + actionpack (= 3.0.1) mail (~> 2.2.5) - actionpack (3.0.0) - activemodel (= 3.0.0) - activesupport (= 3.0.0) + actionpack (3.0.1) + activemodel (= 3.0.1) + activesupport (= 3.0.1) builder (~> 2.1.2) erubis (~> 2.6.6) i18n (~> 0.4.1) @@ -83,19 +83,19 @@ GEM rack-mount (~> 0.6.12) rack-test (~> 0.5.4) tzinfo (~> 0.3.23) - activemodel (3.0.0) - activesupport (= 3.0.0) + activemodel (3.0.1) + activesupport (= 3.0.1) builder (~> 2.1.2) i18n (~> 0.4.1) - activerecord (3.0.0) - activemodel (= 3.0.0) - activesupport (= 3.0.0) + activerecord (3.0.1) + activemodel (= 3.0.1) + activesupport (= 3.0.1) arel (~> 1.0.0) tzinfo (~> 0.3.23) - activeresource (3.0.0) - activemodel (= 3.0.0) - activesupport (= 3.0.0) - activesupport (3.0.0) + activeresource (3.0.1) + activemodel (= 3.0.1) + activesupport (= 3.0.1) + activesupport (3.0.1) addressable (2.2.2) arel (1.0.1) activesupport (~> 3.0.0) @@ -122,7 +122,6 @@ GEM selenium-webdriver (>= 0.0.3) childprocess (0.0.7) ffi (~> 0.6.3) - columnize (0.3.1) crack (0.1.8) cucumber (0.9.2) builder (~> 2.1.2) @@ -163,7 +162,6 @@ GEM i18n (0.4.1) json (1.4.6) json_pure (1.4.6) - linecache (0.43) mail (2.2.7) activesupport (>= 2.3.6) mime-types @@ -197,17 +195,17 @@ GEM rack (>= 1.0.0) rack-test (0.5.6) rack (>= 1.0) - rails (3.0.0) - actionmailer (= 3.0.0) - actionpack (= 3.0.0) - activerecord (= 3.0.0) - activeresource (= 3.0.0) - activesupport (= 3.0.0) + rails (3.0.1) + actionmailer (= 3.0.1) + actionpack (= 3.0.1) + activerecord (= 3.0.1) + activeresource (= 3.0.1) + activesupport (= 3.0.1) bundler (~> 1.0.0) - railties (= 3.0.0) - railties (3.0.0) - actionpack (= 3.0.0) - activesupport (= 3.0.0) + railties (= 3.0.1) + railties (3.0.1) + actionpack (= 3.0.1) + activesupport (= 3.0.1) rake (>= 0.8.4) thor (~> 0.14.0) rake (0.8.7) @@ -225,11 +223,6 @@ GEM rspec-expectations (= 2.0.0) rspec-rails (2.0.0) rspec (= 2.0.0) - ruby-debug (0.10.3) - columnize (>= 0.1) - ruby-debug-base (~> 0.10.3.0) - ruby-debug-base (0.10.3) - linecache (>= 0.3) rubyzip (0.9.4) selenium-webdriver (0.0.29) childprocess (>= 0.0.7) @@ -249,8 +242,8 @@ GEM uuidtools (2.1.1) warden (0.10.7) rack (>= 1.0.0) - webmock (1.3.5) - addressable (>= 2.1.1) + webmock (1.4.0) + addressable (>= 2.2.2) crack (>= 0.1.7) will_paginate (3.0.pre2) xml-simple (1.0.12) @@ -282,12 +275,11 @@ DEPENDENCIES mocha mongo_mapper! pubsubhubbub - rails (= 3.0.0) + rails (>= 3.0.0) redfinger! roxml! rspec (>= 2.0.0) rspec-rails (>= 2.0.0) - ruby-debug sprinkle! thin webmock diff --git a/README.md b/README.md index 4f6723507..32bd7ae22 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ network. **THIS IS PRE-ALPHA SOFTWARE AND SHOULD BE TREATED ACCORDINGLY.** **PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS -TO BE BROKEN** +TO BE BROKEN.** Installation instructions are [here](http://github.com/diaspora/diaspora/wiki/Installing-and-Running-Diaspora). @@ -48,8 +48,7 @@ We are maintaining a [public tracker project](http://www.pivotaltracker.com/projects/61641) and a [roadmap](https://github.com/diaspora/diaspora/wiki/Roadmap). Also, you can -file [bug reports](https://github.com/diaspora/diaspora/issues) right here on -github. +file [bug reports](http://bugs.joindiaspora.com) on our issue tracker. Ongoing discussion: @@ -59,8 +58,8 @@ Ongoing discussion: - [#diaspora-dev IRC channel](irc://irc.freenode.net/#diaspora-dev) ([join via the web client](http://webchat.freenode.net?channels=diaspora-dev)) -More general info and updates about the project can be found on: -[Our blog](http://joindiaspora.com), +More general info and updates about the project can be found on +[our blog](http://joindiaspora.com), [and on Twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://eepurl.com/Vebk). diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 484cab55e..ec22b9f32 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -11,6 +11,9 @@ class AspectsController < ApplicationController def index @posts = current_user.visible_posts(:by_members_of => :all).paginate :page => params[:page], :per_page => 15, :order => 'created_at DESC' @aspect = :all + + @fb_access_url = MiniFB.oauth_url(FB_APP_ID, APP_CONFIG[:pod_url] + "services/create", + :scope=>MiniFB.scopes.join(",")) end def create diff --git a/app/controllers/invitations_controller.rb b/app/controllers/invitations_controller.rb index 0477d9de8..2212f9539 100644 --- a/app/controllers/invitations_controller.rb +++ b/app/controllers/invitations_controller.rb @@ -15,6 +15,7 @@ class InvitationsController < Devise::InvitationsController flash[:error] = I18n.t 'invitations.create.no_more' elsif e.message == "You already invited this person" flash[:error] = I18n.t 'invitations.create.already_sent' + else raise e end diff --git a/app/helpers/aspects_helper.rb b/app/helpers/aspects_helper.rb index 265b052a8..88dfe0d6b 100644 --- a/app/helpers/aspects_helper.rb +++ b/app/helpers/aspects_helper.rb @@ -14,4 +14,12 @@ module AspectsHelper "#{I18n.t('aspects.helper.remove')}" end end + + def aspect_id(aspect) + if aspect.class == Aspect + aspect.id + else + :all + end + end end diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 472d8241f..a188787af 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -25,12 +25,7 @@ %ul.dropzone %li.grey Drag to ignore/remove - %h3= link_to "Invite a friend!", "#invite_user_pane", :id => "invite_user_button", :class => "invite_user_button", :title => "Invite a friend" - %h3= "You have #{@invites} invites." - - .yo{ :style => "display:none;"} - #invite_user_pane - = render "invitations/new" + = render 'shared/invitations', :invites => @invites - content_for :publish do = link_to(t('.add_a_new_aspect'), "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => t('.add_a_new_aspect')) diff --git a/app/views/invitations/_new.haml b/app/views/invitations/_new.haml index 0463bb8f4..2da46f7c7 100644 --- a/app/views/invitations/_new.haml +++ b/app/views/invitations/_new.haml @@ -1,6 +1,5 @@ %h2 Send invitation = form_for User.new, :url => invitation_path(User) do |f| - /= devise_error_messages! %p = f.label :email = f.text_field :email @@ -10,4 +9,3 @@ - else = f.select(:aspects, @aspects_dropdown_array, :selected => [@aspect.to_s, @aspect.id]) %p= f.submit "Send an invitation" -/= link_to "Home", after_sign_in_path_for(resource_name) diff --git a/app/views/shared/_aspect_friends.haml b/app/views/shared/_aspect_friends.haml index 508cabbb4..6ca3a29af 100644 --- a/app/views/shared/_aspect_friends.haml +++ b/app/views/shared/_aspect_friends.haml @@ -32,11 +32,4 @@ %br - %h4 Invites - = link_to "Invite a friend!", "#invite_user_pane", :class => "invite_user_button", :class => "invite_user_button", :title => "Invite a friend" - %br - = "You have #{@invites} invites." - .yo{ :style => "display:none;"} - #invite_user_pane - = render "invitations/new" - + = render "shared/invitations", :invites => @invites diff --git a/app/views/shared/_invitations.haml b/app/views/shared/_invitations.haml new file mode 100644 index 000000000..b82cca104 --- /dev/null +++ b/app/views/shared/_invitations.haml @@ -0,0 +1,8 @@ +- unless @aspect == :all + %h4 Invites + = link_to "Invite a friend", "#invite_user_pane", :class => "invite_user_button", :title => "Invite a friend" + = "(#{invites} left)" + %br + .yo{ :style => "display:none;"} + #invite_user_pane + = render "invitations/new" diff --git a/app/views/shared/_public_explain.haml b/app/views/shared/_public_explain.haml new file mode 100644 index 000000000..568f4d884 --- /dev/null +++ b/app/views/shared/_public_explain.haml @@ -0,0 +1,9 @@ +%h1 you are about to post a public message! +%p + this message is going to be posted to your public feed, + and to any services you may have connected to Diaspora. + + - if @logged_in + = connected_fb_as(@access_token) + - else + = link_to "Connect to Facebook", @fb_access_url diff --git a/app/views/shared/_publisher.haml b/app/views/shared/_publisher.haml index f14873e75..c1886b5fb 100644 --- a/app/views/shared/_publisher.haml +++ b/app/views/shared/_publisher.haml @@ -2,6 +2,18 @@ -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. +:javascript + + $("div.public_toggle input").live("click", function(evt){ + if("#{@logged_in}" == "false" && $(this).attr('checked') == true){ + if(confirm("You are currently not connected to facebook. Sign in to facebook?")){ + window.location = "#{@fb_access_url}"; + } else { + $(this).attr('checked', false); + } + }; + }); + #publisher = owner_image_tag @@ -18,13 +30,18 @@ = check_box_tag("aspect_ids[]", aspect.id, @aspect == :all || current_aspect?(aspect) ) = aspect.name - = f.hidden_field( :public, :value => false ) + - if @aspect == :all + .public_toggle + = f.check_box( :public, :value => false ) + share on facebook + = link_to 'public info', "#question_mark_pane", :class => 'question_mark' + .yo{:style => "display:none;"} + #question_mark_pane + = render 'shared/public_explain' .buttons - if @aspect == :all = f.submit t('.share'), :title => "Share with all aspects" - else = f.submit t('.share'), :title => "Share with #{@aspect.name}" - - if defined? broadcast - = f.submit "Broadcast", :class => "broadcast", :name => "broadcast", :title => "Publish to Diaspora and Facebook" diff --git a/app/views/users/_services.haml b/app/views/users/_services.haml index 80cf33663..a9a6d7977 100644 --- a/app/views/users/_services.haml +++ b/app/views/users/_services.haml @@ -18,7 +18,7 @@ = link_to "Disconnect from Facebook", services_destroy_path - else - = link_to "Connect to Facebook (DO NOT USE WITH A REAL ACCOUNT)", @fb_access_url + = link_to "Connect to Facebook", @fb_access_url #content_bottom .back diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index f80a24733..9d438feec 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -75,8 +75,8 @@ en: nobody: "We know you have friends, bring them to Diaspora!" nobody_in_aspect: "Your aspect '%{aspect_name}' is empty." add_friend: "Add a friend" - add_friend_to: "Add a someone to %{aspect_name}" - invite: "Invite a someone to join Diaspora!" + add_friend_to: "Add someone to %{aspect_name}" + invite: "Invite someone to join Diaspora!" manage: add_a_new_aspect: "Add a new aspect" add_a_new_friend: "Add a new friend" diff --git a/public/javascripts/view.js b/public/javascripts/view.js index f79cace4d..dec170a07 100644 --- a/public/javascripts/view.js +++ b/public/javascripts/view.js @@ -30,6 +30,7 @@ $(document).ready(function(){ $(".add_request_button").fancybox({ 'titleShow': false }); $(".invite_user_button").fancybox({ 'titleShow': false }); $(".add_request_button").fancybox({ 'titleShow': false }); + $(".question_mark").fancybox({ 'titleShow': false }); $("input[type='submit']").addClass("button"); @@ -47,7 +48,7 @@ $(document).ready(function(){ ); $("#publisher textarea").keydown( function(e) { - if (e.shiftKey && e.keyCode == 13) { + if (e.keyCode == 13) { $("#publisher form").submit(); } }); @@ -71,10 +72,3 @@ $.fn.clearForm = function() { }); }; -$("#publisher .broadcast").live("click", function(evt){ - evt.preventDefault(); - if( confirm("Publish to Diaspora and Facebook?") ) { - $("#status_message_public").val("true"); - $(this).submit(); - } -}); diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index f1b8bee94..feb23b897 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -612,6 +612,16 @@ label .buttons :float right + .public_toggle + :position absolute + :top 53px + :left 460px + :width 300px + :font + :size smaller + :style italic + + #image_picker .small_photo :height 100px diff --git a/spec/models/request_spec.rb b/spec/models/request_spec.rb index dc5145f2a..cac505eb5 100644 --- a/spec/models/request_spec.rb +++ b/spec/models/request_spec.rb @@ -6,7 +6,9 @@ require 'spec_helper' describe Request do let(:user) { Factory(:user) } + ler(:person) {Factory :person} let(:aspect) { user.aspect(:name => "dudes") } + let(:request){ user.send_friend_request_to person, aspect } it 'should require a destination and callback url' do person_request = Request.new @@ -17,8 +19,6 @@ describe Request do end it 'should generate xml for the User as a Person' do - request = user.send_friend_request_to Factory(:person), aspect - xml = request.to_xml.to_s xml.should include user.person.diaspora_handle @@ -45,4 +45,11 @@ describe Request do person_request.destination_url.should == "http://google.com/" end + context 'quering request through user' do + it 'finds requests the user sent' do + request + user.requests_for_me.include?(request).should be true + end + end + end