Merge branch 'master' of github.com:diaspora/diaspora into maxwell

Conflicts:
	Gemfile
	Gemfile.lock
	spec/models/user/invite_spec.rb
This commit is contained in:
maxwell 2010-10-14 23:02:06 -07:00
commit 341009e20f
22 changed files with 891 additions and 154 deletions

View file

@ -1,6 +1,7 @@
source 'http://rubygems.org' source 'http://rubygems.org'
gem 'rails', '3.0.1' gem 'rails', '>= 3.0.0'
gem 'bundler', '>= 1.0.0' gem 'bundler', '>= 1.0.0'
#Security #Security

286
Gemfile.lock Normal file
View file

@ -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)

View file

@ -106,7 +106,8 @@ class UsersController < ApplicationController
private private
def prep_image_url(params) 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? if params[:profile][:image_url].empty?
params[:profile].delete(:image_url) params[:profile].delete(:image_url)
else else

View file

@ -27,7 +27,6 @@ class Request
before_validation :clean_link before_validation :clean_link
scope :for_user, lambda{ |user| where(:destination_url => user.person.receive_url) } 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 = {}) def self.instantiate(options = {})
person = options[:from] person = options[:from]

View file

@ -268,8 +268,24 @@ class User
###Invitations############ ###Invitations############
def invite_user( opts = {} ) def invite_user( opts = {} )
if self.invites > 0 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.invites = self.invites - 1
self.pending_requests << request
request.save
self.save! self.save!
invited_user invited_user
else else
@ -279,11 +295,14 @@ class User
def self.invite!(attributes={}) def self.invite!(attributes={})
inviter = attributes.delete(:inviter) inviter = attributes.delete(:inviter)
request = attributes.delete(:request)
invitable = find_or_initialize_with_error_by(:email, attributes.delete(:email)) invitable = find_or_initialize_with_error_by(:email, attributes.delete(:email))
invitable.attributes = attributes invitable.attributes = attributes
if invitable.inviters.include?(inviter) if invitable.inviters.include?(inviter)
raise "You already invited this person" raise "You already invited this person"
else else
invitable.pending_requests << request
invitable.inviters << inviter invitable.inviters << inviter
end end

View file

@ -8,9 +8,6 @@
$("#add_album_button").fancybox(); $("#add_album_button").fancybox();
}); });
= content_for :page_title do
= link_to "◂ #{t('.home')}", aspects_path, :aspect => params[:aspect]
- content_for :left_pane do - content_for :left_pane do
= render "shared/aspect_friends" = render "shared/aspect_friends"
@ -31,6 +28,3 @@
#pagination #pagination
= will_paginate @albums = will_paginate @albums
#content_bottom
.back
= link_to "⇧ #{t('.home')}", root_path

View file

@ -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')

View file

@ -2,18 +2,18 @@
-# licensed under the Affero General Public License version 3 or later. See -# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file. -# the COPYRIGHT file.
- content_for :page_title do
= link_to t('.photos'), albums_path(:aspect => @aspect)
- content_for :left_pane do - content_for :left_pane do
= render "shared/aspect_friends" = render "shared/aspect_friends"
- content_for :publish do - content_for :publish do
= render "shared/publisher", :aspect_ids => :all, :broadcast => true = render "shared/publisher", :aspect_ids => :all, :broadcast => true
= render 'aspects/empty_messages'
%ul#stream %ul#stream
- for post in @posts - for post in @posts
= render type_partial(post), :post => post unless post.class == Album = render type_partial(post), :post => post unless post.class == Album
#pagination #pagination
= will_paginate @posts = will_paginate @posts

View file

@ -2,18 +2,18 @@
-# licensed under the Affero General Public License version 3 or later. See -# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file. -# the COPYRIGHT file.
- content_for :page_title do
= link_to t('.photos'), albums_path(:aspect => @aspect)
- content_for :left_pane do - content_for :left_pane do
= render "shared/aspect_friends" = render "shared/aspect_friends"
- content_for :publish do - content_for :publish do
= render "shared/publisher", :aspect_ids => :all = render "shared/publisher", :aspect_ids => :all
= render 'aspects/empty_messages'
%ul#stream %ul#stream
- for post in @posts - for post in @posts
= render type_partial(post), :post => post unless post.class == Album = render type_partial(post), :post => post unless post.class == Album
#pagination #pagination
= will_paginate @posts = will_paginate @posts

View file

@ -4,5 +4,6 @@
%p %p
= f.label :email = f.label :email
= f.text_field :email = f.text_field :email
= f.hidden_field :aspect_id, :value => @aspect.id
%p= f.submit "Send an invitation" %p= f.submit "Send an invitation"
/= link_to "Home", after_sign_in_path_for(resource_name) /= link_to "Home", after_sign_in_path_for(resource_name)

View file

@ -37,9 +37,10 @@
}); });
function processRetraction(post_id){ function processRetraction(post_id){
$('#' + post_id ).fadeOut(500, function(){ $('#' + post_id ).fadeOut(500).remove();
$(this).remove; if($("#stream")[0].childElementCount == 0){
}); $("#no_posts").fadeIn(200);
}
} }
function processComment(post_id, html){ function processComment(post_id, html){
@ -59,14 +60,23 @@
function processPost(className, html, aspectIds){ function processPost(className, html, aspectIds){
if(onPageForAspects(aspectIds)){ if(onPageForAspects(aspectIds)){
$("#stream").prepend( var addPostToStream = function (html){
$(html).fadeIn("fast", function(){ $("#stream").prepend(
$("#stream label:first").inFieldLabels(); $(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){ function processPhotoInAlbum(photoHash){
if (location.href.indexOf(photoHash['album_id']) == -1){ if (location.href.indexOf(photoHash['album_id']) == -1){
return ; return ;

View file

@ -2,30 +2,41 @@
-# licensed under the Affero General Public License version 3 or later. See -# licensed under the Affero General Public License version 3 or later. See
-# the COPYRIGHT file. -# 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'} #left_pane
#add_request_pane #friend_pictures
= render "requests/new_request", :aspect => @aspect = owner_image_link
-else - for friend in @friends
.clear = person_image_link(friend)
%br - if @logged_in && (@aspect == :public)
= link_to t('.add_friends'), aspects_manage_path %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"

View file

@ -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: fr-informal:
errors: errors:
messages: messages:
@ -22,19 +18,29 @@ fr-informal:
signed_in: 'Connecté avec succès.' signed_in: 'Connecté avec succès.'
signed_out: 'Déconnecté avec succès.' signed_out: 'Déconnecté avec succès.'
passwords: passwords:
send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant des instructions texpliquant 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é.' updated: 'Ton mot de passe a été modifié avec succès. Tu es à présent connecté.'
confirmations: confirmations:
send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant des instructions texpliquant 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é.' confirmed: 'Ton compte a été confirmé avec succès. Tu es à présent connecté.'
registrations: registrations:
signed_up: 'Tu tes inscrit avec succès. Si activée, une confirmation a été envoyée sur ton adresse e-mail.' signed_up: 'Tu tes 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.' 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.' destroyed: 'Au revoir ! Ton compte a été résilié avec succès. Nous espérons te revoir très bientôt.'
unlocks: unlocks:
send_instructions: 'Tu vas recevoir dans quelques minutes un e-mail contenant des instructions texpliquant 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é.' 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 dinvitation fourni nest pas valide !'
updated: 'Ton mot de passe a été réglé avec succès. Tu es à présent connecté.'
mailer: mailer:
confirmation_instructions: 'Instructions de confirmation' confirmation_instructions:
reset_password_instructions: 'Réinitialiser les instructions du mot de passe' subject: 'Instructions de confirmation'
unlock_instructions: 'Instructions de déverrouillage' 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 !'

View file

@ -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: fr:
errors: errors:
messages: messages:
@ -14,7 +10,7 @@ fr:
unauthenticated: 'Vous devez vous connecter ou vous inscrire avant de continuer.' unauthenticated: 'Vous devez vous connecter ou vous inscrire avant de continuer.'
unconfirmed: 'Vous devez confirmer votre compte avant de continuer.' unconfirmed: 'Vous devez confirmer votre compte avant de continuer.'
locked: 'Votre compte est verrouillé.' 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 dauthentification invalide.' invalid_token: 'Jeton dauthentification invalide.'
timeout: 'Votre session a expiré, veuillez vous connecter de nouveau afin de continuer.' timeout: 'Votre session a expiré, veuillez vous connecter de nouveau afin de continuer.'
inactive: 'Votre compte na pas encore été activé.' inactive: 'Votre compte na pas encore été activé.'
@ -22,19 +18,29 @@ fr:
signed_in: 'Connecté avec succès.' signed_in: 'Connecté avec succès.'
signed_out: 'Déconnecté avec succès.' signed_out: 'Déconnecté avec succès.'
passwords: 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é.' updated: 'Votre mot de passe a été modifié avec succès. Vous êtes à présent connecté.'
confirmations: 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é.' confirmed: 'Votre compte a été confirmé avec succès. Vous êtes à présent connecté.'
registrations: 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.' 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.' destroyed: 'Au revoir ! Votre compte a été résilié avec succès. Nous espérons vous revoir très bientôt.'
unlocks: 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é.' 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 dinvitation fourni nest pas valide !'
updated: 'Votre mot de passe a été réglé avec succès. Vous êtes à présent connecté.'
mailer: mailer:
confirmation_instructions: 'Instructions de confirmation' confirmation_instructions:
reset_password_instructions: 'Réinitialiser les instructions du mot de passe' subject: 'Instructions de confirmation'
unlock_instructions: 'Instructions de déverrouillage' 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 !'

View file

@ -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ı"

View file

@ -38,6 +38,7 @@ en:
share: "Share" share: "Share"
aspect_friends: aspect_friends:
add_friends: "add friends" add_friends: "add friends"
photos: "photos"
albums: albums:
album: album:
you: "you" you: "you"
@ -69,10 +70,13 @@ en:
friends_albums: "Friends Albums" friends_albums: "Friends Albums"
your_albums: "Your Albums" your_albums: "Your Albums"
aspects: aspects:
index: empty_messages:
photos: "photos" start_talking: "Nobody has said anything yet. Get the conversation started!"
show: nobody: "We know you have friends, bring them to Diaspora!"
photos: "photos" 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: manage:
add_a_new_aspect: "Add a new aspect" add_a_new_aspect: "Add a new aspect"
add_a_new_friend: "Add a new friend" add_a_new_friend: "Add a new friend"

View file

@ -21,7 +21,7 @@ fr-informal:
people: people:
helper: helper:
results_for: " résultats concernant %{params}" 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: layouts:
application: application:
edit_profile: "éditer le profil" edit_profile: "éditer le profil"
@ -52,7 +52,7 @@ fr-informal:
edit: edit:
editing: "Édition" editing: "Édition"
updated: "mis à jour" updated: "mis à jour"
are_you_sure: "Es-tu sûr(e)?" are_you_sure: "Es-tu sûr(e) ?"
delete_album: "Supprimer lalbum" delete_album: "Supprimer lalbum"
cancel: "Annuler" cancel: "Annuler"
index: index:
@ -84,17 +84,18 @@ fr-informal:
add_a_new_aspect: "Ajouter un nouvel aspect" add_a_new_aspect: "Ajouter un nouvel aspect"
create: "Créer" create: "Créer"
create: 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 laspect a échoué."
destroy: destroy:
success: "%{name} a été supprimé avec succès." success: "%{name} a été supprimé avec succès."
update: update:
success: "Ton aspect, %{name}, a été édité avec succès." success: "Ton aspect, %{name}, a été édité avec succès."
move_friends: move_friends:
failure: "Lédition de laspect concernant lami %{real_name} a échoué." failure: "Lédition de laspect concernant ton ami %{real_name} a échoué."
success: "Les aspects ont été édités avec succès." success: "Les aspects ont été édités avec succès."
move_friend: move_friend:
error: "ne fonctionne pas %{inspect}" failure: "ne fonctionne pas %{inspect}"
notice: "Tu montres à présent à ton ami un aspect différent au tien." success: "Tu montres à présent à ton ami un aspect différent au tiens."
helper: helper:
remove: "supprimer" remove: "supprimer"
aspect_not_empty: "Laspect nest pas vide" aspect_not_empty: "Laspect nest pas vide"
@ -106,12 +107,14 @@ fr-informal:
update_profile: "Mettre à jour le profil" update_profile: "Mettre à jour le profil"
home: "Accueil" home: "Accueil"
diaspora_username: "NOM DUTILISATEUR DIASPORA" diaspora_username: "NOM DUTILISATEUR DIASPORA"
info: "Information" info: "Informations"
picture: "Image" picture: "Image"
editing_profile: "Édition du profil" editing_profile: "Édition du profil"
albums: "Albums" albums: "Albums"
you_dont_have_any_photos: "Tu nas aucune photo ! Rends-toi sur la page" you_dont_have_any_photos: "Tu nas aucune photo ! Rends-toi sur la page"
page_to_upload_some: "afin den transférer quelques-unes." page_to_upload_some: "afin den transférer quelques-unes."
or: "ou"
destroy: "Compte clôturé avec succès."
comments: comments:
comment: comment:
ago: "il y a" ago: "il y a"
@ -132,25 +135,33 @@ fr-informal:
delete_photo: "Supprimer la photo" delete_photo: "Supprimer la photo"
photo: photo:
show_comments: "afficher les commentaires" 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:
new_photo: "Nouvelle photo" new_photo: "Nouvelle photo"
back_to_list: "Retourner à la liste" back_to_list: "Retourner à la liste"
post_it: "publie-la !" post_it: "la publier !"
create: 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 ?" 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 ?" 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 limage était bien ajoutée ?" type_error: "Le transfert de la photo a échoué. Es-tu sûr(e) que limage a bien été ajoutée ?"
update: update:
notice: "La photo a été mise à jour avec succès." 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: destroy:
notice: "Photo supprimée." notice: "La photo a été supprimée."
registrations: registrations:
new: new:
sign_up: "Inscription" sign_up: "Inscription"
create: create:
success: "Tu as rejoint Diaspora !" success: "Tu as rejoint Diaspora !"
invitations:
create:
sent: 'Ton invitation a été envoyée.'
no_more: 'Tu nas plus dinvitation.'
already_sent: 'Tu as déjà invité cette personne.'
invitation_token_invalid: 'Le jeton dinvitation fourni nest pas valide !'
updated: 'Ton mot de passe a été réglé avec succès. Tu es à présent connecté.'
status_messages: status_messages:
new_status_message: new_status_message:
tell_me_something_good: "dis-moi quelque chose de bien" tell_me_something_good: "dis-moi quelque chose de bien"
@ -164,14 +175,14 @@ fr-informal:
comments: "commentaires" comments: "commentaires"
are_you_sure: "Es-tu sûr(e) ?" are_you_sure: "Es-tu sûr(e) ?"
destroy: "Détruire" destroy: "Détruire"
view_all: "Tout voir" view_all: "Tout afficher"
message: "Message" message: "Message"
owner: "Propriétaire" owner: "Propriétaire"
helper: helper:
no_message_to_display: "Aucun message à afficher." no_message_to_display: "Aucun message à afficher."
people: people:
person: person:
add_friend: "ajouter un ami" add_friend: "ajouter en ami"
pending_request: "requête en attente" pending_request: "requête en attente"
index: index:
add_friend: "ajouter un ami" add_friend: "ajouter un ami"
@ -186,13 +197,13 @@ fr-informal:
show: show:
last_seen: "dernière connexion : %{how_long_ago}" last_seen: "dernière connexion : %{how_long_ago}"
friends_since: "amis depuis : %{how_long_ago}" friends_since: "amis depuis : %{how_long_ago}"
save: "sauvegarder" save: "sauver"
are_you_sure: "Es-tu sûr(e) ?" are_you_sure: "Es-tu sûr(e) ?"
remove_friend: "supprimer un ami" remove_friend: "supprimer de mes amis"
requests: requests:
new_request: new_request:
add_a_new_friend_to: "Ajouter un ami à" add_a_new_friend_to: "Ajouter un nouvel ami à"
enter_a_diaspora_username: "Saisi un nom dutilisateur Diaspora :" enter_a_diaspora_username: "Saisis un nom dutilisateur Diaspora :"
your_diaspora_username_is: "Ton nom dutilisateur Diaspora est : %{diaspora_handle}" your_diaspora_username_is: "Ton nom dutilisateur Diaspora est : %{diaspora_handle}"
friends_username: "Nom dutilisateur de lami" friends_username: "Nom dutilisateur de lami"
destroy: destroy:
@ -201,6 +212,6 @@ fr-informal:
ignore: "Requête dami ignorée." ignore: "Requête dami ignorée."
create: create:
error: "Aucun résultat Diaspora na été trouvé avec cette adresse e-mail !" error: "Aucun résultat Diaspora na é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 dami a été envoyée à %{destination_url}." success: "Une requête dami a été envoyée à %{destination_url}."
horribly_wrong: "Quelque chose dhorrible sest produit." horribly_wrong: "Quelque chose dhorrible sest produit."

View file

@ -2,42 +2,42 @@
# licensed under the Affero General Public License version 3 or later. See # licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file. # 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. # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
fr: fr:
hello: "Bonjour tout le monde" hello: "Bonjour tout le monde"
application: application:
helper: helper:
unknown_person: "unknown person" unknown_person: "personne inconnue"
new_requests: "new requests" new_requests: "nouvelles requêtes"
dashboards: dashboards:
helper: helper:
home: "home" home: "accueil"
error_messages: error_messages:
helper: helper:
invalid_fields: "Invalid Fields" invalid_fields: "Champs invalides"
correct_the_following_errors_and_try_again: "Correct the following errors and try again." correct_the_following_errors_and_try_again: "Corrigez les erreurs suivantes, puis réessayez."
people: people:
helper: helper:
results_for: " resultados para %{params}" results_for: " résultats concernant %{params}"
people_on_pod_are_aware_of: " gente en pod estan al tanto de " people_on_pod_are_aware_of: " personnes agissant comme des automates sont au courant"
layouts: layouts:
application: application:
edit_profile: "Éditez votre profil" edit_profile: "éditer le profil"
logout: "Déconnexion" logout: "déconnexion"
shared: shared:
aspect_nav: aspect_nav:
all_aspects: "Tous les Aspects" all_aspects: "Tous les aspects"
manage: "Gérez" manage: "Gérer"
manage_your_aspects: "Gérez vos Aspects" manage_your_aspects: "Gérer vos aspects"
sub_header: sub_header:
all_aspects: "Tous les Aspects" all_aspects: "Tous les aspects"
manage_aspects: "Gérez vos Aspects" manage_aspects: "Gérer les aspects"
publisher: publisher:
share: "Partager" share: "Partager"
aspect_friends: aspect_friends:
add_friends: "Ajouter des amis" add_friends: "ajouter des amis"
albums: albums:
album: album:
you: "vous" you: "vous"
@ -52,22 +52,22 @@ fr:
edit: edit:
editing: "Édition" editing: "Édition"
updated: "mis à jour" updated: "mis à jour"
are_you_sure: "Êtes-vous sûr?" are_you_sure: "Êtes-vous sûr(e) ?"
delete_album: "Supprimer l'album" delete_album: "Supprimer lalbum"
cancel: "Annuler" cancel: "Annuler"
index: index:
home: "accueil" home: "accueil"
new_album: "Nouvel album" new_album: "Nouvel album"
helper:
friends_albums: "Friends Albums"
your_albums: "Your Albums"
create: create:
success: "Tu as créé un album nommé %{name}." success: "Vous avez créé un album nommé %{name}."
update: update:
success: "Lalbum %{name} a été édité avec succès." success: "Lalbum %{name} a été édité avec succès."
failure: "Lédition de lalbum %{name} a échoué." failure: "Lédition de lalbum %{name} a échoué."
destroy: destroy:
success: "Lalbum %{name} a été supprimé." success: "Lalbum %{name} a été supprimé."
helper:
friends_albums: "Albums damis"
your_albums: "Vos albums"
aspects: aspects:
index: index:
photos: "photos" photos: "photos"
@ -75,8 +75,8 @@ fr:
photos: "photos" photos: "photos"
manage: manage:
add_a_new_aspect: "Ajouter un nouvel aspect" add_a_new_aspect: "Ajouter un nouvel aspect"
add_a_new_friend: "Ajouter un nouvel amis" add_a_new_friend: "Ajouter un nouvel ami"
show: "Voir" show: "Afficher"
update_aspects: "Mettre à jour les aspects" update_aspects: "Mettre à jour les aspects"
requests: "Requêtes" requests: "Requêtes"
ignore_remove: "Ignorer/Supprimer" ignore_remove: "Ignorer/Supprimer"
@ -84,7 +84,21 @@ fr:
add_a_new_aspect: "Ajouter un nouvel aspect" add_a_new_aspect: "Ajouter un nouvel aspect"
create: "Créer" create: "Créer"
create: create:
success:"Cliquez sur plus situé sur le côté gauche afin den 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 laspect 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 laspect 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: "Laspect nest pas vide"
users: users:
edit: edit:
editing_profile: "Édition du profil" editing_profile: "Édition du profil"
@ -93,12 +107,14 @@ fr:
update_profile: "Mettre à jour le profil" update_profile: "Mettre à jour le profil"
home: "Accueil" home: "Accueil"
diaspora_username: "NOM DUTILISATEUR DIASPORA" diaspora_username: "NOM DUTILISATEUR DIASPORA"
info: "Information" info: "Informations"
picture: "Image" picture: "Image"
editing_profile: "Édition du profil" editing_profile: "Édition du profil"
albums: "Albums" albums: "Albums"
you_dont_have_any_photos: "Vous navez aucune photo ! Rendez-vous sur la page" you_dont_have_any_photos: "Vous navez aucune photo ! Rendez-vous sur la page"
page_to_upload_some: "afin den transférer quelques-unes." page_to_upload_some: "afin den transférer quelques-unes."
or: "ou"
destroy: "Compte clôturé avec succès."
comments: comments:
comment: comment:
ago: "il y a" ago: "il y a"
@ -111,22 +127,41 @@ fr:
next: "suivant" next: "suivant"
edit_photo: "Éditer la photo" edit_photo: "Éditer la photo"
delete_photo: "Supprimer la photo" delete_photo: "Supprimer la photo"
are_you_sure: "Êtes-vous sûr ?" are_you_sure: "Êtes-vous sûr(e) ?"
comments: "commentaires" comments: "commentaires"
edit: edit:
editing: "Édition" editing: "Édition"
are_you_sure: "Êtes-vous sûr ?" are_you_sure: "Êtes-vous sûr(e) ?"
delete_photo: "Supprimer la photo" delete_photo: "Supprimer la photo"
photo: photo:
show_comments: "afficher les commentaires" 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:
new_photo: "Nouvelle photo" new_photo: "Nouvelle photo"
back_to_list: "Retourner à la liste" 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 limage 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: registrations:
new: new:
sign_up: "Inscription" sign_up: "Inscription"
create:
success: "Vous avez rejoint Diaspora !"
invitations:
create:
sent: 'Votre invitation a été envoyée.'
no_more: 'Vous navez plus dinvitation.'
already_sent: 'Vous avez déjà invité cette personne.'
invitation_token_invalid: 'Le jeton dinvitation fourni nest pas valide !'
updated: 'Votre mot de passe a été réglé avec succès. Vous êtes à présent connecté.'
status_messages: status_messages:
new_status_message: new_status_message:
tell_me_something_good: "dites-moi quelque chose de bien" tell_me_something_good: "dites-moi quelque chose de bien"
@ -134,16 +169,21 @@ fr:
status_message: status_message:
show_comments: "afficher les commentaires" show_comments: "afficher les commentaires"
delete: "Supprimer" delete: "Supprimer"
are_you_sure: "Êtes-vous sûr ?" are_you_sure: "Êtes-vous sûr(e) ?"
show: show:
status_message: "Message détat" status_message: "Message détat"
comments: "commentaires" comments: "commentaires"
are_you_sure: "Êtes-vous sûr ?" are_you_sure: "Êtes-vous sûr(e) ?"
destroy: "Détruire" destroy: "Détruire"
view_all: "Tout voir" view_all: "Tout afficher"
message: "Message" message: "Message"
owner: "Propriétaire" owner: "Propriétaire"
helper:
no_message_to_display: "Aucun message à afficher."
people: people:
person:
add_friend: "ajouter en ami"
pending_request: "requête en attente"
index: index:
add_friend: "ajouter un ami" add_friend: "ajouter un ami"
real_name: "nom réel" real_name: "nom réel"
@ -157,6 +197,21 @@ fr:
show: show:
last_seen: "dernière connexion : %{how_long_ago}" last_seen: "dernière connexion : %{how_long_ago}"
friends_since: "amis depuis : %{how_long_ago}" friends_since: "amis depuis : %{how_long_ago}"
save: "sauvegarder" save: "sauver"
are_you_sure: "Êtes-vous sûr ?" are_you_sure: "Êtes-vous sûr(e) ?"
remove_friend: "supprimer un ami" 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 dutilisateur Diaspora :"
your_diaspora_username_is: "Votre nom dutilisateur Diaspora est : %{diaspora_handle}"
friends_username: "Nom dutilisateur de lami"
destroy:
success: "Vous êtes à présent amis."
error: "Veuillez sélectionner un aspect !"
ignore: "Requête dami ignorée."
create:
error: "Aucun résultat Diaspora na été trouvé avec cette adresse e-mail !"
already_friends: "Vous êtes déjà amis avec %{destination_url}!"
success: "Une requête dami a été envoyée à %{destination_url}."
horribly_wrong: "Quelque chose dhorrible sest produit."

View file

@ -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."

View file

@ -27,8 +27,8 @@ $(document).ready(function(){
//buttons////// //buttons//////
$("#add_aspect_button").fancybox({ 'titleShow' : false }); $("#add_aspect_button").fancybox({ 'titleShow' : false });
$("#add_request_button").fancybox({ 'titleShow': false }); $(".add_request_button").fancybox({ 'titleShow': false });
$("#invite_user_button").fancybox({ 'titleShow': false }); $(".invite_user_button").fancybox({ 'titleShow': false });
$(".add_request_button").fancybox({ 'titleShow': false }); $(".add_request_button").fancybox({ 'titleShow': false });
$("input[type='submit']").addClass("button"); $("input[type='submit']").addClass("button");

View file

@ -964,3 +964,48 @@ ul#settings_nav
#aspect_list #aspect_list
:margin 0 :margin 0
:padding 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

View file

@ -6,58 +6,78 @@ require 'spec_helper'
describe User do describe User do
let(:inviter) {Factory.create :user} 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(:inviter_with_3_invites) {Factory.create :user, :invites => 3}
let!(:invited_user) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter)} let(:aspect2) {inviter_with_3_invites.aspect(:name => "Jersey Girls")}
let(:invited_user1) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter_with_3_invites)} let!(:invited_user1) { create_user_with_invitation("abc", :email => "email@example.com", :inviter => inviter)}
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)} before do
deliverable = Object.new
deliverable.stub!(:deliver)
::Devise.mailer.stub!(:invitation).and_return(deliverable)
end
context "creating invites" do context "creating invites" do
before do it 'requires an apect' do
deliverable = Object.new proc{inviter.invite_user(:email => "maggie@example.com")}.should raise_error /Must invite into aspect/
deliverable.stub!(:deliver) end
::Devise.mailer.stub!(:invitation).and_return(deliverable)
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 end
it 'creates a user' do it 'creates a user' do
inviter
lambda { 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) }.should change(User, :count).by(1)
end end
it 'sends email to the invited user' do it 'sends email to the invited user' do
::Devise.mailer.should_receive(:invitation).once ::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 end
it 'adds the inviter to the invited_user' do 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.reload
invited_user.inviters.include?(inviter).should be_true invited_user.inviters.include?(inviter).should be_true
end 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 end
context "limit on invites" do context "limit on invites" do
it 'does not invite users after 3 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", :aspect_id => aspect2.id)
inviter_with_3_invites.invite_user(:email => "email1@example.com") inviter_with_3_invites.invite_user(:email => "email2@example.com", :aspect_id => aspect2.id)
inviter_with_3_invites.invite_user(:email => "email2@example.com") inviter_with_3_invites.invite_user(:email => "email3@example.com", :aspect_id => aspect2.id)
inviter_with_3_invites.invite_user(:email => "email3@example.com") proc{inviter_with_3_invites.invite_user(:email => "email4@example.com", :aspect_id => aspect2.id)}.should raise_error /You have no invites/
proc{inviter_with_3_invites.invite_user(:email => "email4@example.com")}.should raise_error /You have no invites/
end end
it 'does not invite people I already invited' do it 'does not invite people I already invited' do
pending "this is really weird to test without the actual method working" inviter_with_3_invites.invite_user(:email => "email1@example.com", :aspect_id => aspect2.id)
User.stub!(:invite!).and_return(invited_user1,invited_user1) proc{inviter_with_3_invites.invite_user(:email => "email1@example.com", :aspect_id => aspect2.id)}.should raise_error /You already invited this person/
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/
end end
end end
context "the acceptance of an invitation" do context "the acceptance of an invitation" do
it "should create the person with the passed in params" do it "should create the person with the passed in params" do
person_count = Person.count person_count = Person.count
u = invited_user.accept_invitation!(:invitation_token => "abc", u = invited_user1.accept_invitation!(:invitation_token => "abc",
:username => "user", :username => "user",
:password => "secret", :password => "secret",
:password_confirmation => "secret", :password_confirmation => "secret",