diff --git a/Gemfile b/Gemfile index 9e9cce592..83cb3ea08 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,7 @@ source 'http://rubygems.org' -gem 'rails', '3.0.1' +gem 'rails', '>= 3.0.0' + gem 'bundler', '>= 1.0.0' #Security diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..41e008130 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,286 @@ +GIT + remote: git://github.com/Empact/roxml.git + revision: 33034d3e632b3a14565a791af0a63c7e23ec0de4 + specs: + roxml (3.1.5) + activesupport (>= 2.3.0) + nokogiri (>= 1.3.3) + +GIT + remote: git://github.com/collectiveidea/devise-mongo_mapper + revision: fa2f20310e0988295adc192255d3b1cedee1b412 + specs: + devise-mongo_mapper (0.0.1) + devise (~> 1.1.0) + +GIT + remote: git://github.com/dcu/magent.git + revision: fe08cc6e9d4c1772035f84bcfb665d17b00ac625 + specs: + magent (1.0.0) + em-websocket + mongo + uuidtools + +GIT + remote: git://github.com/igrigorik/em-http-request.git + revision: bf62d67fc72d6e701be5037e239dd470194b8e45 + ref: bf62d67fc72d6e701be5 + specs: + em-http-request (0.2.13) + addressable (>= 2.0.0) + eventmachine (>= 0.12.9) + +GIT + remote: git://github.com/jnunemaker/mongomapper.git + revision: fd59b0ab068be7321f8e84b9dc12fb4fa6b8535d + branch: rails3 + specs: + mongo_mapper (0.8.4) + activemodel (~> 3.0.0) + activesupport (~> 3.0.0) + plucky (~> 0.3.6) + +GIT + remote: git://github.com/rsofaer/carrierwave.git + revision: 9edb8bdddd2236742a85bfd7b260387498d01f88 + branch: master + specs: + carrierwave (0.4.4) + +GIT + remote: git://github.com/rsofaer/redfinger.git + revision: 07721f46d02b9d3aa04880788fecb0b4c1b284d7 + specs: + redfinger (0.0.6) + hashie + nokogiri (>= 1.4.0) + rest-client (>= 1.5.0) + +GIT + remote: git://github.com/rsofaer/sprinkle.git + revision: 7c744ed158dda1f99a015e6a29d086e80bd8c635 + specs: + sprinkle (0.3.1) + activesupport (>= 3.0.0beta4) + capistrano (>= 2.5.5) + highline (>= 1.4.0) + +GEM + remote: http://rubygems.org/ + specs: + abstract (1.0.0) + actionmailer (3.0.0) + actionpack (= 3.0.0) + mail (~> 2.2.5) + actionpack (3.0.0) + activemodel (= 3.0.0) + activesupport (= 3.0.0) + builder (~> 2.1.2) + erubis (~> 2.6.6) + i18n (~> 0.4.1) + rack (~> 1.2.1) + rack-mount (~> 0.6.12) + rack-test (~> 0.5.4) + tzinfo (~> 0.3.23) + activemodel (3.0.0) + activesupport (= 3.0.0) + builder (~> 2.1.2) + i18n (~> 0.4.1) + activerecord (3.0.0) + activemodel (= 3.0.0) + activesupport (= 3.0.0) + arel (~> 1.0.0) + tzinfo (~> 0.3.23) + activeresource (3.0.0) + activemodel (= 3.0.0) + activesupport (= 3.0.0) + activesupport (3.0.0) + addressable (2.2.2) + arel (1.0.1) + activesupport (~> 3.0.0) + aws (2.3.21) + http_connection + uuidtools + xml-simple + bcrypt-ruby (2.1.2) + bson (1.1) + bson_ext (1.1) + builder (2.1.2) + capistrano (2.5.19) + highline + net-scp (>= 1.0.0) + net-sftp (>= 2.0.0) + net-ssh (>= 2.0.14) + net-ssh-gateway (>= 1.0.0) + capybara (0.3.9) + culerity (>= 0.2.4) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + selenium-webdriver (>= 0.0.3) + childprocess (0.0.7) + ffi (~> 0.6.3) + crack (0.1.8) + cucumber (0.9.2) + builder (~> 2.1.2) + diff-lcs (~> 1.1.2) + gherkin (~> 2.2.5) + json (~> 1.4.6) + term-ansicolor (~> 1.0.5) + cucumber-rails (0.3.2) + cucumber (>= 0.8.0) + culerity (0.2.12) + daemons (1.1.0) + database_cleaner (0.5.2) + devise (1.1.3) + bcrypt-ruby (~> 2.1.2) + warden (~> 0.10.7) + devise_invitable (0.3.4) + devise (~> 1.1.0) + diff-lcs (1.1.2) + em-websocket (0.1.4) + addressable (>= 2.1.1) + eventmachine (>= 0.12.9) + erubis (2.6.6) + abstract (>= 1.0.0) + eventmachine (0.12.10) + factory_girl (1.3.2) + factory_girl_rails (1.0) + factory_girl (~> 1.3) + rails (>= 3.0.0.beta4) + ffi (0.6.3) + rake (>= 0.8.7) + gherkin (2.2.8) + json (~> 1.4.6) + term-ansicolor (~> 1.0.5) + haml (3.0.21) + hashie (0.4.0) + highline (1.6.1) + http_connection (1.3.1) + i18n (0.4.1) + json (1.4.6) + json_pure (1.4.6) + mail (2.2.7) + activesupport (>= 2.3.6) + mime-types + treetop (>= 1.4.5) + mime-types (1.16) + mini_fb (1.1.3) + hashie + rest-client + mini_magick (2.3) + subexec (~> 0.0.4) + mocha (0.9.8) + rake + mongo (1.1) + bson (>= 1.0.5) + net-scp (1.0.4) + net-ssh (>= 1.99.1) + net-sftp (2.0.5) + net-ssh (>= 2.0.9) + net-ssh (2.0.23) + net-ssh-gateway (1.0.1) + net-ssh (>= 1.99.1) + nokogiri (1.4.3.1) + plucky (0.3.6) + mongo (~> 1.1) + polyglot (0.3.1) + pubsubhubbub (0.1.1) + em-http-request (>= 0.1.5) + eventmachine (>= 0.12.9) + rack (1.2.1) + rack-mount (0.6.13) + 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) + bundler (~> 1.0.0) + railties (= 3.0.0) + railties (3.0.0) + actionpack (= 3.0.0) + activesupport (= 3.0.0) + rake (>= 0.8.4) + thor (~> 0.14.0) + rake (0.8.7) + rest-client (1.6.1) + mime-types (>= 1.16) + rspec (2.0.0) + rspec-core (= 2.0.0) + rspec-expectations (= 2.0.0) + rspec-mocks (= 2.0.0) + rspec-core (2.0.0) + rspec-expectations (2.0.0) + diff-lcs (>= 1.1.2) + rspec-mocks (2.0.0) + rspec-core (= 2.0.0) + rspec-expectations (= 2.0.0) + rspec-rails (2.0.0) + rspec (= 2.0.0) + rubyzip (0.9.4) + selenium-webdriver (0.0.29) + childprocess (>= 0.0.7) + ffi (~> 0.6.3) + json_pure + rubyzip + subexec (0.0.4) + term-ansicolor (1.0.5) + thin (1.2.7) + daemons (>= 1.0.9) + eventmachine (>= 0.12.6) + rack (>= 1.0.0) + thor (0.14.3) + treetop (1.4.8) + polyglot (>= 0.3.1) + tzinfo (0.3.23) + uuidtools (2.1.1) + warden (0.10.7) + rack (>= 1.0.0) + webmock (1.3.5) + addressable (>= 2.1.1) + crack (>= 0.1.7) + will_paginate (3.0.pre2) + xml-simple (1.0.12) + +PLATFORMS + ruby + +DEPENDENCIES + addressable + aws + bson (= 1.1) + bson_ext (= 1.1) + bundler (>= 1.0.0) + capybara (~> 0.3.9) + carrierwave! + cucumber-rails (= 0.3.2) + database_cleaner + devise (= 1.1.3) + devise-mongo_mapper! + devise_invitable (~> 0.3.4) + em-http-request! + em-websocket + factory_girl_rails + haml + json + magent! + mini_fb + mini_magick + mocha + mongo_mapper! + pubsubhubbub + rails (= 3.0.0) + redfinger! + roxml! + rspec (>= 2.0.0) + rspec-rails (>= 2.0.0) + sprinkle! + thin + webmock + will_paginate (= 3.0.pre2) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d9492546d..b9bd53ab5 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -106,7 +106,8 @@ class UsersController < ApplicationController private def prep_image_url(params) - url = APP_CONFIG[:pod_url].chop if APP_CONFIG[:pod_url][-1,1] == '/' + url = APP_CONFIG[:pod_url].dup + url.chop! if APP_CONFIG[:pod_url][-1,1] == '/' if params[:profile][:image_url].empty? params[:profile].delete(:image_url) else diff --git a/app/models/request.rb b/app/models/request.rb index d910cfaa2..a6efdc987 100644 --- a/app/models/request.rb +++ b/app/models/request.rb @@ -27,7 +27,6 @@ class Request before_validation :clean_link scope :for_user, lambda{ |user| where(:destination_url => user.person.receive_url) } - scope :from_user, lambda{ |user| where(:destination_url.ne => user.person.receive_url) } def self.instantiate(options = {}) person = options[:from] diff --git a/app/models/user.rb b/app/models/user.rb index b179378a1..162ab4734 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -268,8 +268,24 @@ class User ###Invitations############ def invite_user( opts = {} ) if self.invites > 0 - invited_user = User.invite!(:email => opts[:email], :inviter => self) + + aspect_id = opts.delete(:aspect_id) + if aspect_id == nil + raise "Must invite into aspect" + elsif !(self.aspects.find_by_id(aspect_id)) + raise "Must invite to your aspect" + end + request = Request.instantiate( + :to => "http://local_request.example.com", + :from => self.person, + :into => aspect_id + ) + + invited_user = User.invite!(:email => opts[:email], :request => request, :inviter => self) + self.invites = self.invites - 1 + self.pending_requests << request + request.save self.save! invited_user else @@ -279,11 +295,14 @@ class User def self.invite!(attributes={}) inviter = attributes.delete(:inviter) + request = attributes.delete(:request) + invitable = find_or_initialize_with_error_by(:email, attributes.delete(:email)) invitable.attributes = attributes if invitable.inviters.include?(inviter) raise "You already invited this person" else + invitable.pending_requests << request invitable.inviters << inviter end diff --git a/app/views/albums/index.html.haml b/app/views/albums/index.html.haml index 0d68bb1c1..4b76d38e1 100644 --- a/app/views/albums/index.html.haml +++ b/app/views/albums/index.html.haml @@ -8,9 +8,6 @@ $("#add_album_button").fancybox(); }); -= content_for :page_title do - = link_to "◂ #{t('.home')}", aspects_path, :aspect => params[:aspect] - - content_for :left_pane do = render "shared/aspect_friends" @@ -31,6 +28,3 @@ #pagination = will_paginate @albums -#content_bottom - .back - = link_to "⇧ #{t('.home')}", root_path diff --git a/app/views/aspects/_empty_messages.haml b/app/views/aspects/_empty_messages.haml new file mode 100644 index 000000000..734ee5b12 --- /dev/null +++ b/app/views/aspects/_empty_messages.haml @@ -0,0 +1,20 @@ +-# Copyright (c) 2010, Diaspora Inc. This file is +-# licensed under the Affero General Public License version 3 or later. See +-# the COPYRIGHT file. + +#no_posts.empty_message{:style => ("display:none" unless @posts.count == 0)} + .null_arrow ⇧ + %h3=t('.start_talking') + +#no_friends.empty_message{:style => ("display:none" unless @friends.count == 0)} + + - if (@aspect == :all) || (@aspect == :public) + %h3=t('.nobody') + %h4= link_to t('.add_friend'), aspects_manage_path + %h4= link_to t('.invite'), aspects_manage_path + - else + %h3=t('.nobody_in_aspect', :aspect_name => @aspect.name) + %h4= link_to t('.add_friend_to', :aspect_name => @aspect.name), "#add_request_pane", :class => "add_request_button" + %h4= link_to t('.invite', :aspect_name => @aspect.name), "#invite_user_pane", :class => "invite_user_button", :class => "invite_user_button", :title => t('.invite') + + diff --git a/app/views/aspects/index.html.haml b/app/views/aspects/index.html.haml index 4935531d6..95c6c2dc4 100644 --- a/app/views/aspects/index.html.haml +++ b/app/views/aspects/index.html.haml @@ -2,18 +2,18 @@ -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. -- content_for :page_title do - = link_to t('.photos'), albums_path(:aspect => @aspect) - - content_for :left_pane do = render "shared/aspect_friends" - content_for :publish do = render "shared/publisher", :aspect_ids => :all, :broadcast => true += render 'aspects/empty_messages' + %ul#stream - for post in @posts = render type_partial(post), :post => post unless post.class == Album + #pagination = will_paginate @posts diff --git a/app/views/aspects/show.html.haml b/app/views/aspects/show.html.haml index 772a71971..d2cd9c04c 100644 --- a/app/views/aspects/show.html.haml +++ b/app/views/aspects/show.html.haml @@ -2,18 +2,18 @@ -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. -- content_for :page_title do - = link_to t('.photos'), albums_path(:aspect => @aspect) - - content_for :left_pane do = render "shared/aspect_friends" - content_for :publish do = render "shared/publisher", :aspect_ids => :all += render 'aspects/empty_messages' + %ul#stream - for post in @posts = render type_partial(post), :post => post unless post.class == Album + #pagination = will_paginate @posts diff --git a/app/views/invitations/_new.haml b/app/views/invitations/_new.haml index 208e77640..f53882567 100644 --- a/app/views/invitations/_new.haml +++ b/app/views/invitations/_new.haml @@ -4,5 +4,6 @@ %p = f.label :email = f.text_field :email + = f.hidden_field :aspect_id, :value => @aspect.id %p= f.submit "Send an invitation" /= link_to "Home", after_sign_in_path_for(resource_name) diff --git a/app/views/js/_websocket_js.haml b/app/views/js/_websocket_js.haml index a0663edfc..9bf801e0a 100644 --- a/app/views/js/_websocket_js.haml +++ b/app/views/js/_websocket_js.haml @@ -37,9 +37,10 @@ }); function processRetraction(post_id){ - $('#' + post_id ).fadeOut(500, function(){ - $(this).remove; - }); + $('#' + post_id ).fadeOut(500).remove(); + if($("#stream")[0].childElementCount == 0){ + $("#no_posts").fadeIn(200); + } } function processComment(post_id, html){ @@ -59,14 +60,23 @@ function processPost(className, html, aspectIds){ if(onPageForAspects(aspectIds)){ - $("#stream").prepend( - $(html).fadeIn("fast", function(){ - $("#stream label:first").inFieldLabels(); - }) - ); + var addPostToStream = function (html){ + $("#stream").prepend( + $(html).fadeIn("fast", function(){ + $("#stream label:first").inFieldLabels(); + }) + ) + }; + + if( $("#no_posts").is(":visible") ){ + $("#no_posts").fadeOut(400, addPostToStream(html)).hide(); + } else { + addPostToStream(html); + } } } + function processPhotoInAlbum(photoHash){ if (location.href.indexOf(photoHash['album_id']) == -1){ return ; diff --git a/app/views/shared/_aspect_friends.haml b/app/views/shared/_aspect_friends.haml index a37068577..508cabbb4 100644 --- a/app/views/shared/_aspect_friends.haml +++ b/app/views/shared/_aspect_friends.haml @@ -2,30 +2,41 @@ -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. -#friend_pictures - = owner_image_link - - for friend in @friends - = person_image_link(friend) - - if @logged_in && (@aspect == :public) - %h3 Facebook Friends - - @fb_friends = MiniFB.get(@access_token, 'me', :type => "friends") - - @fb_friends[:data].each do |friend| - = image_tag( "http://graph.facebook.com/#{friend[:id]}/picture" ) - -unless (@aspect == :all) || (@aspect == :public) - = link_to (image_tag('add_friend_button.png', :height => "50px", :width => "50px")), "#add_request_pane", :id => 'add_request_button' - .yo{:style => 'display:none'} - #add_request_pane - = render "requests/new_request", :aspect => @aspect - -else - .clear - %br - = link_to t('.add_friends'), aspects_manage_path +#left_pane + #friend_pictures + = owner_image_link + - for friend in @friends + = person_image_link(friend) + - if @logged_in && (@aspect == :public) + %h3 Facebook Friends + - @fb_friends = MiniFB.get(@access_token, 'me', :type => "friends") + - @fb_friends[:data].each do |friend| + = image_tag( "http://graph.facebook.com/#{friend[:id]}/picture" ) + -unless (@aspect == :all) || (@aspect == :public) + = link_to (image_tag('add_friend_button.png', :height => "50px", :width => "50px")), "#add_request_pane", :id => 'add_request_button' + + .yo{:style => 'display:none'} + #add_request_pane + = render "requests/new_request", :aspect => @aspect + -else + .clear + %br + = link_to t('.add_friends'), aspects_manage_path + + %br + %br + %ul + %li= link_to 'stream', aspect_path(@aspect) + %li= link_to t('.photos'), albums_path(:aspect => @aspect) + + %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" -%br -= link_to "Invite a friend!", "#invite_user_pane", :id => "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" diff --git a/config/locales/devise/devise.fr-informal.yml b/config/locales/devise/devise.fr-informal.yml index 298525ae9..1c97771c0 100644 --- a/config/locales/devise/devise.fr-informal.yml +++ b/config/locales/devise/devise.fr-informal.yml @@ -1,7 +1,3 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. - fr-informal: errors: messages: @@ -22,19 +18,29 @@ fr-informal: signed_in: 'Connecté avec succès.' signed_out: 'Déconnecté avec succès.' passwords: - send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant des instructions t’expliquant comment réinitialiser ton mot de passe.' + send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant les instructions pour réinitialiser ton mot de passe.' updated: 'Ton mot de passe a été modifié avec succès. Tu es à présent connecté.' confirmations: - send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant des instructions t’expliquant comment confirmer ton compte.' + send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant les instructions pour confirmer ton compte.' confirmed: 'Ton compte a été confirmé avec succès. Tu es à présent connecté.' registrations: - signed_up: 'Tu t’es inscrit avec succès. Si activée, une confirmation a été envoyée sur ton adresse e-mail.' + signed_up: 'Tu t’es inscrit avec succès. Si cette dernière est activée, une confirmation a été envoyée sur ton adresse e-mail.' updated: 'Tu as mis à jour ton compte avec succès.' destroyed: 'Au revoir ! Ton compte a été résilié avec succès. Nous espérons te revoir très bientôt.' unlocks: - send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant des instructions t’expliquant comment déverrouiller ton compte.' + send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant les instructions pour déverrouiller ton compte.' unlocked: 'Ton compte a été déverrouillé avec succès. Tu es à présent connecté.' + invitations: + send_instructions: 'Ton invitation a été envoyée.' + invitation_token_invalid: 'Le jeton d’invitation fourni n’est pas valide !' + updated: 'Ton mot de passe a été réglé avec succès. Tu es à présent connecté.' mailer: - confirmation_instructions: 'Instructions de confirmation' - reset_password_instructions: 'Réinitialiser les instructions du mot de passe' - unlock_instructions: 'Instructions de déverrouillage' + confirmation_instructions: + subject: 'Instructions de confirmation' + reset_password_instructions: + subject: 'Instructions de réinitialisation du mot de passe' + unlock_instructions: + subject: 'Instructions de déverrouillage' + invitation: + subject: 'Un ami souhaite que tu rejoignes Diaspora !' + diff --git a/config/locales/devise/devise.fr.yml b/config/locales/devise/devise.fr.yml index 69518e4a6..d549c2931 100644 --- a/config/locales/devise/devise.fr.yml +++ b/config/locales/devise/devise.fr.yml @@ -1,7 +1,3 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. - fr: errors: messages: @@ -14,7 +10,7 @@ fr: unauthenticated: 'Vous devez vous connecter ou vous inscrire avant de continuer.' unconfirmed: 'Vous devez confirmer votre compte avant de continuer.' locked: 'Votre compte est verrouillé.' - invalid: 'E-mail ou mot de passe invalide.' + invalid: 'Adresse e-mail ou mot de passe invalide.' invalid_token: 'Jeton d’authentification invalide.' timeout: 'Votre session a expiré, veuillez vous connecter de nouveau afin de continuer.' inactive: 'Votre compte n’a pas encore été activé.' @@ -22,19 +18,29 @@ fr: signed_in: 'Connecté avec succès.' signed_out: 'Déconnecté avec succès.' passwords: - send_instructions: 'Vous allez recevoir dans quelques minutes un e-mail contenant des instructions vous expliquant comment réinitialiser votre mot de passe.' + send_instructions: 'Vous allez recevoir dans quelques minutes un e-mail contenant les instructions pour réinitialiser votre mot de passe.' updated: 'Votre mot de passe a été modifié avec succès. Vous êtes à présent connecté.' confirmations: - send_instructions: 'Vous allez recevoir dans quelques minutes un e-mail contenant des instructions vous expliquant comment confirmer votre compte.' + send_instructions: 'Vous allez recevoir dans quelques minutes un e-mail contenant les instructions pour confirmer votre compte.' confirmed: 'Votre compte a été confirmé avec succès. Vous êtes à présent connecté.' registrations: - signed_up: 'Vous vous êtes inscrit avec succès. Si activée, une confirmation a été envoyée sur votre adresse e-mail.' + signed_up: 'Vous vous êtes inscrit avec succès. Si cette dernière est activée, une confirmation a été envoyée sur votre adresse e-mail.' updated: 'Vous avez mis à jour votre compte avec succès.' destroyed: 'Au revoir ! Votre compte a été résilié avec succès. Nous espérons vous revoir très bientôt.' unlocks: - send_instructions: 'Vous allez recevoir dans quelques minutes un e-mail contenant des instructions vous expliquant comment déverrouiller votre compte.' + send_instructions: 'Vous allez recevoir dans quelques minutes un e-mail contenant les instructions pour déverrouiller votre compte.' unlocked: 'Votre compte a été déverrouillé avec succès. Vous êtes à présent connecté.' + invitations: + send_instructions: 'Votre invitation a été envoyée.' + invitation_token_invalid: 'Le jeton d’invitation fourni n’est pas valide !' + updated: 'Votre mot de passe a été réglé avec succès. Vous êtes à présent connecté.' mailer: - confirmation_instructions: 'Instructions de confirmation' - reset_password_instructions: 'Réinitialiser les instructions du mot de passe' - unlock_instructions: 'Instructions de déverrouillage' + confirmation_instructions: + subject: 'Instructions de confirmation' + reset_password_instructions: + subject: 'Instructions de réinitialisation du mot de passe' + unlock_instructions: + subject: 'Instructions de déverrouillage' + invitation: + subject: 'Un ami souhaite que vous rejoigniez Diaspora !' + diff --git a/config/locales/devise/devise.tr.yml b/config/locales/devise/devise.tr.yml new file mode 100644 index 000000000..b3623e5d0 --- /dev/null +++ b/config/locales/devise/devise.tr.yml @@ -0,0 +1,40 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3 or later. See +# the COPYRIGHT file. + +tr: + errors: + messages: + not_found: "bulunmadi" + already_confirmed: "zaten doğrulandı" + not_locked: "kilitlenmedi" + + devise: + failure: + unauthenticated: "Devam etmeden once bir hesap açtırmalı veya hesabınızla giriş yapmalısınız." + unconfirmed: "Hesabınızı doğrulamalısınız devam etmeden once." + locked: "Hesabınız kilitlenmiştir." + invalid: "Yanlış email veya şifre." + invalid_token: "Yanlış authentikasyon tılsımı." + timeout: "Zamanınız sona erdi, lütfen tekrar giriş yapın devam etmek için." + inactive: "Hesabınız aktive edilmemiştir daha." + sessions: + signed_in: "Başarıyla giriş yaptınız." + signed_out: "Başarıyla çıkıs yaptınız." + passwords: + send_instructions: "Kisa bir süre içersinde şifrenizi nasıl yeniliyceğinizi açıklıyan bir email alıcaksınız." + updated: "Şifreniz değistirilmiştir. Şu anda giriş yapmış oluyorsunuz." + confirmations: + send_instructions: "Kısa bir süre içersinde hesabınızı nasıl dogruluycaginiza dair bir email alicaksiniz." + confirmed: "Hesabınız dogrulanmıstır. Şu anda giriş yapmış oluyorsunuz." + registrations: + signed_up: "Basarıyla kayıt yaptınız. Dogrulama emaili size gonderilmistir." + updated: "Heabinizi başarili olarak yenilediniz." + destroyed: "Hoşçakal! Hesabiniz yok edildi. Umuyoruz sizi tekrar gorüceğiz yakınlarda." + unlocks: + send_instructions: "Kisa bir süre içersinde hesabınızı nasıl kilit altinda çikarabiliceginize dair bir email alıcaksınız." + unlocked: "Heabiniz kilit altindan çıkartılmıstır. Şu anda giriş yapmıs oluyorsunuz" + mailer: + confirmation_instructions: "Doğrulama talimatları" + reset_password_instructions: "Yeni şifre kurma talimatları" + unlock_instructions: "Kilit altından çıkarma talimatları" diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index 1dd33bb3f..f80a24733 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -38,6 +38,7 @@ en: share: "Share" aspect_friends: add_friends: "add friends" + photos: "photos" albums: album: you: "you" @@ -69,10 +70,13 @@ en: friends_albums: "Friends Albums" your_albums: "Your Albums" aspects: - index: - photos: "photos" - show: - photos: "photos" + empty_messages: + start_talking: "Nobody has said anything yet. Get the conversation started!" + 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!" manage: add_a_new_aspect: "Add a new aspect" add_a_new_friend: "Add a new friend" diff --git a/config/locales/diaspora/fr-informal.yml b/config/locales/diaspora/fr-informal.yml index 8a30d7ad9..d8944f81e 100644 --- a/config/locales/diaspora/fr-informal.yml +++ b/config/locales/diaspora/fr-informal.yml @@ -21,7 +21,7 @@ fr-informal: people: helper: results_for: " résultats concernant %{params}" - people_on_pod_are_aware_of: " personnes agissant comme des automates sont conscients de" + people_on_pod_are_aware_of: " personnes agissant comme des automates sont au courant" layouts: application: edit_profile: "éditer le profil" @@ -52,7 +52,7 @@ fr-informal: edit: editing: "Édition" updated: "mis à jour" - are_you_sure: "Es-tu sûr(e)?" + are_you_sure: "Es-tu sûr(e) ?" delete_album: "Supprimer l’album" cancel: "Annuler" index: @@ -84,17 +84,18 @@ fr-informal: add_a_new_aspect: "Ajouter un nouvel aspect" create: "Créer" create: - success:"Clique sur le symbole plus situé sur le côté gauche afin que Diaspora détermine qui peut voir ton nouvel aspect." + success: "Clique sur le symbole plus situé sur le côté gauche afin que Diaspora détermine qui peut voir ton nouvel aspect." + failure: "La création de l’aspect a échoué." destroy: success: "%{name} a été supprimé avec succès." update: success: "Ton aspect, %{name}, a été édité avec succès." move_friends: - failure: "L’édition de l’aspect concernant l’ami %{real_name} a échoué." + failure: "L’édition de l’aspect concernant ton ami %{real_name} a échoué." success: "Les aspects ont été édités avec succès." move_friend: - error: "ne fonctionne pas %{inspect}" - notice: "Tu montres à présent à ton ami un aspect différent au tien." + failure: "ne fonctionne pas %{inspect}" + success: "Tu montres à présent à ton ami un aspect différent au tiens." helper: remove: "supprimer" aspect_not_empty: "L’aspect n’est pas vide" @@ -106,12 +107,14 @@ fr-informal: update_profile: "Mettre à jour le profil" home: "Accueil" diaspora_username: "NOM D’UTILISATEUR DIASPORA" - info: "Information" + info: "Informations" picture: "Image" editing_profile: "Édition du profil" albums: "Albums" you_dont_have_any_photos: "Tu n’as aucune photo ! Rends-toi sur la page" page_to_upload_some: "afin d’en transférer quelques-unes." + or: "ou" + destroy: "Compte clôturé avec succès." comments: comment: ago: "il y a" @@ -132,25 +135,33 @@ fr-informal: delete_photo: "Supprimer la photo" photo: show_comments: "afficher les commentaires" - posted_a_new_photo_to: "a publié une nouvelle photo sur" + posted_a_new_photo_to: "a publié une nouvelle photo dans" new: new_photo: "Nouvelle photo" back_to_list: "Retourner à la liste" - post_it: "publie-la !" + post_it: "la publier !" create: runtime_error: "Le transfert de la photo a échoué. Es-tu sûr(e) que ta ceinture de sécurité est bien attachée ?" integrity_error: "Le transfert de la photo a échoué. Es-tu sûr(e) que c’était bien une image ?" - type_error: "Le transfert de la photo a échoué. Es-tu sûr(e) que l’image était bien ajoutée ?" + type_error: "Le transfert de la photo a échoué. Es-tu sûr(e) que l’image a bien été ajoutée ?" update: notice: "La photo a été mise à jour avec succès." - error: "Échec de l’édition de la photo." + error: "L’édition de la photo a échoué." destroy: - notice: "Photo supprimée." + notice: "La photo a été supprimée." registrations: new: sign_up: "Inscription" create: success: "Tu as rejoint Diaspora !" + invitations: + create: + sent: 'Ton invitation a été envoyée.' + no_more: 'Tu n’as plus d’invitation.' + already_sent: 'Tu as déjà invité cette personne.' + invitation_token_invalid: 'Le jeton d’invitation fourni n’est pas valide !' + updated: 'Ton mot de passe a été réglé avec succès. Tu es à présent connecté.' + status_messages: new_status_message: tell_me_something_good: "dis-moi quelque chose de bien" @@ -164,14 +175,14 @@ fr-informal: comments: "commentaires" are_you_sure: "Es-tu sûr(e) ?" destroy: "Détruire" - view_all: "Tout voir" + view_all: "Tout afficher" message: "Message" owner: "Propriétaire" helper: no_message_to_display: "Aucun message à afficher." people: person: - add_friend: "ajouter un ami" + add_friend: "ajouter en ami" pending_request: "requête en attente" index: add_friend: "ajouter un ami" @@ -186,13 +197,13 @@ fr-informal: show: last_seen: "dernière connexion : %{how_long_ago}" friends_since: "amis depuis : %{how_long_ago}" - save: "sauvegarder" + save: "sauver" are_you_sure: "Es-tu sûr(e) ?" - remove_friend: "supprimer un ami" + remove_friend: "supprimer de mes amis" requests: new_request: - add_a_new_friend_to: "Ajouter un ami à" - enter_a_diaspora_username: "Saisi un nom d’utilisateur Diaspora :" + add_a_new_friend_to: "Ajouter un nouvel ami à" + enter_a_diaspora_username: "Saisis un nom d’utilisateur Diaspora :" your_diaspora_username_is: "Ton nom d’utilisateur Diaspora est : %{diaspora_handle}" friends_username: "Nom d’utilisateur de l’ami" destroy: @@ -201,6 +212,6 @@ fr-informal: ignore: "Requête d’ami ignorée." create: error: "Aucun résultat Diaspora n’a été trouvé avec cette adresse e-mail !" - already_friends: "Tu es déjà ami avec %{destination_url}!" + already_friends: "Vous êtes déjà amis avec %{destination_url}!" success: "Une requête d’ami a été envoyée à %{destination_url}." horribly_wrong: "Quelque chose d’horrible s’est produit." diff --git a/config/locales/diaspora/fr.yml b/config/locales/diaspora/fr.yml index 92abcbcfb..c372ee57e 100644 --- a/config/locales/diaspora/fr.yml +++ b/config/locales/diaspora/fr.yml @@ -2,42 +2,42 @@ # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. -# Localization file for French. Add more files in this directory for other locales. +# Localization file for French (Formal Honorifics). Add more files in this directory for other locales. # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. fr: hello: "Bonjour tout le monde" application: helper: - unknown_person: "unknown person" - new_requests: "new requests" + unknown_person: "personne inconnue" + new_requests: "nouvelles requêtes" dashboards: helper: - home: "home" + home: "accueil" error_messages: helper: - invalid_fields: "Invalid Fields" - correct_the_following_errors_and_try_again: "Correct the following errors and try again." + invalid_fields: "Champs invalides" + correct_the_following_errors_and_try_again: "Corrigez les erreurs suivantes, puis réessayez." people: helper: - results_for: " resultados para %{params}" - people_on_pod_are_aware_of: " gente en pod estan al tanto de " + results_for: " résultats concernant %{params}" + people_on_pod_are_aware_of: " personnes agissant comme des automates sont au courant" layouts: application: - edit_profile: "Éditez votre profil" - logout: "Déconnexion" + edit_profile: "éditer le profil" + logout: "déconnexion" shared: aspect_nav: - all_aspects: "Tous les Aspects" - manage: "Gérez" - manage_your_aspects: "Gérez vos Aspects" + all_aspects: "Tous les aspects" + manage: "Gérer" + manage_your_aspects: "Gérer vos aspects" sub_header: - all_aspects: "Tous les Aspects" - manage_aspects: "Gérez vos Aspects" + all_aspects: "Tous les aspects" + manage_aspects: "Gérer les aspects" publisher: share: "Partager" aspect_friends: - add_friends: "Ajouter des amis" + add_friends: "ajouter des amis" albums: album: you: "vous" @@ -52,22 +52,22 @@ fr: edit: editing: "Édition" updated: "mis à jour" - are_you_sure: "Êtes-vous sûr?" - delete_album: "Supprimer l'album" + are_you_sure: "Êtes-vous sûr(e) ?" + delete_album: "Supprimer l’album" cancel: "Annuler" index: home: "accueil" new_album: "Nouvel album" - helper: - friends_albums: "Friends Albums" - your_albums: "Your Albums" create: - success: "Tu as créé un album nommé %{name}." + success: "Vous avez créé un album nommé %{name}." update: success: "L’album %{name} a été édité avec succès." failure: "L’édition de l’album %{name} a échoué." destroy: success: "L’album %{name} a été supprimé." + helper: + friends_albums: "Albums d’amis" + your_albums: "Vos albums" aspects: index: photos: "photos" @@ -75,8 +75,8 @@ fr: photos: "photos" manage: add_a_new_aspect: "Ajouter un nouvel aspect" - add_a_new_friend: "Ajouter un nouvel amis" - show: "Voir" + add_a_new_friend: "Ajouter un nouvel ami" + show: "Afficher" update_aspects: "Mettre à jour les aspects" requests: "Requêtes" ignore_remove: "Ignorer/Supprimer" @@ -84,7 +84,21 @@ fr: add_a_new_aspect: "Ajouter un nouvel aspect" create: "Créer" create: - success:"Cliquez sur plus situé sur le côté gauche afin d’en informer Diaspora qui peut voir votre nouvel aspect." + success: "Cliquez sur le symbole plus situé sur le côté gauche afin que Diaspora détermine qui peut voir votre nouvel aspect." + failure: "La création de l’aspect a échoué." + destroy: + success: "%{name} a été supprimé avec succès." + update: + success: "Votre aspect, %{name}, a été édité avec succès." + move_friends: + failure: "L’édition de l’aspect concernant votre ami %{real_name} a échoué." + success: "Les aspects ont été édités avec succès." + move_friend: + failure: "ne fonctionne pas %{inspect}" + success: "Vous montrez à présent à votre ami un aspect différent au vôtre." + helper: + remove: "supprimer" + aspect_not_empty: "L’aspect n’est pas vide" users: edit: editing_profile: "Édition du profil" @@ -93,12 +107,14 @@ fr: update_profile: "Mettre à jour le profil" home: "Accueil" diaspora_username: "NOM D’UTILISATEUR DIASPORA" - info: "Information" + info: "Informations" picture: "Image" editing_profile: "Édition du profil" albums: "Albums" you_dont_have_any_photos: "Vous n’avez aucune photo ! Rendez-vous sur la page" page_to_upload_some: "afin d’en transférer quelques-unes." + or: "ou" + destroy: "Compte clôturé avec succès." comments: comment: ago: "il y a" @@ -111,22 +127,41 @@ fr: next: "suivant" edit_photo: "Éditer la photo" delete_photo: "Supprimer la photo" - are_you_sure: "Êtes-vous sûr ?" + are_you_sure: "Êtes-vous sûr(e) ?" comments: "commentaires" edit: editing: "Édition" - are_you_sure: "Êtes-vous sûr ?" + are_you_sure: "Êtes-vous sûr(e) ?" delete_photo: "Supprimer la photo" photo: show_comments: "afficher les commentaires" - posted_a_new_photo_to: "a publié une nouvelle photo sur" + posted_a_new_photo_to: "a publié une nouvelle photo dans" new: new_photo: "Nouvelle photo" back_to_list: "Retourner à la liste" - post_it: "publiez-la !" + post_it: "la publier !" + create: + runtime_error: "Le transfert de la photo a échoué. Êtes-vous sûr(e) que votre ceinture de sécurité est bien attachée ?" + integrity_error: "Le transfert de la photo a échoué. Êtes-vous sûr(e) que c’était bien une image ?" + type_error: "Le transfert de la photo a échoué. Êtes-vous sûr(e) que l’image a bien été ajoutée ?" + update: + notice: "La photo a été mise à jour avec succès." + error: "L’édition de la photo a échoué." + destroy: + notice: "La photo a été supprimée." registrations: new: sign_up: "Inscription" + create: + success: "Vous avez rejoint Diaspora !" + invitations: + create: + sent: 'Votre invitation a été envoyée.' + no_more: 'Vous n’avez plus d’invitation.' + already_sent: 'Vous avez déjà invité cette personne.' + invitation_token_invalid: 'Le jeton d’invitation fourni n’est pas valide !' + updated: 'Votre mot de passe a été réglé avec succès. Vous êtes à présent connecté.' + status_messages: new_status_message: tell_me_something_good: "dites-moi quelque chose de bien" @@ -134,16 +169,21 @@ fr: status_message: show_comments: "afficher les commentaires" delete: "Supprimer" - are_you_sure: "Êtes-vous sûr ?" + are_you_sure: "Êtes-vous sûr(e) ?" show: status_message: "Message d’état" comments: "commentaires" - are_you_sure: "Êtes-vous sûr ?" + are_you_sure: "Êtes-vous sûr(e) ?" destroy: "Détruire" - view_all: "Tout voir" + view_all: "Tout afficher" message: "Message" owner: "Propriétaire" + helper: + no_message_to_display: "Aucun message à afficher." people: + person: + add_friend: "ajouter en ami" + pending_request: "requête en attente" index: add_friend: "ajouter un ami" real_name: "nom réel" @@ -157,6 +197,21 @@ fr: show: last_seen: "dernière connexion : %{how_long_ago}" friends_since: "amis depuis : %{how_long_ago}" - save: "sauvegarder" - are_you_sure: "Êtes-vous sûr ?" - remove_friend: "supprimer un ami" + save: "sauver" + are_you_sure: "Êtes-vous sûr(e) ?" + remove_friend: "supprimer de mes amis" + requests: + new_request: + add_a_new_friend_to: "Ajouter un nouvel ami à" + enter_a_diaspora_username: "Saisissez un nom d’utilisateur Diaspora :" + your_diaspora_username_is: "Votre nom d’utilisateur Diaspora est : %{diaspora_handle}" + friends_username: "Nom d’utilisateur de l’ami" + destroy: + success: "Vous êtes à présent amis." + error: "Veuillez sélectionner un aspect !" + ignore: "Requête d’ami ignorée." + create: + error: "Aucun résultat Diaspora n’a été trouvé avec cette adresse e-mail !" + already_friends: "Vous êtes déjà amis avec %{destination_url}!" + success: "Une requête d’ami a été envoyée à %{destination_url}." + horribly_wrong: "Quelque chose d’horrible s’est produit." diff --git a/config/locales/diaspora/tr.yml b/config/locales/diaspora/tr.yml new file mode 100644 index 000000000..823ff180d --- /dev/null +++ b/config/locales/diaspora/tr.yml @@ -0,0 +1,208 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + +# Sample localization file for English. Add more files in this directory for other locales. +# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +tr: + hello: "Merhaba dünya" + application: + helper: + unknown_person: "bilinmiyen insanlar" + new_requests: "yeni istekler" + dashboards: + helper: + home: "ev" + error_messages: + helper: + invalid_fields: "Yanliș Bölümler" + correct_the_following_errors_and_try_again: "Alttaki yanlișlari düzeltin ve tekrar deneyin." + people: + helper: + results_for: "%{params} için sonuçlar" + people_on_pod_are_aware_of: " bu podda bizim bildiğimiz kişiler." + layouts: + application: + edit_profile: "profili düzelt" + logout: "çık" + shared: + aspect_nav: + all_aspects: "Bütün Yanlar" + manage: "Düzenle" + manage_your_aspects: "Bütün yanları düzenle" + sub_header: + all_aspects: "Bütün Yanlar" + manage_aspects: "Yanları Düzenle" + publisher: + share: "Paylaş" + aspect_friends: + add_friends: "Arkadaş ekle" + albums: + album: + you: "sen" + new_album: + create: "yarat" + add_a_new_album: "Yeni albüm ekle" + show: + edit_album: "Albümü düzelt" + albums: "albümler" + updated: "düzeltildi" + by: "tarafından" + edit: + editing: "düzeltiyor" + updated: "düzeltildi" + are_you_sure: "Eminmisin?" + delete_album: "Sil Albümü" + cancel: "Vazgeç" + index: + home: "Ev" + new_album: "Yeni Albüm" + create: + success: "Yeni bir album yarattınız %{name} isminde." + update: + success: "Albüm %{name} başarı ile eklenmiştir." + failure: "Albüm %{name} yı düzeltme başarılı değil." + destroy: + success: "Albüm %{name} silinmistir." + helper: + friends_albums: "Arkadaşların Albümleri" + your_albums: "Sizin Albümleriniz" + aspects: + index: + photos: "resimler" + show: + photos: "resimler" + manage: + add_a_new_aspect: "Yeni bir yan ekle" + add_a_new_friend: "Yeni bir arkadaş ekle" + show: "Show" + update_aspects: "Yanlari düzelt" + requests: "Ricalar" + ignore_remove: "Goz ardi et/çıkart" + new_aspect: + add_a_new_aspect: "Yeni bir yan ekle" + create: "Yarat" + create: + success: "Sol taraftaki arti ya tıklıyarak Diasporaya sizin yeni yanınızı kimlerin görebileceğini belirtin." + failure: "Yan yaratimi basarılı değildi." + destroy: + success: "%{name} basarıyla yaratıldı." + update: + success: "Sizin yanınız, %{name}, başariyla düzeltildi." + move_friends: + failure: "Yan düzeltimi arkadisınız %{real_name} icin başarisizdi." + success: "Yanlar başariyla düzeltildi." + move_friend: + failure: "%{inspect} islemedi." + success: "Simdi siz arkadaşlarınıza başka bir yanınızı gosteriyorsunuz." + helper: + remove: "cikart" + aspect_not_empty: "Yan bos değil" + users: + edit: + editing_profile: "Profili düzeltiliyor" + profile: + cancel: "Vazgeç" + update_profile: "düzelt Profili" + home: "Ev" + diaspora_username: "DIASPORA ISMINIZ" + info: "Bilgi" + picture: "Resim" + editing_profile: "Profili düzeltmek" + albums: "Albümler" + you_dont_have_any_photos: "Hicbir fotorafiniz yok! Şuraya gidin" + page_to_upload_some: "yuklemek icin." + or: "veya" + comments: + comment: + ago: "once" + new_comment: + comment: "Yorum" + photos: + show: + prev: "once" + full_size: "tam büyüklük" + next: "sonra" + edit_photo: "düzelt Fotoyu" + delete_photo: "Sil Fotoyu" + are_you_sure: "Eminmisiniz?" + comments: "yorumlar" + edit: + editing: "düzeltiliyor" + are_you_sure: "Eminmisiniz?" + delete_photo: "Sil Fotoyu" + photo: + show_comments: "göster yorumları" + posted_a_new_photo_to: "yeni bir foto koydu " + new: + new_photo: "Yeni Foto" + back_to_list: "Listeye Geri Git" + post_it: "ekle!" + create: + runtime_error: "Fotoyu yukleme başarısızdı. Emniyet kemeriniz takılımıydı?" + integrity_error: "Fotoyu yukleme başarısızdı. Resim olduğundan eminmisınız?" + type_error: "Fotoyu yukleme başarısızdı. Bir resim yuklediğinize eminmisiniz?" + update: + notice: "Resim başarıyla eklendi." + error: "Fotoyu düzeltme basarısızdı." + destroy: + notice: "Foto silindi." + registrations: + new: + sign_up: "Katıl" + create: + success: "Diasporaya katıldınız!" + status_messages: + new_status_message: + tell_me_something_good: "bana iyi bir şey söyle" + oh_yeah: "tabi ya!" + status_message: + show_comments: "göster yorumları" + delete: "Sil" + are_you_sure: "Eminmisiniz?" + show: + status_message: "Status Mesaji" + comments: "yorumlar" + are_you_sure: "Eminmisiniz?" + destroy: "Yok et" + view_all: "Hepsine bak" + message: "Mesaj" + owner: "Sahibi" + helper: + no_message_to_display: "Gosterilcek bir mesaj yok." + people: + person: + add_friend: "Arkadaş ekle" + pending_request: "bekletilen rica" + index: + add_friend: "Arkadaş ekle" + real_name: "esas ismi" + diaspora_handle: "diaspora ismi" + thats_you: "o sensin!" + friend_request_pending: "Arkadaş ricasi bekletiliyor" + you_have_a_friend_request_from_this_person: "siz bir arkadaş isteği aldiniz bu kişiden" + new: + new_person: "Yeni Kişi" + back_to_list: "Listeye geri dön" + show: + last_seen: "son gorüldü: %{how_long_ago}" + friends_since: "Arkadaş süreci: %{how_long_ago}" + save: "sakla" + are_you_sure: "Eminmisiniz?" + remove_friend: "çikart arkadaşlıktan" + requests: + new_request: + add_a_new_friend_to: "Buna yeni bir arkadaş ekle" + enter_a_diaspora_username: "Bir Diaspora ismi gir:" + your_diaspora_username_is: "Sizin Diaspora isminiz: %{diaspora_handle}" + friends_username: "Arkadaşin Diaspora ismi" + destroy: + success: "Siz şimdi arkadaşsınız." + error: "Lutfen bir yan seçiniz!" + ignore: "Arkadaş isteğini reddettiniz." + create: + error: "Diaspora cekirdeği bulunmadı bu emailde!" + already_friends: "Siz zaten arakadaşsınız %{destination_url} ile!" + success: "%{destination_url} için arakadaş olma isteği gonderilmiştir." + horribly_wrong: "Bir şey muhtemalan yanliş gitti." \ No newline at end of file diff --git a/public/javascripts/view.js b/public/javascripts/view.js index eec063bcd..f79cace4d 100644 --- a/public/javascripts/view.js +++ b/public/javascripts/view.js @@ -27,8 +27,8 @@ $(document).ready(function(){ //buttons////// $("#add_aspect_button").fancybox({ 'titleShow' : false }); - $("#add_request_button").fancybox({ 'titleShow': false }); - $("#invite_user_button").fancybox({ 'titleShow': false }); + $(".add_request_button").fancybox({ 'titleShow': false }); + $(".invite_user_button").fancybox({ 'titleShow': false }); $(".add_request_button").fancybox({ 'titleShow': false }); $("input[type='submit']").addClass("button"); diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 0b8368b6b..f1b8bee94 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -964,3 +964,48 @@ ul#settings_nav #aspect_list :margin 0 :padding 0 + +#left_pane + ul + :margin 0 + :padding 0 + :list + :style none + li a + :display block + :padding 3px + :border + :bottom 1px solid #ccc + + &:hover + &:after + :content " ►" + +.empty_message + :margin + :top 12px + :bottom 12px + :text + :align center + + :color #777 + h3 + :color #777 + + :margin + :left 70px + :padding 2em + :bottom 0.7em + + :width 520px + + :border 2px dashed #777 + :border-radius 5px + + .null_arrow + :margin + :top -14px + :font + :size 80px + :display inline-block + diff --git a/spec/models/user/invite_spec.rb b/spec/models/user/invite_spec.rb index 180b2d874..9735415fb 100644 --- a/spec/models/user/invite_spec.rb +++ b/spec/models/user/invite_spec.rb @@ -6,58 +6,78 @@ require 'spec_helper' describe User do let(:inviter) {Factory.create :user} + let(:aspect) {inviter.aspect(:name => "awesome")} + let(:another_user) {Factory.create :user} + let(:wrong_aspect) {another_user.aspect(:name => "super")} let(:inviter_with_3_invites) {Factory.create :user, :invites => 3} - let!(:invited_user) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter)} - let(:invited_user1) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter_with_3_invites)} - let(:invited_user2) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter_with_3_invites)} - let(:invited_user3) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter_with_3_invites)} + let(:aspect2) {inviter_with_3_invites.aspect(:name => "Jersey Girls")} + let!(:invited_user1) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter)} + + before do + deliverable = Object.new + deliverable.stub!(:deliver) + ::Devise.mailer.stub!(:invitation).and_return(deliverable) + end context "creating invites" do - before do - deliverable = Object.new - deliverable.stub!(:deliver) - ::Devise.mailer.stub!(:invitation).and_return(deliverable) + it 'requires an apect' do + proc{inviter.invite_user(:email => "maggie@example.com")}.should raise_error /Must invite into aspect/ + end + + it 'requires your aspect' do + proc{inviter.invite_user(:email => "maggie@example.com", :aspect_id => wrong_aspect.id)}.should raise_error /Must invite to your aspect/ end it 'creates a user' do + inviter lambda { - inviter.invite_user(:email => "joe@example.com") + inviter.invite_user(:email => "joe@example.com", :aspect_id => aspect.id ) }.should change(User, :count).by(1) end it 'sends email to the invited user' do ::Devise.mailer.should_receive(:invitation).once - inviter.invite_user(:email => "ian@example.com") + inviter.invite_user(:email => "ian@example.com", :aspect_id => aspect.id) end it 'adds the inviter to the invited_user' do - invited_user = inviter.invite_user(:email => "marcy@example.com") + invited_user = inviter.invite_user(:email => "marcy@example.com", :aspect_id => aspect.id) invited_user.reload invited_user.inviters.include?(inviter).should be_true end + + + it 'adds a pending request to the invited user' do + invited_user = inviter.invite_user(:email => "marcy@example.com", :aspect_id => aspect.id) + invited_user.reload + invited_user.pending_requests.find_by_callback_url(inviter.receive_url).nil?.should == false + end + + it 'adds a pending request to the inviter' do + inviter.invite_user(:email => "marcy@example.com", :aspect_id => aspect.id) + inviter.reload + inviter.pending_requests.find_by_callback_url(inviter.receive_url).nil?.should == false + end end context "limit on invites" do it 'does not invite users after 3 invites' do - User.stub!(:invite!).and_return(invited_user1,invited_user2,invited_user3) - inviter_with_3_invites.invite_user(:email => "email1@example.com") - inviter_with_3_invites.invite_user(:email => "email2@example.com") - inviter_with_3_invites.invite_user(:email => "email3@example.com") - proc{inviter_with_3_invites.invite_user(:email => "email4@example.com")}.should raise_error /You have no invites/ + inviter_with_3_invites.invite_user(:email => "email1@example.com", :aspect_id => aspect2.id) + inviter_with_3_invites.invite_user(:email => "email2@example.com", :aspect_id => aspect2.id) + inviter_with_3_invites.invite_user(:email => "email3@example.com", :aspect_id => aspect2.id) + proc{inviter_with_3_invites.invite_user(:email => "email4@example.com", :aspect_id => aspect2.id)}.should raise_error /You have no invites/ end it 'does not invite people I already invited' do - pending "this is really weird to test without the actual method working" - User.stub!(:invite!).and_return(invited_user1,invited_user1) - inviter_with_3_invites.invite_user(:email => "email1@example.com") - proc{inviter_with_3_invites.invite_user(:email => "email1@example.com")}.should raise_error /You already invited that person/ + inviter_with_3_invites.invite_user(:email => "email1@example.com", :aspect_id => aspect2.id) + proc{inviter_with_3_invites.invite_user(:email => "email1@example.com", :aspect_id => aspect2.id)}.should raise_error /You already invited this person/ end end context "the acceptance of an invitation" do it "should create the person with the passed in params" do person_count = Person.count - u = invited_user.accept_invitation!(:invitation_token => "abc", + u = invited_user1.accept_invitation!(:invitation_token => "abc", :username => "user", :password => "secret", :password_confirmation => "secret",