From 453cb066917381c664f3db29acd4033df009c738 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 11:01:30 -0700 Subject: [PATCH 001/292] changing settings and deploy scripts, validating email --- app/models/user.rb | 2 ++ config/environments/production.rb | 9 +++------ config/thin.yml | 6 +++--- db/seeds/tom.rb | 1 + 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 7ab2987d9..80241fbed 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -21,6 +21,8 @@ class User ######## Making things work ######## key :email, String + validates_true_for :email, :logic => lambda { + email.include?('@pivotallabs.com') || email.include?('@pivotalsf.com')} def method_missing(method, *args) self.person.send(method, *args) diff --git a/config/environments/production.rb b/config/environments/production.rb index 0dc2c9b99..48d9f701a 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -10,10 +10,10 @@ Diaspora::Application.configure do config.action_controller.perform_caching = true # Specifies the header that your server uses for sending files - config.action_dispatch.x_sendfile_header = "X-Sendfile" + #config.action_dispatch.x_sendfile_header = "X-Sendfile" # For nginx: - # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' + config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # If you have no front-end server that supports something like X-Sendfile, # just comment this out and Rails will serve the files @@ -29,7 +29,7 @@ Diaspora::Application.configure do # Disable Rails's static asset server # In production, Apache or nginx will already do this - config.serve_static_assets = true + #config.serve_static_assets = true # Enable serving of images, stylesheets, and javascripts from an asset server # config.action_controller.asset_host = "http://assets.example.com" @@ -37,9 +37,6 @@ Diaspora::Application.configure do # Disable delivery errors, bad email addresses will be ignored # config.action_mailer.raise_delivery_errors = false - # Enable threaded mode - # config.threadsafe! - # Enable locale fallbacks for I18n (makes lookups for any locale fall back to # the I18n.default_locale when a translation can not be found) config.i18n.fallbacks = true diff --git a/config/thin.yml b/config/thin.yml index f60fed103..fa84529dd 100644 --- a/config/thin.yml +++ b/config/thin.yml @@ -8,8 +8,8 @@ require: [] max_persistent_conns: 512 environment: production -servers: 1 +servers: 4 daemonize: true #chdir: /usr/applications/localhash/current -#socket: /tmp/thin.sock -port: 80 +socket: /tmp/thin.sock +#port: 80 diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index c8b1d41a6..10a7e910e 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -1,6 +1,7 @@ require 'config/environment' remote_url = "http://tom.joindiaspora.com/" +remote_url = "http://localhost:3000/" # Create seed user user = User.create!( :email => "tom@tom.joindiaspora.com", :password => "evankorth", From 29e3fa4d04f34eb6aef2b18fd1e9eb4404c83fc7 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 11:04:34 -0700 Subject: [PATCH 002/292] sprinkle role --- config/sprinkle/provision.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/sprinkle/provision.rb b/config/sprinkle/provision.rb index 63302b874..8107f3f6e 100644 --- a/config/sprinkle/provision.rb +++ b/config/sprinkle/provision.rb @@ -33,7 +33,7 @@ require "#{File.dirname(__FILE__)}/packages/ruby" # If there's only one implementation of a virtual package, it's selected automatically, otherwise # the user is requested to select which one to use. -policy :diaspora, :roles => [:tom, :backer] do +policy :diaspora, :roles => [:pivots] do # requires :clean_dreamhost requires :tools requires :rubygems From 16f53922c5d913670655cbddbb32ace95c278ba3 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 11:22:06 -0700 Subject: [PATCH 003/292] nginx conf done, comments deleted --- config/sprinkle/conf/nginx.conf | 7 ++++-- config/sprinkle/packages/server.rb | 32 -------------------------- config/sprinkle/provision.rb | 36 ------------------------------ 3 files changed, 5 insertions(+), 70 deletions(-) diff --git a/config/sprinkle/conf/nginx.conf b/config/sprinkle/conf/nginx.conf index ad79a9b5a..514bc2957 100644 --- a/config/sprinkle/conf/nginx.conf +++ b/config/sprinkle/conf/nginx.conf @@ -28,12 +28,15 @@ http { # gzip_disable "MSIE [1-6]\.(?!.*SV1)"; upstream thin_cluster { server unix:/tmp/thin.0.sock; + server unix:/tmp/thin.1.sock; + server unix:/tmp/thin.2.sock; + server unix:/tmp/thin.3.sock; } server { - listen 80; - server_name babycakes.sofaer.net www.babycakes.sofaer.net; + listen 80 + server_name pivots.joindiaspora.com www.pivots.joindiaspora.com; root /usr/local/app/diaspora/current; location / { diff --git a/config/sprinkle/packages/server.rb b/config/sprinkle/packages/server.rb index 99f326c8b..0b9f416de 100644 --- a/config/sprinkle/packages/server.rb +++ b/config/sprinkle/packages/server.rb @@ -18,35 +18,3 @@ package :nginx_dependencies do apt %w( libc6 libpcre3 libpcre3-dev libssl0.9.8) source "http://zlib.net/zlib-1.2.5.tar.gz" end - -=begin -package :mongrel do - description 'Mongrel Application Server' - gem 'mongrel' - version '1.1.5' -end - -package :mongrel_cluster, :provides => :appserver do - description 'Cluster Management for Mongrel' - gem 'mongrel_cluster' - version '1.0.5' - requires :mongrel -end - -package :apache, :provides => :webserver do - description 'Apache 2 HTTP Server' - version '2.2.15' - - source "http://download.nextag.com/apache/httpd/httpd-#{version}.tar.bz2" do - enable %w( mods-shared=all proxy proxy-balancer proxy-http rewrite cache headers ssl deflate so ) - prefix "/opt/local/apache2-#{version}" - post :install, 'install -m 755 support/apachectl /etc/init.d/apache2', 'update-rc.d -f apache2 defaults' - end - requires :apache_dependencies -end - -package :apache_dependencies do - description 'Apache 2 HTTP Server Build Dependencies' - apt %w( openssl libtool mawk zlib1g-dev libssl-dev ) -end -=end diff --git a/config/sprinkle/provision.rb b/config/sprinkle/provision.rb index 8107f3f6e..ec1c44c16 100644 --- a/config/sprinkle/provision.rb +++ b/config/sprinkle/provision.rb @@ -1,37 +1,11 @@ #!/usr/bin/env sprinkle -s -# Annotated Example Sprinkle Rails deployment script -# -# This is an example Sprinkle script configured to install Rails from gems, Apache, Ruby, -# Sphinx and Git from source, and mysql and Git dependencies from apt on an Ubuntu system. -# -# Installation is configured to run via capistrano (and an accompanying deploy.rb recipe script). -# Source based packages are downloaded and built into /usr/local on the remote system. -# -# A sprinkle script is separated into 3 different sections. Packages, policies and deployment: - - -# Packages (separate files for brevity) -# -# Defines the world of packages as we know it. Each package has a name and -# set of metadata including its installer type (eg. apt, source, gem, etc). Packages can have -# relationships to each other via dependencies. require "#{File.dirname(__FILE__)}/packages/essential" require "#{File.dirname(__FILE__)}/packages/database" require "#{File.dirname(__FILE__)}/packages/server" require "#{File.dirname(__FILE__)}/packages/scm" require "#{File.dirname(__FILE__)}/packages/ruby" -#require "#{File.dirname(__FILE__)}/packages/unfortunately_essential" - -# Policies -# -# Names a group of packages (optionally with versions) that apply to a particular set of roles: -# -# Associates the rails policy to the application servers. Contains rails, and surrounding -# packages. Note, appserver, database, webserver and search are all virtual packages defined above. -# If there's only one implementation of a virtual package, it's selected automatically, otherwise -# the user is requested to select which one to use. policy :diaspora, :roles => [:pivots] do # requires :clean_dreamhost @@ -45,14 +19,6 @@ policy :diaspora, :roles => [:pivots] do requires :vim end -# Deployment -# -# Defines script wide settings such as a delivery mechanism for executing commands on the target -# system (eg. capistrano), and installer defaults (eg. build locations, etc): -# -# Configures spinkle to use capistrano for delivery of commands to the remote machines (via -# the named 'deploy' recipe). Also configures 'source' installer defaults to put package gear -# in /usr/local deployment do @@ -73,5 +39,3 @@ deployment do end end -# End of script, given the above information, Spinkle will apply the defined policy on all roles using the -# deployment settings specified. From 2261a0d8a467d7072760ea5751a8d42445bb8076 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 11:28:22 -0700 Subject: [PATCH 004/292] nginx... --- config/sprinkle/conf/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/sprinkle/conf/nginx.conf b/config/sprinkle/conf/nginx.conf index 514bc2957..3d8b9cb2a 100644 --- a/config/sprinkle/conf/nginx.conf +++ b/config/sprinkle/conf/nginx.conf @@ -35,7 +35,7 @@ http { server { - listen 80 + listen 80; server_name pivots.joindiaspora.com www.pivots.joindiaspora.com; root /usr/local/app/diaspora/current; From b55a99ec09cc48ef7ce97e466471aa275f272eee Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 11:42:59 -0700 Subject: [PATCH 005/292] conf changes, kill nginx with go_cold --- config/sprinkle/conf/nginx.conf | 3 --- config/sprinkle/packages/server.rb | 5 ++--- config/sprinkle/provision.rb | 1 + config/thin.yml | 2 +- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/config/sprinkle/conf/nginx.conf b/config/sprinkle/conf/nginx.conf index 3d8b9cb2a..d76534f37 100644 --- a/config/sprinkle/conf/nginx.conf +++ b/config/sprinkle/conf/nginx.conf @@ -28,9 +28,6 @@ http { # gzip_disable "MSIE [1-6]\.(?!.*SV1)"; upstream thin_cluster { server unix:/tmp/thin.0.sock; - server unix:/tmp/thin.1.sock; - server unix:/tmp/thin.2.sock; - server unix:/tmp/thin.3.sock; } server { diff --git a/config/sprinkle/packages/server.rb b/config/sprinkle/packages/server.rb index 0b9f416de..c553707b3 100644 --- a/config/sprinkle/packages/server.rb +++ b/config/sprinkle/packages/server.rb @@ -1,16 +1,15 @@ -package :nginx do +package :nginx, :provides=> :webserver do description 'Nginx HTTP server' version '0.7.67' source "http://nginx.org/download/nginx-#{version}.tar.gz" requires :nginx_dependencies end -package :nginx_conf, :provides=> :webserver do +package :nginx_conf do description 'Nginx conf file' transfer "#{File.dirname(__FILE__)}/../conf/nginx.conf", '/usr/local/conf/nginx.conf', :render => true do pre :install, "mkdir -p /usr/local/sbin/conf/" end - requires :nginx end package :nginx_dependencies do diff --git a/config/sprinkle/provision.rb b/config/sprinkle/provision.rb index ec1c44c16..239f03fb2 100644 --- a/config/sprinkle/provision.rb +++ b/config/sprinkle/provision.rb @@ -17,6 +17,7 @@ policy :diaspora, :roles => [:pivots] do requires :webserver requires :scm requires :vim + requires :nginx_conf end diff --git a/config/thin.yml b/config/thin.yml index fa84529dd..564eef8d6 100644 --- a/config/thin.yml +++ b/config/thin.yml @@ -8,7 +8,7 @@ require: [] max_persistent_conns: 512 environment: production -servers: 4 +servers: 1 daemonize: true #chdir: /usr/applications/localhash/current socket: /tmp/thin.sock From 015940b60ea371258f2889eb9117a6279540fe73 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 11:45:47 -0700 Subject: [PATCH 006/292] Pass to the lambda --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 80241fbed..58d45c3c2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -21,7 +21,7 @@ class User ######## Making things work ######## key :email, String - validates_true_for :email, :logic => lambda { + validates_true_for :email, :logic => lambda { |email| email.include?('@pivotallabs.com') || email.include?('@pivotalsf.com')} def method_missing(method, *args) From ccbbf40584d5c1609a27822e46947d261370b022 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 11:48:59 -0700 Subject: [PATCH 007/292] validation lambda out to method --- app/models/user.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 58d45c3c2..9b6410966 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -21,8 +21,11 @@ class User ######## Making things work ######## key :email, String - validates_true_for :email, :logic => lambda { |email| - email.include?('@pivotallabs.com') || email.include?('@pivotalsf.com')} + validates_true_for :email, :logic => lambda { self.pivotal_email?} + + def pivotal_email? + email.include?('@pivotallabs.com') + end def method_missing(method, *args) self.person.send(method, *args) From 842b321dfa6b85e25ac273846ce4e63c3dd6bdab Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:02:42 -0700 Subject: [PATCH 008/292] User email checking, routes working again --- app/controllers/users_controller.rb | 14 -------------- app/models/user.rb | 28 +++++++++++++--------------- config/routes.rb | 2 +- spec/factories.rb | 2 +- spec/models/user_spec.rb | 14 -------------- spec/spec_helper.rb | 1 + 6 files changed, 16 insertions(+), 45 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 12f87c481..e5e2e263c 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -26,19 +26,5 @@ class UsersController < ApplicationController end end - def create - @user = User.instantiate(params[:user]) - - if @user.created_at && @user.person.created_at - flash[:notice] = "Successfully signed up." - redirect_to root_path - else - render :action => 'new' - end - end - - def new - @user = User.new - end end diff --git a/app/models/user.rb b/app/models/user.rb index 9b6410966..197fc4ea0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -16,17 +16,22 @@ class User many :groups, :class_name => 'Group' - before_validation_on_create :assign_key - before_validation :do_bad_things - + before_validation_on_create :setup_person + before_create :pivotal_only + ######## Making things work ######## key :email, String - validates_true_for :email, :logic => lambda { self.pivotal_email?} + #validates_true_for :email, :logic => lambda {self.pivotal_email?} + def pivotal_email? email.include?('@pivotallabs.com') end + def pivotal_only + raise "pivotal only" unless pivotal_email? + end + def method_missing(method, *args) self.person.send(method, *args) end @@ -234,12 +239,7 @@ class User end ###Helpers############ - def self.instantiate( opts = {} ) - opts[:person][:email] = opts[:email] - opts[:person][:serialized_key] = generate_key - User.create( opts) - end - + def terse_url terse= self.url.gsub(/https?:\/\//, '') terse.gsub!(/www\./, '') @@ -247,10 +247,6 @@ class User terse end - def do_bad_things - self.password_confirmation = self.password - end - def friend_by_id( id ) friends.detect{|x| x.id == ensure_bson( id ) } end @@ -261,8 +257,10 @@ class User protected - def assign_key + def setup_person self.person.serialized_key ||= generate_key.export + self.person.email = email + self.person.save end def generate_key diff --git a/config/routes.rb b/config/routes.rb index 88c838d77..0cf622127 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,7 +2,7 @@ Diaspora::Application.routes.draw do |map| resources :blogs resources :bookmarks resources :people - resources :users + resources :users, :except => [:new, :create] resources :status_messages resources :comments resources :requests diff --git a/spec/factories.rb b/spec/factories.rb index 88f34e1f6..ba3aadeb9 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -24,7 +24,7 @@ Factory.define :person_with_user, :parent => :person_with_private_key do |p| end Factory.define :user do |u| - u.sequence(:email) {|n| "bob#{n}@aol.com"} + u.sequence(:email) {|n| "bob#{n}@pivotallabs.com"} u.password "bluepin7" u.password_confirmation "bluepin7" u.person { |a| Factory.create(:person_with_user, :owner_id => a._id)} diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index e0d2415c7..fd78af0a3 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -6,20 +6,6 @@ describe User do @group = @user.group(:name => 'heroes') end - it 'should instantiate with a person and be valid' do - user = User.instantiate(:email => "bob@bob.com", - :password => "password", - :password_confirmation => "password", - :person => - {:profile => { - :first_name => "bob", - :last_name => "grimm"}}) - - user.save.should be true - user.person.should_not be nil - user.person.profile.should_not be nil - end - describe 'friend requesting' do it "should assign a request to a group" do friend = Factory.create(:person) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index d0b2759cb..cadde8dcc 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -26,6 +26,7 @@ RSpec.configure do |config| config.before(:each) do DatabaseCleaner.start stub_sockets_controller + User.stub(:pivotal_only).and_return(:true) end config.after(:each) do From d5c608c7aef1c3a2e8d91393c7161612349ffb47 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:07:11 -0700 Subject: [PATCH 009/292] Removing welcome home line --- app/views/groups/index.html.haml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/groups/index.html.haml b/app/views/groups/index.html.haml index e4d1ecca2..f1785389d 100644 --- a/app/views/groups/index.html.haml +++ b/app/views/groups/index.html.haml @@ -1,7 +1,3 @@ -%h1 - welcome home, - = current_user.profile.first_name - = render "shared/publisher" %ul#stream From e6768cb5c8831f56aa7e064097a65e8a821cb385 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:21:29 -0700 Subject: [PATCH 010/292] helper method --- app/models/user.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 53cde243e..109a2d987 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -36,7 +36,6 @@ class User self.person.send(method, *args) end - def real_name "#{person.profile.first_name.to_s} #{person.profile.last_name.to_s}" end @@ -269,6 +268,9 @@ class User groups.detect{|x| x.id == ensure_bson( id ) } end + def tommy? + email.include?("tommy@pivotallabs.com") || email.include?("tsullivan@pivotallabs.com") + end protected def setup_person From 424f576d95d8b55cf71bc31c211273a028e88659 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:48:09 -0700 Subject: [PATCH 011/292] Actionmailer config --- config/environments/production.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/config/environments/production.rb b/config/environments/production.rb index 48d9f701a..fb9f8f97e 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -42,4 +42,14 @@ Diaspora::Application.configure do config.i18n.fallbacks = true config.threadsafe! + config.action_mailer.delivery_method = :smtp + config.action_mailer.smtp_settings = { + :address => 'smtp.joindiaspora.com', + :port => 587 + :domain => 'www.joindiaspora.com' + :authentication => 'plain' + :user_name => 'diaspora-pivots' + :password => "xy289|]G+R*-kA" + :enable_starttls_auto => true + } end From 771c594814ca75620a57f787fc9f124618e87459 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:49:18 -0700 Subject: [PATCH 012/292] Take out pivotal only for a second --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 109a2d987..3f6e368f2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -17,7 +17,7 @@ class User many :groups, :class_name => 'Group' before_validation_on_create :setup_person - before_create :pivotal_only + #before_create :pivotal_only ######## Making things work ######## key :email, String From 2ede5f499f1bfdfe89705b05376c7ec2ecb29cd2 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:53:15 -0700 Subject: [PATCH 013/292] Commas --- config/environments/production.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index fb9f8f97e..354aed8f7 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -45,11 +45,11 @@ Diaspora::Application.configure do config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => 'smtp.joindiaspora.com', - :port => 587 - :domain => 'www.joindiaspora.com' - :authentication => 'plain' - :user_name => 'diaspora-pivots' - :password => "xy289|]G+R*-kA" + :port => 587, + :domain => 'www.joindiaspora.com', + :authentication => 'plain', + :user_name => 'diaspora-pivots', + :password => "xy289|]G+R*-kA", :enable_starttls_auto => true } end From 0fdb337076418e1417702304f8b55399086131f3 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:57:45 -0700 Subject: [PATCH 014/292] Confirmable --- app/models/user.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 3f6e368f2..336ed98ee 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -2,7 +2,8 @@ class User include MongoMapper::Document devise :database_authenticatable, :registerable, - :recoverable, :rememberable, :trackable, :validatable + :recoverable, :rememberable, :trackable, :validatable. + :confirmable key :friend_ids, Array key :pending_request_ids, Array From 063164fea236ca06f422f88c95ee81d97180cc39 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 13:59:57 -0700 Subject: [PATCH 015/292] comma --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 336ed98ee..797880766 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -2,7 +2,7 @@ class User include MongoMapper::Document devise :database_authenticatable, :registerable, - :recoverable, :rememberable, :trackable, :validatable. + :recoverable, :rememberable, :trackable, :validatable, :confirmable key :friend_ids, Array From cbb1b550ffb30d7caa5875e60b977c335bdca97f Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 14:03:30 -0700 Subject: [PATCH 016/292] Default url --- config/environments/production.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/environments/production.rb b/config/environments/production.rb index 354aed8f7..08307c678 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -43,6 +43,7 @@ Diaspora::Application.configure do config.threadsafe! config.action_mailer.delivery_method = :smtp + config.action_mailer.default_url_options = {:host => 'pivots.joindiaspora.com'} config.action_mailer.smtp_settings = { :address => 'smtp.joindiaspora.com', :port => 587, From f84d7962fce0fc66dbdcbadebcb77fc2f0f35250 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 14:06:00 -0700 Subject: [PATCH 017/292] actionmailer config --- config/environments/production.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 08307c678..7655eff5e 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -45,9 +45,9 @@ Diaspora::Application.configure do config.action_mailer.delivery_method = :smtp config.action_mailer.default_url_options = {:host => 'pivots.joindiaspora.com'} config.action_mailer.smtp_settings = { - :address => 'smtp.joindiaspora.com', + :address => 'smtp.gmail.com', :port => 587, - :domain => 'www.joindiaspora.com', + :domain => 'joindiaspora.com', :authentication => 'plain', :user_name => 'diaspora-pivots', :password => "xy289|]G+R*-kA", From 46e7dbedac4a279692532af615ee53a55bbe1e5e Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 15:19:41 -0700 Subject: [PATCH 018/292] Trying to get actionmailer working --- config/environments/production.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 7655eff5e..2481ad94a 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -44,7 +44,7 @@ Diaspora::Application.configure do config.action_mailer.delivery_method = :smtp config.action_mailer.default_url_options = {:host => 'pivots.joindiaspora.com'} - config.action_mailer.smtp_settings = { + smtp_settings = { :address => 'smtp.gmail.com', :port => 587, :domain => 'joindiaspora.com', @@ -53,4 +53,8 @@ Diaspora::Application.configure do :password => "xy289|]G+R*-kA", :enable_starttls_auto => true } + + Mail.defaults do + delivery_method :smtp, smtp_settings + end end From a74ea7e80f87edde829f6e0190abac2be49d40d4 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 15:31:14 -0700 Subject: [PATCH 019/292] Back to config actionmailer, the settings are getting set, try mail.joindiaspora.com --- config/environments/production.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 2481ad94a..bfc68495b 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -44,17 +44,13 @@ Diaspora::Application.configure do config.action_mailer.delivery_method = :smtp config.action_mailer.default_url_options = {:host => 'pivots.joindiaspora.com'} - smtp_settings = { + config.action_mailer.smtp_settings = { :address => 'smtp.gmail.com', :port => 587, - :domain => 'joindiaspora.com', + :domain => 'mail.joindiaspora.com', :authentication => 'plain', :user_name => 'diaspora-pivots', :password => "xy289|]G+R*-kA", :enable_starttls_auto => true } - - Mail.defaults do - delivery_method :smtp, smtp_settings - end end From 188f555c7278d9c929eb4dfff47c1ba7add86be7 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 15:47:41 -0700 Subject: [PATCH 020/292] Actionmailer actually working --- config/environments/development.rb | 13 ++++++++++++- config/environments/production.rb | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/config/environments/development.rb b/config/environments/development.rb index 12446d661..6314ef6c6 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -15,7 +15,18 @@ Diaspora::Application.configure do config.action_controller.perform_caching = false # Don't care if the mailer can't send - config.action_mailer.raise_delivery_errors = false + config.action_mailer.raise_delivery_errors = true config.active_support.deprecation = :log #config.threadsafe! + config.action_mailer.delivery_method = :smtp + config.action_mailer.default_url_options = {:host => 'localhost:3000'} + config.action_mailer.smtp_settings = { + :address => 'smtp.gmail.com', + :port => 587, + :domain => 'mail.joindiaspora.com', + :authentication => 'plain', + :user_name => 'diaspora-pivots@joindiaspora.com', + :password => "xy289|]G+R*-kA", + :enable_starttls_auto => true + } end diff --git a/config/environments/production.rb b/config/environments/production.rb index bfc68495b..6899e8f1c 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -49,7 +49,7 @@ Diaspora::Application.configure do :port => 587, :domain => 'mail.joindiaspora.com', :authentication => 'plain', - :user_name => 'diaspora-pivots', + :user_name => 'diaspora-pivots@joindiaspora.com', :password => "xy289|]G+R*-kA", :enable_starttls_auto => true } From 26a892ab4c5f77c69e811cd9d5c51bc59095e6ee Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 16:43:54 -0700 Subject: [PATCH 021/292] putting email verification back in --- app/models/user.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 39e62258b..416219271 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -18,19 +18,19 @@ class User many :groups, :class_name => 'Group' before_validation_on_create :setup_person - #before_create :pivotal_only + before_create :pivotal_or_diaspora_only ######## Making things work ######## key :email, String #validates_true_for :email, :logic => lambda {self.pivotal_email?} - def pivotal_email? - email.include?('@pivotallabs.com') + def allowed_email? + email.include?('@pivotallabs.com') || email.include("@joindiaspora.com") end - def pivotal_only - raise "pivotal only" unless pivotal_email? + def pivotal_or_diaspora_only + raise "pivotal only" unless allowed_email? end def method_missing(method, *args) From 6f24a454c8e51c024b7bd79587ba6101e4b4bc0c Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 17:23:37 -0700 Subject: [PATCH 022/292] merge --- app/models/user.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 8c116d883..dbcb03526 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -22,7 +22,6 @@ class User ######## Making things work ######## key :email, String -<<<<<<< HEAD #validates_true_for :email, :logic => lambda {self.pivotal_email?} @@ -33,9 +32,7 @@ class User def pivotal_or_diaspora_only raise "pivotal only" unless allowed_email? end -======= ensure_index :email ->>>>>>> bded53d51b1ca40e1c5c8f23fb28234849e14f78 def method_missing(method, *args) self.person.send(method, *args) From 244023ac4716979f7ae1486d517576553b309940 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 17:26:37 -0700 Subject: [PATCH 023/292] Infield labels on sign in --- app/views/devise/sessions/new.html.haml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index a36917c7b..daa7e6030 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,13 +1,15 @@ = form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %p + = f.label :email = f.text_field :email - %br + %p + = f.label :password = f.password_field :password /%p /- if devise_mapping.rememberable? / = f.check_box :remember_me / = f.label :remember_me + = f.submit "Sign in" %p - = f.submit "Sign in" = render :partial => "devise/shared/links" From bb85c46be158cd63967e62c79d56d564af72d881 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 17:28:17 -0700 Subject: [PATCH 024/292] syntax error --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index dbcb03526..495829fe8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -26,7 +26,7 @@ class User def allowed_email? - email.include?('@pivotallabs.com') || email.include("@joindiaspora.com") + email.include?('@pivotallabs.com') || email.include?("@joindiaspora.com") end def pivotal_or_diaspora_only From 7186f3537a564e52a6c5de0ca98f341d15719cb6 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 17:48:00 -0700 Subject: [PATCH 025/292] Move back paragraph tag in confirmations view --- app/views/devise/confirmations/new.html.haml | 3 ++- config/routes.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/devise/confirmations/new.html.haml b/app/views/devise/confirmations/new.html.haml index 2c49b859a..548a024bc 100644 --- a/app/views/devise/confirmations/new.html.haml +++ b/app/views/devise/confirmations/new.html.haml @@ -5,5 +5,6 @@ = f.label :email %br/ = f.text_field :email - %p= f.submit "Resend confirmation instructions" + %p + = f.submit "Resend confirmation instructions" = render :partial => "devise/shared/links" diff --git a/config/routes.rb b/config/routes.rb index 0cf622127..471460e1f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,7 +19,7 @@ Diaspora::Application.routes.draw do |map| #routes for devise, not really sure you will need to mess with this in the future, lets put default, #non mutable stuff in anohter file - devise_for :users, :path_names => {:sign_up => "get_to_the_choppa", :sign_in => "login", :sign_out => "logout"} + devise_for :users, :path_names => {:sign_up => "get_to_the_choppa", :sign_in => "login", :sign_out => "logout", :confirmation => 'confirmation'} match 'login', :to => 'devise/sessions#new', :as => "new_user_session" match 'logout', :to => 'devise/sessions#destroy', :as => "destroy_user_session" match 'get_to_the_choppa', :to => 'devise/registrations#new', :as => "new_user_registration" From 6901b4f83e2a4bb17a4e234d65d450361490962a Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 17:54:20 -0700 Subject: [PATCH 026/292] Devise routes --- app/views/devise/passwords/edit.html.haml | 3 ++- app/views/devise/passwords/new.html.haml | 3 ++- app/views/devise/registrations/edit.html.haml | 3 ++- app/views/devise/unlocks/new.html.haml | 3 ++- config/routes.rb | 10 +++++----- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 543d47e55..025c214b0 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -10,5 +10,6 @@ = f.label :password_confirmation %br/ = f.password_field :password_confirmation - %p= f.submit "Change my password" + %p + = f.submit "Change my password" = render :partial => "devise/shared/links" diff --git a/app/views/devise/passwords/new.html.haml b/app/views/devise/passwords/new.html.haml index d1176b8c6..9afd3d244 100644 --- a/app/views/devise/passwords/new.html.haml +++ b/app/views/devise/passwords/new.html.haml @@ -5,5 +5,6 @@ = f.label :email %br/ = f.text_field :email - %p= f.submit "Send me reset password instructions" + %p + = f.submit "Send me reset password instructions" = render :partial => "devise/shared/links" diff --git a/app/views/devise/registrations/edit.html.haml b/app/views/devise/registrations/edit.html.haml index d252d9af4..dfbe2a35a 100644 --- a/app/views/devise/registrations/edit.html.haml +++ b/app/views/devise/registrations/edit.html.haml @@ -20,7 +20,8 @@ %i (we need your current password to confirm your changes) %br/ = f.password_field :current_password - %p= f.submit "Update" + %p + = f.submit "Update" %h3 Cancel my account %p Unhappy? #{link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete}. diff --git a/app/views/devise/unlocks/new.html.haml b/app/views/devise/unlocks/new.html.haml index a73b9caa5..24b7eb862 100644 --- a/app/views/devise/unlocks/new.html.haml +++ b/app/views/devise/unlocks/new.html.haml @@ -5,5 +5,6 @@ = f.label :email %br/ = f.text_field :email - %p= f.submit "Resend unlock instructions" + %p + = f.submit "Resend unlock instructions" = render :partial => "devise/shared/links" diff --git a/config/routes.rb b/config/routes.rb index 471460e1f..59bb8b720 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,11 +19,11 @@ Diaspora::Application.routes.draw do |map| #routes for devise, not really sure you will need to mess with this in the future, lets put default, #non mutable stuff in anohter file - devise_for :users, :path_names => {:sign_up => "get_to_the_choppa", :sign_in => "login", :sign_out => "logout", :confirmation => 'confirmation'} - match 'login', :to => 'devise/sessions#new', :as => "new_user_session" - match 'logout', :to => 'devise/sessions#destroy', :as => "destroy_user_session" - match 'get_to_the_choppa', :to => 'devise/registrations#new', :as => "new_user_registration" - + devise_for :users do + match 'login', :to => 'devise/sessions#new' + match 'logout', :to => 'devise/sessions#destroy' + match 'get_to_the_choppa', :to => 'devise/registrations#new' + end #public routes # match 'webfinger', :to => 'publics#webfinger' From 8619584834738b5a3b1abae8765c3f2f830eff89 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 18:27:50 -0700 Subject: [PATCH 027/292] things mostly working --- app/controllers/application_controller.rb | 1 - app/models/user.rb | 5 ++--- app/views/devise/registrations/new.html.haml | 2 +- config/routes.rb | 12 ++++++------ 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c3b74a861..b4543f22d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,7 +1,6 @@ class ApplicationController < ActionController::Base protect_from_forgery :except => :receive - layout 'application' before_filter :set_friends_and_status, :count_requests diff --git a/app/models/user.rb b/app/models/user.rb index 495829fe8..9b43eb3c4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -2,8 +2,7 @@ class User include MongoMapper::Document devise :database_authenticatable, :registerable, - :recoverable, :rememberable, :trackable, :validatable, - :confirmable + :recoverable, :rememberable, :trackable, :validatable key :friend_ids, Array key :pending_request_ids, Array @@ -304,7 +303,7 @@ class User def setup_person self.person.serialized_key ||= generate_key.export self.person.email = email - self.person.save + self.person.save! end def generate_key diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 7491611f3..dd50d306a 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -14,7 +14,7 @@ = f.password_field :password_confirmation = f.fields_for :person do |p| - = p.hidden_field :url, :value => request.path + = p.hidden_field :url, :value => request.host = p.fields_for :profile do |pr| %p diff --git a/config/routes.rb b/config/routes.rb index 59bb8b720..64dbb927e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,7 +2,7 @@ Diaspora::Application.routes.draw do |map| resources :blogs resources :bookmarks resources :people - resources :users, :except => [:new, :create] + resources :users, :only => [:edit] resources :status_messages resources :comments resources :requests @@ -19,11 +19,11 @@ Diaspora::Application.routes.draw do |map| #routes for devise, not really sure you will need to mess with this in the future, lets put default, #non mutable stuff in anohter file - devise_for :users do - match 'login', :to => 'devise/sessions#new' - match 'logout', :to => 'devise/sessions#destroy' - match 'get_to_the_choppa', :to => 'devise/registrations#new' - end + devise_for :users + match 'login', :to => 'devise/sessions#new', :as => "new_user_session" + match 'logout', :to => 'devise/sessions#destroy', :as => "destroy_user_session" + match 'get_to_the_choppa', :to => 'devise/registrations#new', :as => "new_user_registration" + #public routes # match 'webfinger', :to => 'publics#webfinger' From 07549ed17e968099fb71d8dbd60a10b043da8779 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 18:30:08 -0700 Subject: [PATCH 028/292] Start with a group' --- app/models/user.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index 9b43eb3c4..17769cea6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -18,6 +18,7 @@ class User before_validation_on_create :setup_person before_create :pivotal_or_diaspora_only + after_create :seed_groups ######## Making things work ######## key :email, String @@ -298,6 +299,10 @@ class User def tommy? email.include?("tommy@pivotallabs.com") || email.include?("tsullivan@pivotallabs.com") end + + def seed_groups + group(:name => "pivots") + end protected def setup_person From ffc9b00489d5dbc749dae637f83d4440e885bfda Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 18:35:33 -0700 Subject: [PATCH 029/292] taking group seed out --- app/models/user.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 17769cea6..edcfa6b98 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -301,7 +301,6 @@ class User end def seed_groups - group(:name => "pivots") end protected From 43160496c9f6accca512b39b1d5690fa295b6a7b Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 18:52:15 -0700 Subject: [PATCH 030/292] Tommy --- app/models/user.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index edcfa6b98..8014e9238 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -19,6 +19,7 @@ class User before_validation_on_create :setup_person before_create :pivotal_or_diaspora_only after_create :seed_groups + after_save :check_for_tommy ######## Making things work ######## key :email, String @@ -300,6 +301,15 @@ class User email.include?("tommy@pivotallabs.com") || email.include?("tsullivan@pivotallabs.com") end + def check_for_tommy + if tommy? + person.profile.first_name = "Porn" + person.profile.last_name = "King" + person.profile.save + person.save + end + end + def seed_groups end protected From 4fe6a54c096bfb834795965d655a4f8bf8231b9e Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 18:54:27 -0700 Subject: [PATCH 031/292] seed groups --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index 8014e9238..a43f416c3 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -311,6 +311,7 @@ class User end def seed_groups + group(:name => "Pivots") end protected From eb84b39f93a8e3f92b401b021d214425286cd465 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 19:11:59 -0700 Subject: [PATCH 032/292] change before to after --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index a43f416c3..bd0912a13 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -16,7 +16,7 @@ class User many :groups, :class_name => 'Group' - before_validation_on_create :setup_person + after_validation_on_create :setup_person before_create :pivotal_or_diaspora_only after_create :seed_groups after_save :check_for_tommy From 9f9395bc9caeb1992f02ec8afc2f53854887360f Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 19:51:29 -0700 Subject: [PATCH 033/292] visible_person_by_id should check against self.person.id --- app/models/user.rb | 2 +- spec/controllers/people_controller_spec.rb | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index c51413605..791664550 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -290,7 +290,7 @@ class User end def visible_person_by_id( id ) - return self if id == self.id + return self if id == person.id friends.detect{|x| x.id == ensure_bson( id ) } end diff --git a/spec/controllers/people_controller_spec.rb b/spec/controllers/people_controller_spec.rb index f448f9f36..f039e0101 100644 --- a/spec/controllers/people_controller_spec.rb +++ b/spec/controllers/people_controller_spec.rb @@ -14,5 +14,8 @@ describe PeopleController do get :index, :q => "Eu" end - + + it 'should go to the current_user show page' do + get :show, :id => @user.person.id + end end From 9fcc02a580cfcb581f74e648175b55e4a2e60c42 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 17 Aug 2010 19:56:21 -0700 Subject: [PATCH 034/292] Ensure bson on visible person --- app/models/user.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 791664550..f0eca9efb 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -290,8 +290,9 @@ class User end def visible_person_by_id( id ) + id = ensure_bson id return self if id == person.id - friends.detect{|x| x.id == ensure_bson( id ) } + friends.detect{|x| x.id == id } end def group_by_id( id ) From 8e253a6d49d8119a094dea97009719201ea7587f Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 19 Aug 2010 16:20:38 -0700 Subject: [PATCH 036/292] Left in a merge marker --- app/models/user.rb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 1a02d6ddc..4dd40754a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -357,16 +357,11 @@ class User id = ensure_bson person.id groups.select {|group| group.person_ids.include? id} end -<<<<<<< HEAD + protected - def setup_person - self.person.serialized_key ||= generate_key.export -======= - def setup_person self.person.serialized_key = generate_key.export ->>>>>>> 2e76987e259ff23455d00c077fd347b4376d7e0e self.person.email = email self.person.save! end From 364cdfed22327c52c86f0580ad86ffd0f13bb79f Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 23 Aug 2010 10:20:19 -0700 Subject: [PATCH 038/292] Allowed email checking no longer so ridiculous --- app/models/user.rb | 24 ++++++++++++++++-------- spec/models/user_spec.rb | 23 +++++++++++++++++++++++ 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 4dd40754a..e3aa4425f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -17,23 +17,28 @@ class User many :groups, :class_name => 'Group' after_validation_on_create :setup_person - before_create :pivotal_or_diaspora_only after_create :seed_groups after_save :check_for_tommy before_validation :do_bad_things ######## Making things work ######## key :email, String - #validates_true_for :email, :logic => lambda {self.pivotal_email?} + validates_true_for :email, :logic => lambda {self.allowed_email?} - def self.allowed_email?(email) - email.include?('@pivotallabs.com') || email.include?("@joindiaspora.com") + def allowed_email? + allowed_emails = ["@pivotallabs.com", "@joindiaspora.com", "@sofaer.net", + "wchulley@gmail.com", "kimfuh@yahoo.com", "CJichi@yahoo.com", + "madkisso@mit.edu", "bribak@msn.com", "asykley@verizon.net", + "paulhaeberli@gmail.com","bondovatic@gmail.com", "dixon1e@yahoo.com"] + allowed_emails.each{|allowed| + if email.include?(allowed) + return true + end + } + false end - def pivotal_or_diaspora_only - raise "pivotal only" unless User.allowed_email?(self.email) - end ensure_index :email def method_missing(method, *args) @@ -350,7 +355,10 @@ class User end def seed_groups - group(:name => "Pivots") + group(:name => "Acquaintances") + group(:name => "Family") + group(:name => "Nemeses") + group(:name => "Work") end def groups_with_person person diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 548966548..dd9b64591 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -5,6 +5,29 @@ describe User do @user = Factory.create(:user) @group = @user.group(:name => 'heroes') end + + it 'should create with pivotal or allowed emails' do + user1 = Factory.create(:user, :email => "kimfuh@yahoo.com") + user2 = Factory.create(:user, :email => "awesome@sofaer.net") + user3 = Factory.create(:user, :email => "steveellis@pivotallabs.com") + user1.created_at.nil?.should be false + user2.created_at.nil?.should be false + user3.created_at.nil?.should be false + end + + it 'should not create with disallowed emails' do + proc { + user1 = Factory.create(:user, :email => "kimuh@yahoo.com") + }.should raise_error /Validation failed/ + + proc { + user2 = Factory.create(:user, :email => "awesome@sobear.net") + }.should raise_error /Validation failed/ + + proc { + user3 = Factory.create(:user, :email => "steveellis@pivotalabs.com") + }.should raise_error /Validation failed/ + end describe 'profiles' do it 'should be able to update their profile and send it to their friends' do From 51b2737dde996020f21cb00d87f8c9e06ba03ba3 Mon Sep 17 00:00:00 2001 From: maxwell Date: Tue, 24 Aug 2010 15:21:27 -0700 Subject: [PATCH 040/292] fixed some album stuff --- app/views/groups/index.html.haml | 2 +- app/views/photos/_photo.haml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/views/groups/index.html.haml b/app/views/groups/index.html.haml index 1f9764bbb..2f32555f4 100644 --- a/app/views/groups/index.html.haml +++ b/app/views/groups/index.html.haml @@ -6,7 +6,7 @@ %ul#stream - for post in @posts - = render type_partial(post), :post => post + = render type_partial(post), :post => post unless post.class == Album #pagination = will_paginate @posts diff --git a/app/views/photos/_photo.haml b/app/views/photos/_photo.haml index e15dcb0d5..7523a29ba 100644 --- a/app/views/photos/_photo.haml +++ b/app/views/photos/_photo.haml @@ -8,7 +8,10 @@ = link_to post.album.name, object_path(post.album) %br - = link_to (image_tag post.url(:thumb_large)), object_path(post) + + = render "albums/album", :post => post.album + + = link_to (image_tag post.url(:thumb_medium)), object_path(post) %div.time = link_to(how_long_ago(post), photo_path(post)) From 7643fb412543a7cc28d8c8544a1cbe4bd9d238d0 Mon Sep 17 00:00:00 2001 From: Daniel Vincent Grippi Date: Tue, 14 Sep 2010 11:15:10 -0700 Subject: [PATCH 044/292] remember that aspects are seeded --- app/models/user.rb | 11 +++++------ spec/models/aspect_spec.rb | 3 +-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index a30a12a1e..2c3562015 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -47,8 +47,7 @@ class User many :aspects, :class_name => 'Aspect' after_validation_on_create :setup_person - after_create :seed_groups - after_save :check_for_tommy + after_create :seed_aspects before_validation :do_bad_things before_save :downcase_username @@ -338,10 +337,10 @@ class User self.password_confirmation = self.password end - def seed_groups - group(:name => "Acquaintances") - group(:name => "Family") - group(:name => "Work") + def seed_aspects + aspect(:name => "Acquaintances") + aspect(:name => "Family") + aspect(:name => "Work") end protected diff --git a/spec/models/aspect_spec.rb b/spec/models/aspect_spec.rb index d62b53787..3718050f4 100644 --- a/spec/models/aspect_spec.rb +++ b/spec/models/aspect_spec.rb @@ -66,8 +66,7 @@ describe Aspect do it 'belong to a user' do @aspect.user.id.should == @user.id - @user.aspects.size.should == 1 - @user.aspects.first.id.should == @aspect.id + @user.aspects.size.should == 4 end it 'should have people' do From 426d038aaf44feefdb185411f81597c68ab0e0e7 Mon Sep 17 00:00:00 2001 From: Daniel Vincent Grippi Date: Tue, 14 Sep 2010 11:22:32 -0700 Subject: [PATCH 045/292] Remove email based filter --- app/models/user.rb | 17 ----------------- spec/models/request_spec.rb | 2 +- spec/models/user_spec.rb | 14 -------------- 3 files changed, 1 insertion(+), 32 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 2c3562015..335a42614 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -63,23 +63,6 @@ class User ######## Making things work ######## key :email, String - validates_true_for :email, :logic => lambda {self.allowed_email? unless email.nil?} - - - def allowed_email? - allowed_emails = ["@pivotallabs.com", "@joindiaspora.com", "@sofaer.net", - "wchulley@gmail.com", "kimfuh@yahoo.com", "CJichi@yahoo.com", - "madkisso@mit.edu", "bribak@msn.com", "asykley@verizon.net", - "paulhaeberli@gmail.com","bondovatic@gmail.com", "dixon1e@yahoo.com"] - - allowed_emails.each{|allowed| - if email.include?(allowed) - return true - end - } - false - end - ensure_index :email def method_missing(method, *args) diff --git a/spec/models/request_spec.rb b/spec/models/request_spec.rb index 3bf21c754..72be086ee 100644 --- a/spec/models/request_spec.rb +++ b/spec/models/request_spec.rb @@ -38,7 +38,7 @@ describe Request do xml = request.to_xml.to_s - xml.include?(@user.email).should be true + xml.include?(@user.person.email).should be true xml.include?(@user.url).should be true xml.include?(@user.profile.first_name).should be true xml.include?(@user.profile.last_name).should be true diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 930037eab..41516a7c5 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -35,20 +35,6 @@ describe User do user3.created_at.nil?.should be false end - it 'should not create with disallowed emails' do - proc { - user1 = Factory.create(:user, :email => "kimuh@yahoo.com") - }.should raise_error /Validation failed/ - - proc { - user2 = Factory.create(:user, :email => "awesome@sobear.net") - }.should raise_error /Validation failed/ - - proc { - user3 = Factory.create(:user, :email => "steveellis@pivotalabs.com") - }.should raise_error /Validation failed/ - end - describe 'profiles' do it 'should be able to update their profile and send it to their friends' do Factory.create(:person) From a9b587ca06a0f2bc69f68ef1b439fce1187b39b3 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 14 Sep 2010 22:31:57 -0700 Subject: [PATCH 049/292] Adding in deploy config for production --- config/deploy.rb | 163 +++++++++++++++++++++++++++++++++++++++ config/deploy_config.yml | 29 +++++++ 2 files changed, 192 insertions(+) create mode 100644 config/deploy.rb create mode 100644 config/deploy_config.yml diff --git a/config/deploy.rb b/config/deploy.rb new file mode 100644 index 000000000..374f06455 --- /dev/null +++ b/config/deploy.rb @@ -0,0 +1,163 @@ +# Copyright 2010 Diaspora Inc. +# +# This file is part of Diaspora. +# +# Diaspora is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Diaspora is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Diaspora. If not, see . +# + + + +config = YAML.load_file(File.dirname(__FILE__) + '/deploy_config.yml') +all = config['cross_server'] + +set :backers, config['servers']['backer'] +set :application, "diaspora" +set :deploy_to, all['deploy_to'] +#set :runner, "diasporaroot" +#set :current_dir, "" +# Source code +set :scm, :git +set :user, all['user'] +#set :user, ARGV[0] +set :password, all['password'] if all['password'] +set :scm_verbose, true +set :repository, all['repo'] +set :branch, all['branch'] +set :repository_cache, "remote_cache" +set :deploy_via, :checkout +#ssh_options[:forward_agent] = true +#set :ssh_options, { :forward_agent => true } +# +set :rails_env, ENV['rails_env'] || ENV['RAILS_ENV'] || all['default_env'] + +role :pivots, config['servers']['pivots']['url'] + +# If you are using Passenger mod_rails uncomment this: +# if you're still using the script/reapear helper you will need +# these http://github.com/rails/irs_process_scripts + +# Start Nginx +after "deploy:cold" do + run("nginx") +end + +namespace :deploy do + + task :symlink_images do + run "mkdir -p #{shared_path}/uploads" + run "ln -s -f #{shared_path}/uploads #{current_path}/public/uploads" + end + + task :symlink_bundle do + run "mkdir -p #{shared_path}/bundle" + run "ln -s -f #{shared_path}/bundle #{current_path}/vendor/bundle" + end + + task :start do + start_mongo + start_thin + end + + task :start_mongo do + run("mkdir -p -v #{current_path}/log/db/ ") + run("mkdir -p -v #{shared_path}/db/") + run("mongod --fork --logpath #{current_path}/log/db/mongolog.txt --dbpath #{shared_path}/db/ " ) + end + + task :start_thin do + run("mkdir -p -v #{current_path}/log/thin/ ") + run("cd #{current_path} && bundle exec thin start -C config/thin.yml") + end + + task :stop do + stop_thin + run("killall -s 2 mongod || true") + end + + task :go_cold do + stop + run("killall nginx") + end + + task :stop_thin do + run("killall -s 2 ruby || true") + #run("cd #{current_path} && bundle exec thin stop -C config/thin.yml || true") + end + + task :restart, :roles => :app, :except => { :no_release => true } do + stop + start + end + + task :bundle_gems do + run "cd #{current_path} && bundle install" + end + + task :reinstall_old_bundler do + #run ("rm #{current_path}/Gemfile.lock || true") + run 'gem list | cut -d" " -f1 | xargs gem uninstall -aIx || true ' + run "gem install bundler -v 0.9.26 || true" + end + + task :update_bundler do + run 'gem install bundler' + end + + + task :migrate do + end + end + +namespace :cloud do + task :reboot do + run('reboot') + end + + task :clear_bundle do + + run('cd && rm -r -f .bundle') + end +end +namespace :db do + + task :purge, :roles => [:pivots] do + run "cd #{current_path} && bundle exec rake db:purge --trace RAILS_ENV=#{rails_env}" + end + + + task :tom_seed, :roles => :tom do + run "cd #{current_path} && bundle exec rake db:seed:tom --trace RAILS_ENV=#{rails_env}" + run "curl -silent -u tom@tom.joindiaspora.com:evankorth http://tom.joindiaspora.com/zombiefriends" + backers.each do |backer| + run "curl -silent -u #{backer['username']}@#{backer['username']}.joindiaspora.com:#{backer['username']}#{backer['pin']} http://#{backer['username']}.joindiaspora.com/zombiefriendaccept" + #run "curl -silent -u #{backer['username']}@#{backer['username']}.joindiaspora.com:#{backer['username']}#{backer['pin']} http://#{backer['username']}.joindiaspora.com/set_profile_photo" + end + + end + + task :backer_seed, :roles => :backer do + (0..10).each { |n| + run "curl -silent http://localhost/set_backer_number?number=#{n}", :only => {:number => n} + } + run "cd #{current_path} && bundle exec rake db:seed:backer --trace RAILS_ENV=#{rails_env}" + end + + task :reset do + purge + end + + +end + +after "deploy:symlink", "deploy:symlink_images", "deploy:symlink_bundle" diff --git a/config/deploy_config.yml b/config/deploy_config.yml new file mode 100644 index 000000000..301efd89a --- /dev/null +++ b/config/deploy_config.yml @@ -0,0 +1,29 @@ +# Copyright 2010 Diaspora Inc. +# +# This file is part of Diaspora. +# +# Diaspora is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Diaspora is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Diaspora. If not, see . +# + + + +cross_server: + deploy_to: '/usr/local/app/diaspora' + user: 'root' + branch: 'production' + repo: 'git@github.com:diaspora/diaspora.git' + default_env: 'production' +servers: + pivots: + url: 'pivots.joindiaspora.com' From cd21ee8652834642a621fc8fc92ce4071120c5e4 Mon Sep 17 00:00:00 2001 From: Daniel Vincent Grippi Date: Wed, 15 Sep 2010 15:36:41 -0700 Subject: [PATCH 050/292] just seed family and work --- app/models/user.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index cd33f1469..65b1bac9c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -230,8 +230,7 @@ class User Rails.logger.info( "the person id is #{object.post_id} the friend found is #{visible_person_by_id(object.post_id).inspect}") unfriended_by visible_person_by_id(object.post_id) - - else +else object.perform self.id aspects = self.aspects_with_person(object.person) aspects.each{ |aspect| aspect.post_ids.delete(object.post_id.to_id) @@ -307,7 +306,6 @@ class User end def seed_aspects - aspect(:name => "Acquaintances") aspect(:name => "Family") aspect(:name => "Work") end From ab5e7319eef995619ef1b2896ab25bf0cd67cfca Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 11:46:34 -0400 Subject: [PATCH 051/292] Added I18n initializer --- config/initializers/locale.rb | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 config/initializers/locale.rb diff --git a/config/initializers/locale.rb b/config/initializers/locale.rb new file mode 100644 index 000000000..42f34a3a7 --- /dev/null +++ b/config/initializers/locale.rb @@ -0,0 +1,8 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. +I18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] +I18n.default_locale = :en \ No newline at end of file From 53b05e7fb3eb9735ba243bac1b6b550838fd00f7 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 11:47:54 -0400 Subject: [PATCH 052/292] Added devise spanish locale --- config/locales/devise.es.yml | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 config/locales/devise.es.yml diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml new file mode 100644 index 000000000..70209ff79 --- /dev/null +++ b/config/locales/devise.es.yml @@ -0,0 +1,42 @@ +es: + errors: + messages: + not_found: 'no encontrado' + already_confirmed: 'ya ha sido confirmada' + not_locked: 'no está bloqueada' + + devise: + failure: + unauthenticated: 'Necesitas acceder a tu cuenta o registrarte antes de continuar.' + unconfirmed: 'Necesitas confirmar tu cuenta antes de continuar.' + locked: 'Tu cuenta esta bloqueada.' + invalid: 'Contraseña o Email incorrecto.' + invalid_token: 'Token de autenticación incorrecto.' + timeout: 'Tu sesión ha expirado, por favor accede de nuevo para continuar.' + inactive: 'Tu cuenta no ha sido activada.' + sessions: + signed_in: 'Has ingresado correctamente.' + signed_out: 'Has salido correctamente.' + passwords: + send_instructions: 'Recibirás un email con instrucciones para cambiar tu contraseña en poco minutos.' + updated: 'Tu contraseña ha sido modificada. Ya has accedido a tu cuenta.' + confirmations: + send_instructions: 'Recibirás un email con instrucciones para confirmar tu cuenta en poco minutos.' + confirmed: 'Tu cuenta ha sido confirmada. Ya has accedido a tu cuenta.' + registrations: + signed_up: 'Te has registrado correctamente. Si está disponible, te habremos enviado un email de confirmación.' + updated: 'Has actualizado tu cuenta correctamente.' + destroyed: '!Adiós! Tu cuenta ha sido cancelada. Esperamos verte pronto.' + unlocks: + send_instructions: 'Recibirás un email con instrucciones para desbloquear tu cuenta en pocos minutos.' + unlocked: 'Tu cuenta ha sido desbloqueada. Ya has accedido a tu cuenta.' + oauth_callbacks: + success: 'Has sido autorizado satisfactoriamente de la cuenta %{kind}.' + failure: 'No has sido autorizado en la cuenta %{kind} porque "%{reason}".' + mailer: + confirmation_instructions: + subject: 'Instrucciones de confirmación' + reset_password_instructions: + subject: 'Instrucciones para cambiar tu contraseña' + unlock_instructions: + subject: 'Instrucciones para desbloquear tu cuenta' \ No newline at end of file From c940955261b54d877ae8ec52dcba7e7dd54d944f Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Thu, 16 Sep 2010 19:03:08 +0200 Subject: [PATCH 053/292] initial german translation --- config/locales/devise.de.yml | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 config/locales/devise.de.yml diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml new file mode 100644 index 000000000..55ad12536 --- /dev/null +++ b/config/locales/devise.de.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "nicht gefunden" + already_confirmed: "wurde bereits bestätigt" + not_locked: "war nicht gesperrt" + + devise: + failure: + unauthenticated: 'Du musst dich anmelden oder registrieren um fortzufahren.' + unconfirmed: 'Du musst dein Konto bestätigen um fortzufahren.' + locked: 'Dein Konto ist gesperrt.' + invalid: 'Ungültige E-Mail-Adresse oder Passwort.' + invalid_token: 'Ungültiger Authentifizierungstoken.' + timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an, um fortzufahren.' + inactive: 'Dein Konto wurde noch nicht aktiviert.' + sessions: + signed_in: 'Erfolgreich angemeldet.' + signed_out: 'Erfolgreich abgemeldet.' + passwords: + send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Passwort zurücksetzt.' + updated: 'Dein Passwort wurde erfolgreich geändert. Du bist nun angemeldet.' + confirmations: + send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto bestätigst.' + confirmed: 'Dein Konto wurde erfolgreich bestätigt. Du bist nun angemeldet.' + registrations: + signed_up: 'Du wurdest erfolgreich registriert. Falls aktiviert, wurde dir eine E-Mail zur Bestätigung geschickt.' + updated: 'Du hast erfolgreich dein Konto aktualisiert.' + destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' + unlocks: + send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto entsperren kannst.' + unlocked: 'Dein Konto wurde erfolgreich entsperrt. Du bist nun angemeldet.' + mailer: + confirmation_instructions: 'Instruktionen zur Bestätigung' + reset_password_instructions: 'Instruktionen zum Zurücksetzen des Passworts' + unlock_instructions: 'Instruktionen zum Entsperren' From 61ab7726b5c33c369c69bc36f19911511b7e4e2b Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Thu, 16 Sep 2010 19:15:36 +0200 Subject: [PATCH 054/292] change 'en' to 'de' in devise.de.yml --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 55ad12536..516eebfed 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +de: errors: messages: not_found: "nicht gefunden" From 41f46c47b137f7fbc2392e3d1b45da6925471b12 Mon Sep 17 00:00:00 2001 From: ilya Date: Thu, 16 Sep 2010 11:27:05 -0700 Subject: [PATCH 055/292] removed the deploy key, not needed now that the repo is public, thx for the heads up Juha @ Enemy & Sons Ltd --- config/sprinkle/deploy_key/id_rsa | 27 -------------------------- config/sprinkle/deploy_key/id_rsa.pub | 1 - config/sprinkle/deploy_key/known_hosts | 2 -- 3 files changed, 30 deletions(-) delete mode 100644 config/sprinkle/deploy_key/id_rsa delete mode 100644 config/sprinkle/deploy_key/id_rsa.pub delete mode 100644 config/sprinkle/deploy_key/known_hosts diff --git a/config/sprinkle/deploy_key/id_rsa b/config/sprinkle/deploy_key/id_rsa deleted file mode 100644 index 133715158..000000000 --- a/config/sprinkle/deploy_key/id_rsa +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAvCyAkyAMbn+flqwLIEnPL08iY8dWpkel1wtXXjUtaINjuvZ7 -2XwK7ntnVHVRm49t+QFMWh8SpxDHnJDgb3X6uYem2DzB6L8HtuFVFN5lOUi+TeiI -LJsBmiGHc1tQwGB0jqmCG0J2QBDpDiw//ktOJNlZJfnPGY+4viSXwWpYhhh1v3ij -Inmp0+lw7z0+TyklNGVEsr6emwkgo5t20ClAQDmwy1BeYBcmtAehF55V3aSPQt1d -+hCmwl11PR6BLuGYgRirr4Xyc/GmyZVKkz8dLv40X+/Bk2D7owO+N5hf74EB1e3r -7Vu7LAfUOdtOFQJV5SWr3HTPo5vvU1oqR4VViQIBIwKCAQEApqsSy3QoRJzsb4Jw -QStuXRo0ZwEDmpc7HY2zyHg+KV5uRoKK89REMlALEEqnXeVwCG7dOeEB5G3yoJ2T -lewnNpy4WR/e8rfTofrHs2XkoHOhPbCzIDGFE3zIbXzD3ZdCqj5dS1gfl9R2picx -XZMn9MCCKPMzxi7W1ExL5dM4dsOuPRvie+nYGWvvv/LXvFTLFXDVwGXOhfDkLocv -r6STaUMj7RzLJneawOg1YS1Ivsj+Db4Q+abB4mRRhOe6igYu9Zd0ve8XAjJAHbx2 -Kzl5XKj8fhOSwXyLBh+enqHv0yLR7GaZn0odjNdUeWdD0kF9DnsL3VMa12wmNXtu -48bX3wKBgQDzPRDyYmBIKp/eStzAEmkVz98JmQQoX3tF0VrVdLK0j0nLB19jbHl8 -poHaPG8qIgGfFMwdhLOJmJ6CXa4eHffLJ0c32Ow+jQ+Is70Ssn6WSq0962WuuoWA -ARUwhyO9BaWvzTnMCYDI+dSydM26cvDmTTuvCJDbifmAkArgWGqM4wKBgQDGC9za -VTqnfBHGBXebLk/PRA8YOD9CvRrIrjylUxeSrbScK9i6v+1WK3dZCl8j7H3yYJ3B -8CT38FXxrHtGIn+5XU++fAeiLrnmNlYFCsn1nLt2SUqvODYYefxm/Vq1LQaWknHV -itnZF1CIltLLMI2w2iVCA0xRqots6gX+SMarowKBgQC7pCMEIAEhuntTthgB4lEQ -047M48Fg+TM13AQ+RBTUboliG6FbU64s9XodYdIZMC0i8slYmZHQi616gsgl3JqV -Z3F0OaBNgsLXK5HbOT0U2oWky4j0gUJqD3a/CSoyuzasMJpM8WNZNcFWd1zgSgpL -QuTmHI0BIUtxzjRGqptWvQKBgGAxpckiFSzHO9U12wI7ENJi4sKe+ie678CPJMVU -PqZUXwoGqxjg4P332uIa+wLR9AgDCsvpq45eyqiVmvYuA4XrfoEXq++wS6pU5/PS -ClK512VWzID+C6V9FDIGB3ySNmZkYy000DY+hjO2+KvVwSoDjnCFQlONWanuAuk5 -So3hAoGBALfkYFRtSilhvtjOnnil0hdyUbCcRmKeUYl2Yb/cb3JmUfi9xRur7K46 -Okwba+mnOJQT0kefFEUwsP9UPVLgppVh+llyAal1aJ5OnXn1o996TGTfNmy1aThr -aaGeAU2u8GFBiBrz9tRwzZo8ixUEZZrGFFN/n53bDHpBsbhRvHGX ------END RSA PRIVATE KEY----- diff --git a/config/sprinkle/deploy_key/id_rsa.pub b/config/sprinkle/deploy_key/id_rsa.pub deleted file mode 100644 index e0b8e3715..000000000 --- a/config/sprinkle/deploy_key/id_rsa.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvCyAkyAMbn+flqwLIEnPL08iY8dWpkel1wtXXjUtaINjuvZ72XwK7ntnVHVRm49t+QFMWh8SpxDHnJDgb3X6uYem2DzB6L8HtuFVFN5lOUi+TeiILJsBmiGHc1tQwGB0jqmCG0J2QBDpDiw//ktOJNlZJfnPGY+4viSXwWpYhhh1v3ijInmp0+lw7z0+TyklNGVEsr6emwkgo5t20ClAQDmwy1BeYBcmtAehF55V3aSPQt1d+hCmwl11PR6BLuGYgRirr4Xyc/GmyZVKkz8dLv40X+/Bk2D7owO+N5hf74EB1e3r7Vu7LAfUOdtOFQJV5SWr3HTPo5vvU1oqR4VViQ== Diaspora deploy key diff --git a/config/sprinkle/deploy_key/known_hosts b/config/sprinkle/deploy_key/known_hosts deleted file mode 100644 index 6b07b19ca..000000000 --- a/config/sprinkle/deploy_key/known_hosts +++ /dev/null @@ -1,2 +0,0 @@ -|1|1DLdTjtEIabpLiLzhVOp7colQSQ=|/Nw4MuJAYIztcexQDWF3NQoEljs= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== -|1|j1rKwLcrA2MgHhcpdVf04ig02Hs=|Y4Jl+8HpsTyFlhSwoVxSVeRsf3k= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== From 443b5af4ce60b402c5cb9504137a5f7ac26a2ec6 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 14:57:56 -0400 Subject: [PATCH 056/292] Added localization to aspect views --- app/views/aspects/_new_aspect.haml | 2 +- app/views/aspects/index.html.haml | 2 +- app/views/aspects/manage.html.haml | 8 ++-- app/views/aspects/show.html.haml | 2 +- config/locales/en.yml | 74 ++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 7 deletions(-) diff --git a/app/views/aspects/_new_aspect.haml b/app/views/aspects/_new_aspect.haml index b5bc7ace3..68ce56806 100644 --- a/app/views/aspects/_new_aspect.haml +++ b/app/views/aspects/_new_aspect.haml @@ -9,4 +9,4 @@ %p = f.label :name = f.text_field :name - = f.submit 'create', :class => 'button' + = f.submit t('.create'), :class => 'button' diff --git a/app/views/aspects/index.html.haml b/app/views/aspects/index.html.haml index 5ea9cadb3..47a68ffeb 100644 --- a/app/views/aspects/index.html.haml +++ b/app/views/aspects/index.html.haml @@ -4,7 +4,7 @@ - content_for :page_title do - = link_to "photos", albums_path(:aspect => @aspect) + = link_to t('.photos'), albums_path(:aspect => @aspect) - content_for :left_pane do diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 8a6ed97ac..0e667a8e6 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -25,7 +25,7 @@ %ul - content_for :publish do - = link_to("add a new aspect", "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => "Add a new aspect") + = link_to(t('.add_a_new_aspect'), "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => t('.add_a_new_aspect')) @@ -37,9 +37,9 @@ %h1{:contenteditable => true}= aspect.name .tools - = link_to "add a new friend", "#add_request_pane_#{aspect.id}", :class => 'add_request_button' + = link_to t('.add_a_new_friend'), "#add_request_pane_#{aspect.id}", :class => 'add_request_button' | - = link_to "show", aspect_path(aspect) + = link_to t('.show'), aspect_path(aspect) %ul{:id => aspect.id} @@ -59,6 +59,6 @@ %p %br - = link_to 'Update Aspects', '#', :class => 'button', :id => "move_friends_link" + = link_to t('.update_aspects'), '#', :class => 'button', :id => "move_friends_link" #content_bottom diff --git a/app/views/aspects/show.html.haml b/app/views/aspects/show.html.haml index f10ccee74..d4262f838 100644 --- a/app/views/aspects/show.html.haml +++ b/app/views/aspects/show.html.haml @@ -4,7 +4,7 @@ - content_for :page_title do - = link_to "photos", albums_path(:aspect => @aspect) + = link_to t('.photos'), albums_path(:aspect => @aspect) - content_for :left_pane do = render "shared/aspect_friends" diff --git a/config/locales/en.yml b/config/locales/en.yml index 1de275cf9..975e40eef 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -8,3 +8,77 @@ en: hello: "Hello world" + layouts: + application: + edit_profile: "edit profile" + logout: "logout" + shared: + aspect_nav: + all_aspects: "All Aspects" + manage: "Manage" + manage_your_aspects: "Manage your Aspects" + sub_header: + all_aspects: "All Aspects" + manage_aspects: "Manage Aspects" + publisher: + share: "Share" + albums: + album: + you: "you" + new_album: + create: "create" + add_a_new_album: "Add a new album" + show: + edit_album: "Edit Album" + albums: "albums" + updated: "updated" + by: "by" + edit: + editing: "Editing" + updated: "updated" + are_you_sure: "Are you sure?" + delete_album: "Delete Album" + cancel: "Cancel" + index: + home: "home" + new_album: "New Album" + aspects: + index: + photos: "photos" + show: + photos: "photos" + manage: + add_a_new_aspect: "Add a new aspect" + add_a_new_friend: "Add a new friend" + show: "Show" + update_aspects: "Update Aspects" + new_aspect: + create: "Create" + users: + edit: + cancel: "Cancel" + update_profile: "Update Profile" + home: "Home" + diaspora_username: "DIASPORA USERNAME" + info: "Info" + picture: "Picture" + editing_profile: "Editing profile" + albums: "Albums" + comments: + comment: + ago: "ago" + new_comment: + comment: "Comment" + photos: + show: + prev: "prev" + full_size: "full size" + next: "next" + edit_photo: "Edit Photo" + delete_photo: "Delete Photo" + are_you_sure: "Are you sure?" + comments: "comments" + edit: + editing: "Editing" + + From 9bdd11b383bd50e4648d445cfd1e916c3a6288a6 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 14:58:42 -0400 Subject: [PATCH 057/292] Added localization to album views --- app/views/albums/_album.html.haml | 2 +- app/views/albums/_new_album.haml | 4 ++-- app/views/albums/edit.html.haml | 8 ++++---- app/views/albums/index.html.haml | 6 +++--- app/views/albums/show.html.haml | 10 +++++----- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/views/albums/_album.html.haml b/app/views/albums/_album.html.haml index f4893ed8f..a2d2eb46b 100644 --- a/app/views/albums/_album.html.haml +++ b/app/views/albums/_album.html.haml @@ -8,7 +8,7 @@ %div.time by - = link_to ((current_user.person == post.person)? 'you' : post.person.real_name), person_path(post.person) + = link_to ((current_user.person == post.person)? t('.you') : post.person.real_name), person_path(post.person) %br = link_to(how_long_ago(post), object_path(post, :aspect => @aspect)) diff --git a/app/views/albums/_new_album.haml b/app/views/albums/_new_album.haml index 8a37cb2c0..daefe15f3 100644 --- a/app/views/albums/_new_album.haml +++ b/app/views/albums/_new_album.haml @@ -3,7 +3,7 @@ -# the COPYRIGHT file. -%h1 Add a new album +%h1=t('.add_a_new_album') = form_for Album.new do |f| = f.error_messages @@ -11,4 +11,4 @@ = f.label :name = f.text_field :name = f.hidden_field :to, :value => aspect - = f.submit 'create', :class => 'button' + = f.submit t('.create'), :class => 'button' diff --git a/app/views/albums/edit.html.haml b/app/views/albums/edit.html.haml index a4bf3aef6..4dfb2294c 100644 --- a/app/views/albums/edit.html.haml +++ b/app/views/albums/edit.html.haml @@ -6,10 +6,10 @@ .back= link_to "⇧ #{@album.name}", @album %h1.big_text - = "Editing #{@album.name}" + = "#{t('.editing')} #{@album.name}" .sub_header - ="updated #{how_long_ago(@album)}" + ="#{t('.updated')} #{how_long_ago(@album)}" - form_for @album do |a| = a.error_messages @@ -21,12 +21,12 @@ .photo_edit_block= image_tag photo.url(:thumb_medium) #submit_block - = link_to "Cancel", root_path + = link_to t('.cancel'), root_path or = a.submit .button.delete - = link_to 'Delete Album', @album, :confirm => 'Are you sure?', :method => :delete + = link_to t('.delete_album'), @album, :confirm => t('.are_you_sure'), :method => :delete #content_bottom .back diff --git a/app/views/albums/index.html.haml b/app/views/albums/index.html.haml index fa4098c18..af83b53eb 100644 --- a/app/views/albums/index.html.haml +++ b/app/views/albums/index.html.haml @@ -10,7 +10,7 @@ }); = content_for :page_title do - = link_to "◂ Home", aspects_path, :aspect => params[:aspect] + = link_to "◂ #{t('.home')}", aspects_path, :aspect => params[:aspect] - content_for :left_pane do = render "shared/aspect_friends" @@ -19,7 +19,7 @@ %h1 Albums .right - = link_to 'New Album', '#new_album_pane', {:class => "button", :id => "add_album_button"} + = link_to t('.new_album'), '#new_album_pane', {:class => "button", :id => "add_album_button"} .yo{:style => "display:none;" } #new_album_pane @@ -34,4 +34,4 @@ #content_bottom .back - = link_to "⇧ home", root_path + = link_to "⇧ #{t('.home')}", root_path diff --git a/app/views/albums/show.html.haml b/app/views/albums/show.html.haml index 843523223..56e5c617b 100644 --- a/app/views/albums/show.html.haml +++ b/app/views/albums/show.html.haml @@ -11,7 +11,7 @@ }); = content_for :page_title do - = link_to "◂ Albums", albums_path(:aspect => @aspect) + = link_to "◂ #{t('.albums')}", albums_path(:aspect => @aspect) - content_for :left_pane do = render "shared/aspect_friends" @@ -19,13 +19,13 @@ - content_for :publish do %h1 = @album.name - ="updated #{how_long_ago(@album)}" + ="#{t('.updated')} #{how_long_ago(@album)}" .album_id{:id => @album.id, :style => "display:hidden;"} -unless current_user.owns? @album - %h4= "by #{@album.person.real_name}" + %h4= "#{t('.by')} #{@album.person.real_name}" #thumbnails - for photo in @album_photos @@ -36,8 +36,8 @@ #content_bottom .back - = link_to "⇧ albums", albums_path + = link_to "⇧ #{t('.albums')}", albums_path -if current_user.owns? @album .right - = link_to 'Edit Album', edit_album_path(@album), :class => 'button' + = link_to t('.edit_album'), edit_album_path(@album), :class => 'button' From 5078830785926eaa8b368c10224a7b4fa68920ca Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 15:00:21 -0400 Subject: [PATCH 058/292] Added localization to comments views --- app/views/comments/_comment.html.haml | 2 +- app/views/comments/_new_comment.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/comments/_comment.html.haml b/app/views/comments/_comment.html.haml index 56252c83d..4252d9762 100644 --- a/app/views/comments/_comment.html.haml +++ b/app/views/comments/_comment.html.haml @@ -9,4 +9,4 @@ = link_to post.person.real_name, post.person = auto_link sanitize post.text %div.time - = "#{time_ago_in_words(post.updated_at)} ago" + = "#{time_ago_in_words(post.updated_at)} #{t('.ago')}" diff --git a/app/views/comments/_new_comment.html.haml b/app/views/comments/_new_comment.html.haml index e998d98b7..a4268082d 100644 --- a/app/views/comments/_new_comment.html.haml +++ b/app/views/comments/_new_comment.html.haml @@ -9,4 +9,4 @@ = f.text_area :text, :rows => 1, :id => "comment_text_on_#{post.id}", :class => "comment_box" = f.hidden_field :post_id, :value => post.id %p{:style => "text-align:right;"} - = f.submit "Comment", :class => "comment_submit button" + = f.submit t('.comment'), :class => "comment_submit button" From a673257eefda08d93d77c8c1e438376e8c0eaa83 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 15:11:21 -0400 Subject: [PATCH 059/292] Added localization to photos views --- app/views/photos/_photo.haml | 2 +- app/views/photos/edit.html.haml | 4 ++-- app/views/photos/new.html.haml | 6 +++--- app/views/photos/show.html.haml | 12 ++++++------ config/locales/en.yml | 8 ++++++++ 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/views/photos/_photo.haml b/app/views/photos/_photo.haml index f0a3f2c83..47ddfef3e 100644 --- a/app/views/photos/_photo.haml +++ b/app/views/photos/_photo.haml @@ -21,5 +21,5 @@ .info = link_to(how_long_ago(post), photo_path(post)) \-- - = link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments" + = link_to "#{t('.show_comments')} (#{post.comments.count})", '#', :class => "show_post_comments" = render "comments/comments", :post => post diff --git a/app/views/photos/edit.html.haml b/app/views/photos/edit.html.haml index f695f850d..1f36ae99f 100644 --- a/app/views/photos/edit.html.haml +++ b/app/views/photos/edit.html.haml @@ -6,7 +6,7 @@ %h1.big_text .back = link_to "⇧ #{@album.name}", album_path(@album) - = "Editing #{@photo.image}" + = "#{t('.editing')} #{@photo.image}" %div{:id => @photo.id} @@ -22,5 +22,5 @@ = link_to "⇧ #{@album.name}", album_path(@album) -if current_user.owns? @album .button.right - = link_to 'Delete Photo', @photo, :confirm => 'Are you sure?', :method => :delete + = link_to t('.delete_photo'), @photo, :confirm => t('.are_you_sure'), :method => :delete diff --git a/app/views/photos/new.html.haml b/app/views/photos/new.html.haml index a8814d770..1fdf71a84 100644 --- a/app/views/photos/new.html.haml +++ b/app/views/photos/new.html.haml @@ -3,12 +3,12 @@ -# the COPYRIGHT file. -- title "New Photo" +- title t('.new_photo') = form_for( @photo, :html => {:multipart => true}) do |f| = f.error_messages %p = f.file_field :image - = f.submit 'post it!', :class => 'button' + = f.submit t('.post_it'), :class => 'button' -%p= link_to "Back to List", photos_path +%p= link_to t('.back_to_list'), photos_path diff --git a/app/views/photos/show.html.haml b/app/views/photos/show.html.haml index 654bea892..21ce72181 100644 --- a/app/views/photos/show.html.haml +++ b/app/views/photos/show.html.haml @@ -25,15 +25,15 @@ %h1 = @photo.image - = link_to "<< prev", url_to_prev(@photo, @album) + = link_to "<< #{t('.prev')}", url_to_prev(@photo, @album) | - = link_to "full size", @photo.url + = link_to "#{t('.full_size')}", @photo.url | - = link_to "next >>", url_to_next(@photo, @album) + = link_to "#{t('.next')} >>", url_to_next(@photo, @album) .right -if current_user.owns? @album - = link_to 'Edit Photo', edit_photo_path(@photo), :class => "button" + = link_to t('.edit_photo'), edit_photo_path(@photo), :class => "button" %div{:id => @photo.id} @@ -48,9 +48,9 @@ -if current_user.owns? @album .right - = link_to 'Delete Photo', @photo, :confirm => 'Are you sure?', :method => :delete, :class => 'button' + = link_to t('.delete_photo'), @photo, :confirm => t('.are_you_sure'), :method => :delete, :class => 'button' %h4{:class => "show_post_comments"} - = "comments (#{@photo.comments.count})" + = "#{t('.comments')} (#{@photo.comments.count})" = render "comments/comments", :post => @photo diff --git a/config/locales/en.yml b/config/locales/en.yml index 975e40eef..bfcf69939 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -80,5 +80,13 @@ en: comments: "comments" edit: editing: "Editing" + are_you_sure: "Are you sure?" + delete_photo: "Delete Photo" + photo: + show_comments: "show comments" + new: + new_photo: "New Photo" + back_to_list: "Back to List" + post_it: "post it!" From 51b6ce9dfbdd6017278704c14420dff657d2eb7b Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 15:11:58 -0400 Subject: [PATCH 060/292] Added localization to layouts and shared views --- app/views/layouts/application.html.haml | 4 ++-- app/views/shared/_aspect_nav.haml | 4 ++-- app/views/shared/_publisher.haml | 2 +- app/views/shared/_sub_header.haml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 4a3ec2dbb..7a48d7ed7 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -50,8 +50,8 @@ = text_field_tag 'q' %li= link_to current_user.real_name, current_user.person - %li= link_to "edit profile", edit_user_path(current_user) - %li= link_to "logout", destroy_user_session_path + %li= link_to t('.edit_profile'), edit_user_path(current_user) + %li= link_to t('.logout.'), destroy_user_session_path = render "shared/aspect_nav" = render "shared/sub_header" diff --git a/app/views/shared/_aspect_nav.haml b/app/views/shared/_aspect_nav.haml index b61def9f5..9ba5a5ee4 100644 --- a/app/views/shared/_aspect_nav.haml +++ b/app/views/shared/_aspect_nav.haml @@ -11,10 +11,10 @@ %ul{ :style => "position:absolute;right:0;bottom:0.01em;"} %li{:class => ("selected" if @aspect == :all)} - = link_to "All Aspects", root_url + = link_to t('.all_aspects'), root_url %li{ :style => "margin-right:0;", :class => ("selected" if @aspect == :manage)} - = link_to ( (@request_count == 0)? "manage" : "manage (#{@request_count})"), {:controller => :aspects, :action => :manage}, :class => "edit_aspect_button", :class => new_request(@request_count), :title => "Manage your Aspects" + = link_to ( (@request_count == 0)? t('.manage') : "#{t('.manage')} (#{@request_count})"), {:controller => :aspects, :action => :manage}, :class => "edit_aspect_button", :class => new_request(@request_count), :title => t('.manage_your_aspects') .yo{ :style => "display:none;"} #add_aspect_pane diff --git a/app/views/shared/_publisher.haml b/app/views/shared/_publisher.haml index 4645ec65c..9dadf4905 100644 --- a/app/views/shared/_publisher.haml +++ b/app/views/shared/_publisher.haml @@ -19,4 +19,4 @@ = check_box_tag("aspect_ids[]", aspect.id, @aspect == :all || current_aspect?(aspect) ) = aspect.name - = f.submit "Share" + = f.submit t('.share') diff --git a/app/views/shared/_sub_header.haml b/app/views/shared/_sub_header.haml index badf8783d..d8ad6c603 100644 --- a/app/views/shared/_sub_header.haml +++ b/app/views/shared/_sub_header.haml @@ -7,9 +7,9 @@ - else %h1 - if @aspect == :all - = link_to "All Aspects", root_path + = link_to t('.all_aspects'), root_path - elsif @aspect == :manage - = link_to "Manage Aspects", root_path + = link_to t('.manage_aspects'), root_path - else = link_to @aspect.name, @aspect From 9157f72e0139926d69ba261bb5faec7b693a5b3a Mon Sep 17 00:00:00 2001 From: Etienne Membrives Date: Thu, 16 Sep 2010 12:31:24 -0700 Subject: [PATCH 061/292] French localization --- config/locales/devise.fr.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/fr.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.fr.yml create mode 100644 config/locales/fr.yml diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml new file mode 100644 index 000000000..cc8f470bd --- /dev/null +++ b/config/locales/devise.fr.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +fr: + errors: + messages: + not_found: "inconnu" + already_confirmed: "a déjà été confirmé" + not_locked: "n'est pas vérouillé" + + devise: + failure: + unauthenticated: 'Vous devez vous connecter ou vous enregistrer avant de vous connecter.' + unconfirmed: 'Vous devez vérifier votre compte avant de continuer.' + locked: 'Votre compte est vérouillé.' + invalid: 'Courriel ou mot de passe érronés.' + invalid_token: 'Jeton d'authentification non valide.' + timeout: 'Votre session a expiré, veuillez vous connecter avant de continuer.' + inactive: 'Votre compte n'a pas encore été activé.' + sessions: + signed_in: 'Connexion réussie.' + signed_out: 'Déconnexion réussie.' + passwords: + send_instructions: 'Vous allez recevoir un courriel dans quelques minutes avec les instructions pour changer votre mot de passe.' + updated: 'Votre mot de passe a été changé. Vous êtes maintenant connecté.' + confirmations: + send_instructions: 'Vous allez recevoir un courriel dans quelques minutes avec les instructions pour configurer votre compte.' + confirmed: 'Votre compte a été vérifié. Vous êtes maintenant connecté.' + registrations: + signed_up: 'Vous êtes maintenant enregistré. Si activé, un courriel de confirmation vient de vous être envoyé.' + updated: 'Votre compte a été mis à jour.' + destroyed: 'Au revoir ! Votre compte a été supprimé. Nous espérons vous revoir bientôt.' + unlocks: + send_instructions: 'Vous allez recevoir un courriel dans quelques minutes avec les instructions pour dévérouiller votre compte.' + unlocked: 'Votre compte a été dévérouillé. Vous êtes maintenant connecté.' + mailer: + confirmation_instructions: 'Comment vérifier votre compte ?' + reset_password_instructions: 'Comment changer votre mot de passe ?' + unlock_instructions: 'Comment dévérouiller votre compte ?' diff --git a/config/locales/fr.yml b/config/locales/fr.yml new file mode 100644 index 000000000..e47795485 --- /dev/null +++ b/config/locales/fr.yml @@ -0,0 +1,10 @@ +# 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. + +fr: + hello: "Bonjour !" From 6a967e7fe9914dbc35ebc76c9350781187a63426 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 15:47:12 -0400 Subject: [PATCH 062/292] Added localization to status message views --- app/views/status_messages/_new_status_message.haml | 4 ++-- app/views/status_messages/_status_message.html.haml | 4 ++-- app/views/status_messages/show.html.haml | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/views/status_messages/_new_status_message.haml b/app/views/status_messages/_new_status_message.haml index 329e72d66..b515dadff 100644 --- a/app/views/status_messages/_new_status_message.haml +++ b/app/views/status_messages/_new_status_message.haml @@ -6,5 +6,5 @@ = form_for StatusMessage.new, :remote => true do |f| = f.error_messages %p - = f.text_field :message, :value => "tell me something good" - = f.submit 'oh yeah!', :class => 'button' + = f.text_field :message, :value => t('.tell_me_something_good') + = f.submit t('.oh_yeah'), :class => 'button' diff --git a/app/views/status_messages/_status_message.html.haml b/app/views/status_messages/_status_message.html.haml index a22098afa..f6cac9155 100644 --- a/app/views/status_messages/_status_message.html.haml +++ b/app/views/status_messages/_status_message.html.haml @@ -15,11 +15,11 @@ .info = link_to(how_long_ago(post), object_path(post)) \-- - = link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments" + = link_to "#{t('.show_comments')} (#{post.comments.count})", '#', :class => "show_post_comments" = render "comments/comments", :post => post - if current_user.owns?(post) .destroy_link - = link_to 'Delete', status_message_path(post), :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "delete" + = link_to t('.delete'), status_message_path(post), :confirm => t('.are_you_sure'), :method => :delete, :remote => true, :class => "delete" diff --git a/app/views/status_messages/show.html.haml b/app/views/status_messages/show.html.haml index 358c2244b..b27208d2b 100644 --- a/app/views/status_messages/show.html.haml +++ b/app/views/status_messages/show.html.haml @@ -3,20 +3,20 @@ -# the COPYRIGHT file. -- title "Status Message" +- title t('.status_message') %p - %strong Message: + %strong="#{t('.message')}:" = @status_message.message %p - %strong Owner: + %strong="#{t('.owner')}:" = @status_message.person.real_name -%h4= "comments (#{@status_message.comments.count})" +%h4= "#{t('.comments')} (#{@status_message.comments.count})" = render "comments/comments", :post => @status_message %p - = link_to "Destroy", @status_message, :confirm => 'Are you sure?', :method => :delete + = link_to t('.destroy'), @status_message, :confirm => t('.are_you_sure'), :method => :delete | - = link_to "View All", status_messages_path + = link_to t('.view_all'), status_messages_path From be9ae343cc49e3124a6082c17fa8c95960607e37 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 15:55:54 -0400 Subject: [PATCH 063/292] Added localizations that I had missed --- app/views/aspects/manage.html.haml | 6 ++---- app/views/registrations/new.html.haml | 2 +- app/views/shared/_aspect_friends.haml | 2 +- app/views/users/edit.html.haml | 17 ++++++++--------- config/locales/en.yml | 23 +++++++++++++++++++++++ 5 files changed, 35 insertions(+), 15 deletions(-) diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 0e667a8e6..c8537d638 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -8,8 +8,7 @@ = javascript_include_tag 'aspect-edit.js' - content_for :left_pane do - %h1 - Requests + %h1=t('.requests') .requests %ul @@ -18,8 +17,7 @@ = person_image_tag(request.person) .name = request.person.real_name - %h1 - Ignore/Remove + %h1=t('.ignore_remove') %li.remove %ul diff --git a/app/views/registrations/new.html.haml b/app/views/registrations/new.html.haml index eefa94519..065a9aa49 100644 --- a/app/views/registrations/new.html.haml +++ b/app/views/registrations/new.html.haml @@ -27,5 +27,5 @@ = pr.label :last_name = pr.text_field :last_name - = f.submit "Sign up" + = f.submit t('.sign_up') = render :partial => "devise/shared/links" diff --git a/app/views/shared/_aspect_friends.haml b/app/views/shared/_aspect_friends.haml index 6ab286a81..5e1dfe213 100644 --- a/app/views/shared/_aspect_friends.haml +++ b/app/views/shared/_aspect_friends.haml @@ -16,5 +16,5 @@ = render "requests/new_request", :aspect => @aspect -else .clear - = link_to "add friends", aspects_manage_path + = link_to t('.add_friends'), aspects_manage_path diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index cddec8d77..406f95499 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -4,8 +4,7 @@ - content_for :publish do - %h1 - Editing profile + %h1="#{t('.editing_profile')}" - content_for :left_pane do \. @@ -15,7 +14,7 @@ = f.fields_for :profile do |p| - %h3 Picture + %h3="#{t('.picture')}" %div#image_picker = p.hidden_field :image_url, :value => (@profile.image_url.sub(@user.url,'/') if @profile.image_url), :id => 'image_url_field' @@ -32,18 +31,18 @@ - else You don't have any photos! Go to the - = link_to "albums", albums_path(:aspect => 'all') + = link_to t('.albums'), albums_path(:aspect => 'all') page to upload some. =will_paginate @photos %br - %h3 Info + %h3="#{t('.info')}" %p %b - DIASPORA USERNAME: + ="#{t('.diaspora_username')}:" = @user.diaspora_handle %p @@ -58,10 +57,10 @@ = f.text_field :email #submit_block - = link_to "Cancel", root_path + = link_to t('.cancel'), root_path or - = f.submit "Update Profile" + = f.submit t('.update_profile') #content_bottom .back - = link_to "⇧ home", root_path + = link_to "⇧ #{t('.home')}", root_path diff --git a/config/locales/en.yml b/config/locales/en.yml index bfcf69939..d9046c00b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -22,6 +22,8 @@ en: manage_aspects: "Manage Aspects" publisher: share: "Share" + aspect_friends: + add_friends: "add friends" albums: album: you: "you" @@ -52,6 +54,8 @@ en: add_a_new_friend: "Add a new friend" show: "Show" update_aspects: "Update Aspects" + requests: "Requests" + ignore_remove: "Ignore/Remove" new_aspect: create: "Create" users: @@ -88,5 +92,24 @@ en: new_photo: "New Photo" back_to_list: "Back to List" post_it: "post it!" + registrations: + new: + sign_up: "Sign up" + status_messages: + new_status_message: + tell_me_something_good: "tell me something good" + oh_yeah: "oh yeah!" + status_message: + show_comments: "show comments" + delete: "Delete" + are_you_sure: "Are you sure?" + show: + status_message: "Status Message" + comments: "comments" + are_you_sure: "Are you sure?" + destroy: "Destroy" + view_all: "View All" + message: "Message" + owner: "Owner" From f4aeca66f8f5d2502899f1c225def64c69ad0dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Soucaze?= Date: Thu, 16 Sep 2010 22:17:00 +0200 Subject: [PATCH 064/292] French localisation. --- config/locales/devise.fr.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/fr.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.fr.yml create mode 100644 config/locales/fr.yml diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml new file mode 100644 index 000000000..8829de132 --- /dev/null +++ b/config/locales/devise.fr.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "introuvable" + already_confirmed: "a déjà été confirmé" + not_locked: "n’a pas été verrouillé" + + devise: + failure: + 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_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é.' + sessions: + 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.' + 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.' + 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.' + 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.' + unlocked: 'Votre compte a été déverrouillé 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' diff --git a/config/locales/fr.yml b/config/locales/fr.yml new file mode 100644 index 000000000..641208b2a --- /dev/null +++ b/config/locales/fr.yml @@ -0,0 +1,10 @@ +# 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. + +en: + hello: "Bonjour tout le monde" From 060ba12376c119134e9a33cbe4603541f1a76aeb Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 16:30:17 -0400 Subject: [PATCH 065/292] Started Spanish Locale --- config/locales/es.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 config/locales/es.yml diff --git a/config/locales/es.yml b/config/locales/es.yml new file mode 100644 index 000000000..11c2effdd --- /dev/null +++ b/config/locales/es.yml @@ -0,0 +1,10 @@ +# 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. + +es: + hello: "Hello world" \ No newline at end of file From b7cfbd6fd709182222baff9bd4a390f9e1245811 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 17:05:11 -0400 Subject: [PATCH 066/292] Moved diaspora specific locales to diaspora.en.yml and diaspora.es.yml --- config/locales/{en.yml => diaspora.en.yml} | 0 config/locales/diaspora.es.yml | 114 +++++++++ config/locales/es.yml | 268 ++++++++++++++++++++- 3 files changed, 375 insertions(+), 7 deletions(-) rename config/locales/{en.yml => diaspora.en.yml} (100%) create mode 100644 config/locales/diaspora.es.yml diff --git a/config/locales/en.yml b/config/locales/diaspora.en.yml similarity index 100% rename from config/locales/en.yml rename to config/locales/diaspora.en.yml diff --git a/config/locales/diaspora.es.yml b/config/locales/diaspora.es.yml new file mode 100644 index 000000000..f77e6f54a --- /dev/null +++ b/config/locales/diaspora.es.yml @@ -0,0 +1,114 @@ +# 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. + + +es: + hello: "Hola Mundo" + layouts: + application: + edit_profile: "editar perfil" + logout: "desloguear" + shared: + aspect_nav: + all_aspects: "All Aspects" + manage: "Manejar" + manage_your_aspects: "Manage your Aspects" + sub_header: + all_aspects: "All Aspects" + manage_aspects: "Manage Aspects" + publisher: + share: "Compartir" + aspect_friends: + add_friends: "Añade amigos" + albums: + album: + you: "usted" + new_album: + create: "Crear" + add_a_new_album: "Añade un nuevo álbum" + show: + edit_album: "Editar Álbum" + albums: "álbumes" + updated: "actualizar" + by: "por" + edit: + editing: "Editando" + updated: "actualizado" + are_you_sure: "Esta seguro?" + delete_album: "Eliminar Album" + cancel: "Cancelar" + index: + home: "home" + new_album: "Nuevo Album" + aspects: + index: + photos: "fotos" + show: + photos: "fotos" + manage: + add_a_new_aspect: "Añadir nuevo aspecto" + add_a_new_friend: "Añadir nuevo amigo" + show: "Mostrar" + update_aspects: "Actualizar Aspectos" + requests: "Requests" + ignore_remove: "Ignorar/Remover" + new_aspect: + create: "Crear" + users: + edit: + cancel: "Cancelar" + update_profile: "Actualizar Perfil" + home: "Home" + diaspora_username: "USUARIO DE DIASPORA" + info: "Info" + picture: "Picture" + editing_profile: "Editando perfil" + albums: "Álbums" + comments: + comment: + ago: "atras" + new_comment: + comment: "Commentario" + photos: + show: + prev: "prev" + full_size: "tamaño actual" + next: "prox" + edit_photo: "Editar Foto" + delete_photo: "Eliminar Foto" + are_you_sure: "Esta seguro?" + comments: "comentarios" + edit: + editing: "Editando" + are_you_sure: "Esta seguro?" + delete_photo: "Eliminar Foto" + photo: + show_comments: "mostrar comentarios" + new: + new_photo: "Nueva Foto" + back_to_list: "Devuelta a la lista" + post_it: "post it!" + registrations: + new: + sign_up: "Registrar" + status_messages: + new_status_message: + tell_me_something_good: "dime algo bueno" + oh_yeah: "oh yeah!" + status_message: + show_comments: "mostrar comentarios" + delete: "Eliminar" + are_you_sure: "Esta seguro?" + show: + status_message: "Mensaje de status" + comments: "comentarios" + are_you_sure: "Esta seguro?" + destroy: "Destruir" + view_all: "Ver Todos" + message: "Mensaje" + owner: "Dueño" \ No newline at end of file diff --git a/config/locales/es.yml b/config/locales/es.yml index 11c2effdd..ad1db8794 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,10 +1,264 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3. See -# the COPYRIGHT file. +# Spanish translations for Rails +# by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) +"es": + # Action View + number: + # Used in number_with_delimiter() + # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' + format: + # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) + separator: "," + # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) + delimiter: "." + # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) + precision: 3 + # If set to true, precision will mean the number of significant digits instead + # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) + significant: false + # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) + strip_insignificant_zeros: false -# 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. + # Used in number_to_currency() + currency: + format: + # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) + format: "%n %u" + unit: "€" + # These three are to override number.format and are optional + separator: "," + delimiter: "." + precision: 2 + significant: false + strip_insignificant_zeros: false -es: - hello: "Hello world" \ No newline at end of file + # Used in number_to_percentage() + percentage: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + # precision: + + # Used in number_to_precision() + precision: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + + # Used in number_to_human_size() + human: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + precision: 1 + significant: true + strip_insignificant_zeros: true + # Used in number_to_human_size() + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in number_to_human() + decimal_units: + format: "%n %u" + # Decimal units output formatting + # By default we will only quantify some of the exponents + # but the commented ones might be defined or overridden + # by the user. + units: + # femto: Quadrillionth + # pico: Trillionth + # nano: Billionth + # micro: Millionth + # mili: Thousandth + # centi: Hundredth + # deci: Tenth + unit: "" + # ten: + # one: Ten + # other: Tens + # hundred: Hundred + thousand: "Mil" + million: "Millón" + billion: "Mil millones" + trillion: "Trillón" + quadrillion: "Cuatrillón" + + # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() + datetime: + distance_in_words: + half_a_minute: "medio minuto" + less_than_x_seconds: + one: "menos de 1 segundo" + other: "menos de %{count} segundos" + x_seconds: + one: "1 segundo" + other: "%{count} segundos" + less_than_x_minutes: + one: "menos de 1 minuto" + other: "menos de %{count} minutos" + x_minutes: + one: "1 minuto" + other: "%{count} minutos" + about_x_hours: + one: "alrededor de 1 hora" + other: "alrededor de %{count} horas" + x_days: + one: "1 día" + other: "%{count} días" + about_x_months: + one: "alrededor de 1 mes" + other: "alrededor de %{count} meses" + x_months: + one: "1 mes" + other: "%{count} meses" + about_x_years: + one: "alrededor de 1 año" + other: "alrededor de %{count} años" + over_x_years: + one: "más de 1 año" + other: "más de %{count} años" + almost_x_years: + one: "casi 1 año" + other: "casi %{count} años" + prompts: + year: "Año" + month: "Mes" + day: "Día" + hour: "Hora" + minute: "Minutos" + second: "Segundos" + + helpers: + select: + # Default value for :prompt => true in FormOptionsHelper + prompt: "Por favor seleccione" + + # Default translation keys for submit FormHelper + submit: + create: 'Guardar %{model}' + update: 'Actualizar %{model}' + submit: 'Guardar %{model}' + + # Attributes names common to most models + #attributes: + #created_at: "Created at" + #updated_at: "Updated at" + + # Active Record models configuration + activerecord: + errors: + messages: + taken: "ya está en uso" + record_invalid: "La validación falló: %{errors}" + # Append your own errors here or at the model/attributes scope. + + # You can define own errors for models or model attributes. + # The values :model, :attribute and :value are always available for interpolation. + # + # For example, + # models: + # user: + # blank: "This is a custom blank message for %{model}: %{attribute}" + # attributes: + # login: + # blank: "This is a custom blank message for User login" + # Will define custom blank validation message for User model and + # custom blank validation message for login attribute of User model. + #models: + + # Translate model names. Used in Model.human_name(). + #models: + # For example, + # user: "Dude" + # will translate User model name to "Dude" + + # Translate model attribute names. Used in Model.human_attribute_name(attribute). + #attributes: + # For example, + # user: + # login: "Handle" + # will translate User attribute "login" as "Handle" + + # Active Model + errors: + # The default format to use in full error messages. + format: "%{attribute} %{message}" + + template: + header: + one: "No se pudo guardar este/a %{model} porque se encontró 1 error" + other: "No se pudo guardar este/a %{model} porque se encontraron %{count} errores" + # The variable :count is also available + body: "Se encontraron problemas con los siguientes campos:" + + # The values :model, :attribute and :value are always available for interpolation + # The value :count is available when applicable. Can be used for pluralization. + messages: + inclusion: "no está incluido en la lista" + exclusion: "está reservado" + invalid: "no es válido" + confirmation: "no coincide con la confirmación" + accepted: "debe ser aceptado" + empty: "no puede estar vacío" + blank: "no puede estar en blanco" + too_long: "es demasiado largo (%{count} caracteres máximo)" + too_short: "es demasiado corto (%{count} caracteres mínimo)" + wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" + not_a_number: "no es un número" + greater_than: "debe ser mayor que %{count}" + greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" + equal_to: "debe ser igual a %{count}" + less_than: "debe ser menor que %{count}" + less_than_or_equal_to: "debe ser menor que o igual a %{count}" + odd: "debe ser impar" + even: "debe ser par" + + # Active Support + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%e/%m/%Y" + short: "%e de %b" + long: "%e de %B de %Y" + + day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] + abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] + abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%A, %e de %B de %Y %H:%M:%S %z" + short: "%e de %b %H:%M" + long: "%e de %B de %Y %H:%M" + am: "am" + pm: "pm" + + # Used in array.to_sentence. + support: + array: + words_connector: ", " + two_words_connector: " y " + last_word_connector: ", y " \ No newline at end of file From d7ca279fa9859bf384274a3a0bba51299e30498b Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 17:27:26 -0400 Subject: [PATCH 067/292] Revert "Moved diaspora specific locales to diaspora.en.yml and diaspora.es.yml" This reverts commit b7cfbd6fd709182222baff9bd4a390f9e1245811. --- config/locales/diaspora.es.yml | 114 --------- config/locales/{diaspora.en.yml => en.yml} | 0 config/locales/es.yml | 268 +-------------------- 3 files changed, 7 insertions(+), 375 deletions(-) delete mode 100644 config/locales/diaspora.es.yml rename config/locales/{diaspora.en.yml => en.yml} (100%) diff --git a/config/locales/diaspora.es.yml b/config/locales/diaspora.es.yml deleted file mode 100644 index f77e6f54a..000000000 --- a/config/locales/diaspora.es.yml +++ /dev/null @@ -1,114 +0,0 @@ -# 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. - - -es: - hello: "Hola Mundo" - layouts: - application: - edit_profile: "editar perfil" - logout: "desloguear" - shared: - aspect_nav: - all_aspects: "All Aspects" - manage: "Manejar" - manage_your_aspects: "Manage your Aspects" - sub_header: - all_aspects: "All Aspects" - manage_aspects: "Manage Aspects" - publisher: - share: "Compartir" - aspect_friends: - add_friends: "Añade amigos" - albums: - album: - you: "usted" - new_album: - create: "Crear" - add_a_new_album: "Añade un nuevo álbum" - show: - edit_album: "Editar Álbum" - albums: "álbumes" - updated: "actualizar" - by: "por" - edit: - editing: "Editando" - updated: "actualizado" - are_you_sure: "Esta seguro?" - delete_album: "Eliminar Album" - cancel: "Cancelar" - index: - home: "home" - new_album: "Nuevo Album" - aspects: - index: - photos: "fotos" - show: - photos: "fotos" - manage: - add_a_new_aspect: "Añadir nuevo aspecto" - add_a_new_friend: "Añadir nuevo amigo" - show: "Mostrar" - update_aspects: "Actualizar Aspectos" - requests: "Requests" - ignore_remove: "Ignorar/Remover" - new_aspect: - create: "Crear" - users: - edit: - cancel: "Cancelar" - update_profile: "Actualizar Perfil" - home: "Home" - diaspora_username: "USUARIO DE DIASPORA" - info: "Info" - picture: "Picture" - editing_profile: "Editando perfil" - albums: "Álbums" - comments: - comment: - ago: "atras" - new_comment: - comment: "Commentario" - photos: - show: - prev: "prev" - full_size: "tamaño actual" - next: "prox" - edit_photo: "Editar Foto" - delete_photo: "Eliminar Foto" - are_you_sure: "Esta seguro?" - comments: "comentarios" - edit: - editing: "Editando" - are_you_sure: "Esta seguro?" - delete_photo: "Eliminar Foto" - photo: - show_comments: "mostrar comentarios" - new: - new_photo: "Nueva Foto" - back_to_list: "Devuelta a la lista" - post_it: "post it!" - registrations: - new: - sign_up: "Registrar" - status_messages: - new_status_message: - tell_me_something_good: "dime algo bueno" - oh_yeah: "oh yeah!" - status_message: - show_comments: "mostrar comentarios" - delete: "Eliminar" - are_you_sure: "Esta seguro?" - show: - status_message: "Mensaje de status" - comments: "comentarios" - are_you_sure: "Esta seguro?" - destroy: "Destruir" - view_all: "Ver Todos" - message: "Mensaje" - owner: "Dueño" \ No newline at end of file diff --git a/config/locales/diaspora.en.yml b/config/locales/en.yml similarity index 100% rename from config/locales/diaspora.en.yml rename to config/locales/en.yml diff --git a/config/locales/es.yml b/config/locales/es.yml index ad1db8794..11c2effdd 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,264 +1,10 @@ -# Spanish translations for Rails -# by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. -"es": - # Action View - number: - # Used in number_with_delimiter() - # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' - format: - # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) - separator: "," - # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) - delimiter: "." - # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) - precision: 3 - # If set to true, precision will mean the number of significant digits instead - # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) - significant: false - # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) - strip_insignificant_zeros: false - # Used in number_to_currency() - currency: - format: - # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) - format: "%n %u" - unit: "€" - # These three are to override number.format and are optional - separator: "," - delimiter: "." - precision: 2 - significant: false - strip_insignificant_zeros: false +# 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. - # Used in number_to_percentage() - percentage: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: - - # Used in number_to_precision() - precision: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: - # significant: false - # strip_insignificant_zeros: false - - # Used in number_to_human_size() - human: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - precision: 1 - significant: true - strip_insignificant_zeros: true - # Used in number_to_human_size() - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - # Used in number_to_human() - decimal_units: - format: "%n %u" - # Decimal units output formatting - # By default we will only quantify some of the exponents - # but the commented ones might be defined or overridden - # by the user. - units: - # femto: Quadrillionth - # pico: Trillionth - # nano: Billionth - # micro: Millionth - # mili: Thousandth - # centi: Hundredth - # deci: Tenth - unit: "" - # ten: - # one: Ten - # other: Tens - # hundred: Hundred - thousand: "Mil" - million: "Millón" - billion: "Mil millones" - trillion: "Trillón" - quadrillion: "Cuatrillón" - - # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() - datetime: - distance_in_words: - half_a_minute: "medio minuto" - less_than_x_seconds: - one: "menos de 1 segundo" - other: "menos de %{count} segundos" - x_seconds: - one: "1 segundo" - other: "%{count} segundos" - less_than_x_minutes: - one: "menos de 1 minuto" - other: "menos de %{count} minutos" - x_minutes: - one: "1 minuto" - other: "%{count} minutos" - about_x_hours: - one: "alrededor de 1 hora" - other: "alrededor de %{count} horas" - x_days: - one: "1 día" - other: "%{count} días" - about_x_months: - one: "alrededor de 1 mes" - other: "alrededor de %{count} meses" - x_months: - one: "1 mes" - other: "%{count} meses" - about_x_years: - one: "alrededor de 1 año" - other: "alrededor de %{count} años" - over_x_years: - one: "más de 1 año" - other: "más de %{count} años" - almost_x_years: - one: "casi 1 año" - other: "casi %{count} años" - prompts: - year: "Año" - month: "Mes" - day: "Día" - hour: "Hora" - minute: "Minutos" - second: "Segundos" - - helpers: - select: - # Default value for :prompt => true in FormOptionsHelper - prompt: "Por favor seleccione" - - # Default translation keys for submit FormHelper - submit: - create: 'Guardar %{model}' - update: 'Actualizar %{model}' - submit: 'Guardar %{model}' - - # Attributes names common to most models - #attributes: - #created_at: "Created at" - #updated_at: "Updated at" - - # Active Record models configuration - activerecord: - errors: - messages: - taken: "ya está en uso" - record_invalid: "La validación falló: %{errors}" - # Append your own errors here or at the model/attributes scope. - - # You can define own errors for models or model attributes. - # The values :model, :attribute and :value are always available for interpolation. - # - # For example, - # models: - # user: - # blank: "This is a custom blank message for %{model}: %{attribute}" - # attributes: - # login: - # blank: "This is a custom blank message for User login" - # Will define custom blank validation message for User model and - # custom blank validation message for login attribute of User model. - #models: - - # Translate model names. Used in Model.human_name(). - #models: - # For example, - # user: "Dude" - # will translate User model name to "Dude" - - # Translate model attribute names. Used in Model.human_attribute_name(attribute). - #attributes: - # For example, - # user: - # login: "Handle" - # will translate User attribute "login" as "Handle" - - # Active Model - errors: - # The default format to use in full error messages. - format: "%{attribute} %{message}" - - template: - header: - one: "No se pudo guardar este/a %{model} porque se encontró 1 error" - other: "No se pudo guardar este/a %{model} porque se encontraron %{count} errores" - # The variable :count is also available - body: "Se encontraron problemas con los siguientes campos:" - - # The values :model, :attribute and :value are always available for interpolation - # The value :count is available when applicable. Can be used for pluralization. - messages: - inclusion: "no está incluido en la lista" - exclusion: "está reservado" - invalid: "no es válido" - confirmation: "no coincide con la confirmación" - accepted: "debe ser aceptado" - empty: "no puede estar vacío" - blank: "no puede estar en blanco" - too_long: "es demasiado largo (%{count} caracteres máximo)" - too_short: "es demasiado corto (%{count} caracteres mínimo)" - wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" - not_a_number: "no es un número" - greater_than: "debe ser mayor que %{count}" - greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" - equal_to: "debe ser igual a %{count}" - less_than: "debe ser menor que %{count}" - less_than_or_equal_to: "debe ser menor que o igual a %{count}" - odd: "debe ser impar" - even: "debe ser par" - - # Active Support - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%e/%m/%Y" - short: "%e de %b" - long: "%e de %B de %Y" - - day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] - abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] - abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic] - # Used in date_select and datime_select. - order: - - :day - - :month - - :year - - time: - formats: - default: "%A, %e de %B de %Y %H:%M:%S %z" - short: "%e de %b %H:%M" - long: "%e de %B de %Y %H:%M" - am: "am" - pm: "pm" - - # Used in array.to_sentence. - support: - array: - words_connector: ", " - two_words_connector: " y " - last_word_connector: ", y " \ No newline at end of file +es: + hello: "Hello world" \ No newline at end of file From 8f56178bd2ac468a53561404c1138163c5336a92 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 17:29:25 -0400 Subject: [PATCH 068/292] added diaspora site specific localization files --- config/locales/diaspora.en.yml | 115 ++++++++++++++ config/locales/diaspora.es.yml | 114 ++++++++++++++ config/locales/es.yml | 268 ++++++++++++++++++++++++++++++++- 3 files changed, 490 insertions(+), 7 deletions(-) create mode 100644 config/locales/diaspora.en.yml create mode 100644 config/locales/diaspora.es.yml diff --git a/config/locales/diaspora.en.yml b/config/locales/diaspora.en.yml new file mode 100644 index 000000000..d9046c00b --- /dev/null +++ b/config/locales/diaspora.en.yml @@ -0,0 +1,115 @@ +# 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. + +en: + hello: "Hello world" + layouts: + application: + edit_profile: "edit profile" + logout: "logout" + shared: + aspect_nav: + all_aspects: "All Aspects" + manage: "Manage" + manage_your_aspects: "Manage your Aspects" + sub_header: + all_aspects: "All Aspects" + manage_aspects: "Manage Aspects" + publisher: + share: "Share" + aspect_friends: + add_friends: "add friends" + albums: + album: + you: "you" + new_album: + create: "create" + add_a_new_album: "Add a new album" + show: + edit_album: "Edit Album" + albums: "albums" + updated: "updated" + by: "by" + edit: + editing: "Editing" + updated: "updated" + are_you_sure: "Are you sure?" + delete_album: "Delete Album" + cancel: "Cancel" + index: + home: "home" + new_album: "New Album" + aspects: + index: + photos: "photos" + show: + photos: "photos" + manage: + add_a_new_aspect: "Add a new aspect" + add_a_new_friend: "Add a new friend" + show: "Show" + update_aspects: "Update Aspects" + requests: "Requests" + ignore_remove: "Ignore/Remove" + new_aspect: + create: "Create" + users: + edit: + cancel: "Cancel" + update_profile: "Update Profile" + home: "Home" + diaspora_username: "DIASPORA USERNAME" + info: "Info" + picture: "Picture" + editing_profile: "Editing profile" + albums: "Albums" + comments: + comment: + ago: "ago" + new_comment: + comment: "Comment" + photos: + show: + prev: "prev" + full_size: "full size" + next: "next" + edit_photo: "Edit Photo" + delete_photo: "Delete Photo" + are_you_sure: "Are you sure?" + comments: "comments" + edit: + editing: "Editing" + are_you_sure: "Are you sure?" + delete_photo: "Delete Photo" + photo: + show_comments: "show comments" + new: + new_photo: "New Photo" + back_to_list: "Back to List" + post_it: "post it!" + registrations: + new: + sign_up: "Sign up" + status_messages: + new_status_message: + tell_me_something_good: "tell me something good" + oh_yeah: "oh yeah!" + status_message: + show_comments: "show comments" + delete: "Delete" + are_you_sure: "Are you sure?" + show: + status_message: "Status Message" + comments: "comments" + are_you_sure: "Are you sure?" + destroy: "Destroy" + view_all: "View All" + message: "Message" + owner: "Owner" + + diff --git a/config/locales/diaspora.es.yml b/config/locales/diaspora.es.yml new file mode 100644 index 000000000..f77e6f54a --- /dev/null +++ b/config/locales/diaspora.es.yml @@ -0,0 +1,114 @@ +# 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. + + +es: + hello: "Hola Mundo" + layouts: + application: + edit_profile: "editar perfil" + logout: "desloguear" + shared: + aspect_nav: + all_aspects: "All Aspects" + manage: "Manejar" + manage_your_aspects: "Manage your Aspects" + sub_header: + all_aspects: "All Aspects" + manage_aspects: "Manage Aspects" + publisher: + share: "Compartir" + aspect_friends: + add_friends: "Añade amigos" + albums: + album: + you: "usted" + new_album: + create: "Crear" + add_a_new_album: "Añade un nuevo álbum" + show: + edit_album: "Editar Álbum" + albums: "álbumes" + updated: "actualizar" + by: "por" + edit: + editing: "Editando" + updated: "actualizado" + are_you_sure: "Esta seguro?" + delete_album: "Eliminar Album" + cancel: "Cancelar" + index: + home: "home" + new_album: "Nuevo Album" + aspects: + index: + photos: "fotos" + show: + photos: "fotos" + manage: + add_a_new_aspect: "Añadir nuevo aspecto" + add_a_new_friend: "Añadir nuevo amigo" + show: "Mostrar" + update_aspects: "Actualizar Aspectos" + requests: "Requests" + ignore_remove: "Ignorar/Remover" + new_aspect: + create: "Crear" + users: + edit: + cancel: "Cancelar" + update_profile: "Actualizar Perfil" + home: "Home" + diaspora_username: "USUARIO DE DIASPORA" + info: "Info" + picture: "Picture" + editing_profile: "Editando perfil" + albums: "Álbums" + comments: + comment: + ago: "atras" + new_comment: + comment: "Commentario" + photos: + show: + prev: "prev" + full_size: "tamaño actual" + next: "prox" + edit_photo: "Editar Foto" + delete_photo: "Eliminar Foto" + are_you_sure: "Esta seguro?" + comments: "comentarios" + edit: + editing: "Editando" + are_you_sure: "Esta seguro?" + delete_photo: "Eliminar Foto" + photo: + show_comments: "mostrar comentarios" + new: + new_photo: "Nueva Foto" + back_to_list: "Devuelta a la lista" + post_it: "post it!" + registrations: + new: + sign_up: "Registrar" + status_messages: + new_status_message: + tell_me_something_good: "dime algo bueno" + oh_yeah: "oh yeah!" + status_message: + show_comments: "mostrar comentarios" + delete: "Eliminar" + are_you_sure: "Esta seguro?" + show: + status_message: "Mensaje de status" + comments: "comentarios" + are_you_sure: "Esta seguro?" + destroy: "Destruir" + view_all: "Ver Todos" + message: "Mensaje" + owner: "Dueño" \ No newline at end of file diff --git a/config/locales/es.yml b/config/locales/es.yml index 11c2effdd..ad1db8794 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,10 +1,264 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3. See -# the COPYRIGHT file. +# Spanish translations for Rails +# by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) +"es": + # Action View + number: + # Used in number_with_delimiter() + # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' + format: + # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) + separator: "," + # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) + delimiter: "." + # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) + precision: 3 + # If set to true, precision will mean the number of significant digits instead + # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) + significant: false + # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) + strip_insignificant_zeros: false -# 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. + # Used in number_to_currency() + currency: + format: + # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) + format: "%n %u" + unit: "€" + # These three are to override number.format and are optional + separator: "," + delimiter: "." + precision: 2 + significant: false + strip_insignificant_zeros: false -es: - hello: "Hello world" \ No newline at end of file + # Used in number_to_percentage() + percentage: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + # precision: + + # Used in number_to_precision() + precision: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + + # Used in number_to_human_size() + human: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + precision: 1 + significant: true + strip_insignificant_zeros: true + # Used in number_to_human_size() + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in number_to_human() + decimal_units: + format: "%n %u" + # Decimal units output formatting + # By default we will only quantify some of the exponents + # but the commented ones might be defined or overridden + # by the user. + units: + # femto: Quadrillionth + # pico: Trillionth + # nano: Billionth + # micro: Millionth + # mili: Thousandth + # centi: Hundredth + # deci: Tenth + unit: "" + # ten: + # one: Ten + # other: Tens + # hundred: Hundred + thousand: "Mil" + million: "Millón" + billion: "Mil millones" + trillion: "Trillón" + quadrillion: "Cuatrillón" + + # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() + datetime: + distance_in_words: + half_a_minute: "medio minuto" + less_than_x_seconds: + one: "menos de 1 segundo" + other: "menos de %{count} segundos" + x_seconds: + one: "1 segundo" + other: "%{count} segundos" + less_than_x_minutes: + one: "menos de 1 minuto" + other: "menos de %{count} minutos" + x_minutes: + one: "1 minuto" + other: "%{count} minutos" + about_x_hours: + one: "alrededor de 1 hora" + other: "alrededor de %{count} horas" + x_days: + one: "1 día" + other: "%{count} días" + about_x_months: + one: "alrededor de 1 mes" + other: "alrededor de %{count} meses" + x_months: + one: "1 mes" + other: "%{count} meses" + about_x_years: + one: "alrededor de 1 año" + other: "alrededor de %{count} años" + over_x_years: + one: "más de 1 año" + other: "más de %{count} años" + almost_x_years: + one: "casi 1 año" + other: "casi %{count} años" + prompts: + year: "Año" + month: "Mes" + day: "Día" + hour: "Hora" + minute: "Minutos" + second: "Segundos" + + helpers: + select: + # Default value for :prompt => true in FormOptionsHelper + prompt: "Por favor seleccione" + + # Default translation keys for submit FormHelper + submit: + create: 'Guardar %{model}' + update: 'Actualizar %{model}' + submit: 'Guardar %{model}' + + # Attributes names common to most models + #attributes: + #created_at: "Created at" + #updated_at: "Updated at" + + # Active Record models configuration + activerecord: + errors: + messages: + taken: "ya está en uso" + record_invalid: "La validación falló: %{errors}" + # Append your own errors here or at the model/attributes scope. + + # You can define own errors for models or model attributes. + # The values :model, :attribute and :value are always available for interpolation. + # + # For example, + # models: + # user: + # blank: "This is a custom blank message for %{model}: %{attribute}" + # attributes: + # login: + # blank: "This is a custom blank message for User login" + # Will define custom blank validation message for User model and + # custom blank validation message for login attribute of User model. + #models: + + # Translate model names. Used in Model.human_name(). + #models: + # For example, + # user: "Dude" + # will translate User model name to "Dude" + + # Translate model attribute names. Used in Model.human_attribute_name(attribute). + #attributes: + # For example, + # user: + # login: "Handle" + # will translate User attribute "login" as "Handle" + + # Active Model + errors: + # The default format to use in full error messages. + format: "%{attribute} %{message}" + + template: + header: + one: "No se pudo guardar este/a %{model} porque se encontró 1 error" + other: "No se pudo guardar este/a %{model} porque se encontraron %{count} errores" + # The variable :count is also available + body: "Se encontraron problemas con los siguientes campos:" + + # The values :model, :attribute and :value are always available for interpolation + # The value :count is available when applicable. Can be used for pluralization. + messages: + inclusion: "no está incluido en la lista" + exclusion: "está reservado" + invalid: "no es válido" + confirmation: "no coincide con la confirmación" + accepted: "debe ser aceptado" + empty: "no puede estar vacío" + blank: "no puede estar en blanco" + too_long: "es demasiado largo (%{count} caracteres máximo)" + too_short: "es demasiado corto (%{count} caracteres mínimo)" + wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" + not_a_number: "no es un número" + greater_than: "debe ser mayor que %{count}" + greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" + equal_to: "debe ser igual a %{count}" + less_than: "debe ser menor que %{count}" + less_than_or_equal_to: "debe ser menor que o igual a %{count}" + odd: "debe ser impar" + even: "debe ser par" + + # Active Support + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%e/%m/%Y" + short: "%e de %b" + long: "%e de %B de %Y" + + day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] + abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] + abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%A, %e de %B de %Y %H:%M:%S %z" + short: "%e de %b %H:%M" + long: "%e de %B de %Y %H:%M" + am: "am" + pm: "pm" + + # Used in array.to_sentence. + support: + array: + words_connector: ", " + two_words_connector: " y " + last_word_connector: ", y " \ No newline at end of file From 541eb5cb956c7ceb1c2270aca49d79390d98a101 Mon Sep 17 00:00:00 2001 From: Etienne Membrives Date: Thu, 16 Sep 2010 14:45:00 -0700 Subject: [PATCH 069/292] Beggining of French localization --- config/locales/fr.yml | 109 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/config/locales/fr.yml b/config/locales/fr.yml index e47795485..bc13d341d 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -3,8 +3,113 @@ # the COPYRIGHT file. -# Sample localization file for English. Add more files in this directory for other locales. +# Localization file for French. 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 !" + hello: "Bonjour tout le monde" + layouts: + application: + edit_profile: "Éditez votre profil" + logout: "Déconnexion" + shared: + aspect_nav: + all_aspects: "Tous les Aspects" + manage: "Gérez" + manage_your_aspects: "Gérez vos Aspects" + sub_header: + all_aspects: "Tous les Aspects" + manage_aspects: "Gérez vos Aspects" + publisher: + share: "Partager" + aspect_friends: + add_friends: "Ajouter des amis" + albums: + album: + you: "vous" + new_album: + create: "créer" + add_a_new_album: "Ajouter un nouvel album" + show: + edit_album: "Éditer l'album" + albums: "albums" + updated: "mis à jour" + by: "par" + edit: + editing: "Édition" + updated: "mis à jour" + are_you_sure: "Êtes-vous sûr?" + delete_album: "Supprimer l'album" + cancel: "Annuler" + index: + home: "accueil" + new_album: "Nouvel album" + aspects: + index: + photos: "photos" + show: + photos: "photos" + manage: + add_a_new_aspect: "Ajouter un nouvel aspect" + add_a_new_friend: "Ajouter un nouvel amis" + show: "Voir" + update_aspects: "Mettre à jour les aspects" + requests: "Requêtes" + ignore_remove: "Ignorer/Supprimer" + new_aspect: + create: "Créer" + users: + edit: + cancel: "Annuler"" + update_profile: "Mise à jour du profil" + home: "Accueil" + diaspora_username: "NOM D'UTILISATEUR DIASPORA" + info: "Info" + picture: "Photo" + editing_profile: "Édition du profil" + albums: "Albums" + comments: + comment: + ago: "plus tôt" + new_comment: + comment: "Commentaire" + photos: + show: + prev: "précédent + full_size: "taille réelle" + next: "suivant" + edit_photo: "Éditer la photo" + delete_photo: "Supprimer la photo" + are_you_sure: "Êtes-vous sûr?" + comments: "commentaires" + edit: + editing: "Édition" + are_you_sure: "Êtes-vous sûr?" + delete_photo: "Delete Photo" + photo: + show_comments: "show comments" + new: + new_photo: "New Photo" + back_to_list: "Back to List" + post_it: "post it!" + registrations: + new: + sign_up: "Sign up" + status_messages: + new_status_message: + tell_me_something_good: "tell me something good" + oh_yeah: "oh yeah!" + status_message: + show_comments: "show comments" + delete: "Delete" + are_you_sure: "Are you sure?" + show: + status_message: "Status Message" + comments: "comments" + are_you_sure: "Are you sure?" + destroy: "Destroy" + view_all: "View All" + message: "Message" + owner: "Owner" + + From aeedf2fc22058403176375237eb8fdca031b0825 Mon Sep 17 00:00:00 2001 From: Claudius Coenen Date: Thu, 16 Sep 2010 23:55:57 +0200 Subject: [PATCH 070/292] adding german translation --- config/locales/de.yml | 116 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 config/locales/de.yml diff --git a/config/locales/de.yml b/config/locales/de.yml new file mode 100644 index 000000000..23617a3f3 --- /dev/null +++ b/config/locales/de.yml @@ -0,0 +1,116 @@ +# 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. + +de: + hello: "Hallo Welt" + layouts: + application: + edit_profile: "Profil bearbeiten" + logout: "Ausloggen" + shared: + aspect_nav: + all_aspects: "Alle Aspekte" + manage: "Verwalten" + manage_your_aspects: "Aspekte verwalten" + sub_header: + all_aspects: "Alle Aspekte" + manage_aspects: "Aspekte verwalten" + publisher: + share: "Teilen" + aspect_friends: + add_friends: "Freunde hinzufügen" + albums: + album: + you: "dir" + new_album: + create: "erstellen" + add_a_new_album: "Album hinzufügen" + show: + edit_album: "Album bearbeiten" + albums: "Alben" + updated: "aktualisiert" + by: "von" + edit: + editing: "Bearbeite" + updated: "geändert" + are_you_sure: "Bist du sicher?" + delete_album: "Album löschen" + cancel: "Abbrechen" + index: + home: "Startseite" + new_album: "Neues Album" + aspects: + index: + photos: "Fotos" + show: + photos: "Fotos" + manage: + add_a_new_aspect: "Neuen Aspekt erstellen" + add_a_new_friend: "Freund hinzufügen" + show: "Anzeigen" + update_aspects: "Aspekte aktualisieren" + requests: "Anfragen" + ignore_remove: "Ignorieren/Entfernen" + new_aspect: + create: "Erstellen" + users: + edit: + cancel: "Abbrechen" + update_profile: "Profil aktualisieren" + home: "Startseite" + diaspora_username: "Diaspora Benutzername" + info: "Info" + picture: "Bild" + editing_profile: "Profil bearbeiten" + albums: "Alben" + comments: + comment: + # this won't work in german at all. Needs more thorough I18n + ago: "ago" + new_comment: + comment: "Kommentar" + photos: + show: + prev: "zurück" + full_size: "volle Größe" + next: "vor" + edit_photo: "Foto bearbeiten" + delete_photo: "Foto löschen" + are_you_sure: "Bist du sicher?" + comments: "Kommentare" + edit: + editing: "Bearbeite" + are_you_sure: "Bist du sicher?" + delete_photo: "Foto löschen" + photo: + show_comments: "Kommentare anzeigen" + new: + new_photo: "Foto erstellen" + back_to_list: "Zurück zur Liste" + post_it: "Hochladen" + registrations: + new: + sign_up: "Anmelden" + status_messages: + new_status_message: + tell_me_something_good: "Erzähl' mir was schönes!" + oh_yeah: "Hey, super!" + status_message: + show_comments: "Kommentare anzeigen" + delete: "Löschen" + are_you_sure: "Bist du sicher?" + show: + status_message: "Statusmeldung" + comments: "Kommentare" + are_you_sure: "Bist du sicher?" + destroy: "Löschen" + view_all: "Alle anzeigen" + message: "Nachricht" + owner: "Besitzer" + + From 2e8785b59673b78b308c56aabbc65d564e96f676 Mon Sep 17 00:00:00 2001 From: maxwell Date: Thu, 16 Sep 2010 15:04:29 -0700 Subject: [PATCH 071/292] applying this change from wiki, thanks astronouth7303 --- app/models/request.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/request.rb b/app/models/request.rb index da62edd93..739500e4e 100644 --- a/app/models/request.rb +++ b/app/models/request.rb @@ -26,8 +26,8 @@ class Request validates_presence_of :destination_url, :callback_url before_validation :clean_link - scope :for_user, lambda{ |user| where(:destination_url => user.receive_url) } - scope :from_user, lambda{ |user| where(:destination_url.ne => user.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 = {}) person = options[:from] From ed54c50f486681b81eaa0aad7a6bd5ce3ec8c580 Mon Sep 17 00:00:00 2001 From: Etienne Membrives Date: Thu, 16 Sep 2010 15:14:05 -0700 Subject: [PATCH 072/292] French localization done --- config/locales/fr.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/config/locales/fr.yml b/config/locales/fr.yml index bc13d341d..72f585409 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -85,31 +85,31 @@ fr: edit: editing: "Édition" are_you_sure: "Êtes-vous sûr?" - delete_photo: "Delete Photo" + delete_photo: "Supprimer la photo" photo: - show_comments: "show comments" + show_comments: "Montrer les commentaires" new: - new_photo: "New Photo" - back_to_list: "Back to List" - post_it: "post it!" + new_photo: "Nouvelle photo" + back_to_list: "Retour à la liste" + post_it: "postez le !" registrations: new: - sign_up: "Sign up" + sign_up: "Enregistrement" status_messages: new_status_message: - tell_me_something_good: "tell me something good" + tell_me_something_good: "Dites quelque-chose de bien" oh_yeah: "oh yeah!" status_message: - show_comments: "show comments" - delete: "Delete" - are_you_sure: "Are you sure?" + show_comments: "Montrer les commentaires" + delete: "Suppression" + are_you_sure: "Êtes-vous sûr ?" show: status_message: "Status Message" - comments: "comments" - are_you_sure: "Are you sure?" - destroy: "Destroy" - view_all: "View All" + comments: "commentaires" + are_you_sure: "Êtes-vous sûr ?" + destroy: "Destruction" + view_all: "Tout voir" message: "Message" - owner: "Owner" + owner: "Propriétaire" From 5197c1b3ec8ea0b9a96d4530a3a551174d158227 Mon Sep 17 00:00:00 2001 From: Claudius Coenen Date: Fri, 17 Sep 2010 00:23:35 +0200 Subject: [PATCH 073/292] adding localisation for controller's flash messages' --- app/controllers/albums_controller.rb | 8 ++++---- config/locales/de.yml | 7 +++++++ config/locales/en.yml | 9 ++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/controllers/albums_controller.rb b/app/controllers/albums_controller.rb index 5a75616d1..1a577f645 100644 --- a/app/controllers/albums_controller.rb +++ b/app/controllers/albums_controller.rb @@ -17,7 +17,7 @@ class AlbumsController < ApplicationController def create aspect = params[:album][:to] @album = current_user.post(:album, params[:album]) - flash[:notice] = "You've created an album called #{@album.name}." + flash[:notice] = I18n.t('albums.create.success', :name => @album.name) redirect_to :action => :show, :id => @album.id, :aspect => aspect end @@ -28,7 +28,7 @@ class AlbumsController < ApplicationController def destroy @album = Album.find_by_id params[:id] @album.destroy - flash[:notice] = "Album #{@album.name} deleted." + flash[:notice] = I18n.t('albums.destroy.success', :name => @album.name) respond_with :location => albums_url end @@ -48,10 +48,10 @@ class AlbumsController < ApplicationController def update @album = Album.find_params_by_id params[:id] if @album.update_attributes params[:album] - flash[:notice] = "Album #{@album.name} successfully edited." + flash[:notice] = I18n.t('albums.update.success', :name => @album.name) respond_with @album else - flash[:error] = "Failed to edit album #{@album.name}." + flash[:error] = I18n.t('albums.update.failure', :name => @album.name) render :action => :edit end end diff --git a/config/locales/de.yml b/config/locales/de.yml index 23617a3f3..c67d87550 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -30,6 +30,8 @@ de: new_album: create: "erstellen" add_a_new_album: "Album hinzufügen" + create: + success: Du hast das Album %{name} erstellt. show: edit_album: "Album bearbeiten" albums: "Alben" @@ -41,9 +43,14 @@ de: are_you_sure: "Bist du sicher?" delete_album: "Album löschen" cancel: "Abbrechen" + update: + success: Album %{name} erfolgreich geändert. + failure: %{name} wurde nicht geändert. index: home: "Startseite" new_album: "Neues Album" + destroy: + success: Album %{name} gelöscht. aspects: index: photos: "Fotos" diff --git a/config/locales/en.yml b/config/locales/en.yml index d9046c00b..87a96b009 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -30,6 +30,8 @@ en: new_album: create: "create" add_a_new_album: "Add a new album" + create: + success: You've created an album called %{name}. show: edit_album: "Edit Album" albums: "albums" @@ -41,10 +43,15 @@ en: are_you_sure: "Are you sure?" delete_album: "Delete Album" cancel: "Cancel" + update: + success: Album %{name} successfully edited. + failure: Failed to edit album %{name}. index: home: "home" new_album: "New Album" - aspects: + destroy: + success: Album %{name} deleted. + aspects: index: photos: "photos" show: From abf121f53c6661d778bfeefce36a15f39d9bbcde Mon Sep 17 00:00:00 2001 From: patcito Date: Fri, 17 Sep 2010 06:59:16 +0800 Subject: [PATCH 074/292] added link to diaspora Q&A shapado site --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 89ea0ae19..9ae943073 100644 --- a/README.md +++ b/README.md @@ -201,9 +201,9 @@ Diaspora's test suite uses [rspec](http://rspec.info/), a behavior driven testin We are maintaining a [public tracker project](http://www.pivotaltracker.com/projects/61641) and a [roadmap](https://github.com/diaspora/diaspora/wiki/Roadmap). Also, you can file [bug reports](https://github.com/diaspora/diaspora/issues) right here on github. Ongoing discussion: - - [Diaspora Developer Google Group](http://groups.google.com/group/diaspora-dev) - [Diaspora Discussion Google Group](http://groups.google.com/group/diaspora-discuss) +- [Diaspora Q&A site](http://diaspora.shapado.com/) - [#diaspora-dev](irc://irc.freenode.net/#diaspora-dev) More general info and updates about the project can be found on our [blog](http://joindiaspora.com), [twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://http://eepurl.com/Vebk). From 0c7ba49e34a4aeec6aa2ade790ffa589f8296e7a Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 16 Sep 2010 16:03:18 -0700 Subject: [PATCH 075/292] DG IZ; aspect deletion --- app/controllers/aspects_controller.rb | 12 +++++-- app/helpers/aspects_helper.rb | 8 +++++ app/models/user.rb | 9 +++++ app/views/aspects/manage.html.haml | 10 +++--- lib/diaspora/user/friending.rb | 2 +- public/stylesheets/application.css | 43 +++++++++++++----------- public/stylesheets/sass/application.sass | 28 +++++++++------ spec/models/user_spec.rb | 27 +++++++++++++++ 8 files changed, 100 insertions(+), 39 deletions(-) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 87c41f097..88da5cc88 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -26,9 +26,15 @@ class AspectsController < ApplicationController def destroy @aspect = Aspect.find_by_id params[:id] - @aspect.destroy - flash[:notice] = "You are no longer sharing the aspect called #{@aspect.name}." - respond_with :location => aspects_url + + begin + current_user.drop_aspect @aspect + flash[:notice] = "#{@aspect.name} was successfully removed." + rescue RuntimeError => e + flash[:error] = e.message + end + + respond_with :location => aspects_manage_path end def show diff --git a/app/helpers/aspects_helper.rb b/app/helpers/aspects_helper.rb index adceab8fd..1c8f69b8a 100644 --- a/app/helpers/aspects_helper.rb +++ b/app/helpers/aspects_helper.rb @@ -7,4 +7,12 @@ module AspectsHelper def link_for_aspect( aspect ) link_to aspect.name, aspect end + + def remove_link( aspect ) + if aspect.people.size == 0 + link_to "remove", aspect, :method => :delete + else + "remove" + end + end end diff --git a/app/models/user.rb b/app/models/user.rb index 6a76ce772..216fe210c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -65,6 +65,15 @@ class User Aspect.create(opts) end + def drop_aspect( aspect ) + if aspect.people.size == 0 + aspect.destroy + else + raise "Aspect not empty" + end + end + + def move_friend( opts = {}) return true if opts[:to] == opts[:from] friend = Person.first(:_id => opts[:friend_id]) diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 8a6ed97ac..9a98b9d06 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -36,12 +36,12 @@ .aspect_name %h1{:contenteditable => true}= aspect.name - .tools - = link_to "add a new friend", "#add_request_pane_#{aspect.id}", :class => 'add_request_button' - | - = link_to "show", aspect_path(aspect) + %ul.tools + %li= link_to "add a new friend", "#add_request_pane_#{aspect.id}", :class => 'add_request_button' + %li= link_to "show", aspect_path(aspect) + %li!= remove_link(aspect) - %ul{:id => aspect.id} + %ul.dropzone{:id => aspect.id} -if aspect.people.size < 1 %li.grey Drag to add people diff --git a/lib/diaspora/user/friending.rb b/lib/diaspora/user/friending.rb index cf55a2bf0..e79608381 100644 --- a/lib/diaspora/user/friending.rb +++ b/lib/diaspora/user/friending.rb @@ -62,7 +62,7 @@ module Diaspora def receive_friend_request(friend_request) Rails.logger.info("receiving friend request #{friend_request.to_json}") - if request_from_me?(friend_request) + if request_from_me?(friend_request) && self.aspect_by_id(friend_request.aspect_id) aspect = self.aspect_by_id(friend_request.aspect_id) activate_friend(friend_request.person, aspect) diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index fdef9e4b9..f4c40f465 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -513,20 +513,33 @@ h1.big_text { .requests .aspect_name, .remove .aspect_name { position: relative; } - .aspect .aspect_name .tools, - .requests .aspect_name .tools, - .remove .aspect_name .tools { + .aspect .aspect_name ul.tools, + .requests .aspect_name ul.tools, + .remove .aspect_name ul.tools { position: absolute; top: 10px; right: 0; - display: inline; } - .aspect .aspect_name:hover .tools, - .requests .aspect_name:hover .tools, - .remove .aspect_name:hover .tools { - display: inline; } - .aspect ul, - .requests ul, - .remove ul { + display: inline; + padding: 0; + margin: 0; + list-style: none; } + .aspect .aspect_name ul.tools li, + .requests .aspect_name ul.tools li, + .remove .aspect_name ul.tools li { + display: inline; + margin-right: 1em; } + .aspect .aspect_name ul.tools li:last-child, + .requests .aspect_name ul.tools li:last-child, + .remove .aspect_name ul.tools li:last-child { + margin-right: 0; } + .aspect .grey, + .requests .grey, + .remove .grey { + color: #999999; + cursor: default; } + .aspect ul.dropzone, + .requests ul.dropzone, + .remove ul.dropzone { min-height: 20px; margin: 0; margin-bottom: 25px; @@ -574,14 +587,6 @@ h1.big_text { -webkit-box-shadow: 0 1px 3px #333333; -moz-box-shadow: 0 2px 4px #333333; opacity: 0.9; } - .aspect .person .grey, - .aspect .requested_person .grey, - .requests .person .grey, - .requests .requested_person .grey, - .remove .person .grey, - .remove .requested_person .grey { - font-style: italic; - color: #666666; } #notification_badge { position: fixed; diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 3912e1648..85c5f3cdc 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -678,17 +678,29 @@ h1.big_text .aspect_name :position relative - .tools + ul.tools :position absolute :top 10px :right 0 :display inline - - &:hover - .tools + :padding 0 + :margin 0 + :list + :style none + li :display inline + :margin + :right 1em - ul + &:last-child + :margin + :right 0 + + .grey + :color #999 + :cursor default + + ul.dropzone :min-height 20px :margin 0 :bottom 25px @@ -726,12 +738,6 @@ h1.big_text :-moz-box-shadow 0 2px 4px #333 :opacity 0.9 - - .grey - :font - :style italic - :color #666 - #notification_badge :position fixed :bottom 0 diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index a02f5271a..6e8355021 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -22,4 +22,31 @@ describe User do @user.profile.image_url.should == "http://clown.com" end end + + describe 'aspects' do + it 'should delete an empty aspect' do + @user.aspects.include?(@aspect).should == true + @user.drop_aspect(@aspect) + @user.reload + + @user.aspects.include?(@aspect).should == false + end + + it 'should not delete an aspect with friends' do + user2 = Factory.create(:user) + aspect2 = user2.aspect(:name => 'stuff') + user2.reload + aspect2.reload + + friend_users(@user, Aspect.find_by_id(@aspect.id), user2, Aspect.find_by_id(aspect2.id)) + @aspect.reload + + @user.aspects.include?(@aspect).should == true + + proc{@user.drop_aspect(@aspect)}.should raise_error /Aspect not empty/ + + @user.reload + @user.aspects.include?(@aspect).should == true + end + end end From 1e8f10f1af71dc16b57b35178256ad257c16b614 Mon Sep 17 00:00:00 2001 From: maxwell Date: Thu, 16 Sep 2010 16:12:45 -0700 Subject: [PATCH 076/292] MS rake task to fix broken local people.... let me test it first on a server, but then you can run rake db:fix_diaspora_handle --- lib/tasks/db.rake | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index e1c0aac31..56eddb266 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -22,6 +22,7 @@ namespace :db do require 'db/seeds/backer' create end + end desc 'Delete the collections in the current RAILS_ENV database' @@ -53,4 +54,19 @@ namespace :db do Rake::Task['db:seed:dev'].invoke puts "you did it!" end + + task :fix_diaspora_handle do + puts "fixing the people in this seed" + require 'config/environment' + + people = Person.all + + people.each do |person| + if person.diaspora_handle[-1, 1]=='@' && person.owner.nil? == false + person.diaspora_handle = person.owner.diaspora_handle + person.save + end + end + puts "everything should be peachy" + end end From dea0912c283967236374e9828e14a023294f95a8 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 16 Sep 2010 16:41:28 -0700 Subject: [PATCH 077/292] Do a more specific query in the fix rake task --- lib/tasks/db.rake | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 56eddb266..22f995325 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -59,10 +59,13 @@ namespace :db do puts "fixing the people in this seed" require 'config/environment' - people = Person.all + people = Person.all( '$where' => "function(){ + return this.diaspora_handle.charAt(this.diaspora_handle.length-1) == '@' + }") people.each do |person| - if person.diaspora_handle[-1, 1]=='@' && person.owner.nil? == false + if person.owner + puts "Resetting diaspora handle for #{person.owner.username}" person.diaspora_handle = person.owner.diaspora_handle person.save end From 22edec57766356cdc3d73740b65a557d2a6f57bd Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Fri, 17 Sep 2010 06:39:51 +0800 Subject: [PATCH 078/292] Adding Haml html escaping. Haml's HTML escaping option was not on, leaving the site open for xss attacks. This would seem to fix it. --- config/environment.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/environment.rb b/config/environment.rb index dc11087dd..385a96651 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -7,6 +7,7 @@ # Load the rails application require File.expand_path('../application', __FILE__) Haml::Template.options[:format] = :html5 +Haml::Template.options[:escape_html] = true # Initialize the rails application Diaspora::Application.initialize! From c80a79dea5d0cc6b1e60bed82dce12bb18136c3d Mon Sep 17 00:00:00 2001 From: cryptix Date: Thu, 16 Sep 2010 21:13:39 +0800 Subject: [PATCH 079/292] Unified require quotes --- config/application.rb | 6 +++--- config/initializers/socket.rb | 2 +- config/sprinkle/provision.rb | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/config/application.rb b/config/application.rb index ef8a567a5..b409f91d3 100644 --- a/config/application.rb +++ b/config/application.rb @@ -6,9 +6,9 @@ require File.expand_path('../boot', __FILE__) -require "action_controller/railtie" -require "action_mailer/railtie" -require "active_resource/railtie" +require 'action_controller/railtie' +require 'action_mailer/railtie' +require 'active_resource/railtie' # If you have a Gemfile, require the gems listed there, including any gems # you've limited to :test, :development, or :production. Bundler.require(:default, Rails.env) if defined?(Bundler) diff --git a/config/initializers/socket.rb b/config/initializers/socket.rb index 1fd09fd93..0b1035001 100644 --- a/config/initializers/socket.rb +++ b/config/initializers/socket.rb @@ -5,7 +5,7 @@ require 'em-websocket' require 'eventmachine' -require "lib/diaspora/websocket" +require 'lib/diaspora/websocket' EM.next_tick { Diaspora::WebSocket.initialize_channels diff --git a/config/sprinkle/provision.rb b/config/sprinkle/provision.rb index 9f983399e..ce0fd7374 100644 --- a/config/sprinkle/provision.rb +++ b/config/sprinkle/provision.rb @@ -7,11 +7,11 @@ -require "#{File.dirname(__FILE__)}/packages/essential" -require "#{File.dirname(__FILE__)}/packages/database" -require "#{File.dirname(__FILE__)}/packages/server" -require "#{File.dirname(__FILE__)}/packages/scm" -require "#{File.dirname(__FILE__)}/packages/ruby" +require '#{File.dirname(__FILE__)}/packages/essential' +require '#{File.dirname(__FILE__)}/packages/database' +require '#{File.dirname(__FILE__)}/packages/server' +require '#{File.dirname(__FILE__)}/packages/scm' +require '#{File.dirname(__FILE__)}/packages/ruby' policy :diaspora, :roles => [:tom,:backer] do # requires :clean_dreamhost From 4d8eb3d53241eec0df5d3dd5c0b372df5f5c3ad2 Mon Sep 17 00:00:00 2001 From: Guido Serra aka Zeph Date: Fri, 17 Sep 2010 05:56:47 +0800 Subject: [PATCH 080/292] issue #9 on github: missing OsX/MongoDB info --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9ae943073..7e1b75153 100644 --- a/README.md +++ b/README.md @@ -184,6 +184,8 @@ If you installed the Ubuntu package, MongoDB should already be running (if not, If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. +If you installed the OsX package through "brew", MongoDB will need to be started via `sudo launchctl load org.mongodb.mongod.plist`. (before you have to go to /Library/LaunchDaemons and add a symlink to /usr/local/Cellar/mongodb/1.6.2-x86_64/org.mongodb.mongod.plist) + Diaspora will not run unless mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. ### Run the app server From d74c4bd1177fd02760a96ac6d9a189dcd37aa23f Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 16 Sep 2010 16:47:10 -0700 Subject: [PATCH 081/292] DG IZ; use focus instead of click --- public/javascripts/aspect-edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index e1d9b6c6c..1fbf355e9 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -91,7 +91,7 @@ $(function() { }); }); -$(".aspect h1").live( 'click', function() { +$(".aspect h1").live( 'focus', function() { var $this = $(this); var id = $this.closest("li").children("ul").attr("id"); From 04d55ef35e4acda726ad00ba58a55814cdf22c72 Mon Sep 17 00:00:00 2001 From: "hemanth.hm" Date: Thu, 16 Sep 2010 21:03:46 +0800 Subject: [PATCH 082/292] Added ubuntu setup script --- ubuntu-setup.bash | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 ubuntu-setup.bash diff --git a/ubuntu-setup.bash b/ubuntu-setup.bash new file mode 100644 index 000000000..e197ed367 --- /dev/null +++ b/ubuntu-setup.bash @@ -0,0 +1,96 @@ +#!/bin/bash +# Author : hemanth.hm@gmail.com +# Site : www.h3manth.com +# This script helps to setup diaspora. +# + +# Set extented globbing +shopt -s extglob + +# Check if the user has root privilages +[ "$(whoami)" != "root" ] && echo "Please run this script as root/sudo" && exit 1 + +# Install build tools +echo "Installing build tools.." +sudo apt-get install build-essential libxslt1.1 libxslt1-dev libxml2 +echo "..Done installing build tools" + +# Install Ruby 1.8.7 +echo "Installing ruby-full Ruby 1.8.7.." +sudo apt-get install ruby-full +echo "..Done installing Ruby" + +# Install Rake +echo "Installing rake.." +sudo apt-get install rake +echo "..Done installing rake" + +# Get the current release and install mongodb +lsb=$(lsb_release -rs) +ver=${lsb//.+(0)/.} +repo="deb http://downloads.mongodb.org/distros/ubuntu ${ver} 10gen" +echo "Setting up MongoDB.." +echo "." +echo ${repo} | sudo tee -a /etc/apt/sources.list +echo "." +echo "Fetching keys.." +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 +echo "." +sudo apt-get update +echo "." +sudo apt-get install mongodb-stable +echo "Done installing monngodb-stable.." + +# Install imagemagick +echo "Installing imagemagick.." +sudo apt-get install imagemagick libmagick9-dev +echo "Installed imagemagick.." + +# Install git-core +echo "Installing git-core.." +sudo apt-get install git-core +echo "Installed git-core.." + +# Setting up ruby gems +echo "Fetching and installing ruby gems.." +( + echo "." + cd /tmp + wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz + echo "." + tar -xf rubygems-1.3.7.tgz + echo "." + cd rubygems-1.3.7 + echo "." + sudo ruby setup.rb + echo "." + sudo ln -s /usr/bin/gem1.8 /usr/bin/gem + echo "." +) +echo "Done installing the gems.." + +# Install blunder +echo "Installing blunder.." +sudo gem install bundler +echo "Installed blunder.." + +# Take a clone of Diaspora +( +echo "Clone diaspora source.." +git clone http://github.com/diaspora/diaspora.git +echo "Cloned the source.." +# Install extra gems +cd diaspora +echo "Installing more gems.." +sudo bundle install +echo "Installed." + +# Install DB setup +echo "Seting up DB.." +rake db:seed:tom +echo "DB ready. Login -> tom and password -> evankorth. More details ./diaspora/db/seeds/tom.rb." + +# Run appserver +echo "Starting server" +bundle exec thin start +) From f76bc6ffc470ef84b34756d3ea64c3c32416136b Mon Sep 17 00:00:00 2001 From: hemanth Date: Thu, 16 Sep 2010 23:23:12 +0800 Subject: [PATCH 083/292] Updated all apt-get installs with apt-get -y to avoid prompts during installation. --- ubuntu-setup.bash | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ubuntu-setup.bash b/ubuntu-setup.bash index e197ed367..47008ab34 100644 --- a/ubuntu-setup.bash +++ b/ubuntu-setup.bash @@ -12,17 +12,17 @@ shopt -s extglob # Install build tools echo "Installing build tools.." -sudo apt-get install build-essential libxslt1.1 libxslt1-dev libxml2 +sudo apt-get -y install build-essential libxslt1.1 libxslt1-dev libxml2 echo "..Done installing build tools" # Install Ruby 1.8.7 echo "Installing ruby-full Ruby 1.8.7.." -sudo apt-get install ruby-full +sudo apt-get -y install ruby-full echo "..Done installing Ruby" # Install Rake echo "Installing rake.." -sudo apt-get install rake +sudo apt-get -y install rake echo "..Done installing rake" # Get the current release and install mongodb @@ -38,17 +38,17 @@ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 echo "." sudo apt-get update echo "." -sudo apt-get install mongodb-stable +sudo apt-get -y install mongodb-stable echo "Done installing monngodb-stable.." # Install imagemagick echo "Installing imagemagick.." -sudo apt-get install imagemagick libmagick9-dev +sudo apt-get -y install imagemagick libmagick9-dev echo "Installed imagemagick.." # Install git-core echo "Installing git-core.." -sudo apt-get install git-core +sudo apt-get -y install git-core echo "Installed git-core.." # Setting up ruby gems From 87feb5bba52ce40c22c6047d56cff35831f0ad8b Mon Sep 17 00:00:00 2001 From: hemanth Date: Fri, 17 Sep 2010 01:50:01 +0800 Subject: [PATCH 084/292] Removed root check and added sudo check. --- ubuntu-setup.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubuntu-setup.bash b/ubuntu-setup.bash index 47008ab34..96c995646 100644 --- a/ubuntu-setup.bash +++ b/ubuntu-setup.bash @@ -8,7 +8,7 @@ shopt -s extglob # Check if the user has root privilages -[ "$(whoami)" != "root" ] && echo "Please run this script as root/sudo" && exit 1 +[[ $( id -u) ]] && echo "$(whoami) has no sudo permissions on this machine" && exit 1 # Install build tools echo "Installing build tools.." From e9df690644a9e82608d113793425496198b2fd1f Mon Sep 17 00:00:00 2001 From: hemanth Date: Fri, 17 Sep 2010 01:55:00 +0800 Subject: [PATCH 085/292] Added --no-install-recommends to apt-get to avoid additional extra packages. --- ubuntu-setup.bash | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ubuntu-setup.bash b/ubuntu-setup.bash index 96c995646..c0bceabeb 100644 --- a/ubuntu-setup.bash +++ b/ubuntu-setup.bash @@ -12,17 +12,17 @@ shopt -s extglob # Install build tools echo "Installing build tools.." -sudo apt-get -y install build-essential libxslt1.1 libxslt1-dev libxml2 +sudo apt-get -y --no-install-recommends install build-essential libxslt1.1 libxslt1-dev libxml2 echo "..Done installing build tools" # Install Ruby 1.8.7 echo "Installing ruby-full Ruby 1.8.7.." -sudo apt-get -y install ruby-full +sudo apt-get -y --no-install-recommends install ruby-full echo "..Done installing Ruby" # Install Rake echo "Installing rake.." -sudo apt-get -y install rake +sudo apt-get -y --no-install-recommends install rake echo "..Done installing rake" # Get the current release and install mongodb @@ -38,17 +38,17 @@ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 echo "." sudo apt-get update echo "." -sudo apt-get -y install mongodb-stable +sudo apt-get -y --no-install-recommends install mongodb-stable echo "Done installing monngodb-stable.." # Install imagemagick echo "Installing imagemagick.." -sudo apt-get -y install imagemagick libmagick9-dev +sudo apt-get -y --no-install-recommends install imagemagick libmagick9-dev echo "Installed imagemagick.." # Install git-core echo "Installing git-core.." -sudo apt-get -y install git-core +sudo apt-get -y --no-install-recommends install git-core echo "Installed git-core.." # Setting up ruby gems From 193deb97670bd55c94da68e86d1a3513ece1dbc9 Mon Sep 17 00:00:00 2001 From: hemanth Date: Fri, 17 Sep 2010 02:04:38 +0800 Subject: [PATCH 086/292] Corrected a comment # Check if the user has sudo privileges. --- ubuntu-setup.bash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubuntu-setup.bash b/ubuntu-setup.bash index c0bceabeb..67b602abe 100644 --- a/ubuntu-setup.bash +++ b/ubuntu-setup.bash @@ -7,7 +7,7 @@ # Set extented globbing shopt -s extglob -# Check if the user has root privilages +# Check if the user has sudo privileges. [[ $( id -u) ]] && echo "$(whoami) has no sudo permissions on this machine" && exit 1 # Install build tools From 3cf085c3c16a79548ccd828e31403d460ff50d32 Mon Sep 17 00:00:00 2001 From: maco Date: Fri, 17 Sep 2010 07:13:33 +0800 Subject: [PATCH 087/292] README.md: add PPA instructions for rubygems 1.3.7 for Ubuntu 10.04 --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7e1b75153..017ce85e6 100644 --- a/README.md +++ b/README.md @@ -147,13 +147,13 @@ To install Git on **Mac OS X**, run the following: ### Rubygems -On **Ubuntu**, run the following: +On **Ubuntu** 10.04, run the following: - wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz - tar -xf rubygems-1.3.7.tgz - cd rubygems-1.3.7 - sudo ruby setup.rb - sudo ln -s /usr/bin/gem1.8 /usr/bin/gem + sudo add-apt-repository ppa:maco.m/ruby + sudo apt-get update + sudo apt-get install rubygems + +This PPA is maintained by an Ubuntu Developer. For Ubuntu 10.10, this version of rubygems is in the repositories. On **Fedora**, run the following: From 1e8834a8d5e8b266632c944cf34e8703c704c8a4 Mon Sep 17 00:00:00 2001 From: maco Date: Fri, 17 Sep 2010 07:25:21 +0800 Subject: [PATCH 088/292] README.md: add note about bundle's location with Ubuntu debs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 017ce85e6..8e3426250 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ On **Mac OS X**, RubyGems comes preinstalled; however, you might need to update ### Bundler -After RubyGems is updated, simply run `sudo gem install bundler` to get Bundler. +After RubyGems is updated, simply run `sudo gem install bundler` to get Bundler. If you're using Ubuntu repository .debs, bundler is found at /var/lib/gems/1.8/bin/bundle ## Getting Diaspora From 2dc0fc9965787d092214d4b54d64d733f3952f67 Mon Sep 17 00:00:00 2001 From: Guido Serra aka Zeph Date: Fri, 17 Sep 2010 06:24:30 +0800 Subject: [PATCH 089/292] wrong! fullpath required --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e3426250..d9ac44c94 100644 --- a/README.md +++ b/README.md @@ -184,7 +184,7 @@ If you installed the Ubuntu package, MongoDB should already be running (if not, If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. -If you installed the OsX package through "brew", MongoDB will need to be started via `sudo launchctl load org.mongodb.mongod.plist`. (before you have to go to /Library/LaunchDaemons and add a symlink to /usr/local/Cellar/mongodb/1.6.2-x86_64/org.mongodb.mongod.plist) +If you installed the OsX package through "brew", MongoDB will need to be started via `sudo launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist`. (before you have to go to /Library/LaunchDaemons and add a symlink to /usr/local/Cellar/mongodb/1.6.2-x86_64/org.mongodb.mongod.plist) Diaspora will not run unless mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. From ae83dae1ca2ca651ef4bad7a968385be8756b5bc Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 16 Sep 2010 17:03:14 -0700 Subject: [PATCH 090/292] added git info (branch,date,author) to debug partial --- app/views/posts/_debug.haml | 4 ++++ config/initializers/git_info.rb | 6 ++++++ 2 files changed, 10 insertions(+) create mode 100644 config/initializers/git_info.rb diff --git a/app/views/posts/_debug.haml b/app/views/posts/_debug.haml index 27d508cf2..17d7baad8 100644 --- a/app/views/posts/_debug.haml +++ b/app/views/posts/_debug.haml @@ -7,6 +7,9 @@ %h5 DEBUG INFO #debug_more{ :style => "display:none;" } %ul + %li + %b + = GIT_INFO %li %b params = params.inspect @@ -14,3 +17,4 @@ %b websocket status #debug .msg + diff --git a/config/initializers/git_info.rb b/config/initializers/git_info.rb new file mode 100644 index 000000000..a6d767aa4 --- /dev/null +++ b/config/initializers/git_info.rb @@ -0,0 +1,6 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +GIT_INFO = `git show` From b0c87fcffa507591242b27ee55be2c0fd86709b6 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 16 Sep 2010 17:04:59 -0700 Subject: [PATCH 091/292] Add a little more feedback to rake task --- lib/tasks/db.rake | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 22f995325..80e3bafe5 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -63,6 +63,7 @@ namespace :db do return this.diaspora_handle.charAt(this.diaspora_handle.length-1) == '@' }") + puts "Found #{people.count} people with broken diaspora_handle fields" people.each do |person| if person.owner puts "Resetting diaspora handle for #{person.owner.username}" From 95a4120e57681bb972a3b13e38d915f043c98a1f Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 16 Sep 2010 17:22:42 -0700 Subject: [PATCH 092/292] DG IZ; dropzones on left back on aspect manage page. --- app/views/aspects/manage.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 9a98b9d06..667196b85 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -12,7 +12,7 @@ Requests .requests - %ul + %ul.dropzone - for request in @remote_requests %li.requested_person{:id => request.person.id, :request_id => request.id} = person_image_tag(request.person) @@ -22,7 +22,7 @@ Ignore/Remove %li.remove - %ul + %ul.dropzone - content_for :publish do = link_to("add a new aspect", "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => "Add a new aspect") From 755e2a744cd9f41412d727fe36cd5338700fc491 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 16 Sep 2010 17:30:49 -0700 Subject: [PATCH 093/292] DG IZ; dropzones now light up when dragging on aspect page --- public/javascripts/aspect-edit.js | 2 ++ public/stylesheets/application.css | 4 ++++ public/stylesheets/sass/application.sass | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index 1fbf355e9..86c61ba93 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -39,6 +39,7 @@ $(function() { }); $(".aspect ul").droppable({ + hoverClass: 'active', drop: function(event, ui) { if ($(ui.draggable[0]).hasClass('requested_person')){ @@ -69,6 +70,7 @@ $(function() { }); $(".remove ul").droppable({ + hoverClass: 'active', drop: function(event, ui) { if ($(ui.draggable[0]).hasClass('requested_person')){ diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index f4c40f465..be025e2d7 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -547,6 +547,10 @@ h1.big_text { border: 1px solid #cccccc; list-style: none; padding: 15px; } + .aspect ul.dropzone.active, + .requests ul.dropzone.active, + .remove ul.dropzone.active { + background-color: #fafafa; } .aspect .person, .aspect .requested_person, .requests .person, diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 85c5f3cdc..7f7125c49 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -711,6 +711,10 @@ h1.big_text :style none :padding 15px + &.active + :background + :color #fafafa + .person, .requested_person :display inline-block From e668071ea51050ae79058978ddb9c01945df4279 Mon Sep 17 00:00:00 2001 From: maxwell Date: Thu, 16 Sep 2010 18:48:18 -0700 Subject: [PATCH 094/292] README.md --- README.md | 7 +++++++ app/controllers/aspects_controller.rb | 2 +- app/models/person.rb | 1 + app/models/request.rb | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d9ac44c94..d941ac182 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,13 @@ GEMS: We would like to keep external dependencies unduplicated. We're using No The privacy aware, personally controlled, do-it-all, open source social network. **DISCLAIMER: THIS IS PRE-ALPHA SOFTWARE AND SHOULD BE TREATED ACCORDINGLY.** +**PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS TO BE BROKEN** + +Also, we really want to continue to focus on features and improving the code base. When we think it is +ready for general use, we will post more detailed instructions. + + + These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), [Fedora](http://www.fedoraproject.org) or Mac OS X. We are developing Diaspora for the latest and greatest browsers, so please update your Firefox, Chrome or Safari to the latest and greatest. ## Preparing your system diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 88da5cc88..ab144ad12 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -47,7 +47,7 @@ class AspectsController < ApplicationController def manage @aspect = :manage - @remote_requests = Request.for_user current_user + @remote_requests = Request.for_user(current_user).all end def update diff --git a/app/models/person.rb b/app/models/person.rb index bed5bb246..48e8b0816 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -85,6 +85,7 @@ class Person local_person elsif !identifier.include?("localhost") && !opts[:local] begin + puts "begin finger" f = Redfinger.finger(identifier) rescue SocketError => e raise "Diaspora server for #{identifier} not found" if e.message =~ /Name or service not known/ diff --git a/app/models/request.rb b/app/models/request.rb index 739500e4e..da62edd93 100644 --- a/app/models/request.rb +++ b/app/models/request.rb @@ -26,8 +26,8 @@ class Request validates_presence_of :destination_url, :callback_url 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) } + scope :for_user, lambda{ |user| where(:destination_url => user.receive_url) } + scope :from_user, lambda{ |user| where(:destination_url.ne => user.receive_url) } def self.instantiate(options = {}) person = options[:from] From 292a38e6943b52abf2029faaecd17378495df51b Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 16 Sep 2010 18:55:54 -0700 Subject: [PATCH 095/292] DG IZ; arrow keys work in fancybox. removed background color change on close button on hover --- .../fancybox/jquery.fancybox-1.3.1.js | 7 ++++- .../fancybox/jquery.fancybox-1.3.1.pack.js | 31 ++----------------- public/stylesheets/application.css | 3 ++ public/stylesheets/sass/application.sass | 4 +++ 4 files changed, 16 insertions(+), 29 deletions(-) diff --git a/public/javascripts/fancybox/jquery.fancybox-1.3.1.js b/public/javascripts/fancybox/jquery.fancybox-1.3.1.js index 688f93aa3..e9b4f404b 100755 --- a/public/javascripts/fancybox/jquery.fancybox-1.3.1.js +++ b/public/javascripts/fancybox/jquery.fancybox-1.3.1.js @@ -262,6 +262,11 @@ close.show(); } + $("#fancybox-inner input[type='text'], #fancybox-inner textarea").focus(function() { + $(document).unbind('keydown.fb'); + }); + + fancybox_set_navigation(); $(window).bind("resize.fb", $.fancybox.center); @@ -1074,4 +1079,4 @@ fancybox_init(); }); -})(jQuery); \ No newline at end of file +})(jQuery); diff --git a/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js b/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js index 8421d53a6..8efd14070 100755 --- a/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js +++ b/public/javascripts/fancybox/jquery.fancybox-1.3.1.pack.js @@ -14,31 +14,6 @@ * http://www.gnu.org/licenses/gpl.html */ -(function(b){var m,u,x,g,D,i,z,A,B,p=0,e={},q=[],n=0,c={},j=[],E=null,s=new Image,G=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,S=/[^\.]\.(swf)\s*$/i,H,I=1,k,l,h=false,y=b.extend(b("
")[0],{prop:0}),v=0,O=!b.support.opacity&&!window.XMLHttpRequest,J=function(){u.hide();s.onerror=s.onload=null;E&&E.abort();m.empty()},P=function(){b.fancybox('

The requested content cannot be loaded.
Please try again later.

',{scrolling:"no",padding:20,transitionIn:"none",transitionOut:"none"})}, -K=function(){return[b(window).width(),b(window).height(),b(document).scrollLeft(),b(document).scrollTop()]},T=function(){var a=K(),d={},f=c.margin,o=c.autoScale,t=(20+f)*2,w=(20+f)*2,r=c.padding*2;if(c.width.toString().indexOf("%")>-1){d.width=a[0]*parseFloat(c.width)/100-40;o=false}else d.width=c.width+r;if(c.height.toString().indexOf("%")>-1){d.height=a[1]*parseFloat(c.height)/100-40;o=false}else d.height=c.height+r;if(o&&(d.width>a[0]-t||d.height>a[1]-w))if(e.type=="image"||e.type=="swf"){t+=r; -w+=r;o=Math.min(Math.min(a[0]-t,c.width)/c.width,Math.min(a[1]-w,c.height)/c.height);d.width=Math.round(o*(d.width-r))+r;d.height=Math.round(o*(d.height-r))+r}else{d.width=Math.min(d.width,a[0]-t);d.height=Math.min(d.height,a[1]-w)}d.top=a[3]+(a[1]-(d.height+40))*0.5;d.left=a[2]+(a[0]-(d.width+40))*0.5;if(c.autoScale===false){d.top=Math.max(a[3]+f,d.top);d.left=Math.max(a[2]+f,d.left)}return d},U=function(a){if(a&&a.length)switch(c.titlePosition){case "inside":return a;case "over":return''+ -a+"";default:return''+a+''}return false},V=function(){var a=c.title,d=l.width-c.padding*2,f="fancybox-title-"+c.titlePosition;b("#fancybox-title").remove();v=0;if(c.titleShow!==false){a=b.isFunction(c.titleFormat)?c.titleFormat(a,j,n,c):U(a);if(!(!a||a==="")){b('
').css({width:d,paddingLeft:c.padding, -paddingRight:c.padding}).html(a).appendTo("body");switch(c.titlePosition){case "inside":v=b("#fancybox-title").outerHeight(true)-c.padding;l.height+=v;break;case "over":b("#fancybox-title").css("bottom",c.padding);break;default:b("#fancybox-title").css("bottom",b("#fancybox-title").outerHeight(true)*-1);break}b("#fancybox-title").appendTo(D).hide()}}},W=function(){b(document).unbind("keydown.fb").bind("keydown.fb",function(a){if(a.keyCode==27&&c.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if(a.keyCode== -37){a.preventDefault();b.fancybox.prev()}else if(a.keyCode==39){a.preventDefault();b.fancybox.next()}});if(b.fn.mousewheel){g.unbind("mousewheel.fb");j.length>1&&g.bind("mousewheel.fb",function(a,d){a.preventDefault();h||d===0||(d>0?b.fancybox.prev():b.fancybox.next())})}if(c.showNavArrows){if(c.cyclic&&j.length>1||n!==0)A.show();if(c.cyclic&&j.length>1||n!=j.length-1)B.show()}},X=function(){var a,d;if(j.length-1>n){a=j[n+1].href;if(typeof a!=="undefined"&&a.match(G)){d=new Image;d.src=a}}if(n>0){a= -j[n-1].href;if(typeof a!=="undefined"&&a.match(G)){d=new Image;d.src=a}}},L=function(){i.css("overflow",c.scrolling=="auto"?c.type=="image"||c.type=="iframe"||c.type=="swf"?"hidden":"auto":c.scrolling=="yes"?"auto":"visible");if(!b.support.opacity){i.get(0).style.removeAttribute("filter");g.get(0).style.removeAttribute("filter")}b("#fancybox-title").show();c.hideOnContentClick&&i.one("click",b.fancybox.close);c.hideOnOverlayClick&&x.one("click",b.fancybox.close);c.showCloseButton&&z.show();W();b(window).bind("resize.fb", -b.fancybox.center);c.centerOnScroll?b(window).bind("scroll.fb",b.fancybox.center):b(window).unbind("scroll.fb");b.isFunction(c.onComplete)&&c.onComplete(j,n,c);h=false;X()},M=function(a){var d=Math.round(k.width+(l.width-k.width)*a),f=Math.round(k.height+(l.height-k.height)*a),o=Math.round(k.top+(l.top-k.top)*a),t=Math.round(k.left+(l.left-k.left)*a);g.css({width:d+"px",height:f+"px",top:o+"px",left:t+"px"});d=Math.max(d-c.padding*2,0);f=Math.max(f-(c.padding*2+v*a),0);i.css({width:d+"px",height:f+ -"px"});if(typeof l.opacity!=="undefined")g.css("opacity",a<0.5?0.5:a)},Y=function(a){var d=a.offset();d.top+=parseFloat(a.css("paddingTop"))||0;d.left+=parseFloat(a.css("paddingLeft"))||0;d.top+=parseFloat(a.css("border-top-width"))||0;d.left+=parseFloat(a.css("border-left-width"))||0;d.width=a.width();d.height=a.height();return d},Q=function(){var a=e.orig?b(e.orig):false,d={};if(a&&a.length){a=Y(a);d={width:a.width+c.padding*2,height:a.height+c.padding*2,top:a.top-c.padding-20,left:a.left-c.padding- -20}}else{a=K();d={width:1,height:1,top:a[3]+a[1]*0.5,left:a[2]+a[0]*0.5}}return d},N=function(){u.hide();if(g.is(":visible")&&b.isFunction(c.onCleanup))if(c.onCleanup(j,n,c)===false){b.event.trigger("fancybox-cancel");h=false;return}j=q;n=p;c=e;i.get(0).scrollTop=0;i.get(0).scrollLeft=0;if(c.overlayShow){O&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"}); -x.css({"background-color":c.overlayColor,opacity:c.overlayOpacity}).unbind().show()}l=T();V();if(g.is(":visible")){b(z.add(A).add(B)).hide();var a=g.position(),d;k={top:a.top,left:a.left,width:g.width(),height:g.height()};d=k.width==l.width&&k.height==l.height;i.fadeOut(c.changeFade,function(){var f=function(){i.html(m.contents()).fadeIn(c.changeFade,L)};b.event.trigger("fancybox-change");i.empty().css("overflow","hidden");if(d){i.css({top:c.padding,left:c.padding,width:Math.max(l.width-c.padding* -2,1),height:Math.max(l.height-c.padding*2-v,1)});f()}else{i.css({top:c.padding,left:c.padding,width:Math.max(k.width-c.padding*2,1),height:Math.max(k.height-c.padding*2,1)});y.prop=0;b(y).animate({prop:1},{duration:c.changeSpeed,easing:c.easingChange,step:M,complete:f})}})}else{g.css("opacity",1);if(c.transitionIn=="elastic"){k=Q();i.css({top:c.padding,left:c.padding,width:Math.max(k.width-c.padding*2,1),height:Math.max(k.height-c.padding*2,1)}).html(m.contents());g.css(k).show();if(c.opacity)l.opacity= -0;y.prop=0;b(y).animate({prop:1},{duration:c.speedIn,easing:c.easingIn,step:M,complete:L})}else{i.css({top:c.padding,left:c.padding,width:Math.max(l.width-c.padding*2,1),height:Math.max(l.height-c.padding*2-v,1)}).html(m.contents());g.css(l).fadeIn(c.transitionIn=="none"?0:c.speedIn,L)}}},F=function(){m.width(e.width);m.height(e.height);if(e.width=="auto")e.width=m.width();if(e.height=="auto")e.height=m.height();N()},Z=function(){h=true;e.width=s.width;e.height=s.height;b("").attr({id:"fancybox-img", -src:s.src,alt:e.title}).appendTo(m);N()},C=function(){J();var a=q[p],d,f,o,t,w;e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));o=a.title||b(a).title||e.title||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(o===""&&e.orig)o=e.orig.attr("alt");d=a.nodeName&&/^(?:javascript|#)/i.test(a.href)?e.href||null:e.href||a.href||null;if(e.type){f=e.type;if(!d)d=e.content}else if(e.content)f="html";else if(d)if(d.match(G))f= -"image";else if(d.match(S))f="swf";else if(b(a).hasClass("iframe"))f="iframe";else if(d.match(/#/)){a=d.substr(d.indexOf("#"));f=b(a).length>0?"inline":"ajax"}else f="ajax";else f="inline";e.type=f;e.href=d;e.title=o;if(e.autoDimensions&&e.type!=="iframe"&&e.type!=="swf"){e.width="auto";e.height="auto"}if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=false;e.enableEscapeButton=false;e.showCloseButton=false}if(b.isFunction(e.onStart))if(e.onStart(q,p,e)===false){h=false; -return}m.css("padding",20+e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(i.children())});switch(f){case "html":m.html(e.content);F();break;case "inline":b('
').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(i.children())}).bind("fancybox-cancel",function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity(); -s=new Image;s.onerror=function(){P()};s.onload=function(){s.onerror=null;s.onload=null;Z()};s.src=d;break;case "swf":t='';w="";b.each(e.swf,function(r,R){t+='';w+=" "+r+'="'+R+'"'});t+='";m.html(t); -F();break;case "ajax":a=d.split("#",2);f=e.ajax.data||{};if(a.length>1){d=a[0];if(typeof f=="string")f+="&selector="+a[1];else f.selector=a[1]}h=false;b.fancybox.showActivity();E=b.ajax(b.extend(e.ajax,{url:d,data:f,error:P,success:function(r){if(E.status==200){m.html(r);F()}}}));break;case "iframe":b('').appendTo(m);N();break}},$=function(){if(u.is(":visible")){b("div", -u).css("top",I*-40+"px");I=(I+1)%12}else clearInterval(H)},aa=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('
'),u=b('
'),x=b('
'),g=b('
'));if(!b.support.opacity){g.addClass("fancybox-ie");u.addClass("fancybox-ie")}D=b('
').append('
').appendTo(g); -D.append(i=b('
'),z=b(''),A=b(''),B=b(''));z.click(b.fancybox.close);u.click(b.fancybox.cancel);A.click(function(a){a.preventDefault();b.fancybox.prev()});B.click(function(a){a.preventDefault();b.fancybox.next()});if(O){x.get(0).style.setExpression("height", -"document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'");u.get(0).style.setExpression("top","(-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'");D.prepend('')}}}; -b.fn.fancybox=function(a){b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(d){d.preventDefault();if(!h){h=true;b(this).blur();q=[];p=0;d=b(this).attr("rel")||"";if(!d||d==""||d==="nofollow")q.push(this);else{q=b("a[rel="+d+"], area[rel="+d+"]");p=q.index(this)}C();return false}});return this};b.fancybox=function(a,d){if(!h){h=true;d=typeof d!=="undefined"?d:{};q=[];p=d.index||0;if(b.isArray(a)){for(var f=0,o=a.length;fq.length||p<0)p=0;C()}};b.fancybox.showActivity=function(){clearInterval(H);u.show();H=setInterval($,66)};b.fancybox.hideActivity=function(){u.hide()};b.fancybox.next=function(){return b.fancybox.pos(n+1)};b.fancybox.prev=function(){return b.fancybox.pos(n- -1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a,10);if(a>-1&&j.length>a){p=a;C()}if(c.cyclic&&j.length>1&&a<0){p=j.length-1;C()}if(c.cyclic&&j.length>1&&a>=j.length){p=0;C()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");J();e&&b.isFunction(e.onCancel)&&e.onCancel(q,p,e);h=false}};b.fancybox.close=function(){function a(){x.fadeOut("fast");g.hide();b.event.trigger("fancybox-cleanup");i.empty();b.isFunction(c.onClosed)&&c.onClosed(j,n,c);j=e=[];n=p=0;c=e={};h=false} -if(!(h||g.is(":hidden"))){h=true;if(c&&b.isFunction(c.onCleanup))if(c.onCleanup(j,n,c)===false){h=false;return}J();b(z.add(A).add(B)).hide();b("#fancybox-title").remove();g.add(i).add(x).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");i.css("overflow","hidden");if(c.transitionOut=="elastic"){k=Q();var d=g.position();l={top:d.top,left:d.left,width:g.width(),height:g.height()};if(c.opacity)l.opacity=1;y.prop=1;b(y).animate({prop:0},{duration:c.speedOut,easing:c.easingOut, -step:M,complete:a})}else g.fadeOut(c.transitionOut=="none"?0:c.speedOut,a)}};b.fancybox.resize=function(){var a,d;if(!(h||g.is(":hidden"))){h=true;a=i.wrapInner("
").children();d=a.height();g.css({height:d+c.padding*2+v});i.css({height:d});a.replaceWith(a.children());b.fancybox.center()}};b.fancybox.center=function(){h=true;var a=K(),d=c.margin,f={};f.top=a[3]+(a[1]-(g.height()-v+40))*0.5;f.left=a[2]+(a[0]-(g.width()+40))*0.5;f.top=Math.max(a[3]+d,f.top);f.left=Math.max(a[2]+ -d,f.left);g.css(f);h=false};b.fn.fancybox.defaults={padding:10,margin:20,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.3,overlayColor:"#666",titleShow:true,titlePosition:"outside",titleFormat:null,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast", -easingIn:"swing",easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,onStart:null,onCancel:null,onComplete:null,onCleanup:null,onClosed:null};b(document).ready(function(){aa()})})(jQuery); \ No newline at end of file +(function($){var tmp,loading,overlay,wrap,outer,inner,close,nav_left,nav_right,selectedIndex=0,selectedOpts={},selectedArray=[],currentIndex=0,currentOpts={},currentArray=[],ajaxLoader=null,imgPreloader=new Image(),imgRegExp=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,swfRegExp=/[^\.]\.(swf)\s*$/i,loadingTimer,loadingFrame=1,start_pos,final_pos,busy=false,shadow=20,fx=$.extend($('
')[0],{prop:0}),titleh=0,isIE6=!$.support.opacity&&!window.XMLHttpRequest,fancybox_abort=function(){loading.hide();imgPreloader.onerror=imgPreloader.onload=null;if(ajaxLoader){ajaxLoader.abort()}tmp.empty()},fancybox_error=function(){$.fancybox('

The requested content cannot be loaded.
Please try again later.

',{'scrolling':'no','padding':20,'transitionIn':'none','transitionOut':'none'})},fancybox_get_viewport=function(){return[$(window).width(),$(window).height(),$(document).scrollLeft(),$(document).scrollTop()]},fancybox_get_zoom_to=function(){var view=fancybox_get_viewport(),to={},margin=currentOpts.margin,resize=currentOpts.autoScale,horizontal_space=(shadow+margin)*2,vertical_space=(shadow+margin)*2,double_padding=(currentOpts.padding*2),ratio;if(currentOpts.width.toString().indexOf('%')>-1){to.width=((view[0]*parseFloat(currentOpts.width))/100)-(shadow*2);resize=false}else{to.width=currentOpts.width+double_padding}if(currentOpts.height.toString().indexOf('%')>-1){to.height=((view[1]*parseFloat(currentOpts.height))/100)-(shadow*2);resize=false}else{to.height=currentOpts.height+double_padding}if(resize&&(to.width>(view[0]-horizontal_space)||to.height>(view[1]-vertical_space))){if(selectedOpts.type=='image'||selectedOpts.type=='swf'){horizontal_space+=double_padding;vertical_space+=double_padding;ratio=Math.min(Math.min(view[0]-horizontal_space,currentOpts.width)/currentOpts.width,Math.min(view[1]-vertical_space,currentOpts.height)/currentOpts.height);to.width=Math.round(ratio*(to.width-double_padding))+double_padding;to.height=Math.round(ratio*(to.height-double_padding))+double_padding}else{to.width=Math.min(to.width,(view[0]-horizontal_space));to.height=Math.min(to.height,(view[1]-vertical_space))}}to.top=view[3]+((view[1]-(to.height+(shadow*2)))*0.5);to.left=view[2]+((view[0]-(to.width+(shadow*2)))*0.5);if(currentOpts.autoScale===false){to.top=Math.max(view[3]+margin,to.top);to.left=Math.max(view[2]+margin,to.left)}return to},fancybox_format_title=function(title){if(title&&title.length){switch(currentOpts.titlePosition){case'inside':return title;case'over':return''+title+'';default:return''+title+''}}return false},fancybox_process_title=function(){var title=currentOpts.title,width=final_pos.width-(currentOpts.padding*2),titlec='fancybox-title-'+currentOpts.titlePosition;$('#fancybox-title').remove();titleh=0;if(currentOpts.titleShow===false){return}title=$.isFunction(currentOpts.titleFormat)?currentOpts.titleFormat(title,currentArray,currentIndex,currentOpts):fancybox_format_title(title);if(!title||title===''){return}$('
').css({'width':width,'paddingLeft':currentOpts.padding,'paddingRight':currentOpts.padding}).html(title).appendTo('body');switch(currentOpts.titlePosition){case'inside':titleh=$("#fancybox-title").outerHeight(true)-currentOpts.padding;final_pos.height+=titleh;break;case'over':$('#fancybox-title').css('bottom',currentOpts.padding);break;default:$('#fancybox-title').css('bottom',$("#fancybox-title").outerHeight(true)*-1);break}$('#fancybox-title').appendTo(outer).hide()},fancybox_set_navigation=function(){$(document).unbind('keydown.fb').bind('keydown.fb',function(e){if(e.keyCode==27&¤tOpts.enableEscapeButton){e.preventDefault();$.fancybox.close()}else if(e.keyCode==37){e.preventDefault();$.fancybox.prev()}else if(e.keyCode==39){e.preventDefault();$.fancybox.next()}});if($.fn.mousewheel){wrap.unbind('mousewheel.fb');if(currentArray.length>1){wrap.bind('mousewheel.fb',function(e,delta){e.preventDefault();if(busy||delta===0){return}if(delta>0){$.fancybox.prev()}else{$.fancybox.next()}})}}if(!currentOpts.showNavArrows){return}if((currentOpts.cyclic&¤tArray.length>1)||currentIndex!==0){nav_left.show()}if((currentOpts.cyclic&¤tArray.length>1)||currentIndex!=(currentArray.length-1)){nav_right.show()}},fancybox_preload_images=function(){var href,objNext;if((currentArray.length-1)>currentIndex){href=currentArray[currentIndex+1].href;if(typeof href!=='undefined'&&href.match(imgRegExp)){objNext=new Image();objNext.src=href}}if(currentIndex>0){href=currentArray[currentIndex-1].href;if(typeof href!=='undefined'&&href.match(imgRegExp)){objNext=new Image();objNext.src=href}}},_finish=function(){inner.css('overflow',(currentOpts.scrolling=='auto'?(currentOpts.type=='image'||currentOpts.type=='iframe'||currentOpts.type=='swf'?'hidden':'auto'):(currentOpts.scrolling=='yes'?'auto':'visible')));if(!$.support.opacity){inner.get(0).style.removeAttribute('filter');wrap.get(0).style.removeAttribute('filter')}$('#fancybox-title').show();if(currentOpts.hideOnContentClick){inner.one('click',$.fancybox.close)}if(currentOpts.hideOnOverlayClick){overlay.one('click',$.fancybox.close)}if(currentOpts.showCloseButton){close.show()}$("#fancybox-inner input[type='text'], #fancybox-inner textarea").focus(function(){$(document).unbind('keydown.fb')});fancybox_set_navigation();$(window).bind("resize.fb",$.fancybox.center);if(currentOpts.centerOnScroll){$(window).bind("scroll.fb",$.fancybox.center)}else{$(window).unbind("scroll.fb")}if($.isFunction(currentOpts.onComplete)){currentOpts.onComplete(currentArray,currentIndex,currentOpts)}busy=false;fancybox_preload_images()},fancybox_draw=function(pos){var width=Math.round(start_pos.width+(final_pos.width-start_pos.width)*pos),height=Math.round(start_pos.height+(final_pos.height-start_pos.height)*pos),top=Math.round(start_pos.top+(final_pos.top-start_pos.top)*pos),left=Math.round(start_pos.left+(final_pos.left-start_pos.left)*pos);wrap.css({'width':width+'px','height':height+'px','top':top+'px','left':left+'px'});width=Math.max(width-currentOpts.padding*2,0);height=Math.max(height-(currentOpts.padding*2+(titleh*pos)),0);inner.css({'width':width+'px','height':height+'px'});if(typeof final_pos.opacity!=='undefined'){wrap.css('opacity',(pos<0.5?0.5:pos))}},fancybox_get_obj_pos=function(obj){var pos=obj.offset();pos.top+=parseFloat(obj.css('paddingTop'))||0;pos.left+=parseFloat(obj.css('paddingLeft'))||0;pos.top+=parseFloat(obj.css('border-top-width'))||0;pos.left+=parseFloat(obj.css('border-left-width'))||0;pos.width=obj.width();pos.height=obj.height();return pos},fancybox_get_zoom_from=function(){var orig=selectedOpts.orig?$(selectedOpts.orig):false,from={},pos,view;if(orig&&orig.length){pos=fancybox_get_obj_pos(orig);from={width:(pos.width+(currentOpts.padding*2)),height:(pos.height+(currentOpts.padding*2)),top:(pos.top-currentOpts.padding-shadow),left:(pos.left-currentOpts.padding-shadow)}}else{view=fancybox_get_viewport();from={width:1,height:1,top:view[3]+view[1]*0.5,left:view[2]+view[0]*0.5}}return from},fancybox_show=function(){loading.hide();if(wrap.is(":visible")&&$.isFunction(currentOpts.onCleanup)){if(currentOpts.onCleanup(currentArray,currentIndex,currentOpts)===false){$.event.trigger('fancybox-cancel');busy=false;return}}currentArray=selectedArray;currentIndex=selectedIndex;currentOpts=selectedOpts;inner.get(0).scrollTop=0;inner.get(0).scrollLeft=0;if(currentOpts.overlayShow){if(isIE6){$('select:not(#fancybox-tmp select)').filter(function(){return this.style.visibility!=='hidden'}).css({'visibility':'hidden'}).one('fancybox-cleanup',function(){this.style.visibility='inherit'})}overlay.css({'background-color':currentOpts.overlayColor,'opacity':currentOpts.overlayOpacity}).unbind().show()}final_pos=fancybox_get_zoom_to();fancybox_process_title();if(wrap.is(":visible")){$(close.add(nav_left).add(nav_right)).hide();var pos=wrap.position(),equal;start_pos={top:pos.top,left:pos.left,width:wrap.width(),height:wrap.height()};equal=(start_pos.width==final_pos.width&&start_pos.height==final_pos.height);inner.fadeOut(currentOpts.changeFade,function(){var finish_resizing=function(){inner.html(tmp.contents()).fadeIn(currentOpts.changeFade,_finish)};$.event.trigger('fancybox-change');inner.empty().css('overflow','hidden');if(equal){inner.css({top:currentOpts.padding,left:currentOpts.padding,width:Math.max(final_pos.width-(currentOpts.padding*2),1),height:Math.max(final_pos.height-(currentOpts.padding*2)-titleh,1)});finish_resizing()}else{inner.css({top:currentOpts.padding,left:currentOpts.padding,width:Math.max(start_pos.width-(currentOpts.padding*2),1),height:Math.max(start_pos.height-(currentOpts.padding*2),1)});fx.prop=0;$(fx).animate({prop:1},{duration:currentOpts.changeSpeed,easing:currentOpts.easingChange,step:fancybox_draw,complete:finish_resizing})}});return}wrap.css('opacity',1);if(currentOpts.transitionIn=='elastic'){start_pos=fancybox_get_zoom_from();inner.css({top:currentOpts.padding,left:currentOpts.padding,width:Math.max(start_pos.width-(currentOpts.padding*2),1),height:Math.max(start_pos.height-(currentOpts.padding*2),1)}).html(tmp.contents());wrap.css(start_pos).show();if(currentOpts.opacity){final_pos.opacity=0}fx.prop=0;$(fx).animate({prop:1},{duration:currentOpts.speedIn,easing:currentOpts.easingIn,step:fancybox_draw,complete:_finish})}else{inner.css({top:currentOpts.padding,left:currentOpts.padding,width:Math.max(final_pos.width-(currentOpts.padding*2),1),height:Math.max(final_pos.height-(currentOpts.padding*2)-titleh,1)}).html(tmp.contents());wrap.css(final_pos).fadeIn(currentOpts.transitionIn=='none'?0:currentOpts.speedIn,_finish)}},fancybox_process_inline=function(){tmp.width(selectedOpts.width);tmp.height(selectedOpts.height);if(selectedOpts.width=='auto'){selectedOpts.width=tmp.width()}if(selectedOpts.height=='auto'){selectedOpts.height=tmp.height()}fancybox_show()},fancybox_process_image=function(){busy=true;selectedOpts.width=imgPreloader.width;selectedOpts.height=imgPreloader.height;$("").attr({'id':'fancybox-img','src':imgPreloader.src,'alt':selectedOpts.title}).appendTo(tmp);fancybox_show()},fancybox_start=function(){fancybox_abort();var obj=selectedArray[selectedIndex],href,type,title,str,emb,selector,data;selectedOpts=$.extend({},$.fn.fancybox.defaults,(typeof $(obj).data('fancybox')=='undefined'?selectedOpts:$(obj).data('fancybox')));title=obj.title||$(obj).title||selectedOpts.title||'';if(obj.nodeName&&!selectedOpts.orig){selectedOpts.orig=$(obj).children("img:first").length?$(obj).children("img:first"):$(obj)}if(title===''&&selectedOpts.orig){title=selectedOpts.orig.attr('alt')}if(obj.nodeName&&(/^(?:javascript|#)/i).test(obj.href)){href=selectedOpts.href||null}else{href=selectedOpts.href||obj.href||null}if(selectedOpts.type){type=selectedOpts.type;if(!href){href=selectedOpts.content}}else if(selectedOpts.content){type='html'}else if(href){if(href.match(imgRegExp)){type='image'}else if(href.match(swfRegExp)){type='swf'}else if($(obj).hasClass("iframe")){type='iframe'}else if(href.match(/#/)){obj=href.substr(href.indexOf("#"));type=$(obj).length>0?'inline':'ajax'}else{type='ajax'}}else{type='inline'}selectedOpts.type=type;selectedOpts.href=href;selectedOpts.title=title;if(selectedOpts.autoDimensions&&selectedOpts.type!=='iframe'&&selectedOpts.type!=='swf'){selectedOpts.width='auto';selectedOpts.height='auto'}if(selectedOpts.modal){selectedOpts.overlayShow=true;selectedOpts.hideOnOverlayClick=false;selectedOpts.hideOnContentClick=false;selectedOpts.enableEscapeButton=false;selectedOpts.showCloseButton=false}if($.isFunction(selectedOpts.onStart)){if(selectedOpts.onStart(selectedArray,selectedIndex,selectedOpts)===false){busy=false;return}}tmp.css('padding',(shadow+selectedOpts.padding+selectedOpts.margin));$('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change',function(){$(this).replaceWith(inner.children())});switch(type){case'html':tmp.html(selectedOpts.content);fancybox_process_inline();break;case'inline':$('
').hide().insertBefore($(obj)).bind('fancybox-cleanup',function(){$(this).replaceWith(inner.children())}).bind('fancybox-cancel',function(){$(this).replaceWith(tmp.children())});$(obj).appendTo(tmp);fancybox_process_inline();break;case'image':busy=false;$.fancybox.showActivity();imgPreloader=new Image();imgPreloader.onerror=function(){fancybox_error()};imgPreloader.onload=function(){imgPreloader.onerror=null;imgPreloader.onload=null;fancybox_process_image()};imgPreloader.src=href;break;case'swf':str='';emb='';$.each(selectedOpts.swf,function(name,val){str+='';emb+=' '+name+'="'+val+'"'});str+='';tmp.html(str);fancybox_process_inline();break;case'ajax':selector=href.split('#',2);data=selectedOpts.ajax.data||{};if(selector.length>1){href=selector[0];if(typeof data=="string"){data+='&selector='+selector[1]}else{data.selector=selector[1]}}busy=false;$.fancybox.showActivity();ajaxLoader=$.ajax($.extend(selectedOpts.ajax,{url:href,data:data,error:fancybox_error,success:function(data,textStatus,XMLHttpRequest){if(ajaxLoader.status==200){tmp.html(data);fancybox_process_inline()}}}));break;case'iframe':$('').appendTo(tmp);fancybox_show();break}},fancybox_animate_loading=function(){if(!loading.is(':visible')){clearInterval(loadingTimer);return}$('div',loading).css('top',(loadingFrame*-40)+'px');loadingFrame=(loadingFrame+1)%12},fancybox_init=function(){if($("#fancybox-wrap").length){return}$('body').append(tmp=$('
'),loading=$('
'),overlay=$('
'),wrap=$('
'));if(!$.support.opacity){wrap.addClass('fancybox-ie');loading.addClass('fancybox-ie')}outer=$('
').append('
').appendTo(wrap);outer.append(inner=$('
'),close=$(''),nav_left=$(''),nav_right=$(''));close.click($.fancybox.close);loading.click($.fancybox.cancel);nav_left.click(function(e){e.preventDefault();$.fancybox.prev()});nav_right.click(function(e){e.preventDefault();$.fancybox.next()});if(isIE6){overlay.get(0).style.setExpression('height',"document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'");loading.get(0).style.setExpression('top',"(-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'");outer.prepend('')}};$.fn.fancybox=function(options){$(this).data('fancybox',$.extend({},options,($.metadata?$(this).metadata():{}))).unbind('click.fb').bind('click.fb',function(e){e.preventDefault();if(busy){return}busy=true;$(this).blur();selectedArray=[];selectedIndex=0;var rel=$(this).attr('rel')||'';if(!rel||rel==''||rel==='nofollow'){selectedArray.push(this)}else{selectedArray=$("a[rel="+rel+"], area[rel="+rel+"]");selectedIndex=selectedArray.index(this)}fancybox_start();return false});return this};$.fancybox=function(obj){if(busy){return}busy=true;var opts=typeof arguments[1]!=='undefined'?arguments[1]:{};selectedArray=[];selectedIndex=opts.index||0;if($.isArray(obj)){for(var i=0,j=obj.length;iselectedArray.length||selectedIndex<0){selectedIndex=0}fancybox_start()};$.fancybox.showActivity=function(){clearInterval(loadingTimer);loading.show();loadingTimer=setInterval(fancybox_animate_loading,66)};$.fancybox.hideActivity=function(){loading.hide()};$.fancybox.next=function(){return $.fancybox.pos(currentIndex+1)};$.fancybox.prev=function(){return $.fancybox.pos(currentIndex-1)};$.fancybox.pos=function(pos){if(busy){return}pos=parseInt(pos,10);if(pos>-1&¤tArray.length>pos){selectedIndex=pos;fancybox_start()}if(currentOpts.cyclic&¤tArray.length>1&&pos<0){selectedIndex=currentArray.length-1;fancybox_start()}if(currentOpts.cyclic&¤tArray.length>1&&pos>=currentArray.length){selectedIndex=0;fancybox_start()}return};$.fancybox.cancel=function(){if(busy){return}busy=true;$.event.trigger('fancybox-cancel');fancybox_abort();if(selectedOpts&&$.isFunction(selectedOpts.onCancel)){selectedOpts.onCancel(selectedArray,selectedIndex,selectedOpts)}busy=false};$.fancybox.close=function(){if(busy||wrap.is(':hidden')){return}busy=true;if(currentOpts&&$.isFunction(currentOpts.onCleanup)){if(currentOpts.onCleanup(currentArray,currentIndex,currentOpts)===false){busy=false;return}}fancybox_abort();$(close.add(nav_left).add(nav_right)).hide();$('#fancybox-title').remove();wrap.add(inner).add(overlay).unbind();$(window).unbind("resize.fb scroll.fb");$(document).unbind('keydown.fb');function _cleanup(){overlay.fadeOut('fast');wrap.hide();$.event.trigger('fancybox-cleanup');inner.empty();if($.isFunction(currentOpts.onClosed)){currentOpts.onClosed(currentArray,currentIndex,currentOpts)}currentArray=selectedOpts=[];currentIndex=selectedIndex=0;currentOpts=selectedOpts={};busy=false}inner.css('overflow','hidden');if(currentOpts.transitionOut=='elastic'){start_pos=fancybox_get_zoom_from();var pos=wrap.position();final_pos={top:pos.top,left:pos.left,width:wrap.width(),height:wrap.height()};if(currentOpts.opacity){final_pos.opacity=1}fx.prop=1;$(fx).animate({prop:0},{duration:currentOpts.speedOut,easing:currentOpts.easingOut,step:fancybox_draw,complete:_cleanup})}else{wrap.fadeOut(currentOpts.transitionOut=='none'?0:currentOpts.speedOut,_cleanup)}};$.fancybox.resize=function(){var c,h;if(busy||wrap.is(':hidden')){return}busy=true;c=inner.wrapInner("
").children();h=c.height();wrap.css({height:h+(currentOpts.padding*2)+titleh});inner.css({height:h});c.replaceWith(c.children());$.fancybox.center()};$.fancybox.center=function(){busy=true;var view=fancybox_get_viewport(),margin=currentOpts.margin,to={};to.top=view[3]+((view[1]-((wrap.height()-titleh)+(shadow*2)))*0.5);to.left=view[2]+((view[0]-(wrap.width()+(shadow*2)))*0.5);to.top=Math.max(view[3]+margin,to.top);to.left=Math.max(view[2]+margin,to.left);wrap.css(to);busy=false};$.fn.fancybox.defaults={padding:10,margin:20,opacity:false,modal:false,cyclic:false,scrolling:'auto',width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:'transparent'},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.3,overlayColor:'#666',titleShow:true,titlePosition:'outside',titleFormat:null,transitionIn:'fade',transitionOut:'fade',speedIn:300,speedOut:300,changeSpeed:300,changeFade:'fast',easingIn:'swing',easingOut:'swing',showCloseButton:true,showNavArrows:true,enableEscapeButton:true,onStart:null,onCancel:null,onComplete:null,onCleanup:null,onClosed:null};$(document).ready(function(){fancybox_init()})})(jQuery); +// removed arrow functionality from vanilla pack + diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index be025e2d7..c6282b1b8 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -601,3 +601,6 @@ h1.big_text { border: 1px solid #cccccc; border-bottom: none; padding: 3px 10px; } + +#fancybox-close:hover { + background-color: transparent; } diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 7f7125c49..206c122bd 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -756,3 +756,7 @@ h1.big_text :bottom none :padding 3px 10px + +#fancybox-close:hover + :background + :color transparent From 07138041b03e3ab674556284e2fe886264ccfd4b Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 23:35:57 -0400 Subject: [PATCH 096/292] Fixed album controller errors --- app/controllers/albums_controller.rb | 8 +- app/views/users/edit.html.haml | 4 +- config/locales/de.yml | 14 +- config/locales/defaults/es.yml | 264 +++++++++++++++ config/locales/{ => devise}/devise.de.yml | 0 config/locales/{ => devise}/devise.en.yml | 0 config/locales/{ => devise}/devise.es.yml | 0 config/locales/{ => devise}/devise.fr.yml | 0 config/locales/diaspora.en.yml | 115 ------- config/locales/diaspora.es.yml | 114 ------- config/locales/en.yml | 16 +- config/locales/es.yml | 379 +++++++--------------- 12 files changed, 406 insertions(+), 508 deletions(-) create mode 100644 config/locales/defaults/es.yml rename config/locales/{ => devise}/devise.de.yml (100%) rename config/locales/{ => devise}/devise.en.yml (100%) rename config/locales/{ => devise}/devise.es.yml (100%) rename config/locales/{ => devise}/devise.fr.yml (100%) delete mode 100644 config/locales/diaspora.en.yml delete mode 100644 config/locales/diaspora.es.yml diff --git a/app/controllers/albums_controller.rb b/app/controllers/albums_controller.rb index a063c0372..117c76afa 100644 --- a/app/controllers/albums_controller.rb +++ b/app/controllers/albums_controller.rb @@ -17,7 +17,7 @@ class AlbumsController < ApplicationController def create aspect = params[:album][:to] @album = current_user.post(:album, params[:album]) - flash[:notice] = I18n.t('albums.create.success', :name => @album.name) + flash[:notice] = I18n.t 'albums.create.success', :name => @album.name redirect_to :action => :show, :id => @album.id, :aspect => aspect end @@ -28,7 +28,7 @@ class AlbumsController < ApplicationController def destroy @album = Album.find_by_id params[:id] @album.destroy - flash[:notice] = I18n.t('albums.destroy.success', :name => @album.name) + flash[:notice] = I18n.t 'albums.destroy.success', :name => @album.name respond_with :location => albums_url end @@ -48,10 +48,10 @@ class AlbumsController < ApplicationController def update @album = Album.find_by_id params[:id] if @album.update_attributes params[:album] - flash[:notice] = I18n.t('albums.update.success', :name => @album.name) + flash[:notice] = I18n.t 'albums.update.success', :name => @album.name respond_with @album else - flash[:error] = I18n.t('albums.update.failure', :name => @album.name) + flash[:error] = I18n.t 'albums.update.failure', :name => @album.name render :action => :edit end end diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index 406f95499..42263b230 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -30,9 +30,9 @@ = link_to image_tag(photo.url(:thumb_medium)), "#" - else - You don't have any photos! Go to the + =t('.you_dont_have_any_photos') = link_to t('.albums'), albums_path(:aspect => 'all') - page to upload some. + =t('.page_to_upload_some') =will_paginate @photos diff --git a/config/locales/de.yml b/config/locales/de.yml index c67d87550..5b78d0e68 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -30,8 +30,6 @@ de: new_album: create: "erstellen" add_a_new_album: "Album hinzufügen" - create: - success: Du hast das Album %{name} erstellt. show: edit_album: "Album bearbeiten" albums: "Alben" @@ -43,14 +41,16 @@ de: are_you_sure: "Bist du sicher?" delete_album: "Album löschen" cancel: "Abbrechen" - update: - success: Album %{name} erfolgreich geändert. - failure: %{name} wurde nicht geändert. index: home: "Startseite" new_album: "Neues Album" + create: + success: "Du hast das Album %{name} erstellt." + update: + success: "Album %{name} erfolgreich geändert." + failure: "%{name} wurde nicht geändert." destroy: - success: Album %{name} gelöscht. + success: "Album %{name} gelöscht." aspects: index: photos: "Fotos" @@ -75,6 +75,8 @@ de: picture: "Bild" editing_profile: "Profil bearbeiten" albums: "Alben" + you_dont_have_any_photos: "#TODO" + page_to_upload_some: "#TODO" comments: comment: # this won't work in german at all. Needs more thorough I18n diff --git a/config/locales/defaults/es.yml b/config/locales/defaults/es.yml new file mode 100644 index 000000000..ad1db8794 --- /dev/null +++ b/config/locales/defaults/es.yml @@ -0,0 +1,264 @@ +# Spanish translations for Rails +# by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) + +"es": + # Action View + number: + # Used in number_with_delimiter() + # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' + format: + # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) + separator: "," + # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) + delimiter: "." + # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) + precision: 3 + # If set to true, precision will mean the number of significant digits instead + # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) + significant: false + # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) + strip_insignificant_zeros: false + + # Used in number_to_currency() + currency: + format: + # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) + format: "%n %u" + unit: "€" + # These three are to override number.format and are optional + separator: "," + delimiter: "." + precision: 2 + significant: false + strip_insignificant_zeros: false + + # Used in number_to_percentage() + percentage: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + # precision: + + # Used in number_to_precision() + precision: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + + # Used in number_to_human_size() + human: + format: + # These three are to override number.format and are optional + # separator: + delimiter: "" + precision: 1 + significant: true + strip_insignificant_zeros: true + # Used in number_to_human_size() + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in number_to_human() + decimal_units: + format: "%n %u" + # Decimal units output formatting + # By default we will only quantify some of the exponents + # but the commented ones might be defined or overridden + # by the user. + units: + # femto: Quadrillionth + # pico: Trillionth + # nano: Billionth + # micro: Millionth + # mili: Thousandth + # centi: Hundredth + # deci: Tenth + unit: "" + # ten: + # one: Ten + # other: Tens + # hundred: Hundred + thousand: "Mil" + million: "Millón" + billion: "Mil millones" + trillion: "Trillón" + quadrillion: "Cuatrillón" + + # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() + datetime: + distance_in_words: + half_a_minute: "medio minuto" + less_than_x_seconds: + one: "menos de 1 segundo" + other: "menos de %{count} segundos" + x_seconds: + one: "1 segundo" + other: "%{count} segundos" + less_than_x_minutes: + one: "menos de 1 minuto" + other: "menos de %{count} minutos" + x_minutes: + one: "1 minuto" + other: "%{count} minutos" + about_x_hours: + one: "alrededor de 1 hora" + other: "alrededor de %{count} horas" + x_days: + one: "1 día" + other: "%{count} días" + about_x_months: + one: "alrededor de 1 mes" + other: "alrededor de %{count} meses" + x_months: + one: "1 mes" + other: "%{count} meses" + about_x_years: + one: "alrededor de 1 año" + other: "alrededor de %{count} años" + over_x_years: + one: "más de 1 año" + other: "más de %{count} años" + almost_x_years: + one: "casi 1 año" + other: "casi %{count} años" + prompts: + year: "Año" + month: "Mes" + day: "Día" + hour: "Hora" + minute: "Minutos" + second: "Segundos" + + helpers: + select: + # Default value for :prompt => true in FormOptionsHelper + prompt: "Por favor seleccione" + + # Default translation keys for submit FormHelper + submit: + create: 'Guardar %{model}' + update: 'Actualizar %{model}' + submit: 'Guardar %{model}' + + # Attributes names common to most models + #attributes: + #created_at: "Created at" + #updated_at: "Updated at" + + # Active Record models configuration + activerecord: + errors: + messages: + taken: "ya está en uso" + record_invalid: "La validación falló: %{errors}" + # Append your own errors here or at the model/attributes scope. + + # You can define own errors for models or model attributes. + # The values :model, :attribute and :value are always available for interpolation. + # + # For example, + # models: + # user: + # blank: "This is a custom blank message for %{model}: %{attribute}" + # attributes: + # login: + # blank: "This is a custom blank message for User login" + # Will define custom blank validation message for User model and + # custom blank validation message for login attribute of User model. + #models: + + # Translate model names. Used in Model.human_name(). + #models: + # For example, + # user: "Dude" + # will translate User model name to "Dude" + + # Translate model attribute names. Used in Model.human_attribute_name(attribute). + #attributes: + # For example, + # user: + # login: "Handle" + # will translate User attribute "login" as "Handle" + + # Active Model + errors: + # The default format to use in full error messages. + format: "%{attribute} %{message}" + + template: + header: + one: "No se pudo guardar este/a %{model} porque se encontró 1 error" + other: "No se pudo guardar este/a %{model} porque se encontraron %{count} errores" + # The variable :count is also available + body: "Se encontraron problemas con los siguientes campos:" + + # The values :model, :attribute and :value are always available for interpolation + # The value :count is available when applicable. Can be used for pluralization. + messages: + inclusion: "no está incluido en la lista" + exclusion: "está reservado" + invalid: "no es válido" + confirmation: "no coincide con la confirmación" + accepted: "debe ser aceptado" + empty: "no puede estar vacío" + blank: "no puede estar en blanco" + too_long: "es demasiado largo (%{count} caracteres máximo)" + too_short: "es demasiado corto (%{count} caracteres mínimo)" + wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" + not_a_number: "no es un número" + greater_than: "debe ser mayor que %{count}" + greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" + equal_to: "debe ser igual a %{count}" + less_than: "debe ser menor que %{count}" + less_than_or_equal_to: "debe ser menor que o igual a %{count}" + odd: "debe ser impar" + even: "debe ser par" + + # Active Support + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%e/%m/%Y" + short: "%e de %b" + long: "%e de %B de %Y" + + day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] + abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] + abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic] + # Used in date_select and datime_select. + order: + - :day + - :month + - :year + + time: + formats: + default: "%A, %e de %B de %Y %H:%M:%S %z" + short: "%e de %b %H:%M" + long: "%e de %B de %Y %H:%M" + am: "am" + pm: "pm" + + # Used in array.to_sentence. + support: + array: + words_connector: ", " + two_words_connector: " y " + last_word_connector: ", y " \ No newline at end of file diff --git a/config/locales/devise.de.yml b/config/locales/devise/devise.de.yml similarity index 100% rename from config/locales/devise.de.yml rename to config/locales/devise/devise.de.yml diff --git a/config/locales/devise.en.yml b/config/locales/devise/devise.en.yml similarity index 100% rename from config/locales/devise.en.yml rename to config/locales/devise/devise.en.yml diff --git a/config/locales/devise.es.yml b/config/locales/devise/devise.es.yml similarity index 100% rename from config/locales/devise.es.yml rename to config/locales/devise/devise.es.yml diff --git a/config/locales/devise.fr.yml b/config/locales/devise/devise.fr.yml similarity index 100% rename from config/locales/devise.fr.yml rename to config/locales/devise/devise.fr.yml diff --git a/config/locales/diaspora.en.yml b/config/locales/diaspora.en.yml deleted file mode 100644 index d9046c00b..000000000 --- a/config/locales/diaspora.en.yml +++ /dev/null @@ -1,115 +0,0 @@ -# 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. - -en: - hello: "Hello world" - layouts: - application: - edit_profile: "edit profile" - logout: "logout" - shared: - aspect_nav: - all_aspects: "All Aspects" - manage: "Manage" - manage_your_aspects: "Manage your Aspects" - sub_header: - all_aspects: "All Aspects" - manage_aspects: "Manage Aspects" - publisher: - share: "Share" - aspect_friends: - add_friends: "add friends" - albums: - album: - you: "you" - new_album: - create: "create" - add_a_new_album: "Add a new album" - show: - edit_album: "Edit Album" - albums: "albums" - updated: "updated" - by: "by" - edit: - editing: "Editing" - updated: "updated" - are_you_sure: "Are you sure?" - delete_album: "Delete Album" - cancel: "Cancel" - index: - home: "home" - new_album: "New Album" - aspects: - index: - photos: "photos" - show: - photos: "photos" - manage: - add_a_new_aspect: "Add a new aspect" - add_a_new_friend: "Add a new friend" - show: "Show" - update_aspects: "Update Aspects" - requests: "Requests" - ignore_remove: "Ignore/Remove" - new_aspect: - create: "Create" - users: - edit: - cancel: "Cancel" - update_profile: "Update Profile" - home: "Home" - diaspora_username: "DIASPORA USERNAME" - info: "Info" - picture: "Picture" - editing_profile: "Editing profile" - albums: "Albums" - comments: - comment: - ago: "ago" - new_comment: - comment: "Comment" - photos: - show: - prev: "prev" - full_size: "full size" - next: "next" - edit_photo: "Edit Photo" - delete_photo: "Delete Photo" - are_you_sure: "Are you sure?" - comments: "comments" - edit: - editing: "Editing" - are_you_sure: "Are you sure?" - delete_photo: "Delete Photo" - photo: - show_comments: "show comments" - new: - new_photo: "New Photo" - back_to_list: "Back to List" - post_it: "post it!" - registrations: - new: - sign_up: "Sign up" - status_messages: - new_status_message: - tell_me_something_good: "tell me something good" - oh_yeah: "oh yeah!" - status_message: - show_comments: "show comments" - delete: "Delete" - are_you_sure: "Are you sure?" - show: - status_message: "Status Message" - comments: "comments" - are_you_sure: "Are you sure?" - destroy: "Destroy" - view_all: "View All" - message: "Message" - owner: "Owner" - - diff --git a/config/locales/diaspora.es.yml b/config/locales/diaspora.es.yml deleted file mode 100644 index f77e6f54a..000000000 --- a/config/locales/diaspora.es.yml +++ /dev/null @@ -1,114 +0,0 @@ -# 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. - - -es: - hello: "Hola Mundo" - layouts: - application: - edit_profile: "editar perfil" - logout: "desloguear" - shared: - aspect_nav: - all_aspects: "All Aspects" - manage: "Manejar" - manage_your_aspects: "Manage your Aspects" - sub_header: - all_aspects: "All Aspects" - manage_aspects: "Manage Aspects" - publisher: - share: "Compartir" - aspect_friends: - add_friends: "Añade amigos" - albums: - album: - you: "usted" - new_album: - create: "Crear" - add_a_new_album: "Añade un nuevo álbum" - show: - edit_album: "Editar Álbum" - albums: "álbumes" - updated: "actualizar" - by: "por" - edit: - editing: "Editando" - updated: "actualizado" - are_you_sure: "Esta seguro?" - delete_album: "Eliminar Album" - cancel: "Cancelar" - index: - home: "home" - new_album: "Nuevo Album" - aspects: - index: - photos: "fotos" - show: - photos: "fotos" - manage: - add_a_new_aspect: "Añadir nuevo aspecto" - add_a_new_friend: "Añadir nuevo amigo" - show: "Mostrar" - update_aspects: "Actualizar Aspectos" - requests: "Requests" - ignore_remove: "Ignorar/Remover" - new_aspect: - create: "Crear" - users: - edit: - cancel: "Cancelar" - update_profile: "Actualizar Perfil" - home: "Home" - diaspora_username: "USUARIO DE DIASPORA" - info: "Info" - picture: "Picture" - editing_profile: "Editando perfil" - albums: "Álbums" - comments: - comment: - ago: "atras" - new_comment: - comment: "Commentario" - photos: - show: - prev: "prev" - full_size: "tamaño actual" - next: "prox" - edit_photo: "Editar Foto" - delete_photo: "Eliminar Foto" - are_you_sure: "Esta seguro?" - comments: "comentarios" - edit: - editing: "Editando" - are_you_sure: "Esta seguro?" - delete_photo: "Eliminar Foto" - photo: - show_comments: "mostrar comentarios" - new: - new_photo: "Nueva Foto" - back_to_list: "Devuelta a la lista" - post_it: "post it!" - registrations: - new: - sign_up: "Registrar" - status_messages: - new_status_message: - tell_me_something_good: "dime algo bueno" - oh_yeah: "oh yeah!" - status_message: - show_comments: "mostrar comentarios" - delete: "Eliminar" - are_you_sure: "Esta seguro?" - show: - status_message: "Mensaje de status" - comments: "comentarios" - are_you_sure: "Esta seguro?" - destroy: "Destruir" - view_all: "Ver Todos" - message: "Mensaje" - owner: "Dueño" \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 87a96b009..ff512afc7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -30,8 +30,6 @@ en: new_album: create: "create" add_a_new_album: "Add a new album" - create: - success: You've created an album called %{name}. show: edit_album: "Edit Album" albums: "albums" @@ -43,15 +41,17 @@ en: are_you_sure: "Are you sure?" delete_album: "Delete Album" cancel: "Cancel" - update: - success: Album %{name} successfully edited. - failure: Failed to edit album %{name}. index: home: "home" new_album: "New Album" + create: + success: "You've created an album called %{name}." + update: + success: "Album %{name} successfully edited." + failure: "Failed to edit album %{name}." destroy: - success: Album %{name} deleted. - aspects: + success: "Album %{name} deleted." + aspects: index: photos: "photos" show: @@ -75,6 +75,8 @@ en: picture: "Picture" editing_profile: "Editing profile" albums: "Albums" + you_dont_have_any_photos: "You don't have any photos! Go to the" + page_to_upload_some: "page to upload some." comments: comment: ago: "ago" diff --git a/config/locales/es.yml b/config/locales/es.yml index ad1db8794..b56353981 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,264 +1,123 @@ -# Spanish translations for Rails -# by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. -"es": - # Action View - number: - # Used in number_with_delimiter() - # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' - format: - # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) - separator: "," - # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three) - delimiter: "." - # Number of decimals, behind the separator (1 with a precision of 2 gives: 1.00) - precision: 3 - # If set to true, precision will mean the number of significant digits instead - # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) - significant: false - # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) - strip_insignificant_zeros: false - # Used in number_to_currency() - currency: - format: - # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) - format: "%n %u" - unit: "€" - # These three are to override number.format and are optional - separator: "," - delimiter: "." - precision: 2 - significant: false - strip_insignificant_zeros: false +# 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. - # Used in number_to_percentage() - percentage: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: - # Used in number_to_precision() - precision: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - # precision: - # significant: false - # strip_insignificant_zeros: false - - # Used in number_to_human_size() - human: - format: - # These three are to override number.format and are optional - # separator: - delimiter: "" - precision: 1 - significant: true - strip_insignificant_zeros: true - # Used in number_to_human_size() - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - # Used in number_to_human() - decimal_units: - format: "%n %u" - # Decimal units output formatting - # By default we will only quantify some of the exponents - # but the commented ones might be defined or overridden - # by the user. - units: - # femto: Quadrillionth - # pico: Trillionth - # nano: Billionth - # micro: Millionth - # mili: Thousandth - # centi: Hundredth - # deci: Tenth - unit: "" - # ten: - # one: Ten - # other: Tens - # hundred: Hundred - thousand: "Mil" - million: "Millón" - billion: "Mil millones" - trillion: "Trillón" - quadrillion: "Cuatrillón" - - # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words() - datetime: - distance_in_words: - half_a_minute: "medio minuto" - less_than_x_seconds: - one: "menos de 1 segundo" - other: "menos de %{count} segundos" - x_seconds: - one: "1 segundo" - other: "%{count} segundos" - less_than_x_minutes: - one: "menos de 1 minuto" - other: "menos de %{count} minutos" - x_minutes: - one: "1 minuto" - other: "%{count} minutos" - about_x_hours: - one: "alrededor de 1 hora" - other: "alrededor de %{count} horas" - x_days: - one: "1 día" - other: "%{count} días" - about_x_months: - one: "alrededor de 1 mes" - other: "alrededor de %{count} meses" - x_months: - one: "1 mes" - other: "%{count} meses" - about_x_years: - one: "alrededor de 1 año" - other: "alrededor de %{count} años" - over_x_years: - one: "más de 1 año" - other: "más de %{count} años" - almost_x_years: - one: "casi 1 año" - other: "casi %{count} años" - prompts: - year: "Año" - month: "Mes" - day: "Día" - hour: "Hora" - minute: "Minutos" - second: "Segundos" - - helpers: - select: - # Default value for :prompt => true in FormOptionsHelper - prompt: "Por favor seleccione" - - # Default translation keys for submit FormHelper - submit: - create: 'Guardar %{model}' - update: 'Actualizar %{model}' - submit: 'Guardar %{model}' - - # Attributes names common to most models - #attributes: - #created_at: "Created at" - #updated_at: "Updated at" - - # Active Record models configuration - activerecord: - errors: - messages: - taken: "ya está en uso" - record_invalid: "La validación falló: %{errors}" - # Append your own errors here or at the model/attributes scope. - - # You can define own errors for models or model attributes. - # The values :model, :attribute and :value are always available for interpolation. - # - # For example, - # models: - # user: - # blank: "This is a custom blank message for %{model}: %{attribute}" - # attributes: - # login: - # blank: "This is a custom blank message for User login" - # Will define custom blank validation message for User model and - # custom blank validation message for login attribute of User model. - #models: - - # Translate model names. Used in Model.human_name(). - #models: - # For example, - # user: "Dude" - # will translate User model name to "Dude" - - # Translate model attribute names. Used in Model.human_attribute_name(attribute). - #attributes: - # For example, - # user: - # login: "Handle" - # will translate User attribute "login" as "Handle" - - # Active Model - errors: - # The default format to use in full error messages. - format: "%{attribute} %{message}" - - template: - header: - one: "No se pudo guardar este/a %{model} porque se encontró 1 error" - other: "No se pudo guardar este/a %{model} porque se encontraron %{count} errores" - # The variable :count is also available - body: "Se encontraron problemas con los siguientes campos:" - - # The values :model, :attribute and :value are always available for interpolation - # The value :count is available when applicable. Can be used for pluralization. - messages: - inclusion: "no está incluido en la lista" - exclusion: "está reservado" - invalid: "no es válido" - confirmation: "no coincide con la confirmación" - accepted: "debe ser aceptado" - empty: "no puede estar vacío" - blank: "no puede estar en blanco" - too_long: "es demasiado largo (%{count} caracteres máximo)" - too_short: "es demasiado corto (%{count} caracteres mínimo)" - wrong_length: "no tiene la longitud correcta (%{count} caracteres exactos)" - not_a_number: "no es un número" - greater_than: "debe ser mayor que %{count}" - greater_than_or_equal_to: "debe ser mayor que o igual a %{count}" - equal_to: "debe ser igual a %{count}" - less_than: "debe ser menor que %{count}" - less_than_or_equal_to: "debe ser menor que o igual a %{count}" - odd: "debe ser impar" - even: "debe ser par" - - # Active Support - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%e/%m/%Y" - short: "%e de %b" - long: "%e de %B de %Y" - - day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado] - abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre] - abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic] - # Used in date_select and datime_select. - order: - - :day - - :month - - :year - - time: - formats: - default: "%A, %e de %B de %Y %H:%M:%S %z" - short: "%e de %b %H:%M" - long: "%e de %B de %Y %H:%M" - am: "am" - pm: "pm" - - # Used in array.to_sentence. - support: - array: - words_connector: ", " - two_words_connector: " y " - last_word_connector: ", y " \ No newline at end of file +es: + hello: "Hola Mundo" + layouts: + application: + edit_profile: "editar perfil" + logout: "desloguear" + shared: + aspect_nav: + all_aspects: "Todo los Aspectos" + manage: "Manejar" + manage_your_aspects: "Maneja tus Aspectos" + sub_header: + all_aspects: "Todo los Aspectos" + manage_aspects: "Manejar Aspectos" + publisher: + share: "Compartir" + aspect_friends: + add_friends: "Añade amigos" + albums: + album: + you: "usted" + new_album: + create: "Crear" + add_a_new_album: "Añade un nuevo álbum" + show: + edit_album: "Editar Álbum" + albums: "álbumes" + updated: "actualizar" + by: "por" + edit: + editing: "Editando" + updated: "actualizado" + are_you_sure: "Esta seguro?" + delete_album: "Eliminar Album" + cancel: "Cancelar" + index: + home: "home" + new_album: "Nuevo Album" + create: + success: "Creo el album llamado %{name}." + update: + success: "Album %{name} fue exitosamente editado." + failure: "Fallo el editar el album %{name}." + destroy: + success: "Album %{name} fue eliminado." + aspects: + index: + photos: "fotos" + show: + photos: "fotos" + manage: + add_a_new_aspect: "Añadir nuevo aspecto" + add_a_new_friend: "Añadir nuevo amigo" + show: "Mostrar" + update_aspects: "Actualizar Aspectos" + requests: "Requests" + ignore_remove: "Ignorar/Remover" + new_aspect: + create: "Crear" + users: + edit: + cancel: "Cancelar" + update_profile: "Actualizar Perfil" + home: "Home" + diaspora_username: "USUARIO DE DIASPORA" + info: "Info" + picture: "Picture" + editing_profile: "Editando perfil" + albums: "Álbums" + you_dont_have_any_photos: "No tienes ninguna foto! ve a la pagina" + page_to_upload_some: "para subir algunas" + comments: + comment: + ago: "atras" + new_comment: + comment: "Commentario" + photos: + show: + prev: "prev" + full_size: "tamaño actual" + next: "prox" + edit_photo: "Editar Foto" + delete_photo: "Eliminar Foto" + are_you_sure: "Esta seguro?" + comments: "comentarios" + edit: + editing: "Editando" + are_you_sure: "Esta seguro?" + delete_photo: "Eliminar Foto" + photo: + show_comments: "mostrar comentarios" + new: + new_photo: "Nueva Foto" + back_to_list: "Devuelta a la lista" + post_it: "post it!" + registrations: + new: + sign_up: "Registrate" + status_messages: + new_status_message: + tell_me_something_good: "dime algo bueno" + oh_yeah: "oh yeah!" + status_message: + show_comments: "mostrar comentarios" + delete: "Eliminar" + are_you_sure: "Esta seguro?" + show: + status_message: "Mensaje de status" + comments: "comentarios" + are_you_sure: "Esta seguro?" + destroy: "Destruir" + view_all: "Ver Todos" + message: "Mensaje" + owner: "Dueño" \ No newline at end of file From c520fb71a71d09a9a8d9672aa1b5cb7735c1cac2 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 16 Sep 2010 21:34:15 -0700 Subject: [PATCH 097/292] Moved socket out to separate process. Multiple thins should now be possible --- Gemfile | 5 ++++- Gemfile.lock | 10 ++++++++++ app/controllers/sockets_controller.rb | 2 +- app/models/post.rb | 1 + config/app_config.yml | 1 + config/initializers/socket.rb | 26 -------------------------- lib/diaspora/websocket.rb | 6 +++++- 7 files changed, 22 insertions(+), 29 deletions(-) delete mode 100644 config/initializers/socket.rb diff --git a/Gemfile b/Gemfile index 77627808d..cc92bec3d 100644 --- a/Gemfile +++ b/Gemfile @@ -28,9 +28,12 @@ gem 'redfinger', :git => 'git://github.com/rsofaer/redfinger.git' #EventMachine gem 'em-http-request',:git => 'git://github.com/igrigorik/em-http-request.git', :require => 'em-http' -gem 'em-websocket' gem 'thin' +#Websocket +gem 'em-websocket' +gem 'magent', :git => 'http://github.com/dcu/magent.git' + #File uploading gem 'carrierwave', :git => 'git://github.com/rsofaer/carrierwave.git' , :branch => 'master' #Untested mongomapper branch gem 'mini_magick' diff --git a/Gemfile.lock b/Gemfile.lock index 007810850..dd181b320 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -47,6 +47,14 @@ GIT bcrypt-ruby (~> 2.1.2) warden (~> 0.10.7) +GIT + remote: http://github.com/dcu/magent.git + revision: 06513f3dac812469a55f2e365c349af4d2abc92a + specs: + magent (0.4.2) + mongo (>= 0.1.0) + uuidtools (>= 2.0.0) + GIT remote: http://github.com/jnunemaker/mongomapper.git revision: 931dab779011aa7acf60c1a4c7ad19e1ba838345 @@ -213,6 +221,7 @@ GEM 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) @@ -242,6 +251,7 @@ DEPENDENCIES haml jnunemaker-validatable (= 1.8.4)! json + magent! mini_magick mocha mongo_mapper (= 0.8.4)! diff --git a/app/controllers/sockets_controller.rb b/app/controllers/sockets_controller.rb index 2852a7160..9b90ea831 100644 --- a/app/controllers/sockets_controller.rb +++ b/app/controllers/sockets_controller.rb @@ -14,7 +14,7 @@ class SocketsController < ApplicationController def outgoing(uid,object,opts={}) @_request = ActionDispatch::Request.new({}) - Diaspora::WebSocket.push_to_user(uid, action_hash(uid, object, opts)) + Diaspora::WebSocket.queue_to_user(uid, action_hash(uid, object, opts)) end end diff --git a/app/models/post.rb b/app/models/post.rb index e2dd53d3d..9f7c3ff27 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -4,6 +4,7 @@ class Post + require 'lib/diaspora/websocket' require 'lib/encryptable' include MongoMapper::Document include ApplicationHelper diff --git a/config/app_config.yml b/config/app_config.yml index 0a206c366..a138424ee 100644 --- a/config/app_config.yml +++ b/config/app_config.yml @@ -8,6 +8,7 @@ development: debug: false socket_debug : false socket_port: 8080 + socket_collection_name: 'websocket' pubsub_server: 'https://pubsubhubbub.appspot.com/' test: diff --git a/config/initializers/socket.rb b/config/initializers/socket.rb deleted file mode 100644 index 0b1035001..000000000 --- a/config/initializers/socket.rb +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3. See -# the COPYRIGHT file. - - -require 'em-websocket' -require 'eventmachine' -require 'lib/diaspora/websocket' - EM.next_tick { - Diaspora::WebSocket.initialize_channels - - EventMachine::WebSocket.start( - :host => "0.0.0.0", - :port => APP_CONFIG[:socket_port], - :debug =>APP_CONFIG[:socket_debug]) do |ws| - ws.onopen { - - sid = Diaspora::WebSocket.subscribe(ws.request['Path'].gsub('/',''), ws) - - ws.onmessage { |msg| SocketsController.new.incoming(msg) } - - ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) } - } - end - } - diff --git a/lib/diaspora/websocket.rb b/lib/diaspora/websocket.rb index fc79559f6..687bd2b7c 100644 --- a/lib/diaspora/websocket.rb +++ b/lib/diaspora/websocket.rb @@ -6,6 +6,11 @@ module Diaspora module WebSocket + def self.queue_to_user(uid, data) + channel = Magent::GenericChannel.new('websocket') + channel.enqueue({:uid => uid, :data => data}) + end + def self.initialize_channels @channels = {} end @@ -44,6 +49,5 @@ module Diaspora def unsocket_from_uid(id, opts={}) SocketsController.new.outgoing(id, Retraction.for(self), opts) end - end end From 7c02200a67f2257f5c35beceaa153b05a501bc4c Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 16 Sep 2010 21:42:16 -0700 Subject: [PATCH 098/292] Finish moving out websocket server, add task to start it --- config/deploy.rb | 5 +++++ script/websocket_server.rb | 40 ++++++++++++++++++++++++++++++++++++++ spec/lib/websocket_spec.rb | 24 +++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 script/websocket_server.rb create mode 100644 spec/lib/websocket_spec.rb diff --git a/config/deploy.rb b/config/deploy.rb index b4870f94d..805eadf4d 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -58,6 +58,11 @@ namespace :deploy do task :start do start_mongo start_thin + start_websocket + end + + task :start_websocket do + run("cd #{current_path} && bundle exec ruby ./script/websocket_server.rb > /dev/null&") end task :start_mongo do diff --git a/script/websocket_server.rb b/script/websocket_server.rb new file mode 100644 index 000000000..8c466ca77 --- /dev/null +++ b/script/websocket_server.rb @@ -0,0 +1,40 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + +require File.dirname(__FILE__) + '/../config/environment' +require File.dirname(__FILE__) + '/../lib/diaspora/websocket' + +CHANNEL = Magent::GenericChannel.new('websocket') +def process_message + if CHANNEL.queue_count > 0 + message = CHANNEL.dequeue + if message + Diaspora::WebSocket.push_to_user(message['uid'], message['data']) + end + EM.next_tick{ process_message} + else + EM::Timer.new(1){process_message} + end + +end + + EM.run { + Diaspora::WebSocket.initialize_channels + + EventMachine::WebSocket.start( + :host => "0.0.0.0", + :port => APP_CONFIG[:socket_port], + :debug =>APP_CONFIG[:socket_debug]) do |ws| + ws.onopen { + + sid = Diaspora::WebSocket.subscribe(ws.request['Path'].gsub('/',''), ws) + + ws.onmessage { |msg| SocketsController.new.incoming(msg) } + + ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) } + } + end + process_message + } + diff --git a/spec/lib/websocket_spec.rb b/spec/lib/websocket_spec.rb new file mode 100644 index 000000000..233f7be48 --- /dev/null +++ b/spec/lib/websocket_spec.rb @@ -0,0 +1,24 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + +require File.dirname(__FILE__) + '/../spec_helper' + +describe Diaspora::WebSocket do + before do + @user = Factory.create(:user) + @aspect = @user.aspect(:name => "losers") + @post = @user.build_post(:status_message, :message => "hey", :to => @aspect.id) + end + + it 'should queue a job' do + Diaspora::WebSocket.should_receive(:queue_to_user) + @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) + end + + it 'The queued job should reach Magent' do + Magent.should_receive(:push) + @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) + end + +end From c6cdf65fc8879022e7d0e70f39e1790bc4f84911 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 10:26:57 -0400 Subject: [PATCH 099/292] updated local configuration --- config/initializers/locale.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/locale.rb b/config/initializers/locale.rb index 42f34a3a7..dd607a273 100644 --- a/config/initializers/locale.rb +++ b/config/initializers/locale.rb @@ -4,5 +4,5 @@ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. -I18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] +I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] I18n.default_locale = :en \ No newline at end of file From 375f4f680802240c22e8c884234b10d8f41cf0e0 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 10:43:59 -0400 Subject: [PATCH 100/292] added more translations missing on views --- app/controllers/aspects_controller.rb | 2 +- app/views/aspects/_new_aspect.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index ab144ad12..82c35b36c 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -16,7 +16,7 @@ class AspectsController < ApplicationController def create @aspect = current_user.aspect params[:aspect] - flash[:notice] = "Click on the plus on the left side to tell Diaspora who can see your new aspect." + flash[:notice] = I18n.t('aspects.create.success') respond_with :location => aspects_manage_path end diff --git a/app/views/aspects/_new_aspect.haml b/app/views/aspects/_new_aspect.haml index 68ce56806..9f0b662dd 100644 --- a/app/views/aspects/_new_aspect.haml +++ b/app/views/aspects/_new_aspect.haml @@ -3,7 +3,7 @@ -# the COPYRIGHT file. -%h1 Add a new aspect +%h1=t('.add_a_new_aspect') = form_for Aspect.new do |f| = f.error_messages %p From 1384b65565a6461b8329ba114926469ed1cf0258 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 10:46:03 -0400 Subject: [PATCH 101/292] added more translations missing on views --- config/locales/de.yml | 1 + config/locales/en.yml | 3 +++ config/locales/es.yml | 5 ++++- config/locales/fr.yml | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index 5b78d0e68..f7a4f0535 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -64,6 +64,7 @@ de: requests: "Anfragen" ignore_remove: "Ignorieren/Entfernen" new_aspect: + add_a_new_aspect: "Neuen Aspekt erstellen" create: "Erstellen" users: edit: diff --git a/config/locales/en.yml b/config/locales/en.yml index ff512afc7..b1b7e98a7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -64,7 +64,10 @@ en: requests: "Requests" ignore_remove: "Ignore/Remove" new_aspect: + add_a_new_aspect: "Add a new aspect" create: "Create" + create: + success:"Click on the plus on the left side to tell Diaspora who can see your new aspect." users: edit: cancel: "Cancel" diff --git a/config/locales/es.yml b/config/locales/es.yml index b56353981..03fefdca4 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -48,7 +48,7 @@ es: create: success: "Creo el album llamado %{name}." update: - success: "Album %{name} fue exitosamente editado." + success: "Album %{name} fue editado exitosamente." failure: "Fallo el editar el album %{name}." destroy: success: "Album %{name} fue eliminado." @@ -65,7 +65,10 @@ es: requests: "Requests" ignore_remove: "Ignorar/Remover" new_aspect: + add_a_new_aspect: "Añadir nuevo aspecto" create: "Crear" + create: + success:"Pulsa en el signo de mas a la izquierda para escojer quien puede ver su nuevo aspecto." users: edit: cancel: "Cancelar" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0054c6a33..052819b65 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -58,6 +58,7 @@ fr: requests: "Requêtes" ignore_remove: "Ignorer/Supprimer" new_aspect: + add_a_new_aspect: "Ajouter un nouvel aspect" create: "Créer" users: edit: From c6b34be63deb801fbdd4967b4eb07143070d6d8a Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 11:27:08 -0400 Subject: [PATCH 102/292] Added people views translations --- app/views/people/index.html.haml | 12 ++++++------ app/views/people/new.html.haml | 4 ++-- app/views/people/show.html.haml | 10 +++++----- config/locales/de.yml | 19 +++++++++++++++++-- config/locales/en.yml | 19 +++++++++++++++++-- config/locales/es.yml | 16 +++++++++++++++- config/locales/fr.yml | 17 +++++++++++++++++ 7 files changed, 79 insertions(+), 18 deletions(-) diff --git a/app/views/people/index.html.haml b/app/views/people/index.html.haml index c18ec5d0a..57e46d6df 100644 --- a/app/views/people/index.html.haml +++ b/app/views/people/index.html.haml @@ -17,8 +17,8 @@ = (@people.count).to_s + search_or_index %table %tr - %th real name - %th diaspora handle + %th=t('.real_name') + %th=t('.diaspora_handle') %th url - for person in @people %tr @@ -34,18 +34,18 @@ - elsif person.id == current_user.person.id %td - %td that's you! + %td=t('.thats_you') -elsif current_user.pending_requests.find_by_person_id(person.id) %td - %td ^-you have a friend request from this person + %td="^-#{t('.you_have_a_friend_request_from_this_person')}" -elsif current_user.pending_requests.find_by_url(person.receive_url) %td - %td friend request pending + %td=t('.friend_request_pending') -else %td %td = form_for Request.new do |f| = f.select(:aspect_id, @aspects_dropdown_array) = f.hidden_field :destination_url, :value => person.diaspora_handle - = f.submit "add friend" + = f.submit t('.add_friend') = will_paginate @people diff --git a/app/views/people/new.html.haml b/app/views/people/new.html.haml index b2203eb3f..25821ed37 100644 --- a/app/views/people/new.html.haml +++ b/app/views/people/new.html.haml @@ -3,7 +3,7 @@ -# the COPYRIGHT file. -- title "New Person" +- title=t('.new_person') = form_for @person do |f| = f.error_messages @@ -29,4 +29,4 @@ = f.submit -%p= link_to "Back to List", people_path +%p= link_to t('.back_to_list'), people_path diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index 4f76f18cf..93705f15c 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -13,19 +13,19 @@ %ul -unless @posts.first.nil? %li - %i= "last seen: #{how_long_ago(@posts.first)}" + %i= t(".last_seen",:how_long_ago => how_long_ago(@posts.first)) - if @person != current_user.person && current_user.friends.include?(@person) %li - %i= "friends since: #{how_long_ago(@person)}" + %i= t(".friends_since",:how_long_ago => how_long_ago(@person)) %li = form_tag move_friend_path = select :to, :to, @aspects_dropdown_array, :selected => @aspects_with_person.first.id = hidden_field_tag :from, :from, :value => @aspects_with_person.first.id = hidden_field_tag :friend_id, :friend_id, :value => @person.id - = submit_tag "save" + = submit_tag t('.save') - if @person != current_user.person && current_user.friends.include?(@person) - = link_to 'remove friend', @person, :confirm => 'Are you sure?', :method => :delete, :class => "button" + = link_to t('.remove_friend'), @person, :confirm => t('.are_you_sure'), :method => :delete, :class => "button" .span-20.last @@ -36,4 +36,4 @@ = render type_partial(post), :post => post unless post.class == Album = will_paginate @posts - else - %h3 no posts to display! + %h3=t('no posts to display!') diff --git a/config/locales/de.yml b/config/locales/de.yml index f7a4f0535..e44d4b788 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -122,5 +122,20 @@ de: view_all: "Alle anzeigen" message: "Nachricht" owner: "Besitzer" - - + people: + index: + add_friend: "add friend" + real_name: "real name" + diaspora_handle: "diaspora handle" + thats_you: "that's you!" + friend_request_pending: "friend request pending" + you_have_a_friend_request_from_this_person: "you have a friend request from this person" + new: + new_person: "New Person" + back_to_list: "Back to List" + show: + last_seen: "last seen: %{how_long_ago}" + friends_since: "friends since: %{how_long_ago}" + save: "save" + are_you_sure: "Are you sure?" + remove_friend: "remove friend" \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index b1b7e98a7..e68a27763 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -123,5 +123,20 @@ en: view_all: "View All" message: "Message" owner: "Owner" - - + people: + index: + add_friend: "add friend" + real_name: "real name" + diaspora_handle: "diaspora handle" + thats_you: "that's you!" + friend_request_pending: "friend request pending" + you_have_a_friend_request_from_this_person: "you have a friend request from this person" + new: + new_person: "New Person" + back_to_list: "Back to List" + show: + last_seen: "last seen: %{how_long_ago}" + friends_since: "friends since: %{how_long_ago}" + save: "save" + are_you_sure: "Are you sure?" + remove_friend: "remove friend" \ No newline at end of file diff --git a/config/locales/es.yml b/config/locales/es.yml index 03fefdca4..cb8bef6cd 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -123,4 +123,18 @@ es: destroy: "Destruir" view_all: "Ver Todos" message: "Mensaje" - owner: "Dueño" \ No newline at end of file + owner: "Dueño" + people: + index: + add_friend: "añadir amigo" + real_name: "nombre real" + diaspora_handle: "usuario en diaspora" + thats_you: "ese eres tu!" + friend_request_pending: "friend request pending" + you_have_a_friend_request_from_this_person: "you have a friend request from this person" + show: + last_seen: "ultima vez visto: %{how_long_ago}" + friends_since: "amigos desde: %{how_long_ago}" + save: "guardar" + are_you_sure: "Esta seguro?" + remove_friend: "remover amigo" \ No newline at end of file diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 052819b65..760993177 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -113,3 +113,20 @@ fr: view_all: "Tout voir" message: "Message" owner: "Propriétaire" + people: + index: + add_friend: "add friend" + real_name: "real name" + diaspora_handle: "diaspora handle" + thats_you: "that's you!" + friend_request_pending: "friend request pending" + you_have_a_friend_request_from_this_person: "you have a friend request from this person" + new: + new_person: "New Person" + back_to_list: "Back to List" + show: + last_seen: "last seen: %{how_long_ago}" + friends_since: "friends since: %{how_long_ago}" + save: "save" + are_you_sure: "Are you sure?" + remove_friend: "remove friend" \ No newline at end of file From 271925a7f61e742f686274bf60028df83fe8f742 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 11:34:45 -0400 Subject: [PATCH 103/292] added photo view translations --- app/views/photos/_photo.haml | 2 +- config/locales/de.yml | 1 + config/locales/en.yml | 1 + config/locales/es.yml | 1 + config/locales/fr.yml | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/views/photos/_photo.haml b/app/views/photos/_photo.haml index 47ddfef3e..ae8829c61 100644 --- a/app/views/photos/_photo.haml +++ b/app/views/photos/_photo.haml @@ -11,7 +11,7 @@ %span.from = link_to post.person.real_name, post.person %b - posted a new photo to + =t('.posted_a_new_photo_to') = link_to post.album.name, object_path(post.album) %br diff --git a/config/locales/de.yml b/config/locales/de.yml index e44d4b788..76f0e7e04 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -99,6 +99,7 @@ de: delete_photo: "Foto löschen" photo: show_comments: "Kommentare anzeigen" + posted_a_new_photo_to: "posted a new photo to" new: new_photo: "Foto erstellen" back_to_list: "Zurück zur Liste" diff --git a/config/locales/en.yml b/config/locales/en.yml index e68a27763..867b120e0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -100,6 +100,7 @@ en: delete_photo: "Delete Photo" photo: show_comments: "show comments" + posted_a_new_photo_to: "posted a new photo to" new: new_photo: "New Photo" back_to_list: "Back to List" diff --git a/config/locales/es.yml b/config/locales/es.yml index cb8bef6cd..09eba0837 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -101,6 +101,7 @@ es: delete_photo: "Eliminar Foto" photo: show_comments: "mostrar comentarios" + posted_a_new_photo_to: "a puesto una nueva foto en" new: new_photo: "Nueva Foto" back_to_list: "Devuelta a la lista" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 760993177..75be18e23 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -90,6 +90,7 @@ fr: delete_photo: "Supprimer la photo" photo: show_comments: "Montrer les commentaires" + posted_a_new_photo_to: "posted a new photo to" new: new_photo: "Nouvelle photo" back_to_list: "Retour à la liste" From 5c48e81f6785e30978ef536173a2f3959cba83bd Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 09:48:01 -0700 Subject: [PATCH 104/292] Give a little more feedback on the websocket server --- script/websocket_server.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/script/websocket_server.rb b/script/websocket_server.rb index 8c466ca77..7dee8d35c 100644 --- a/script/websocket_server.rb +++ b/script/websocket_server.rb @@ -35,6 +35,7 @@ end ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) } } end + puts "Websocket server started." process_message } From 99ad001d28bcd5875af4dbfe356641a9f6524b1d Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 09:52:31 -0700 Subject: [PATCH 105/292] Fix websocket spec, take out puts in by_webfinger --- app/models/person.rb | 2 +- spec/lib/websocket_spec.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 48e8b0816..ac4a5dfa7 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -85,7 +85,7 @@ class Person local_person elsif !identifier.include?("localhost") && !opts[:local] begin - puts "begin finger" + Rails.logger.info("Webfingering #{identifier}") f = Redfinger.finger(identifier) rescue SocketError => e raise "Diaspora server for #{identifier} not found" if e.message =~ /Name or service not known/ diff --git a/spec/lib/websocket_spec.rb b/spec/lib/websocket_spec.rb index 233f7be48..762a725b5 100644 --- a/spec/lib/websocket_spec.rb +++ b/spec/lib/websocket_spec.rb @@ -17,8 +17,9 @@ describe Diaspora::WebSocket do end it 'The queued job should reach Magent' do - Magent.should_receive(:push) @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) + channel = Magent::GenericChannel.new('websocket') + channel.message_count.should == 1 end end From 511a4487de43e8e56b4d871d9508a605b7cbf866 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 10:44:15 -0700 Subject: [PATCH 106/292] Make running the websocket server a little easier --- script/server | 5 +++++ script/websocket_server.rb | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100755 script/server diff --git a/script/server b/script/server new file mode 100755 index 000000000..0094482b1 --- /dev/null +++ b/script/server @@ -0,0 +1,5 @@ +#!/bin/bash + +mkdir -p -v log/thin/ +bundle exec ruby ./script/websocket_server.rb& +bundle exec thin start $@ diff --git a/script/websocket_server.rb b/script/websocket_server.rb index 7dee8d35c..2fbc1370a 100644 --- a/script/websocket_server.rb +++ b/script/websocket_server.rb @@ -19,6 +19,7 @@ def process_message end +begin EM.run { Diaspora::WebSocket.initialize_channels @@ -35,7 +36,13 @@ end ws.onclose { Diaspora::WebSocket.unsubscribe(ws.request['Path'].gsub('/',''), sid) } } end + puts "Websocket server started." process_message } - +rescue RuntimeError => e + raise e unless e.message.include?("no acceptor") + puts "Are you sure the websocket server isn't already running?" + puts "Just start thin with bundle exec thin start." + Process.exit +end From be26794e4a5e25537aef7a79885014f5bfeb8df2 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 10:46:14 -0700 Subject: [PATCH 107/292] only write to your own profile --- app/controllers/users_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 4a36672bc..dc25b47be 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -23,7 +23,7 @@ class UsersController < ApplicationController end def update - @user = User.find_by_id params[:id] + @user = current_user prep_image_url(params[:user]) @user.update_profile params[:user] From 5df33a6fd0dd8b87b1e8527b3c9b112fba7b734a Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 10:50:18 -0700 Subject: [PATCH 108/292] Take out users/show, use current_user in update --- app/controllers/users_controller.rb | 7 ------- config/routes.rb | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index dc25b47be..72666bc30 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -7,13 +7,6 @@ class UsersController < ApplicationController before_filter :authenticate_user!, :except => [:new, :create] respond_to :html - respond_to :json, :only => :show - - def show - @user = User.find_by_id params[:id] - @user_profile = @user.person.profile - respond_with @user - end def edit @user = current_user diff --git a/config/routes.rb b/config/routes.rb index 12dd20ba7..188c4b137 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,7 @@ Diaspora::Application.routes.draw do resources :people, :only => [:index, :show, :destroy] - resources :users, :except => [:create, :new] + resources :users, :except => [:create, :new, :show] resources :status_messages, :only => [:create, :destroy, :show] resources :comments, :except => [:index] resources :requests, :except => [:edit, :update] From 3859f8a529b7ec49967f86282d82f10919c568ef Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 10:56:42 -0700 Subject: [PATCH 109/292] Adding instructions to readme --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d941ac182..2398be5dc 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ You are welcome to contribute, add and extend Diaspora however you see fit. We We need you to fill out a [contributor agreement form](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq) before we can accept your patches. The agreement gives Diaspora joint ownership of the patch so the copyright isn't scattered. You can find it [here](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq). -All commits must be tested, and after each commit, all tests should be green before a pull request is sent. Please write your tests in Rspec or Test-Unit. +All commits must be tested, and after each commit, all tests should be green before a pull request is sent. Please write your tests in Rspec. GEMS: We would like to keep external dependencies unduplicated. We're using Nokogiri, and Mongomapper, and EM::HttpRequest as much as possible. We have a few gems in the project we'd rather not use, but if you can, use dependencies we already have. @@ -195,9 +195,15 @@ If you installed the OsX package through "brew", MongoDB will need to be started Diaspora will not run unless mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. +### Run the server +`./script/server` will start both thin and the websocket server. If you want to run a different app server, you will have to run them separately. See below for instructions. + ### Run the app server Once mongo is running and bundler has finished, run `bundle exec thin start` from the root Diaspora directory. This will start the app server in development mode[.](http://bit.ly/9mwtUw) +### Run the websocket server +run `bundle exec ruby ./script/websocket_server` to start the websocket server on port 8080. Change the port in config/app_config.yml. + ### Logging in Run `rake db:seed:tom`, then login with user `tom` and password `evankorth`. More details in db/seeds/tom.rb. From a96a52def7ecc4404fa5e97c45feb19fa0c21dd7 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 11:58:34 -0700 Subject: [PATCH 110/292] Run 3 thins --- config/sprinkle/conf/nginx.conf | 2 ++ config/thin.yml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/config/sprinkle/conf/nginx.conf b/config/sprinkle/conf/nginx.conf index da27b393b..eba9fa45b 100644 --- a/config/sprinkle/conf/nginx.conf +++ b/config/sprinkle/conf/nginx.conf @@ -33,6 +33,8 @@ http { # gzip_disable "MSIE [1-6]\.(?!.*SV1)"; upstream thin_cluster { server unix:/tmp/thin.0.sock; + server unix:/tmp/thin.1.sock; + server unix:/tmp/thin.2.sock; } server { diff --git a/config/thin.yml b/config/thin.yml index 7a74769cf..6a00fdb6c 100644 --- a/config/thin.yml +++ b/config/thin.yml @@ -14,7 +14,7 @@ require: [] max_persistent_conns: 512 environment: production -servers: 1 +servers: 3 daemonize: true #chdir: /usr/applications/localhash/current socket: /tmp/thin.sock From 001402487084e7c164a400f3c50841d799272019 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 15:26:31 -0400 Subject: [PATCH 111/292] Added I18n translations to helpers --- app/helpers/albums_helper.rb | 8 +++--- app/helpers/application_helper.rb | 4 +-- app/helpers/aspects_helper.rb | 4 +-- app/helpers/dashboards_helper.rb | 2 +- app/helpers/error_messages_helper.rb | 4 +-- app/helpers/people_helper.rb | 4 +-- app/helpers/status_messages_helper.rb | 2 +- config/locales/de.yml | 25 ++++++++++++++++-- config/locales/en.yml | 25 ++++++++++++++++-- config/locales/es.yml | 37 ++++++++++++++++++++++----- config/locales/fr.yml | 23 +++++++++++++++++ 11 files changed, 113 insertions(+), 25 deletions(-) diff --git a/app/helpers/albums_helper.rb b/app/helpers/albums_helper.rb index 50b7fbaf7..9a1e78fd1 100644 --- a/app/helpers/albums_helper.rb +++ b/app/helpers/albums_helper.rb @@ -6,17 +6,17 @@ module AlbumsHelper def friends_albums_link if params[:friends] - "Friends Albums" + I18n.t('albums.helper.friends_albums') else - link_to 'Friends Albums', albums_path({:friends => true}) + link_to I18n.t('albums.helper.friends_albums'), albums_path({:friends => true}) end end def your_albums_link if params[:friends] - link_to 'Your Albums', albums_path + link_to I18n.t('albums.helper.your_albums'), albums_path else - 'Your Albums' + I18n.t('albums.helper.your_albums') end end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f2a0a95fd..018d1da7f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -38,7 +38,7 @@ module ApplicationHelper when "Person" person_path(person) else - "unknown person" + I18n.t('application.helper.unknown_person') end end @@ -62,7 +62,7 @@ module ApplicationHelper end def new_request(request_count) - "new_requests" if request_count > 0 + I18n.t('application.helper.new_requests') if request_count > 0 end def post_yield_tag(post) diff --git a/app/helpers/aspects_helper.rb b/app/helpers/aspects_helper.rb index 1c8f69b8a..536bb8b0b 100644 --- a/app/helpers/aspects_helper.rb +++ b/app/helpers/aspects_helper.rb @@ -10,9 +10,9 @@ module AspectsHelper def remove_link( aspect ) if aspect.people.size == 0 - link_to "remove", aspect, :method => :delete + link_to I18n.t('aspects.helper.remove'), aspect, :method => :delete else - "remove" + "#{I18n.t('aspects.helper.remove')}" end end end diff --git a/app/helpers/dashboards_helper.rb b/app/helpers/dashboards_helper.rb index 542d938ee..5f6abe8e9 100644 --- a/app/helpers/dashboards_helper.rb +++ b/app/helpers/dashboards_helper.rb @@ -6,6 +6,6 @@ module DashboardsHelper def title_for_page - 'home' + I18n.t('dashboards.helper.home') end end diff --git a/app/helpers/error_messages_helper.rb b/app/helpers/error_messages_helper.rb index 699070b70..274d60edf 100644 --- a/app/helpers/error_messages_helper.rb +++ b/app/helpers/error_messages_helper.rb @@ -7,8 +7,8 @@ module ErrorMessagesHelper # Render error messages for the given objects. The :message and :header_message options are allowed. def error_messages_for(*objects) options = objects.extract_options! - options[:header_message] ||= "Invalid Fields" - options[:message] ||= "Correct the following errors and try again." + options[:header_message] ||= I18n.t('error_messages.helper.invalid_fields') + options[:message] ||= I18n.t('error_messages.helper.correct_the_following_errors_and_try_again') messages = objects.compact.map { |o| o.errors.full_messages }.flatten unless messages.empty? content_tag(:div, :class => "error_messages") do diff --git a/app/helpers/people_helper.rb b/app/helpers/people_helper.rb index 37d18d20f..90ffb517d 100644 --- a/app/helpers/people_helper.rb +++ b/app/helpers/people_helper.rb @@ -7,9 +7,9 @@ module PeopleHelper def search_or_index if params[:q] - " results for #{params[:q]}" + I18n.t 'people.helper.results_for',:params => params[:q] else - " people on pod is aware of" + I18n.t "people.helper.people_on_pod_are_aware_of" end end diff --git a/app/helpers/status_messages_helper.rb b/app/helpers/status_messages_helper.rb index ff6c2674a..7c1322762 100644 --- a/app/helpers/status_messages_helper.rb +++ b/app/helpers/status_messages_helper.rb @@ -8,7 +8,7 @@ module StatusMessagesHelper unless @latest_status_message.nil? return @latest_status_message.message else - return "No message to display." + return I18n.t('status_messages.helper.no_message_to_display') end end end diff --git a/config/locales/de.yml b/config/locales/de.yml index f7a4f0535..f5aa4d55c 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -8,6 +8,21 @@ de: hello: "Hallo Welt" + application: + helper: + unknown_person: "unknown person" + new_requests: "new requests" + dashboards: + helper: + home: "home" + error_messages: + helper: + invalid_fields: "Invalid Fields" + correct_the_following_errors_and_try_again: "Correct the following errors and try again." + people: + helper: + results_for: " resultados para %{params}" + people_on_pod_are_aware_of: " gente en pod estan al tanto de " layouts: application: edit_profile: "Profil bearbeiten" @@ -51,6 +66,9 @@ de: failure: "%{name} wurde nicht geändert." destroy: success: "Album %{name} gelöscht." + helper: + friends_albums: "Friends Albums" + your_albums: "Your Albums" aspects: index: photos: "Fotos" @@ -66,6 +84,9 @@ de: new_aspect: add_a_new_aspect: "Neuen Aspekt erstellen" create: "Erstellen" + helper: + remove: "remove" + aspect_not_empty: "Aspect not empty" users: edit: cancel: "Abbrechen" @@ -122,5 +143,5 @@ de: view_all: "Alle anzeigen" message: "Nachricht" owner: "Besitzer" - - + helper: + no_message_to_display: "No message to display." \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index b1b7e98a7..9c6fd7f09 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -8,6 +8,21 @@ en: hello: "Hello world" + application: + helper: + unknown_person: "unknown person" + new_requests: "new requests" + dashboards: + helper: + home: "home" + error_messages: + helper: + invalid_fields: "Invalid Fields" + correct_the_following_errors_and_try_again: "Correct the following errors and try again." + people: + helper: + results_for: " results for %{params}" + people_on_pod_are_aware_of: " people on pod are aware of" layouts: application: edit_profile: "edit profile" @@ -51,6 +66,9 @@ en: failure: "Failed to edit album %{name}." destroy: success: "Album %{name} deleted." + helper: + friends_albums: "Friends Albums" + your_albums: "Your Albums" aspects: index: photos: "photos" @@ -68,6 +86,9 @@ en: create: "Create" create: success:"Click on the plus on the left side to tell Diaspora who can see your new aspect." + helper: + remove: "remove" + aspect_not_empty: "Aspect not empty" users: edit: cancel: "Cancel" @@ -123,5 +144,5 @@ en: view_all: "View All" message: "Message" owner: "Owner" - - + helper: + no_message_to_display: "No message to display." \ No newline at end of file diff --git a/config/locales/es.yml b/config/locales/es.yml index 03fefdca4..cad5c187e 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -9,6 +9,21 @@ es: hello: "Hola Mundo" + application: + helper: + unknown_person: "persona desconocida" + new_requests: "nuevas peticiones" + dashboards: + helper: + home: "home" + error_messages: + helper: + invalid_fields: "Campos Invalidos" + correct_the_following_errors_and_try_again: "Corrija los siguentes errores y trate de nuevo." + people: + helper: + results_for: " resultados para %{params}" + people_on_pod_are_aware_of: " gente en pod estan al tanto de " layouts: application: edit_profile: "editar perfil" @@ -40,18 +55,21 @@ es: editing: "Editando" updated: "actualizado" are_you_sure: "Esta seguro?" - delete_album: "Eliminar Album" + delete_album: "Eliminar Álbum" cancel: "Cancelar" index: home: "home" - new_album: "Nuevo Album" + new_album: "Nuevo Álbum" create: - success: "Creo el album llamado %{name}." + success: "Creo el álbum llamado %{name}." update: - success: "Album %{name} fue editado exitosamente." - failure: "Fallo el editar el album %{name}." + success: "Álbum %{name} fue editado exitosamente." + failure: "Fallo el editar el álbum %{name}." destroy: - success: "Album %{name} fue eliminado." + success: "Álbum %{name} fue eliminado." + helper: + friends_albums: "Álbumes de amigos" + your_albums: "Tus Álbumes" aspects: index: photos: "fotos" @@ -69,6 +87,9 @@ es: create: "Crear" create: success:"Pulsa en el signo de mas a la izquierda para escojer quien puede ver su nuevo aspecto." + helper: + remove: "remover" + aspect_not_empty: "Aspecto no esta vacio" users: edit: cancel: "Cancelar" @@ -123,4 +144,6 @@ es: destroy: "Destruir" view_all: "Ver Todos" message: "Mensaje" - owner: "Dueño" \ No newline at end of file + owner: "Dueño" + helper: + no_message_to_display: "No hay mensajes que mostrar." \ No newline at end of file diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 052819b65..600b3f038 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -9,6 +9,21 @@ fr: hello: "Bonjour tout le monde" + application: + helper: + unknown_person: "unknown person" + new_requests: "new requests" + dashboards: + helper: + home: "home" + error_messages: + helper: + invalid_fields: "Invalid Fields" + correct_the_following_errors_and_try_again: "Correct the following errors and try again." + people: + helper: + results_for: " resultados para %{params}" + people_on_pod_are_aware_of: " gente en pod estan al tanto de " layouts: application: edit_profile: "Éditez votre profil" @@ -45,6 +60,9 @@ fr: index: home: "accueil" new_album: "Nouvel album" + helper: + friends_albums: "Friends Albums" + your_albums: "Your Albums" aspects: index: photos: "photos" @@ -60,6 +78,9 @@ fr: new_aspect: add_a_new_aspect: "Ajouter un nouvel aspect" create: "Créer" + helper: + remove: "remove" + aspect_not_empty: "Aspect not empty" users: edit: cancel: "Annuler" @@ -113,3 +134,5 @@ fr: view_all: "Tout voir" message: "Message" owner: "Propriétaire" + helper: + no_message_to_display: "No message to display." \ No newline at end of file From 71ac61c01d8166b8f6354f65bb8c166d293d6c5b Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 12:49:05 -0700 Subject: [PATCH 112/292] Fix websocket specs --- spec/lib/websocket_spec.rb | 20 ++++++++++++++++---- spec/spec_helper.rb | 8 +++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/spec/lib/websocket_spec.rb b/spec/lib/websocket_spec.rb index 762a725b5..018f5020d 100644 --- a/spec/lib/websocket_spec.rb +++ b/spec/lib/websocket_spec.rb @@ -9,6 +9,7 @@ describe Diaspora::WebSocket do @user = Factory.create(:user) @aspect = @user.aspect(:name => "losers") @post = @user.build_post(:status_message, :message => "hey", :to => @aspect.id) + unstub_sockets end it 'should queue a job' do @@ -16,10 +17,21 @@ describe Diaspora::WebSocket do @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) end - it 'The queued job should reach Magent' do - @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) - channel = Magent::GenericChannel.new('websocket') - channel.message_count.should == 1 + describe 'queuing and dequeuing ' do + before do + @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) + @channel = Magent::GenericChannel.new('websocket') + end + + it 'should send the queued job to Magent' do + @channel.message_count.should == 1 + end + + it 'should dequeue the job successfully' do + messages = @channel.message_count + @channel.dequeue + @channel.message_count.should == messages -1 + end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c3995846e..3fdac9810 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -46,11 +46,17 @@ RSpec.configure do |config| end end def stub_sockets - Diaspora::WebSocket.stub!(:push_to_user).and_return(true) + Diaspora::WebSocket.stub!(:queue_to_user).and_return(true) Diaspora::WebSocket.stub!(:subscribe).and_return(true) Diaspora::WebSocket.stub!(:unsubscribe).and_return(true) end + def unstub_sockets + Diaspora::WebSocket.unstub!(:queue_to_user) + Diaspora::WebSocket.unstub!(:subscribe) + Diaspora::WebSocket.unstub!(:unsubscribe) + end + def stub_signature_verification (get_models.map{|model| model.camelize.constantize} - [User]).each do |model| model.any_instance.stubs(:verify_signature).returns(true) From b3549c79f4c101ff61b1e8d9d4fe393aec5e77fc Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 11:02:12 -0700 Subject: [PATCH 113/292] Give slightly more specific error message --- app/models/person.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/person.rb b/app/models/person.rb index ac4a5dfa7..1e2a7b18d 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -89,6 +89,8 @@ class Person f = Redfinger.finger(identifier) rescue SocketError => e raise "Diaspora server for #{identifier} not found" if e.message =~ /Name or service not known/ + rescue Errno::ETIMEDOUT => e + raise "Connection timed out to Diaspora server for #{identifier}" end raise "No webfinger profile found at #{identifier}" if f.nil? || f.links.empty? Person.from_webfinger_profile(identifier, f ) From f95cebcb8bbfa3aba5ad4957de166fa94f081486 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 16:38:50 -0400 Subject: [PATCH 114/292] Added translations to new requests view and aspects controller --- app/controllers/aspects_controller.rb | 14 +++++++------- app/views/requests/_new_request.haml | 8 ++++---- config/locales/de.yml | 12 ++++++++++++ config/locales/en.yml | 18 +++++++++++++++++- config/locales/es.yml | 16 ++++++++++++++++ config/locales/fr.yml | 12 ++++++++++++ 6 files changed, 68 insertions(+), 12 deletions(-) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 82c35b36c..5d572742a 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -29,7 +29,7 @@ class AspectsController < ApplicationController begin current_user.drop_aspect @aspect - flash[:notice] = "#{@aspect.name} was successfully removed." + flash[:notice] = i18n.t 'aspects.destroy.success',:name => @aspect.name rescue RuntimeError => e flash[:error] = e.message end @@ -53,7 +53,7 @@ class AspectsController < ApplicationController def update @aspect = Aspect.find_by_id(params[:id]) @aspect.update_attributes(params[:aspect]) - flash[:notice] = "Your aspect, #{@aspect.name}, has been successfully edited." + flash[:notice] = i18n.t 'aspects.update.success',:name => @aspect.name respond_with @aspect end @@ -61,25 +61,25 @@ class AspectsController < ApplicationController params[:moves].each{ |move| move = move[1] unless current_user.move_friend(move) - flash[:error] = "Aspect editing failed for friend #{Person.find_by_id( move[:friend_id] ).real_name}." + flash[:error] = i18n.t 'aspects.move_friends.failure', :real_name => Person.find_by_id( move[:friend_id] ).real_name redirect_to Aspect.first, :action => "edit" return end } - flash[:notice] = "Aspects edited successfully." + flash[:notice] = i18n.t 'aspects.move_friends.success' redirect_to Aspect.first, :action => "edit" end def move_friend unless current_user.move_friend( :friend_id => params[:friend_id], :from => params[:from], :to => params[:to][:to]) - flash[:error] = "didn't work #{params.inspect}" + flash[:error] = I18n.t 'aspects.move_friend.error',:inspect => params.inspect end if aspect = Aspect.first(:id => params[:to][:to]) - flash[:notice] = "You are now showing your friend a different aspect of yourself." + flash[:notice] = I18n.t 'aspects.move_friend.notice' respond_with aspect else - flash[:notice] = "You are now showing your friend a different aspect of yourself." + flash[:notice] = I18n.t 'aspects.move_friend.notice' respond_with Person.first(:id => params[:friend_id]) end end diff --git a/app/views/requests/_new_request.haml b/app/views/requests/_new_request.haml index b7e5819f6..70c204e7c 100644 --- a/app/views/requests/_new_request.haml +++ b/app/views/requests/_new_request.haml @@ -4,18 +4,18 @@ %h1 - Add a new friend to + =t('.add_a_new_friend_to') %i= aspect.name = form_for Request.new do |f| = f.error_messages - Enter a Diaspora username: + =t('.enter_a_diaspora_username') %br - %i= "Your Diaspora username is: #{current_user.diaspora_handle}" + %i= t '.your_diaspora_username_is', :diaspora_handle => current_user.diaspora_handle %p - = f.label :destination_url, "Friend's username" + = f.label :destination_url, t(".friends_username") = f.text_field :destination_url = f.hidden_field :aspect_id, :value => aspect.id = f.submit diff --git a/config/locales/de.yml b/config/locales/de.yml index 06fb5e6cb..07ff690d7 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -84,6 +84,18 @@ de: new_aspect: add_a_new_aspect: "Neuen Aspekt erstellen" create: "Erstellen" + create: + success: "Click on the plus on the left side to tell Diaspora who can see your new aspect." + destroy: + success: "%{name} was successfully removed." + update: + success: "Your aspect, %{name}, has been successfully edited." + move_friends: + failure: "Aspect editing failed for friend %{real_name}." + success: "Aspects edited successfully." + move_friend: + error: "didn't work %{inspect}" + notice: "You are now showing your friend a different aspect of yourself." helper: remove: "remove" aspect_not_empty: "Aspect not empty" diff --git a/config/locales/en.yml b/config/locales/en.yml index f4dc9d076..cd8055775 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -85,7 +85,17 @@ en: add_a_new_aspect: "Add a new aspect" create: "Create" create: - success:"Click on the plus on the left side to tell Diaspora who can see your new aspect." + success: "Click on the plus on the left side to tell Diaspora who can see your new aspect." + destroy: + success: "%{name} was successfully removed." + update: + success: "Your aspect, %{name}, has been successfully edited." + move_friends: + failure: "Aspect editing failed for friend %{real_name}." + success: "Aspects edited successfully." + move_friend: + error: "didn't work %{inspect}" + notice: "You are now showing your friend a different aspect of yourself." helper: remove: "remove" aspect_not_empty: "Aspect not empty" @@ -164,3 +174,9 @@ en: save: "save" are_you_sure: "Are you sure?" remove_friend: "remove friend" + requests: + new_request: + add_a_new_friend_to: "Add a new friend to" + enter_a_diaspora_username: "Enter a Diaspora username:" + your_diaspora_username_is: "Your Diaspora username is: %{diaspora_handle}" + friends_username: "Friend's username" diff --git a/config/locales/es.yml b/config/locales/es.yml index 7243c73a5..b9c11e4a6 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -87,6 +87,16 @@ es: create: "Crear" create: success:"Pulsa en el signo de mas a la izquierda para escojer quien puede ver su nuevo aspecto." + destroy: + success: "%{name} fue removido exitosamente." + update: + success: "Su aspecto, %{name}, fue editado exitosamente." + move_friends: + failure: "Fallo el editar aspecto para el amigo %{real_name}." + success: "Los aspectos fueron editados exitosamente." + move_friend: + error: "no funciono %{inspect}" + notice: "Ahora estas mostrando a tu amigo un aspecto diferente de ti." helper: remove: "remover" aspect_not_empty: "Aspecto no esta vacio" @@ -162,3 +172,9 @@ es: save: "guardar" are_you_sure: "Esta seguro?" remove_friend: "remover amigo" + requests: + new_request: + add_a_new_friend_to: "Añade un nuevo amigo a " + enter_a_diaspora_username: "Escribe el usuario de Diaspora:" + your_diaspora_username_is: "Tu usuario de Diaspora es: %{diaspora_handle}" + friends_username: "Usuario de amigo" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0384d4577..7d58cd4aa 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -78,6 +78,18 @@ fr: new_aspect: add_a_new_aspect: "Ajouter un nouvel aspect" create: "Créer" + create: + success: "Click on the plus on the left side to tell Diaspora who can see your new aspect." + destroy: + success: "%{name} was successfully removed." + update: + success: "Your aspect, %{name}, has been successfully edited." + move_friends: + failure: "Aspect editing failed for friend %{real_name}." + success: "Aspects edited successfully." + move_friend: + error: "didn't work %{inspect}" + notice: "You are now showing your friend a different aspect of yourself." helper: remove: "remove" aspect_not_empty: "Aspect not empty" From 81d753e7737d31524adc8984482af87d6dcb9613 Mon Sep 17 00:00:00 2001 From: Stephen Caudill Date: Fri, 17 Sep 2010 00:47:01 -0400 Subject: [PATCH 115/292] Refactor Album spec * use let(!) where appropriate (see [1] for more info). * use `context` to portray scenarios * use `describe` to portray method and Class specifications * omit the word "should" from example descriptions (Dave Chelimsky remarked to me that it was "tantamount to line-noise" and I'm of the opinion that it adds no value. * use more idiomatic Ruby (prefer things like 2.times to 1.upto(2)) * use more idiomatic Rails (prefer 1.minute.from_now to Time.now + 60*60) * use more idiomatic Rspec (prefer album.should be_valid to album.valid?.should be_true * also ensure to only make one assertion per example Other sundry cleanups. [1] http://rdoc.info/github/rspec/rspec-core/master/RSpec/Core/Let/ClassMethods#let-instance_method --- spec/models/album_spec.rb | 120 ++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 63 deletions(-) diff --git a/spec/models/album_spec.rb b/spec/models/album_spec.rb index 189361622..ed13ba102 100644 --- a/spec/models/album_spec.rb +++ b/spec/models/album_spec.rb @@ -2,87 +2,81 @@ # licensed under the Affero General Public License version 3. See # the COPYRIGHT file. - - -require File.dirname(__FILE__) + '/../spec_helper' +require 'spec_helper' describe Album do - before do - @fixture_name = File.dirname(__FILE__) + '/../fixtures/button.png' - @user = Factory.create(:user) - @user.person.save - @aspect = @user.aspect(:name => "Foo") - @album = @user.post(:album, :name => "test collection", :to => @aspect.id) + let(:user) { Factory.create(:user) } + let(:person) { user.person } + let(:aspect) { user.aspect(:name => "Foo") } + let(:album) { user.post(:album, :name => "test collection", :to => aspect.id) } + + it 'is valid' do + album.should be_valid end - it 'should require a name' do - @album.name = "test collection" - @album.valid?.should be true - - @album.name = nil - @album.valid?.should be false + it 'validates presence of a name' do + album.name = nil + album.should_not be_valid end - it 'should contain photos' do - photo = Factory.build(:photo, :person => @user.person) - - @album.photos << photo - @album.photos.count.should == 1 + it 'has many photos' do + album.associations[:photos].type == :many end - it 'should remove all photos on album delete' do - photos = [] - 1.upto 3 do - photo = Photo.new(:person => @user.person, :album => @album, :created_at => Time.now) - photo.image.store! File.open @fixture_name - photos << photo - end - @album.photos += photos - - Photo.all.count.should == 3 - @album.destroy - Photo.all.count.should == 0 - end - - describe 'traversing' do + context 'when an album has two attached images' do before do - @photos = [] - 1.upto 3 do |n| - photo = Photo.new(:person => @user.person, :album => @album, :created_at => Time.now + n) - photo.image.store! File.open @fixture_name - @photos << photo + 2.times do + photo = Factory.build(:photo, :person => person, :album => album) + album.photos << photo end - @album.photos += @photos end - it 'should traverse the album correctly' do - #should retrieve the next photo relative to a given photo - @album.next_photo(@photos[1]).id.should == @photos[2].id - - #should retrieve the previous photo relative to a given photo - @album.prev_photo(@photos[1]).id.should == @photos[0].id - - #wrapping - #does next photo of last to first - @album.next_photo(@photos[2]).id.should == @photos[0].id - - #does previous photo of first to last - @album.prev_photo(@photos[0]).id.should == @photos[2].id + context 'when the album is deleted' do + it 'removes all child photos' do + expect{ album.destroy }.to change(Photo, :count).from(2).to(0) + end end end - describe 'serialization' do - before do - @xml = @album.to_xml.to_s + context 'traversing photos' do + let(:attrs) { {:person => person, :album => album} } + let!(:photo_1) { Factory(:photo, attrs.merge(:created_at => 2.days.ago)) } + let!(:photo_2) { Factory(:photo, attrs.merge(:created_at => 1.day.ago)) } + let!(:photo_3) { Factory(:photo, attrs.merge(:created_at => Time.now)) } + + describe '#next_photo' do + it 'returns the next photo' do + album.next_photo(photo_1).id.should == photo_2.id + end + + it 'returns the first photo when given the last photo in the album' do + album.next_photo(photo_3).id.should == photo_1.id + end end - it 'should have a person' do - @xml.include?(@album.person.id.to_s).should be true + + describe '#prev_photo' do + it 'returns the previous photo' do + album.prev_photo(photo_2).id.should == photo_1.id + end + + it 'returns the last photo when given the first photo in the album' do + album.prev_photo(photo_1).id.should == photo_3.id + end end - it 'should have a name' do - @xml.include?(@album.name).should be true + end + + describe '#to_xml' do + let(:doc) { album.to_xml } + it 'has a name' do + doc.at_xpath('./name').text.should == album.name end - it 'should have an id' do - @xml.include?(@album.id.to_s).should be true + + it 'has an id' do + doc.at_xpath('./_id').text.should == album.id.to_s + end + + it 'includes the person' do + doc.at_xpath('./person/_id').text.should == album.person.id.to_s end end end From c1c20e14f7573fc72917570862161b98995c39d4 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 17:05:54 -0400 Subject: [PATCH 116/292] Added translations to requests controller --- app/controllers/requests_controller.rb | 14 +++++++------- config/locales/de.yml | 9 +++++++++ config/locales/en.yml | 9 +++++++++ config/locales/es.yml | 13 +++++++++++-- config/locales/fr.yml | 10 ++++++++++ 5 files changed, 46 insertions(+), 9 deletions(-) diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index 6087ebe85..2586592c2 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -13,15 +13,15 @@ class RequestsController < ApplicationController if params[:accept] if params[:aspect_id] @friend = current_user.accept_and_respond( params[:id], params[:aspect_id]) - flash[:notice] = "You are now friends." + flash[:notice] = I18n.t 'requests.destroy.success' respond_with :location => current_user.aspect_by_id(params[:aspect_id]) else - flash[:error] = "Please select an aspect!" + flash[:error] = I18n.t 'requests.destroy.error' respond_with :location => requests_url end else current_user.ignore_friend_request params[:id] - flash[:notice] = "Ignored friend request." + flash[:notice] = I18n.t 'requests.destroy.ignore' respond_with :location => requests_url end end @@ -37,7 +37,7 @@ class RequestsController < ApplicationController rel_hash = relationship_flow(params[:request][:destination_url]) rescue Exception => e raise e unless e.message.include? "not found" - flash[:error] = "No diaspora seed found with this email!" + flash[:error] = I18n.t 'requests.create.error' respond_with :location => aspect return end @@ -48,16 +48,16 @@ class RequestsController < ApplicationController @request = current_user.send_friend_request_to(rel_hash[:friend], aspect) rescue Exception => e raise e unless e.message.include? "already friends" - flash[:notice] = "You are already friends with #{params[:request][:destination_url]}!" + flash[:notice] = I18n.t 'requests.create.already_friends', :destination_url => params[:request][:destination_url] respond_with :location => aspect return end if @request - flash[:notice] = "A friend request was sent to #{@request.destination_url}." + flash[:notice] = I18n.t 'requests.create.success',:destination_url => @request.destination_url respond_with :location => aspect else - flash[:error] = "Something went horribly wrong." + flash[:error] = I18n.t 'requests.create.horribly_wrong' respond_with :location => aspect end end diff --git a/config/locales/de.yml b/config/locales/de.yml index 07ff690d7..d34e29fe5 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -175,3 +175,12 @@ de: save: "save" are_you_sure: "Are you sure?" remove_friend: "remove friend" + destroy: + success: "You are now friends." + error: "Please select an aspect!" + ignore: "Ignored friend request." + create: + error: "No diaspora seed found with this email!" + already_friends: "You are already friends with %{destination_url}!" + success: "A friend request was sent to %{destination_url}." + horribly_wrong: "Something went horribly wrong." diff --git a/config/locales/en.yml b/config/locales/en.yml index cd8055775..5c9e797ad 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -180,3 +180,12 @@ en: enter_a_diaspora_username: "Enter a Diaspora username:" your_diaspora_username_is: "Your Diaspora username is: %{diaspora_handle}" friends_username: "Friend's username" + destroy: + success: "You are now friends." + error: "Please select an aspect!" + ignore: "Ignored friend request." + create: + error: "No diaspora seed found with this email!" + already_friends: "You are already friends with %{destination_url}!" + success: "A friend request was sent to %{destination_url}." + horribly_wrong: "Something went horribly wrong." diff --git a/config/locales/es.yml b/config/locales/es.yml index b9c11e4a6..524633310 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -30,11 +30,11 @@ es: logout: "desloguear" shared: aspect_nav: - all_aspects: "Todo los Aspectos" + all_aspects: "Todos los Aspectos" manage: "Manejar" manage_your_aspects: "Maneja tus Aspectos" sub_header: - all_aspects: "Todo los Aspectos" + all_aspects: "Todos los Aspectos" manage_aspects: "Manejar Aspectos" publisher: share: "Compartir" @@ -178,3 +178,12 @@ es: enter_a_diaspora_username: "Escribe el usuario de Diaspora:" your_diaspora_username_is: "Tu usuario de Diaspora es: %{diaspora_handle}" friends_username: "Usuario de amigo" + destroy: + success: "Ahora son amigos." + error: "Seleccione un aspecto!" + ignore: "Ignorar peticion de amistad" + create: + error: "No diaspora seed found with this email!" + already_friends: "Ya eres amigo de %{destination_url}!" + success: "Una peticion de amistad se envio a %{destination_url}." + horribly_wrong: "Algo horriblemente mal sucedio" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 7d58cd4aa..383e136e5 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -166,3 +166,13 @@ fr: save: "save" are_you_sure: "Are you sure?" remove_friend: "remove friend" + destroy: + success: "You are now friends." + error: "Please select an aspect!" + ignore: "Ignored friend request." + create: + error: "No diaspora seed found with this email!" + already_friends: "You are already friends with %{destination_url}!" + success: "A friend request was sent to %{destination_url}." + horribly_wrong: "Something went horribly wrong." + From f5c10bb24c937f0f03cbd0ed6797e2916ca363d4 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 14:39:15 -0700 Subject: [PATCH 117/292] Put master deploy info back in master --- config/deploy.rb | 49 ++++++++++++++++++++---------- config/deploy_config.yml | 64 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 93 insertions(+), 20 deletions(-) diff --git a/config/deploy.rb b/config/deploy.rb index bceef51b5..c84d25556 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -27,19 +27,22 @@ set :deploy_via, :checkout # set :rails_env, ENV['rails_env'] || ENV['RAILS_ENV'] || all['default_env'] -role :pivots, config['servers']['pivots']['url'] +role :tom, "tom.joindiaspora.com" +backers.each{ |backer| + role :backer, "#{backer['username']}.joindiaspora.com", :number => backer['number'] +} +#role :ci, "ci.joindiaspora.com" # If you are using Passenger mod_rails uncomment this: # if you're still using the script/reapear helper you will need # these http://github.com/rails/irs_process_scripts # Start Nginx after "deploy:cold" do - run("nginx") + #run("nginx") end namespace :deploy do - task :symlink_images do run "mkdir -p #{shared_path}/uploads" run "ln -s -f #{shared_path}/uploads #{current_path}/public/uploads" @@ -61,25 +64,20 @@ namespace :deploy do end task :start_mongo do - run("mkdir -p -v #{current_path}/log/db/ ") - run("mkdir -p -v #{shared_path}/db/") - run("mongod --fork --logpath #{current_path}/log/db/mongolog.txt --dbpath #{shared_path}/db/ " ) + run("mkdir -p -v #{current_path}/log/db/ ") + run("mkdir -p -v #{shared_path}/db/") + run("mongod --fork --logpath #{current_path}/log/db/mongolog.txt --dbpath #{shared_path}/db/ " ) end task :start_thin do - run("mkdir -p -v #{current_path}/log/thin/ ") - run("cd #{current_path} && bundle exec thin start -C config/thin.yml") + run("mkdir -p -v #{current_path}/log/thin/ ") + run("cd #{current_path} && bundle exec thin start -C config/thin.yml") end task :stop do stop_thin run("killall -s 2 mongod || true") end - - task :go_cold do - stop - run("killall nginx") - end task :stop_thin do run("killall -s 2 ruby || true") @@ -121,13 +119,32 @@ namespace :cloud do end end namespace :db do - - task :purge, :roles => [:pivots] do + + task :purge, :roles => [:tom, :backer] do run "cd #{current_path} && bundle exec rake db:purge --trace RAILS_ENV=#{rails_env}" end - + + task :tom_seed, :roles => :tom do + run "cd #{current_path} && bundle exec rake db:seed:tom --trace RAILS_ENV=#{rails_env}" + run "curl -silent -u tom@tom.joindiaspora.com:evankorth http://tom.joindiaspora.com/zombiefriends" + backers.each do |backer| + run "curl -silent -u #{backer['username']}@#{backer['username']}.joindiaspora.com:#{backer['username']}#{backer['pin']} http://#{backer['username']}.joindiaspora.com/zombiefriendaccept" + #run "curl -silent -u #{backer['username']}@#{backer['username']}.joindiaspora.com:#{backer['username']}#{backer['pin']} http://#{backer['username']}.joindiaspora.com/set_profile_photo" + end + + end + + task :backer_seed, :roles => :backer do + (0..10).each { |n| + run "curl -silent http://localhost/set_backer_number?number=#{n}", :only => {:number => n} + } + run "cd #{current_path} && bundle exec rake db:seed:backer --trace RAILS_ENV=#{rails_env}" + end + task :reset do purge + backer_seed + tom_seed end diff --git a/config/deploy_config.yml b/config/deploy_config.yml index 01bd94470..c653b6565 100644 --- a/config/deploy_config.yml +++ b/config/deploy_config.yml @@ -7,9 +7,65 @@ cross_server: deploy_to: '/usr/local/app/diaspora' user: 'root' - branch: 'production' repo: 'git@github.com:diaspora/diaspora.git' - default_env: 'production' + branch: 'master' + default_env: 'development' servers: - pivots: - url: 'pivots.joindiaspora.com' + tom: + - url: 'tom.joindiaspora.com' + backer: + - username: 'washington' + given_name: 'George' + family_name: 'Washington' + number: 0 + pin: 5072 + - username: 'adams' + given_name: 'John' + family_name: 'Adams' + number: 1 + pin: 3742 + - username: 'jefferson' + given_name: 'Thomas' + family_name: 'Jefferson' + number: 2 + pin: 7782 + - username: 'madison' + given_name: 'James' + family_name: 'Madison' + number: 3 + pin: 2691 + - username: 'monroe' + given_name: 'James' + family_name: 'Monroe' + number: 4 + pin: 6133 + - username: 'quincyadams' + given_name: 'John Quincy' + family_name: 'Adams' + number: 5 + pin: 7558 + - username: 'jackson' + given_name: 'Andrew' + family_name: 'Jackson' + number: 6 + pin: 8670 + - username: 'buren' + given_name: 'Martin' + family_name: 'Van Buren' + number: 7 + pin: 1559 + - username: 'harrison' + given_name: 'William Henry' + family_name: 'Harrison' + number: 8 + pin: 5404 + - username: 'tyler' + given_name: 'John' + family_name: 'Tyler' + number: 9 + pin: 6431 + - username: 'polk' + given_name: 'James K.' + family_name: 'Polk' + number: 10 + pin: 1957 From 84789f64c9fa8cb31a768bf3ea1dfe23ed14c7b5 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 14:57:14 -0700 Subject: [PATCH 118/292] scope album queries through user --- app/controllers/albums_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/albums_controller.rb b/app/controllers/albums_controller.rb index c4bab3d8a..dbd59c64e 100644 --- a/app/controllers/albums_controller.rb +++ b/app/controllers/albums_controller.rb @@ -26,7 +26,7 @@ class AlbumsController < ApplicationController end def destroy - @album = Album.find_by_id params[:id] + @album = current_user.album_by_id params[:id] @album.destroy flash[:notice] = "Album #{@album.name} deleted." respond_with :location => albums_url @@ -41,12 +41,12 @@ class AlbumsController < ApplicationController end def edit - @album = Album.find_by_id params[:id] + @album = current_user.album_by_id params[:id] redirect_to @album unless current_user.owns? @album end def update - @album = Album.find_by_id params[:id] + @album = current_user.album_by_id params[:id] if @album.update_attributes params[:album] flash[:notice] = "Album #{@album.name} successfully edited." respond_with @album From 5b29c2700a04c8bb18e131472b6a0a43351cc53b Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 17 Sep 2010 15:03:16 -0700 Subject: [PATCH 119/292] Restore thin yml --- config/thin.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/thin.yml b/config/thin.yml index 6a00fdb6c..b0a3abf8d 100644 --- a/config/thin.yml +++ b/config/thin.yml @@ -14,8 +14,8 @@ require: [] max_persistent_conns: 512 environment: production -servers: 3 +servers: 1 daemonize: true #chdir: /usr/applications/localhash/current -socket: /tmp/thin.sock -#port: 80 +#socket: /tmp/thin.sock +port: 80 From 4558f9901efe2408e49c8e8ae667b2b715da6dff Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 18:25:36 -0400 Subject: [PATCH 120/292] Added translations to photos and registrations controllers --- app/controllers/photos_controller.rb | 12 ++++++------ app/controllers/registrations_controller.rb | 2 +- config/locales/de.yml | 11 +++++++++++ config/locales/en.yml | 11 +++++++++++ config/locales/es.yml | 11 +++++++++++ config/locales/fr.yml | 11 +++++++++++ 6 files changed, 51 insertions(+), 7 deletions(-) diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index cefc8f5d6..203a748f6 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -40,15 +40,15 @@ class PhotosController < ApplicationController end rescue TypeError - message = "Photo upload failed. Are you sure an image was added?" + message = I18n.t 'photos.create.type_error' respond_with :location => album, :error => message rescue CarrierWave::IntegrityError - message = "Photo upload failed. Are you sure that was an image?" + message = I18n.t 'photos.create.integrity_error' respond_with :location => album, :error => message rescue RuntimeError => e - message = "Photo upload failed. Are you sure that your seatbelt is fastened?" + message = I18n.t 'photos.create.runtime_error' respond_with :location => album, :error => message raise e end @@ -63,7 +63,7 @@ class PhotosController < ApplicationController def destroy @photo = Photo.find_by_id params[:id] @photo.destroy - flash[:notice] = "Photo deleted." + flash[:notice] = I18n.t 'photos.destroy.notice' respond_with :location => @photo.album end @@ -84,10 +84,10 @@ class PhotosController < ApplicationController def update @photo = Photo.find_by_id params[:id] if @photo.update_attributes params[:photo] - flash[:notice] = "Photo successfully updated." + flash[:notice] = I18n.t 'photos.update.notice' respond_with @photo else - flash[:error] = "Failed to edit photo." + flash[:error] = I18n.t 'photos.update.error' render :action => :edit end end diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 8241aa294..854f19e1a 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -16,7 +16,7 @@ class RegistrationsController < Devise::RegistrationsController end if user #set_flash_message :notice, :signed_up - flash[:notice] = "You've joined Diaspora!" + flash[:notice] = I18n.t 'registrations.create.success' #redirect_to root_url sign_in_and_redirect(:user, user) else diff --git a/config/locales/de.yml b/config/locales/de.yml index d34e29fe5..aabe057cd 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -137,9 +137,20 @@ de: new_photo: "Foto erstellen" back_to_list: "Zurück zur Liste" post_it: "Hochladen" + create: + runtime_error: "Photo upload failed. Are you sure that your seatbelt is fastened?" + integrity_error: "Photo upload failed. Are you sure that was an image?" + type_error: "Photo upload failed. Are you sure an image was added?" + update: + notice: "Photo successfully updated." + error: "Failed to edit photo." + destroy: + notice: "Photo deleted." registrations: new: sign_up: "Anmelden" + create: + success: "You've joined Diaspora!" status_messages: new_status_message: tell_me_something_good: "Erzähl' mir was schönes!" diff --git a/config/locales/en.yml b/config/locales/en.yml index 5c9e797ad..3a416b54f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -136,9 +136,20 @@ en: new_photo: "New Photo" back_to_list: "Back to List" post_it: "post it!" + create: + runtime_error: "Photo upload failed. Are you sure that your seatbelt is fastened?" + integrity_error: "Photo upload failed. Are you sure that was an image?" + type_error: "Photo upload failed. Are you sure an image was added?" + update: + notice: "Photo successfully updated." + error: "Failed to edit photo." + destroy: + notice: "Photo deleted." registrations: new: sign_up: "Sign up" + create: + success: "You've joined Diaspora!" status_messages: new_status_message: tell_me_something_good: "tell me something good" diff --git a/config/locales/es.yml b/config/locales/es.yml index 524633310..de2617886 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -137,9 +137,20 @@ es: new_photo: "Nueva Foto" back_to_list: "Devuelta a la lista" post_it: "post it!" + create: + runtime_error: "Photo upload failed. Are you sure that your seatbelt is fastened?" + integrity_error: "Photo upload failed. Are you sure that was an image?" + type_error: "Photo upload failed. Are you sure an image was added?" + update: + notice: "Photo successfully updated." + error: "Failed to edit photo." + destroy: + notice: "Photo deleted." registrations: new: sign_up: "Registrate" + create: + success: "Esta registrado en Diaspora!" status_messages: new_status_message: tell_me_something_good: "dime algo bueno" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 383e136e5..9a0ac8d22 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -128,9 +128,20 @@ fr: new_photo: "Nouvelle photo" back_to_list: "Retour à la liste" post_it: "postez le !" + create: + runtime_error: "Photo upload failed. Are you sure that your seatbelt is fastened?" + integrity_error: "Photo upload failed. Are you sure that was an image?" + type_error: "Photo upload failed. Are you sure an image was added?" + update: + notice: "Photo successfully updated." + error: "Failed to edit photo." + destroy: + notice: "Photo deleted." registrations: new: sign_up: "Enregistrement" + create: + success: "You've joined Diaspora!" status_messages: new_status_message: tell_me_something_good: "Dites quelque-chose de bien" From 182c6228f3bd7d8bb7bf58d6a64766761ae9a206 Mon Sep 17 00:00:00 2001 From: Patrick Aljord Date: Thu, 16 Sep 2010 14:05:28 +0800 Subject: [PATCH 121/292] show comments ordered by created_at, they are showing up at random order without that --- app/models/post.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/post.rb b/app/models/post.rb index 9f7c3ff27..e9e135abb 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -18,7 +18,7 @@ class Post key :person_id, ObjectId key :user_refs, Integer, :default => 0 - many :comments, :class_name => 'Comment', :foreign_key => :post_id + many :comments, :class_name => 'Comment', :foreign_key => :post_id, :order => 'created_at ASC' belongs_to :person, :class_name => 'Person' timestamps! From d1c7559c294eed5f05ede9be975a22c766b1d9fd Mon Sep 17 00:00:00 2001 From: Ethan Bruning Date: Sat, 18 Sep 2010 02:20:44 +0800 Subject: [PATCH 122/292] Added check to see if Mongod is running --- script/server | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/script/server b/script/server index 0094482b1..3804ccad9 100755 --- a/script/server +++ b/script/server @@ -1,5 +1,13 @@ #!/bin/bash -mkdir -p -v log/thin/ -bundle exec ruby ./script/websocket_server.rb& -bundle exec thin start $@ +# Check if Mongo is running + +if ! ps ax | grep -v grep | grep mongod >/dev/null +then + echo "Mongod not started" +else + mkdir -p -v log/thin/ + bundle exec ruby ./script/websocket_server.rb& + bundle exec thin start $@ +fi + From 2e55666b4607cd9f888cf71a5634a37a01215526 Mon Sep 17 00:00:00 2001 From: T-Moe Date: Sat, 18 Sep 2010 04:01:06 +0800 Subject: [PATCH 123/292] Added note about universe being required under Ubuntu to Readme.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2398be5dc..38b2e875a 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,8 @@ To install Ruby 1.8.7 on **Ubuntu**, run the following command: sudo apt-get install ruby-full +Please note that you need to have Universe enabled in your /etc/apt/sources.list file to install ruby using apt-get. + At this time Fedora does not have Ruby 1.8.7. As a workaround it is possible to use [rvm](http://rvm.beginrescueend.com/) with a locally compiled Ruby installation. A semi automated method for doing this is available. It is highly recommended that you review the script before running it so you understand what will occur. The script can be executed by running the following command: ./script/bootstrap-fedora-diaspora.sh From 6223b7d78fbf0ed94f4a667e227c92d710ca6de9 Mon Sep 17 00:00:00 2001 From: cori schlegel Date: Fri, 17 Sep 2010 09:53:02 +0800 Subject: [PATCH 124/292] update README with mongodb install info for other Ubuntu distros --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 38b2e875a..0af7c680a 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ To install MongoDB on **Ubuntu**, add the official MongoDB repository from this http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages -For Lucid, add the following line to your /etc/apt/sources.list: +For Lucid, add the following line to your /etc/apt/sources.list (for other distros, see http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages): deb http://downloads.mongodb.org/distros/ubuntu 10.4 10gen From 34578837878bed594823d8e4f40fdeabfb39e76f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sven=20Kr=C3=A4uter?= Date: Fri, 17 Sep 2010 06:11:57 +0800 Subject: [PATCH 125/292] added missing directory creation for mongodb mac os x installation --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 0af7c680a..46d353548 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,8 @@ If you're running a 32-bit system, run `wget http://fastdl.mongodb.org/linux/mon To install MongoDB on **Mac OS X**, run the following: brew install mongo + sudo mkdir -p /data/db + sudo chmod -Rv 777 /data/ ### OpenSSL From 2d16289e46976ee72c303310b9c2851bbaaf8616 Mon Sep 17 00:00:00 2001 From: Don Park Date: Sat, 18 Sep 2010 01:29:49 +0800 Subject: [PATCH 126/292] use photos_path to generate the correct POST destination for photo uploads --- app/views/photos/_new_photo.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/photos/_new_photo.haml b/app/views/photos/_new_photo.haml index f6777fa4a..0f1e423fb 100644 --- a/app/views/photos/_new_photo.haml +++ b/app/views/photos/_new_photo.haml @@ -9,7 +9,7 @@ element: document.getElementById('file-upload'), params: {'album_id' : "#{@album.id}"}, allowedExtensions: ['jpg', 'jpeg', 'png'], - action: "/photos" + action: "#{photos_path}" }); } window.onload = createUploader; From 1f2592db18d9ddc78f13ac3dee443452884a041d Mon Sep 17 00:00:00 2001 From: Johan Brinch Date: Thu, 16 Sep 2010 19:59:01 +0800 Subject: [PATCH 127/292] Remove trailing whitespace --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 46d353548..066e4171c 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ After you have Ruby installed on your system, you will need to get RubyGems, the - [RubyGems](http://rubygems.org/) - Source for Ruby gems. - [Bundler](http://gembundler.com/) - Gem management tool for Ruby projects. -**We suggest using a package management system to download these dependencies. Trust us, it's going to make your life a lot easier. If you're using Mac OS X, you can use [homebrew](http://mxcl.github.com/homebrew/); if you're using Ubuntu, just use [Synaptic](http://www.nongnu.org/synaptic/) (it comes pre-installed); if you're using Fedora simply use [yum](http://yum.baseurl.org/). The instructions below assume you have these installed.** +**We suggest using a package management system to download these dependencies. Trust us, it's going to make your life a lot easier. If you're using Mac OS X, you can use [homebrew](http://mxcl.github.com/homebrew/); if you're using Ubuntu, just use [Synaptic](http://www.nongnu.org/synaptic/) (it comes pre-installed); if you're using Fedora simply use [yum](http://yum.baseurl.org/). The instructions below assume you have these installed.** ### Build Tools @@ -91,7 +91,7 @@ If you're running a 32-bit system, run `wget http://fastdl.mongodb.org/linux/mon # create the required data directory sudo mkdir -p /data/db sudo chmod -Rv 777 /data/ - + To install MongoDB on a x86_64 **Fedora** system, add the official MongoDB repository from MongoDB (http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages) into /etc/yum.repos.d/10gen.repo: @@ -143,11 +143,11 @@ To install ImageMagick on **Mac OS X**, run the following: ### Git To install Git on **Ubuntu**, run the following: - + sudo apt-get install git-core To install Git on **Fedora**, run the following: - + sudo yum install git @@ -237,5 +237,5 @@ Diaspora is free software: you can redistribute it and/or modify it under the te Diaspora is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. -You should have received a copy of the GNU Affero General Public License along with Diaspora. If not, see . +You should have received a copy of the GNU Affero General Public License along with Diaspora. If not, see . From 773839308c4bb3313c04aa02b75e95d342d51cc1 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Fri, 17 Sep 2010 09:57:32 +0800 Subject: [PATCH 128/292] Moved .live(...) into $(function() {}) block - DOM logic should not be left to synchronously execute outside of a DOMContentLoaded closure --- public/javascripts/aspect-edit.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index 86c61ba93..1b74108b2 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -3,18 +3,6 @@ * the COPYRIGHT file. */ - -$('#move_friends_link').live( 'click', function(){ - $.post('/aspects/move_friends', - { 'moves' : $('#aspect_list').data() }, - function(){ $('#aspect_title').html("Groups edited successfully!");}); - - $(".person").css('background-color','none'); - $('#aspect_list').removeData(); - $(".person").attr('from_aspect_id', function(){return $(this).parent().attr('id')}) - -}); - function decrementRequestsCounter(){ var old_request_count = $(".new_requests").html().match(/\d+/); @@ -30,6 +18,19 @@ function decrementRequestsCounter(){ } $(function() { + + + $('#move_friends_link').live( 'click', function(){ + $.post('/aspects/move_friends', + { 'moves' : $('#aspect_list').data() }, + function(){ $('#aspect_title').html("Groups edited successfully!");}); + + $(".person").css('background-color','none'); + $('#aspect_list').removeData(); + $(".person").attr('from_aspect_id', function(){return $(this).parent().attr('id')}) + + }); + $("ul .person").draggable({ revert: true }); From fcdc1d914ccc54b89d3bf553aaef7ba942255e37 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Fri, 17 Sep 2010 10:10:53 +0800 Subject: [PATCH 129/292] Cached all reused match selector sets, moved synchronous functions into callbacks where needed for optimization; Moved all DOM manip into $(function () {} ) --- public/javascripts/aspect-edit.js | 127 ++++++++++++++++++------------ 1 file changed, 76 insertions(+), 51 deletions(-) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index 1b74108b2..986005e29 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -3,42 +3,53 @@ * the COPYRIGHT file. */ -function decrementRequestsCounter(){ - var old_request_count = $(".new_requests").html().match(/\d+/); +function decrementRequestsCounter() { + var $new_requests = $(".new_requests"), + old_request_count = $new_requests.html().match(/\d+/); if( old_request_count == 1 ) { - $(".new_requests").html( - $(".new_requests").html().replace(/ \(\d+\)/,'')); - + $new_requests.html( + $new_requests.html().replace(/ \(\d+\)/,'') + ); } else { - $(".new_requests").html( - $(".new_requests").html().replace(/\d+/,old_request_count-1)); + $new_requests.html( + $new_requests.html().replace(/\d+/,old_request_count-1) + ); } - } $(function() { $('#move_friends_link').live( 'click', function(){ - $.post('/aspects/move_friends', + $.post( + '/aspects/move_friends', { 'moves' : $('#aspect_list').data() }, - function(){ $('#aspect_title').html("Groups edited successfully!");}); + function() { + $('#aspect_title').html("Groups edited successfully!"); + } + ); + + // should the following logic be moved into the $.post() callback? + $("#aspect_list").removeData(); - $(".person").css('background-color','none'); - $('#aspect_list').removeData(); - $(".person").attr('from_aspect_id', function(){return $(this).parent().attr('id')}) + $(".person") + .css('background-color','none') + .attr('from_aspect_id', function() { + return $(this).parent().attr('id') + }); }); - $("ul .person").draggable({ - revert: true - }); - - $("ul .requested_person").draggable({ + $("ul .person .requested_person").draggable({ revert: true }); + // Moved class to logic above - unnec duplicate logic + //$("ul .requested_person").draggable({ + // revert: true + //}); + $(".aspect ul").droppable({ hoverClass: 'active', drop: function(event, ui) { @@ -53,16 +64,23 @@ $(function() { } }); - }else { - var move = {}; - move[ 'friend_id' ] = ui.draggable[0].id - move[ 'to' ] = $(this)[0].id; - move[ 'from' ] = ui.draggable[0].getAttribute('from_aspect_id'); + } else { + var $aspect_list = $('#aspect_list'), + move = {}; + + // This is poor implementation + move[ 'friend_id' ] = ui.draggable[0].id; // ui.draggable.attr('id') + move[ 'to' ] = $(this)[0].id;// $(this).attr('id'); + move[ 'from' ] = ui.draggable[0].getAttribute('from_aspect_id'); // ui.draggable.attr('from_aspect_id') + + // if created custom attr's - should be using `data-foo` + + if (move['to'] == move['from']){ - $('#aspect_list').data( ui.draggable[0].id, []); + $aspect_list.data( ui.draggable[0].id, []); ui.draggable.css('background-color','#eee'); } else { - $('#aspect_list').data( ui.draggable[0].id, move); + $aspect_list.data( ui.draggable[0].id, move); ui.draggable.css('background-color','orange'); } } @@ -77,44 +95,51 @@ $(function() { if ($(ui.draggable[0]).hasClass('requested_person')){ $.ajax({ type: "DELETE", - url: "/requests/" + ui.draggable[0].getAttribute('request_id') + url: "/requests/" + ui.draggable.attr('request_id'), + success: function () { + decrementRequestsCounter(); + } }); - decrementRequestsCounter(); - $(ui.draggable[0]).fadeOut('slow') - }else{ + + } else { $.ajax({ type: "DELETE", - url: "/people/" + ui.draggable[0].id + url: "/people/" + ui.draggable.attr('id'), + success: function () { + alert("Removed Friend, proably want an undo countdown.") + } }); - alert("Removed Friend, proably want an undo countdown.") - $(ui.draggable[0]).fadeOut('slow') - + } + + $(ui.draggable[0]).fadeOut('slow'); // ui.draggable.fadeOut('slow') } }); -}); -$(".aspect h1").live( 'focus', function() { - var $this = $(this); - var id = $this.closest("li").children("ul").attr("id"); - var link = "/aspects/"+ id; + $(".aspect h1").live( 'focus', function() { - $this.keypress(function(e) { - if (e.which == 13) { - e.preventDefault(); - $this.blur(); + var $this = $(this), + id = $this.closest("li").children("ul").attr("id"), + link = "/aspects/"+ id; - //save changes - $.ajax({ - type: "PUT", - url: link, - data: {"aspect" : {"name" : $this.text() }} + $this.keypress(function(e) { + if (e.which == 13) { + e.preventDefault(); + $this.blur(); + + //save changes + $.ajax({ + type: "PUT", + url: link, + data: {"aspect" : {"name" : $this.text() }} + }); + } + //update all other aspect links + $this.keyup(function(e) { + $("#aspect_nav a[href='"+link+"']").text($this.text()); }); - } - //update all other aspect links - $this.keyup(function(e) { - $("#aspect_nav a[href='"+link+"']").text($this.text()); }); }); + }); From 535f6ed334b46bedc05b39efc9fae0badd2aabc1 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Fri, 17 Sep 2010 10:17:14 +0800 Subject: [PATCH 130/292] More clean up to decrementRequestsCounter() --- public/javascripts/aspect-edit.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index 986005e29..c7061797d 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -5,15 +5,16 @@ function decrementRequestsCounter() { var $new_requests = $(".new_requests"), - old_request_count = $new_requests.html().match(/\d+/); + request_html = $new_requests.html(), + old_request_count = request_html.match(/\d+/); if( old_request_count == 1 ) { $new_requests.html( - $new_requests.html().replace(/ \(\d+\)/,'') + request_html.replace(/ \(\d+\)/,'') ); } else { $new_requests.html( - $new_requests.html().replace(/\d+/,old_request_count-1) + request_html.replace(/\d+/,old_request_count-1) ); } } From 0b91a2c186cb8bbbc1f335ca20e0ce007602f2bd Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 23:46:34 +0800 Subject: [PATCH 131/292] Added I18n initializer --- config/initializers/locale.rb | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 config/initializers/locale.rb diff --git a/config/initializers/locale.rb b/config/initializers/locale.rb new file mode 100644 index 000000000..42f34a3a7 --- /dev/null +++ b/config/initializers/locale.rb @@ -0,0 +1,8 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. +I18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] +I18n.default_locale = :en \ No newline at end of file From 6c3882ce570cf2e155e6f1b4de63dcc22b89e5e9 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Thu, 16 Sep 2010 23:47:54 +0800 Subject: [PATCH 132/292] Added devise spanish locale --- config/locales/devise.es.yml | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 config/locales/devise.es.yml diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml new file mode 100644 index 000000000..70209ff79 --- /dev/null +++ b/config/locales/devise.es.yml @@ -0,0 +1,42 @@ +es: + errors: + messages: + not_found: 'no encontrado' + already_confirmed: 'ya ha sido confirmada' + not_locked: 'no está bloqueada' + + devise: + failure: + unauthenticated: 'Necesitas acceder a tu cuenta o registrarte antes de continuar.' + unconfirmed: 'Necesitas confirmar tu cuenta antes de continuar.' + locked: 'Tu cuenta esta bloqueada.' + invalid: 'Contraseña o Email incorrecto.' + invalid_token: 'Token de autenticación incorrecto.' + timeout: 'Tu sesión ha expirado, por favor accede de nuevo para continuar.' + inactive: 'Tu cuenta no ha sido activada.' + sessions: + signed_in: 'Has ingresado correctamente.' + signed_out: 'Has salido correctamente.' + passwords: + send_instructions: 'Recibirás un email con instrucciones para cambiar tu contraseña en poco minutos.' + updated: 'Tu contraseña ha sido modificada. Ya has accedido a tu cuenta.' + confirmations: + send_instructions: 'Recibirás un email con instrucciones para confirmar tu cuenta en poco minutos.' + confirmed: 'Tu cuenta ha sido confirmada. Ya has accedido a tu cuenta.' + registrations: + signed_up: 'Te has registrado correctamente. Si está disponible, te habremos enviado un email de confirmación.' + updated: 'Has actualizado tu cuenta correctamente.' + destroyed: '!Adiós! Tu cuenta ha sido cancelada. Esperamos verte pronto.' + unlocks: + send_instructions: 'Recibirás un email con instrucciones para desbloquear tu cuenta en pocos minutos.' + unlocked: 'Tu cuenta ha sido desbloqueada. Ya has accedido a tu cuenta.' + oauth_callbacks: + success: 'Has sido autorizado satisfactoriamente de la cuenta %{kind}.' + failure: 'No has sido autorizado en la cuenta %{kind} porque "%{reason}".' + mailer: + confirmation_instructions: + subject: 'Instrucciones de confirmación' + reset_password_instructions: + subject: 'Instrucciones para cambiar tu contraseña' + unlock_instructions: + subject: 'Instrucciones para desbloquear tu cuenta' \ No newline at end of file From 211bc1b59a2d188eacb99027a416e4cdaea1fde0 Mon Sep 17 00:00:00 2001 From: Vytautas Jakutis Date: Fri, 17 Sep 2010 05:09:38 +0800 Subject: [PATCH 133/292] adding Lithuanian locale, thanks to my friends and typewith.me :) --- config/locales/devise.lt.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/lt.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.lt.yml create mode 100644 config/locales/lt.yml diff --git a/config/locales/devise.lt.yml b/config/locales/devise.lt.yml new file mode 100644 index 000000000..86510d13c --- /dev/null +++ b/config/locales/devise.lt.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "nerasta" + already_confirmed: "jau patvirtinta" + not_locked: "nebuvo užrakinta" + + devise: + failure: + unauthenticated: 'Norint tęsti, reikia prisijungti arba susikurti paskyrą.' + unconfirmed: 'Norint prisijungti, reikia patvirtinti savo paskyrą.' + locked: 'Jūsų paskyra yra užrakinta.' + invalid: 'Neteisingas el. pašto adresas arba slaptažodis.' + invalid_token: 'Neteisingas prisijungimo raktas.' + timeout: 'Sesija baigėsi. Norint tęsti, reikia prisijungti iš naujo.' + inactive: 'Paskyra dar neaktyvuota.' + sessions: + signed_in: 'Sėkmingai prisijungta.' + signed_out: 'Sėkmingai atsijungta.' + passwords: + send_instructions: 'Netrukus gausite el. laišką su nurodymais slaptažodžiui atstatyti.' + updated: 'Slaptažodis pakeistas sėkmingai. Jūs esate prisijungęs.' + confirmations: + send_instructions: 'Netrukus gausite el. laišką su nurodymais paskyros patvirtinimui.' + confirmed: 'Paskyra patvirtinta. Prisijungėte.' + registrations: + signed_up: 'Prisijungta sėkmingai. Jei nustatyta, patvirtinimas išsiųstas į jūsų el. paštą.' + updated: 'Paskyra atnaujinta sėkmingai.' + destroyed: 'Paskyra sėkmingai atšaukta. Iki pasimatymo!' + unlocks: + send_instructions: 'Netrukus gausite el. laišką su nurodymais paskyros atrakinimui.' + unlocked: 'Paskyra atrakinta. Prisijungėte.' + mailer: + confirmation_instructions: 'Nurodymai patvirtinimui' + reset_password_instructions: 'Nurodymai slaptažodžio atstatymui' + unlock_instructions: 'Nurodymai paskyros atrakinimui' diff --git a/config/locales/lt.yml b/config/locales/lt.yml new file mode 100644 index 000000000..d20c8ff38 --- /dev/null +++ b/config/locales/lt.yml @@ -0,0 +1,10 @@ +# 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. + +en: + hello: "Sveikas pasauli" From 7d0db11444838b2b07318a8451850e0b9e22aa03 Mon Sep 17 00:00:00 2001 From: ZTurtleMan Date: Sat, 18 Sep 2010 11:08:24 +0800 Subject: [PATCH 134/292] Lithuanian local should use 'lt' not 'en' --- config/locales/devise.lt.yml | 2 +- config/locales/lt.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/locales/devise.lt.yml b/config/locales/devise.lt.yml index 86510d13c..d6e33c1cb 100644 --- a/config/locales/devise.lt.yml +++ b/config/locales/devise.lt.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +lt: errors: messages: not_found: "nerasta" diff --git a/config/locales/lt.yml b/config/locales/lt.yml index d20c8ff38..e1a529431 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -3,8 +3,8 @@ # the COPYRIGHT file. -# Sample localization file for English. Add more files in this directory for other locales. +# Sample localization file for Lithuanian. Add more files in this directory for other locales. # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. -en: +lt: hello: "Sveikas pasauli" From 08bdaf7340875cc0539d677da32c0a401672926b Mon Sep 17 00:00:00 2001 From: Mikhail Zubrov Date: Sat, 18 Sep 2010 09:58:29 +0400 Subject: [PATCH 135/292] add a Russian translation --- config/locales/devise.ru.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/ru.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.ru.yml create mode 100644 config/locales/ru.yml diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml new file mode 100644 index 000000000..0e9b7b92f --- /dev/null +++ b/config/locales/devise.ru.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "не найден(о)" + already_confirmed: "уже подтвержден(о)" + not_locked: "не заблокирован(о)" + + devise: + failure: + unauthenticated: 'Вам нужно войти либо зарегистрироваться, чтобы продолжить.' + unconfirmed: 'Вам нужно подтвердить вашу учётную запись, чтобы продолжить.' + locked: 'Ваша учётная запись заблокирована.' + invalid: 'Неверный e-mail или пароль.' + invalid_token: 'Неверный ключ аутентификации.' + timeout: 'Срок вашего сеанса истёк, пожалуйста, войдите в систему снова.' + inactive: 'Ваша учётная запись ещё не активирована.' + sessions: + signed_in: 'Вход в систему выполнен успешно.' + signed_out: 'Выход из системы выполнен успешно.' + passwords: + send_instructions: 'Вы получите e-mail с указаниями по сбросу пароля в течение нескольких минут.' + updated: 'Ваш пароль был изменён. Вы вошли в систему.' + confirmations: + send_instructions: 'Вы получите e-mail с указаниями по подтверждению учётной записи в течение нескольких минут.' + confirmed: 'Ваша учётная запись была подтверждена. Вы вошли в систему.' + registrations: + signed_up: 'Регистрация выполнена успешно. В зависимости от настроек, вам может прийти e-mail с подтверждением.' + updated: 'Обновление вашей учётной записи выполнено успешно.' + destroyed: 'До свидания! Ваша учётная запись была удалена. Надеемся, что вскоре вас увидим снова.' + unlocks: + send_instructions: 'Вы получите e-mail с указаниями по разблокированию учётной записи в течение нескольких минут.' + unlocked: 'Ваша учётная запись была разблокирована. Вы вошли в систему.' + mailer: + confirmation_instructions: 'Подтверждение учётной записи' + reset_password_instructions: 'Сброс пароля' + unlock_instructions: 'Разблокирование учётной записи' diff --git a/config/locales/ru.yml b/config/locales/ru.yml new file mode 100644 index 000000000..1a8e7fc4e --- /dev/null +++ b/config/locales/ru.yml @@ -0,0 +1,10 @@ +# 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. + +en: + hello: "Привет, мир" From 7e20f4242220f25ab987b751334531bd918d22d8 Mon Sep 17 00:00:00 2001 From: MrBison Date: Sat, 18 Sep 2010 02:18:07 -0700 Subject: [PATCH 136/292] oops, a stupid error. --- config/locales/devise.ru.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 0e9b7b92f..670d57026 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +ru: errors: messages: not_found: "не найден(о)" From a049cabc2d15ab853cfb533bfd1b8dc37ad82316 Mon Sep 17 00:00:00 2001 From: MrBison Date: Sat, 18 Sep 2010 02:18:35 -0700 Subject: [PATCH 137/292] oops, a stupid error fixed --- config/locales/ru.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 1a8e7fc4e..fe944aa59 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -6,5 +6,5 @@ # 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. -en: +ru: hello: "Привет, мир" From 32957658ba6c3dc443492923c08509cf2e2e846e Mon Sep 17 00:00:00 2001 From: Darkmagister Date: Sat, 18 Sep 2010 12:04:35 +0200 Subject: [PATCH 138/292] adding Italian locale --- config/locales/devise.it.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/it.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.it.yml create mode 100644 config/locales/it.yml diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml new file mode 100644 index 000000000..9b0fb0957 --- /dev/null +++ b/config/locales/devise.it.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +it: + errors: + messages: + not_found: "non trovato" + already_confirmed: "già confermato" + not_locked: "non bloccato" + + devise: + failure: + unauthenticated: 'È necessario che tu acceda o ti registri prima di continuare.' + unconfirmed: 'Devi confermare il tuo account prima di continuare.' + locked: 'Il tuo account è bloccato.' + invalid: 'Email o password invalida.' + invalid_token: 'Invalido token di autenticazione.' + timeout: 'La tua sessione è scaduta, per favore accedi nuovamente per continuare.' + inactive: 'Il tuo account non è ancora stato attivato.' + sessions: + signed_in: 'Collegamento avvenuto con successo.' + signed_out: 'Uscita avvenuta con successo.' + passwords: + send_instructions: 'Tra quale minuto riceverai una email con le istruzioni per ripristinare la password.' + updated: 'La tua password è stata cambiata con successo. Ora sei collegato.' + confirmations: + send_instructions: 'Tra qualche minuti riceverai una email con le istruzioni per confermare il tuo account.' + confirmed: 'Il tuo account è stato confermato con successo. Ora sei collegato.' + registrations: + signed_up: 'Ti sei registrato con successo. Se abilitato, ti verrà inviata una email di conferma.' + updated: 'Hai aggiornato il tuo account.' + destroyed: 'Addio! Il tuo account è stato cancellato. Speriamo di rivederti presto.' + unlocks: + send_instructions: 'Tra qualche minuti riceverai una email con le istruzioni per sbloccare il tuo account.' + unlocked: 'Il tuo account è stato sbloccato. Ora sei collegato.' + mailer: + confirmation_instructions: 'Istruzioni per la conferma' + reset_password_instructions: 'Istruzioni per il reset della password' + unlock_instructions: 'Istruzioni per lo sblocco' diff --git a/config/locales/it.yml b/config/locales/it.yml new file mode 100644 index 000000000..4cce93d73 --- /dev/null +++ b/config/locales/it.yml @@ -0,0 +1,10 @@ +# 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 Italian. Add more files in this directory for other locales. +# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +it: + hello: "Ciao Mondo" From 99651408740fdffe3952552d00fac8ec915f90ac Mon Sep 17 00:00:00 2001 From: Marcin Karpezo Date: Sat, 18 Sep 2010 13:32:17 +0200 Subject: [PATCH 139/292] Translated devise.en.yml --- config/locales/devise.pl.yml | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 config/locales/devise.pl.yml diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml new file mode 100644 index 000000000..ec9f44220 --- /dev/null +++ b/config/locales/devise.pl.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "nie znaleziono" + already_confirmed: "potwierdzono wcześniej" + not_locked: "nie był zablokowany" + + devise: + failure: + unauthenticated: 'By kontynuować musisz się zalogować lub zarejestrować.' + unconfirmed: 'Musisz aktywować swoje konto.' + locked: 'Twoje konto jest zablokowane.' + invalid: 'Nieprawidłowy adres email lub hasło.' + invalid_token: 'Nieprawidłowy kod identyfikacyjny.' + timeout: 'Twoja sesja wygasła, zaloguj się ponownie by kontynuować.' + inactive: 'Twoje konto nie zostało jeszcze aktywowane.' + sessions: + signed_in: 'Zalogowano pomyślnie.' + signed_out: 'Wylogowano.' + passwords: + send_instructions: 'W ciągu kilku minut otrzymasz maila zawierającego instrukcjie dotyczące zresetowania hasła.' + updated: 'Twoje hasło zostało zmienione, zostałeś zalogowany.' + confirmations: + send_instructions: 'W ciągu kilku minut otrzymasz maila zawierającego instrukcje dotyczące aktywacji konta.' + confirmed: 'Twoje konto zostało aktywowane, zostałeś zalogowany.' + registrations: + signed_up: 'Zostałeś zarejestrowany. Jeśli aktywowano odpowiednią opcję, wyślemy do Ciebie email potwierdzający rejestrację.' + updated: 'Pomyślnie zaktualizowano informacje o Twoim koncie.' + destroyed: 'Żegnaj! Twoje konto zostało usunięte.' + unlocks: + send_instructions: 'W ciągu kilku minut otrzymasz email z instrukcjami odblokowania konta.' + unlocked: 'Twoje konto zostało odblokowane, jesteś zalogowany.' + mailer: + confirmation_instructions: 'Instrukcje aktywacji' + reset_password_instructions: 'Instrukcje zmiany hasła' + unlock_instructions: 'Instrukcje odblokowania' From 0ce90b4b714fa836936bf60b705f1d2c364390c7 Mon Sep 17 00:00:00 2001 From: Marcin Karpezo Date: Sat, 18 Sep 2010 13:34:02 +0200 Subject: [PATCH 140/292] Translated en.yml --- config/locales/pl.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 config/locales/pl.yml diff --git a/config/locales/pl.yml b/config/locales/pl.yml new file mode 100644 index 000000000..e31046c29 --- /dev/null +++ b/config/locales/pl.yml @@ -0,0 +1,10 @@ +# 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. + +en: + hello: "Witaj świecie" From ecadeac86c77ea662c63dcdffba686ba6b5e22dc Mon Sep 17 00:00:00 2001 From: Marcin Karpezo Date: Sat, 18 Sep 2010 14:27:52 +0200 Subject: [PATCH 141/292] fixed translation --- config/locales/devise.pl.yml | 2 +- config/locales/pl.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml index ec9f44220..a490a1a39 100644 --- a/config/locales/devise.pl.yml +++ b/config/locales/devise.pl.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +pl: errors: messages: not_found: "nie znaleziono" diff --git a/config/locales/pl.yml b/config/locales/pl.yml index e31046c29..2052779bd 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -6,5 +6,5 @@ # 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. -en: +pl: hello: "Witaj świecie" From bf98ec38d0271775e5e7aad9e8a6199289e9d82c Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Sat, 18 Sep 2010 11:09:21 -0400 Subject: [PATCH 142/292] Moved devise.pl to devise locale folder --- config/locales/{ => devise}/devise.pl.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename config/locales/{ => devise}/devise.pl.yml (100%) diff --git a/config/locales/devise.pl.yml b/config/locales/devise/devise.pl.yml similarity index 100% rename from config/locales/devise.pl.yml rename to config/locales/devise/devise.pl.yml From 216cf8ccd77b4d6d4f90c2849bd3df5956d010a0 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Sat, 18 Sep 2010 11:14:39 -0400 Subject: [PATCH 143/292] Moved devise.ru to devise locale folder --- config/locales/{ => devise}/devise.ru.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename config/locales/{ => devise}/devise.ru.yml (100%) diff --git a/config/locales/devise.ru.yml b/config/locales/devise/devise.ru.yml similarity index 100% rename from config/locales/devise.ru.yml rename to config/locales/devise/devise.ru.yml From f48b8a4748565a8333725069661e7de02ca042d7 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Sat, 18 Sep 2010 11:20:57 -0400 Subject: [PATCH 144/292] Moved devise.it to devise locale folder --- config/locales/{ => devise}/devise.it.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename config/locales/{ => devise}/devise.it.yml (100%) diff --git a/config/locales/devise.it.yml b/config/locales/devise/devise.it.yml similarity index 100% rename from config/locales/devise.it.yml rename to config/locales/devise/devise.it.yml From 34c0c3c89f3aeda6c142f34f63262cdb11edfabc Mon Sep 17 00:00:00 2001 From: Otacon Date: Sat, 18 Sep 2010 18:30:00 +0800 Subject: [PATCH 145/292] Added italian translation (it) --- config/locales/devise.it.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/it.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.it.yml create mode 100644 config/locales/it.yml diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml new file mode 100644 index 000000000..08b255546 --- /dev/null +++ b/config/locales/devise.it.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +it: + errors: + messages: + not_found: "non trovato" + already_confirmed: "è già stato confermato" + not_locked: "non era bloccato" + + devise: + failure: + unauthenticated: 'Devi effettuare l'accesso o registrarci prima di continuare.' + unconfirmed: 'Devi confermare il tuo account prima di continuare.' + locked: 'Il tuo account è bloccato.' + invalid: 'Email o password errati.' + invalid_token: 'Token di autenticazione errato.' + timeout: 'La tua sessione è scaduta, effettua di nuovo l'accesso per continuare.' + inactive: 'Il tuo account non è ancora stato attivato.' + sessions: + signed_in: 'Accesso effettuato con successo.' + signed_out: 'Disconnessione effettuata con successo.' + passwords: + send_instructions: 'Tra pochi minuti riceverai una email con le istruzioni su come cambiare la tua password.' + updated: 'La tua password è stata modificata. Hai appena effettuato l'accesso.' + confirmations: + send_instructions: 'Tra pochi minuti riceverai una email per confermare il tuo account.' + confirmed: 'Il tuo account è stato confermato con successo. Hai appena effettuato l'accesso.' + registrations: + signed_up: 'Ti sei iscritto. Se il servizio è disponibile, riceverai una conferma via email.' + updated: 'Hai aggiornato il tuo account.' + destroyed: 'Ciao!Il tuo account è stato rimosso. Speriamo che tu torni a trovarci presto.' + unlocks: + send_instructions: 'Tra pochi minuti riceverai una mail con le istruzioni su come sbloccare il tuo account.' + unlocked: 'Il tuo account è stato sbloccato. Hai appena effettuato l'accesso.' + mailer: + confirmation_instructions: 'Istruzioni sulla conferma' + reset_password_instructions: 'Istruzioni su come cambiare la password' + unlock_instructions: 'Istruzione su come sbloccare l'accont' diff --git a/config/locales/it.yml b/config/locales/it.yml new file mode 100644 index 000000000..1da349bf9 --- /dev/null +++ b/config/locales/it.yml @@ -0,0 +1,10 @@ +# 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 Italian. Add more files in this directory for other locales. +# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +it: + hello: "Ciao mondo!" From f034b180c2247ded4171eb81896b4fa001b409ff Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sat, 18 Sep 2010 15:36:42 -0700 Subject: [PATCH 146/292] quotation fix in italian locale --- config/locales/devise.it.yml | 42 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml index 08b255546..75b90affc 100644 --- a/config/locales/devise.it.yml +++ b/config/locales/devise.it.yml @@ -12,30 +12,30 @@ it: devise: failure: - unauthenticated: 'Devi effettuare l'accesso o registrarci prima di continuare.' - unconfirmed: 'Devi confermare il tuo account prima di continuare.' - locked: 'Il tuo account è bloccato.' - invalid: 'Email o password errati.' - invalid_token: 'Token di autenticazione errato.' - timeout: 'La tua sessione è scaduta, effettua di nuovo l'accesso per continuare.' - inactive: 'Il tuo account non è ancora stato attivato.' + unauthenticated: "Devi effettuare l'accesso o registrarci prima di continuare." + unconfirmed: "Devi confermare il tuo account prima di continuare." + locked: "Il tuo account è bloccato." + invalid: "Email o password errati." + invalid_token: "Token di autenticazione errato." + timeout: "La tua sessione è scaduta, effettua di nuovo l'accesso per continuare." + inactive: "Il tuo account non è ancora stato attivato." sessions: - signed_in: 'Accesso effettuato con successo.' - signed_out: 'Disconnessione effettuata con successo.' + signed_in: "Accesso effettuato con successo." + signed_out: "Disconnessione effettuata con successo." passwords: - send_instructions: 'Tra pochi minuti riceverai una email con le istruzioni su come cambiare la tua password.' - updated: 'La tua password è stata modificata. Hai appena effettuato l'accesso.' + send_instructions: "Tra pochi minuti riceverai una email con le istruzioni su come cambiare la tua password." + updated: "La tua password è stata modificata. Hai appena effettuato l'accesso." confirmations: - send_instructions: 'Tra pochi minuti riceverai una email per confermare il tuo account.' - confirmed: 'Il tuo account è stato confermato con successo. Hai appena effettuato l'accesso.' + send_instructions: "Tra pochi minuti riceverai una email per confermare il tuo account." + confirmed: "Il tuo account è stato confermato con successo. Hai appena effettuato l'accesso." registrations: - signed_up: 'Ti sei iscritto. Se il servizio è disponibile, riceverai una conferma via email.' - updated: 'Hai aggiornato il tuo account.' - destroyed: 'Ciao!Il tuo account è stato rimosso. Speriamo che tu torni a trovarci presto.' + signed_up: "Ti sei iscritto. Se il servizio è disponibile, riceverai una conferma via email." + updated: "Hai aggiornato il tuo account." + destroyed: "Ciao!Il tuo account è stato rimosso. Speriamo che tu torni a trovarci presto." unlocks: - send_instructions: 'Tra pochi minuti riceverai una mail con le istruzioni su come sbloccare il tuo account.' - unlocked: 'Il tuo account è stato sbloccato. Hai appena effettuato l'accesso.' + send_instructions: "Tra pochi minuti riceverai una mail con le istruzioni su come sbloccare il tuo account." + unlocked: "Il tuo account è stato sbloccato. Hai appena effettuato l'accesso." mailer: - confirmation_instructions: 'Istruzioni sulla conferma' - reset_password_instructions: 'Istruzioni su come cambiare la password' - unlock_instructions: 'Istruzione su come sbloccare l'accont' + confirmation_instructions: "Istruzioni sulla conferma" + reset_password_instructions: "Istruzioni su come cambiare la password" + unlock_instructions: "Istruzione su come sbloccare l'account" From 6cf5f6c8c7f1d46197e89f4dd79b3f51db9eed40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=99Jarkko?= <’jm60697@gmail.com’> Date: Sat, 18 Sep 2010 19:37:09 +0800 Subject: [PATCH 147/292] Finnish locales --- config/locales/devise.fi.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/fi.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.fi.yml create mode 100644 config/locales/fi.yml diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml new file mode 100644 index 000000000..591341501 --- /dev/null +++ b/config/locales/devise.fi.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. +# Translator: jarkko moilanen, jm60697@gmail.com + +fi: + errors: + messages: + not_found: "ei löytynyt" + already_confirmed: "oli jo varmistettu" + not_locked: "ei ollut lukittu" + + devise: + failure: + unauthenticated: 'Kirjaudu tai rekisteröidy ennen kuin voit jatkaa.' + unconfirmed: 'Sinun pitää vahvistaa käyttäjätilisi ennen kuin voit jatkaa' + locked: 'Käyttäjätilisi on lukittu.' + invalid: 'Väärä sähköpostiosoite tai salasana.' + invalid_token: 'Viallinen todennus.' + timeout: 'Istunto on vanhentunut, kirjaudu uudelleen.' + inactive: 'Käyttätiliäsi ei ole vielä vahvistettu.' + sessions: + signed_in: 'Sisäänkirjautuminen onnistui.' + signed_out: 'Uoskirjautuminen onnistui.' + passwords: + send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten asetat salasanasi uudelleen. + updated: 'Salasanasi on vaihdettu. Olet nyt kirjautunut sisään.' + confirmations: + send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten vahvistat käyttäjätilisi luonnin.' + confirmed: 'Käyttäjätilisi luonti on vahvistettu. Olet nyt kirjautunut sisään.' + registrations: + signed_up: 'Käyttäjätilin luominen onnistui. Mahdollinen vahvistuspyyntö on lähetetty sähköpostiisi.' + updated: 'Käyttäjätilisi on päivitetty.' + destroyed: 'Näkemiin! Käyttäjätilisi on poistettu. Toivottavasti näemme sinut pian uudelleen.' + unlocks: + send_instructions: 'Saat muutaman minuutin kuluttua sähköpostiisi ohjeet siitä miten avaat lukituksen.' + unlocked: 'Käyttäjätilisi lukitus on avattu. Olet nyt kirjautunut sisään.' + mailer: + confirmation_instructions: 'Ohjeet vahvistamiseen/todentamiseen' + reset_password_instructions: 'Ohjeet salananan uudelleenasettamiseksi' + unlock_instructions: 'Ohjeet lukituksen poistamiseksi' diff --git a/config/locales/fi.yml b/config/locales/fi.yml new file mode 100644 index 000000000..5e1a6da32 --- /dev/null +++ b/config/locales/fi.yml @@ -0,0 +1,10 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. +# Translator jarkko moilanen, jm60697@gmail.com + +# 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. + +fi: + hello: "Terve, maailma" From ac09f48cf86cd2bb3ab07f1e4f24b56b3ce112d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danillo=20C=C3=A9sar?= Date: Sun, 19 Sep 2010 00:53:39 +0800 Subject: [PATCH 148/292] Added locales files for portuguese brazilian. --- config/locales/devise.pt-BR.yml | 41 +++++++++++++++++++++++++++++++++ config/locales/pt-BR.yml | 10 ++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.pt-BR.yml create mode 100644 config/locales/pt-BR.yml diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml new file mode 100644 index 000000000..ba2b3b5de --- /dev/null +++ b/config/locales/devise.pt-BR.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +pt-BR: + errors: + messages: + not_found: "não encontrado" + already_confirmed: "já foi confirmado" + not_locked: "não foi bloqueado" + + devise: + failure: + unauthenticated: 'Você precisa fazer login ou se cadastrar antes de continuar.' + unconfirmed: 'Você tem que confirmar a sua conta antes de continuar.' + locked: 'Sua conta está bloqueada.' + invalid: 'E-mail ou senha inválida.' + invalid_token: 'Token de autenticação inválida.' + timeout: 'Sua sessão expirou, por favor logue-se novamente para continuar.' + inactive: 'Sua conta ainda não foi ativada.' + sessions: + signed_in: 'Você entrou com sucesso.' + signed_out: 'Você saiu com sucesso.' + passwords: + send_instructions: 'Você receberá um email com instruções sobre como redefinir sua senha em alguns minutos.' + updated: 'Sua senha foi alterada com sucesso.' + confirmations: + send_instructions: 'Você receberá um email em alguns minutos com as instruções sobre como confirmar a sua conta.' + confirmed: 'Sua conta foi confirmada com sucesso. Você já pode continuar navegando.' + registrations: + signed_up: 'Você se inscreveu com êxito. Se habilitado, a confirmação foi enviada para seu e-mail.' + updated: 'Você atualizou a sua conta com sucesso.' + destroyed: 'Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve.' + unlocks: + send_instructions: 'Você receberá um email em alguns minutos com as instruções sobre como desbloquear a sua conta.' + unlocked: 'Sua conta foi desbloqueada com sucesso. Você já pode continuar navegando.' + mailer: + confirmation_instructions: 'Instruções para confirmarção' + reset_password_instructions: 'Instruções para redefinir a senha' + unlock_instructions: 'Instruções para o desbloqueio' diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml new file mode 100644 index 000000000..67c077090 --- /dev/null +++ b/config/locales/pt-BR.yml @@ -0,0 +1,10 @@ +# 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 Portuguese Brazilian. Add more files in this directory for other locales. +# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +pt-BR: + hello: "Olá Mundo" From 2efde8a841c65ae26559047525a31b8449221a3f Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sat, 18 Sep 2010 15:50:35 -0700 Subject: [PATCH 149/292] added missing quote in finnish locale --- config/locales/devise.fi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml index 591341501..4ee6761f8 100644 --- a/config/locales/devise.fi.yml +++ b/config/locales/devise.fi.yml @@ -23,7 +23,7 @@ fi: signed_in: 'Sisäänkirjautuminen onnistui.' signed_out: 'Uoskirjautuminen onnistui.' passwords: - send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten asetat salasanasi uudelleen. + send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten asetat salasanasi uudelleen.' updated: 'Salasanasi on vaihdettu. Olet nyt kirjautunut sisään.' confirmations: send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten vahvistat käyttäjätilisi luonnin.' From e9a3f46fbda8fcb749535103a07da0c63ba46221 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sat, 18 Sep 2010 16:42:07 -0700 Subject: [PATCH 150/292] fixed query function to go through mongomapper instead of custom --- app/models/person.rb | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 1e2a7b18d..aac7b23ae 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -34,11 +34,8 @@ class Person validates_format_of :url, :with => /^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix - def self.search(query) - Person.all('$where' => "function() { return this.diaspora_handle.match(/^#{query}/i) || - this.profile.first_name.match(/^#{query}/i) || - this.profile.last_name.match(/^#{query}/i); }") + Person.all('profile.first_name' => /^#{query}/) | Person.all('profile.last_name' => /^#{query}/) end def real_name From 08f833ba7a5c276668ac5f44ffe3db536bb3ce78 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sat, 18 Sep 2010 17:21:18 -0700 Subject: [PATCH 151/292] case insensitivity on search --- app/models/person.rb | 2 +- spec/models/person_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index aac7b23ae..b1e7e3745 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -35,7 +35,7 @@ class Person /^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix def self.search(query) - Person.all('profile.first_name' => /^#{query}/) | Person.all('profile.last_name' => /^#{query}/) + Person.all('profile.first_name' => /^#{query}/i) | Person.all('profile.last_name' => /^#{query}/i) end def real_name diff --git a/spec/models/person_spec.rb b/spec/models/person_spec.rb index bffe37f85..4f236b733 100644 --- a/spec/models/person_spec.rb +++ b/spec/models/person_spec.rb @@ -134,13 +134,13 @@ describe Person do people.include?(@friend_three).should == false people.include?(@friend_four).should == false - people = Person.search("Wei") + people = Person.search("wEi") people.include?(@friend_two).should == true people.include?(@friend_one).should == false people.include?(@friend_three).should == false people.include?(@friend_four).should == false - people = Person.search("Gri") + people = Person.search("gri") people.include?(@friend_one).should == true people.include?(@friend_four).should == true people.include?(@friend_two).should == false From b5a29713027a1810234a0df4b1440baa618af64b Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sat, 18 Sep 2010 17:49:52 -0700 Subject: [PATCH 152/292] search results for people now look like the stream --- app/views/people/_person.html.haml | 26 +++++++++++++++ app/views/people/index.html.haml | 42 +++++------------------- public/stylesheets/application.css | 2 ++ public/stylesheets/sass/application.sass | 3 ++ 4 files changed, 39 insertions(+), 34 deletions(-) create mode 100644 app/views/people/_person.html.haml diff --git a/app/views/people/_person.html.haml b/app/views/people/_person.html.haml new file mode 100644 index 000000000..ef1c69d28 --- /dev/null +++ b/app/views/people/_person.html.haml @@ -0,0 +1,26 @@ +-# Copyright (c) 2010, Diaspora Inc. This file is +-# licensed under the Affero General Public License version 3. See +-# the COPYRIGHT file. + + +%li.message{:id => person.id} + + = person_image_link(person) + + .content + %span.from + = link_to person.real_name, person + + .info + = person.diaspora_handle + + .right{ :style => "display:inline;top:0;" } + - if person.id == current_user.person.id + thats you! + - elsif current_user.pending_requests.find_by_person_id(person.id) + = link_to "pending request", aspects_manage_path + - else + = form_for Request.new do |f| + = f.select(:aspect_id, @aspects_dropdown_array) + = f.hidden_field :destination_url, :value => person.diaspora_handle + = f.submit "add friend" diff --git a/app/views/people/index.html.haml b/app/views/people/index.html.haml index c18ec5d0a..f80a80f3e 100644 --- a/app/views/people/index.html.haml +++ b/app/views/people/index.html.haml @@ -14,38 +14,12 @@ - content_for :left_pane do \. -= (@people.count).to_s + search_or_index -%table - %tr - %th real name - %th diaspora handle - %th url - - for person in @people - %tr - - if current_user.friends.include? person - %td= link_to person.real_name, person - - else - %td= person.real_name +%h1 + search results for + %u= params[:q] - %td= person.diaspora_handle - %td= person.url - - -if current_user.friends.include? person - - - elsif person.id == current_user.person.id - %td - %td that's you! - -elsif current_user.pending_requests.find_by_person_id(person.id) - %td - %td ^-you have a friend request from this person - -elsif current_user.pending_requests.find_by_url(person.receive_url) - %td - %td friend request pending - -else - %td - %td - = form_for Request.new do |f| - = f.select(:aspect_id, @aspects_dropdown_array) - = f.hidden_field :destination_url, :value => person.diaspora_handle - = f.submit "add friend" - = will_paginate @people +%ul#stream + - for person in @people + = render 'people/person', :person => person + += will_paginate @people diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index c6282b1b8..3fb38e98c 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -145,6 +145,8 @@ ul#stream { border-bottom: 1px solid #eeeeee; } ul#stream > li:first-child { padding-top: 0; } + ul#stream .right { + top: 0; } li.message { position: relative; diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 206c122bd..9f9158741 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -186,6 +186,9 @@ ul#stream :padding :top 0 + .right + :top 0 + li.message :position relative :line-height 140% From cc4e9f8d3939ff427752074c481024c4cb4bd28c Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sat, 18 Sep 2010 17:56:26 -0700 Subject: [PATCH 153/292] description text for all boxes in manage page. search box text defaults to query on people#index. --- app/views/aspects/manage.html.haml | 14 +++++++++----- app/views/people/index.html.haml | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 667196b85..c579671e1 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -13,16 +13,20 @@ .requests %ul.dropzone - - for request in @remote_requests - %li.requested_person{:id => request.person.id, :request_id => request.id} - = person_image_tag(request.person) - .name - = request.person.real_name + - if @remote_requests.size < 1 + %li.grey No new requests + - else + - for request in @remote_requests + %li.requested_person{:id => request.person.id, :request_id => request.id} + = person_image_tag(request.person) + .name + = request.person.real_name %h1 Ignore/Remove %li.remove %ul.dropzone + %li.grey Drag to ignore/remove - content_for :publish do = link_to("add a new aspect", "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => "Add a new aspect") diff --git a/app/views/people/index.html.haml b/app/views/people/index.html.haml index f80a80f3e..2cd1dc4a7 100644 --- a/app/views/people/index.html.haml +++ b/app/views/people/index.html.haml @@ -8,7 +8,7 @@ Search =form_tag '/people', :method => "get" do - = text_field_tag :q + = text_field_tag :q, params[:q] = submit_tag "search" - content_for :left_pane do From 5740c72804cb57879436bdf5c2917a5df12f660a Mon Sep 17 00:00:00 2001 From: MrZYX Date: Sat, 18 Sep 2010 17:27:13 +0800 Subject: [PATCH 154/292] made websocket server host configurable --- config/app_config.yml | 3 +++ script/websocket_server.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/config/app_config.yml b/config/app_config.yml index a138424ee..354dc75b2 100644 --- a/config/app_config.yml +++ b/config/app_config.yml @@ -7,6 +7,7 @@ development: debug: false socket_debug : false + socket_host: 0.0.0.0 socket_port: 8080 socket_collection_name: 'websocket' pubsub_server: 'https://pubsubhubbub.appspot.com/' @@ -14,11 +15,13 @@ development: test: debug: false socket_debug : false + socket_host: 0.0.0.0 socket_port: 8081 pubsub_server: 'https://pubsubhubbub.appspot.com/' production: debug: false socket_debug : false + socket_host: 0.0.0.0 socket_port: 8080 pubsub_server: 'https://pubsubhubbub.appspot.com/' diff --git a/script/websocket_server.rb b/script/websocket_server.rb index 2fbc1370a..dae054f15 100644 --- a/script/websocket_server.rb +++ b/script/websocket_server.rb @@ -24,7 +24,7 @@ begin Diaspora::WebSocket.initialize_channels EventMachine::WebSocket.start( - :host => "0.0.0.0", + :host => APP_CONFIG[:socket_host], :port => APP_CONFIG[:socket_port], :debug =>APP_CONFIG[:socket_debug]) do |ws| ws.onopen { From 7c62a5adf777361ddf4bfde47d5dfa5dad6de2f7 Mon Sep 17 00:00:00 2001 From: MrZYX Date: Sun, 19 Sep 2010 00:29:56 +0800 Subject: [PATCH 155/292] fixed drag & drop on aspect manage page --- public/javascripts/aspect-edit.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index c7061797d..e07877cb7 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -42,14 +42,14 @@ $(function() { }); - $("ul .person .requested_person").draggable({ + // Multiple classes here won't work + $("ul .person").draggable({ revert: true }); - // Moved class to logic above - unnec duplicate logic - //$("ul .requested_person").draggable({ - // revert: true - //}); + $("ul .requested_person").draggable({ + revert: true + }); $(".aspect ul").droppable({ hoverClass: 'active', From c34e4caafa27ffc724499363bc17ca31ab551cee Mon Sep 17 00:00:00 2001 From: kook Date: Sat, 18 Sep 2010 23:52:49 +0800 Subject: [PATCH 156/292] czech translation --- config/locales/cs.yml | 10 +++++++++ config/locales/devise.cs.yml | 41 ++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/cs.yml create mode 100644 config/locales/devise.cs.yml diff --git a/config/locales/cs.yml b/config/locales/cs.yml new file mode 100644 index 000000000..91c904dc1 --- /dev/null +++ b/config/locales/cs.yml @@ -0,0 +1,10 @@ +# 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 Lithuanian. Add more files in this directory for other locales. +# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +cs: + hello: "Dobrý Den" diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml new file mode 100644 index 000000000..a8ca9ae84 --- /dev/null +++ b/config/locales/devise.cs.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "nenalezeno" + already_confirmed: "již bylo potvrzeno" + not_locked: "nebylo zamčeno" + + devise: + failure: + unauthenticated: 'Pro pokračování se musíte přihlásit nebo si vytvořit účet.' + unconfirmed: 'Před pokračováním musíte potvrdit svůj účet.' + locked: 'Váš účet je uzamčen.' + invalid: 'Neplatný email nebo heslo.' + invalid_token: 'Neplatný autentizační token.' + timeout: 'Vaše sezení vypršelo, pro pokračování se prosím přihlašte znovu.' + inactive: 'Váš účet ještě nebyl aktivován.' + sessions: + signed_in: 'Přihlášení proběhlo úspěšně.' + signed_out: 'Odhlášení proběhlo úspěšně.' + passwords: + send_instructions: 'Běhěm několika minut obdržíte email s instrukcemi k resetnutí hesla.' + updated: 'Vaše heslo bylo úspěšně změněno. Nyní jste přihlášeni' + confirmations: + send_instructions: 'Během několika minut obdržíte email s instrukcemi k potvrzení vašeho účtu.' + confirmed: 'Váš účet byl uspěšně potvrzen. Nyní jste přihlášeni.' + registrations: + signed_up: 'Úspěšně jste vytvořili účet. Pokud je tak server nastaven, byl vám zaslán potvrzovací email.' + updated: 'Úspěšně jste upravili svůj účet.' + destroyed: 'Sbohem! Váš účet byl úspěšně zrušen. Brzy naviděnou.' + unlocks: + send_instructions: 'Během několika minut obdržíte email s instrukcemi k odemknutí vašeho účtu.' + unlocked: 'Váš účet byl úspěšně odemknut. Nyní jste přihlášeni.' + mailer: + confirmation_instructions: 'Instrukce k potvrzení' + reset_password_instructions: 'Instrukce k resetnutí hesla' + unlock_instructions: 'Instrukce k odemčení' From 6c6c7be1e50aedf3aa1e2a24082d994bf9e61566 Mon Sep 17 00:00:00 2001 From: kook Date: Sat, 18 Sep 2010 23:54:25 +0800 Subject: [PATCH 157/292] oopsie --- config/locales/devise.cs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml index a8ca9ae84..34d9eb7c1 100644 --- a/config/locales/devise.cs.yml +++ b/config/locales/devise.cs.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +cs: errors: messages: not_found: "nenalezeno" From c4f420ec594304391f9ea5fa0bfc0afeea30a7ca Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Sun, 19 Sep 2010 18:15:36 +0200 Subject: [PATCH 158/292] some corrections from sennewood --- config/locales/devise.de.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 516eebfed..9fe2e5a32 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -17,7 +17,7 @@ de: locked: 'Dein Konto ist gesperrt.' invalid: 'Ungültige E-Mail-Adresse oder Passwort.' invalid_token: 'Ungültiger Authentifizierungstoken.' - timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an, um fortzufahren.' + timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an um fortzufahren.' inactive: 'Dein Konto wurde noch nicht aktiviert.' sessions: signed_in: 'Erfolgreich angemeldet.' @@ -30,7 +30,7 @@ de: confirmed: 'Dein Konto wurde erfolgreich bestätigt. Du bist nun angemeldet.' registrations: signed_up: 'Du wurdest erfolgreich registriert. Falls aktiviert, wurde dir eine E-Mail zur Bestätigung geschickt.' - updated: 'Du hast erfolgreich dein Konto aktualisiert.' + updated: 'Dein Konto wurde aktualisiert.' destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' unlocks: send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto entsperren kannst.' From 230865aaa29c1ed08a43c676ac790f9be9ff7bec Mon Sep 17 00:00:00 2001 From: Pedro Silva Date: Sun, 19 Sep 2010 11:05:31 +0800 Subject: [PATCH 159/292] Added Portuguese Portugal locale --- config/locales/devise.pt-PT.yml | 41 +++++++++++++++++++++++++++++++++ config/locales/pt-PT.yml | 10 ++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.pt-PT.yml create mode 100644 config/locales/pt-PT.yml diff --git a/config/locales/devise.pt-PT.yml b/config/locales/devise.pt-PT.yml new file mode 100644 index 000000000..cf16fd20d --- /dev/null +++ b/config/locales/devise.pt-PT.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +pt-PT: + errors: + messages: + not_found: "não foi encontrado" + already_confirmed: "já foi confirmado" + not_locked: "não foi bloqueado" + + devise: + failure: + unauthenticated: 'Faça login ou registre-se antes de continuar.' + unconfirmed: 'Confirme a sua conta antes de continuar.' + locked: 'A sua conta foi bloqueada.' + invalid: 'Endereço de correio ou senha inválida.' + invalid_token: 'Token de autenticação inválido.' + timeout: 'A sua sessão expirou, por favor faça login novamente para continuar.' + inactive: 'A sua conta ainda não foi activada.' + sessions: + signed_in: 'Login com sucesso.' + signed_out: 'Logout com sucesso.' + passwords: + send_instructions: 'Vai receber um email com instruções sobre como alterar a sua senha dentro de alguns minutos.' + updated: 'A sua senha foi alterada com sucesso. Está on-line.' + confirmations: + send_instructions: 'Vai receber um email com instruções sobre como confirmar a sua conta dentro de alguns minutos.' + confirmed: 'A sua conta foi confirmada com sucesso. Está on-line.' + registrations: + signed_up: 'Registou-se com sucesso. Se ligado, a confirmação foi enviada para o seu email.' + updated: 'Actualizou a sua conta com sucesso.' + destroyed: 'Adeus! A sua conta foi cancelada com sucesso. Esperamos vê-lo de novo brevemente.' + unlocks: + send_instructions: 'Vai receber uma mensagem sobre como desbloquear a sua conta dentro de alguns minutos.' + unlocked: 'A sua conta foi desbloqueada com sucesso. Está on-line.' + mailer: + confirmation_instructions: 'Instruções de confirmação' + reset_password_instructions: 'Instruções para alterar a sua senha' + unlock_instructions: 'Instruções para desbloquear' diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml new file mode 100644 index 000000000..ce3d9abbc --- /dev/null +++ b/config/locales/pt-PT.yml @@ -0,0 +1,10 @@ +# 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 Portuguese Portugal. Add more files in this directory for other locales. +# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +pt-PT: + hello: "Olá mundo" From b40b81e447d13166c5e2ed79c6ac5435300f255b Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sun, 19 Sep 2010 10:11:41 -0700 Subject: [PATCH 160/292] aspect manage tab now reads 'manage aspects' --- app/views/shared/_aspect_nav.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/shared/_aspect_nav.haml b/app/views/shared/_aspect_nav.haml index b61def9f5..ed3fe6f8f 100644 --- a/app/views/shared/_aspect_nav.haml +++ b/app/views/shared/_aspect_nav.haml @@ -14,7 +14,7 @@ = link_to "All Aspects", root_url %li{ :style => "margin-right:0;", :class => ("selected" if @aspect == :manage)} - = link_to ( (@request_count == 0)? "manage" : "manage (#{@request_count})"), {:controller => :aspects, :action => :manage}, :class => "edit_aspect_button", :class => new_request(@request_count), :title => "Manage your Aspects" + = link_to ( (@request_count == 0)? "Manage Aspects" : "Manage Aspects (#{@request_count})"), {:controller => :aspects, :action => :manage}, :class => "edit_aspect_button", :class => new_request(@request_count), :title => "Manage your Aspects" .yo{ :style => "display:none;"} #add_aspect_pane From 14ad24ba7e57a3742e73f98a65cb334ec76ae4f1 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sun, 19 Sep 2010 14:27:20 -0700 Subject: [PATCH 161/292] visual tweaks on header. moved upload a file button to header on album#show --- app/helpers/application_helper.rb | 2 +- app/views/albums/show.html.haml | 10 +++---- .../status_messages/_status_message.html.haml | 3 +- public/javascripts/stream.js | 8 ----- public/stylesheets/application.css | 20 +++++++++---- public/stylesheets/sass/application.sass | 29 ++++++++++++++----- 6 files changed, 43 insertions(+), 29 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f2a0a95fd..75a13dc6b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -28,7 +28,7 @@ module ApplicationHelper end def how_long_ago(obj) - "#{time_ago_in_words(obj.created_at)} ago." + "#{time_ago_in_words(obj.created_at)} ago" end def person_url(person) diff --git a/app/views/albums/show.html.haml b/app/views/albums/show.html.haml index 843523223..3c71cede1 100644 --- a/app/views/albums/show.html.haml +++ b/app/views/albums/show.html.haml @@ -17,11 +17,16 @@ = render "shared/aspect_friends" - content_for :publish do + -if current_user.owns? @album + .right + =render 'photos/new_photo' + = link_to 'Edit Album', edit_album_path(@album), :class => 'button' %h1 = @album.name ="updated #{how_long_ago(@album)}" + .album_id{:id => @album.id, :style => "display:hidden;"} -unless current_user.owns? @album @@ -31,13 +36,8 @@ - for photo in @album_photos .image_thumb = link_to (image_tag photo.url(:thumb_medium)), object_path(photo) - -if current_user.owns? @album - =render 'photos/new_photo' #content_bottom .back = link_to "⇧ albums", albums_path - -if current_user.owns? @album - .right - = link_to 'Edit Album', edit_album_path(@album), :class => 'button' diff --git a/app/views/status_messages/_status_message.html.haml b/app/views/status_messages/_status_message.html.haml index a22098afa..396f143a7 100644 --- a/app/views/status_messages/_status_message.html.haml +++ b/app/views/status_messages/_status_message.html.haml @@ -13,13 +13,12 @@ = auto_link sanitize post.message .info - = link_to(how_long_ago(post), object_path(post)) + %span.time= link_to(how_long_ago(post), object_path(post)) \-- = link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments" = render "comments/comments", :post => post - - if current_user.owns?(post) .destroy_link = link_to 'Delete', status_message_path(post), :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "delete" diff --git a/public/javascripts/stream.js b/public/javascripts/stream.js index cf0856754..e8db10abd 100644 --- a/public/javascripts/stream.js +++ b/public/javascripts/stream.js @@ -14,14 +14,6 @@ $(document).ready(function(){ }); });//end document ready -$("#stream li").live('mouseover',function() { - $(this).children(".destroy_link").fadeIn(0); -}); - -$("#stream li").live('mouseout',function() { - $(this).children(".destroy_link").fadeOut(0); -}); - $(".show_post_comments").live('click', function(event) { event.preventDefault(); diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 3fb38e98c..9a06eab4c 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -118,7 +118,6 @@ header { header #session_action ul li:last-child { margin-right: 0; } header #aspect_header { - z-index: 5; background-color: #eeeeee; border-top: 1px solid white; padding: 20px 0; } @@ -129,7 +128,7 @@ header { color: #111111; } header #aspect_header a:hover { background: none; - color: #333333; } + color: #999999; } header #aspect_header .page_title { text-transform: uppercase; text-shadow: 0 2px 0 white; @@ -143,8 +142,10 @@ ul#stream { list-style: none; padding: 12px 0; border-bottom: 1px solid #eeeeee; } - ul#stream > li:first-child { - padding-top: 0; } + ul#stream > li:hover { + background-color: #fafafa; } + ul#stream > li:hover .destroy_link { + display: inline; } ul#stream .right { top: 0; } @@ -167,6 +168,8 @@ li.message { li.message .content div.info { color: #bababa; font-size: 70%; } + li.message .content div.info .time a { + color: #666666; } form { position: relative; @@ -262,7 +265,7 @@ ul.comment_set { .destroy_link, .request_button { position: absolute; - right: 0; + right: 2em; bottom: 15px; } .destroy_link a, .request_button a { color: #999999; @@ -458,7 +461,7 @@ h1.big_text { #aspect_nav ul > li { padding: 0; display: inline; - margin-right: 0.5em; } + margin-right: 0.2em; } #aspect_nav ul > li a { line-height: 22px; background-color: #444444; @@ -470,12 +473,17 @@ h1.big_text { background-color: #4e4e4e; color: #cccccc; } #aspect_nav ul > li.selected a { + z-index: 50; + -webkit-box-shadow: 0px -4px 6px -2px #777777; + -moz-box-shadow: 0px -4px 6px -2px #777777; text-shadow: 0 2px 0 white; padding-top: 4px; padding-bottom: 5px; line-height: 18px; font-weight: bold; background-color: #eeeeee; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(white), to(#eeeeee)); + background: -moz-linear-gradient(19% 75% 90deg, #eeeeee, white); border: 1px solid white; border-bottom: 1px solid #eeeeee; color: black; } diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 9f9158741..e5a16e6f2 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -146,7 +146,6 @@ header :right 0 #aspect_header - :z-index 5 :background :color #eee :border @@ -162,7 +161,7 @@ header :color #111 &:hover :background none - :color #333 + :color #999 .page_title :text @@ -182,9 +181,12 @@ ul#stream :border :bottom 1px solid #eee - > li:first-child - :padding - :top 0 + &:hover + :background + :color #fafafa + + .destroy_link + :display inline .right :top 0 @@ -219,6 +221,10 @@ li.message :color #bababa :font-size 70% + .time + a + :color #666 + form :position relative @@ -348,7 +354,7 @@ ul.comment_set .destroy_link, .request_button :position absolute - :right 0 + :right 2em :bottom 15px a :color #999 @@ -604,13 +610,14 @@ h1.big_text :padding 0 :display inline :margin - :right 0.5em + :right 0.2em a :line :height 22px :background :color #444 + :border 1px solid #555 :padding 3px 8px @@ -623,6 +630,10 @@ h1.big_text :color #ccc &.selected a + :z-index 50 + :-webkit-box-shadow 0px -4px 6px -2px #777 + :-moz-box-shadow 0px -4px 6px -2px #777 + :text-shadow 0 2px 0 #fff :padding :top 4px @@ -633,6 +644,10 @@ h1.big_text :weight bold :background :color #eee + + :background -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#eee)) + :background -moz-linear-gradient(19% 75% 90deg, #eee, #fff) + :border 1px solid #fff :bottom 1px solid #eee :color #000 From 60e29f6572120384e821fc3fd409b47c9b12a469 Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 19 Sep 2010 16:37:34 -0700 Subject: [PATCH 162/292] Magent should use the same settings as mongomapper, app config should load first, websocket spec is a little better. --- config/app_config.yml | 6 ++++++ .../{load_app_config.rb => _load_app_config.rb} | 0 config/initializers/_mongo.rb | 3 ++- spec/lib/websocket_spec.rb | 8 ++++---- 4 files changed, 12 insertions(+), 5 deletions(-) rename config/initializers/{load_app_config.rb => _load_app_config.rb} (100%) diff --git a/config/app_config.yml b/config/app_config.yml index 354dc75b2..b4fd6f0ab 100644 --- a/config/app_config.yml +++ b/config/app_config.yml @@ -11,6 +11,8 @@ development: socket_port: 8080 socket_collection_name: 'websocket' pubsub_server: 'https://pubsubhubbub.appspot.com/' + mongo_host: 'localhost' + mongo_post: 27017 test: debug: false @@ -18,6 +20,8 @@ test: socket_host: 0.0.0.0 socket_port: 8081 pubsub_server: 'https://pubsubhubbub.appspot.com/' + mongo_host: 'localhost' + mongo_post: 27017 production: debug: false @@ -25,3 +29,5 @@ production: socket_host: 0.0.0.0 socket_port: 8080 pubsub_server: 'https://pubsubhubbub.appspot.com/' + mongo_host: 'localhost' + mongo_post: 27017 diff --git a/config/initializers/load_app_config.rb b/config/initializers/_load_app_config.rb similarity index 100% rename from config/initializers/load_app_config.rb rename to config/initializers/_load_app_config.rb diff --git a/config/initializers/_mongo.rb b/config/initializers/_mongo.rb index 0409d6d71..8948a0c59 100644 --- a/config/initializers/_mongo.rb +++ b/config/initializers/_mongo.rb @@ -5,7 +5,7 @@ if ENV['MONGOHQ_URL'] MongoMapper.config = {RAILS_ENV => {'uri' => ENV['MONGOHQ_URL']}} else - MongoMapper.connection = Mongo::Connection.new('localhost', 27017) + MongoMapper.connection = Mongo::Connection.new(APP_CONFIG['mongo_host'], APP_CONFIG['mongo_port']) end MongoMapper.database = "diaspora-#{Rails.env}" @@ -16,3 +16,4 @@ if defined?(PhusionPassenger) end end +Magent.connection = Mongo::Connection.new(APP_CONFIG['mongo_host'], APP_CONFIG['mongo_port']) diff --git a/spec/lib/websocket_spec.rb b/spec/lib/websocket_spec.rb index 018f5020d..edac7051a 100644 --- a/spec/lib/websocket_spec.rb +++ b/spec/lib/websocket_spec.rb @@ -19,18 +19,18 @@ describe Diaspora::WebSocket do describe 'queuing and dequeuing ' do before do - @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) @channel = Magent::GenericChannel.new('websocket') + @messages = @channel.message_count + @post.socket_to_uid(@user.id, :aspect_ids => @aspect.id) end it 'should send the queued job to Magent' do - @channel.message_count.should == 1 + @channel.message_count.should == @messages + 1 end it 'should dequeue the job successfully' do - messages = @channel.message_count @channel.dequeue - @channel.message_count.should == messages -1 + @channel.message_count.should == @messages end end From 27c00bae90e136b1d2f7b7348ef21e4c3731327a Mon Sep 17 00:00:00 2001 From: Michael Sofaer Date: Sun, 19 Sep 2010 18:12:42 -0700 Subject: [PATCH 163/292] MJS RJS Fix initialization of album test --- spec/controllers/albums_controller_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/controllers/albums_controller_spec.rb b/spec/controllers/albums_controller_spec.rb index ce2bd305d..67b7d9a78 100644 --- a/spec/controllers/albums_controller_spec.rb +++ b/spec/controllers/albums_controller_spec.rb @@ -9,14 +9,14 @@ describe AlbumsController do render_views before do @user = Factory.create(:user) - @user.aspect(:name => "lame-os") - @album = Factory.create(:album) + @aspect = @user.aspect(:name => "lame-os") + @album = @user.post :album, :to => @aspect.id, :name => 'things on fire' sign_in :user, @user end it "should update the name of an album" do sign_in :user, @user - put :update, :id => @album._id, :album => { :name => "new_name"} + put :update, :id => @album.id, :album => { :name => "new_name"} @album.reload.name.should eql("new_name") end From 07d2de66461ab79cfd90a38c2843cde4e6390046 Mon Sep 17 00:00:00 2001 From: maxwell Date: Sun, 19 Sep 2010 20:36:39 -0700 Subject: [PATCH 164/292] removed an annoying log of encrypted salmon. --- app/models/person.rb | 1 + app/models/user.rb | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/person.rb b/app/models/person.rb index b1e7e3745..079275997 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -76,6 +76,7 @@ class Person end def self.by_webfinger( identifier, opts = {}) + #need to check if this is a valid email structure, maybe should do in JS local_person = Person.first(:diaspora_handle => identifier.gsub('acct:', '')) if local_person diff --git a/app/models/user.rb b/app/models/user.rb index 4ec528e70..f0481341a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -220,7 +220,6 @@ class User ###### Receiving ####### def receive_salmon ciphertext cleartext = decrypt( ciphertext) - Rails.logger.info("Received a salmon: #{cleartext}") salmon = Salmon::SalmonSlap.parse cleartext if salmon.verified_for_key?(salmon.author.public_key) Rails.logger.info("data in salmon: #{salmon.data}") From 5bf6d358a4289ffec2bee618fd4b542f431fc2b4 Mon Sep 17 00:00:00 2001 From: maxwell Date: Sun, 19 Sep 2010 20:40:03 -0700 Subject: [PATCH 165/292] MS added small log for when user is found from webfinger --- app/models/person.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/person.rb b/app/models/person.rb index 079275997..6a328dff8 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -78,8 +78,9 @@ class Person def self.by_webfinger( identifier, opts = {}) #need to check if this is a valid email structure, maybe should do in JS local_person = Person.first(:diaspora_handle => identifier.gsub('acct:', '')) - + if local_person + Rails.logger.info("Do not need to webfinger, found a local person #{local_person.real_name}") local_person elsif !identifier.include?("localhost") && !opts[:local] begin From 5a9b0fbd03149f21542614a87c3644ee8d1528ed Mon Sep 17 00:00:00 2001 From: danielvincent Date: Sun, 19 Sep 2010 22:16:58 -0700 Subject: [PATCH 166/292] tabs rounded --- public/stylesheets/application.css | 5 +++-- public/stylesheets/sass/application.sass | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 9a06eab4c..98893cabb 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -461,8 +461,10 @@ h1.big_text { #aspect_nav ul > li { padding: 0; display: inline; - margin-right: 0.2em; } + margin-right: 2px; } #aspect_nav ul > li a { + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; line-height: 22px; background-color: #444444; border: 1px solid #555555; @@ -473,7 +475,6 @@ h1.big_text { background-color: #4e4e4e; color: #cccccc; } #aspect_nav ul > li.selected a { - z-index: 50; -webkit-box-shadow: 0px -4px 6px -2px #777777; -moz-box-shadow: 0px -4px 6px -2px #777777; text-shadow: 0 2px 0 white; diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index e5a16e6f2..5edc89135 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -610,9 +610,11 @@ h1.big_text :padding 0 :display inline :margin - :right 0.2em + :right 2px a + :-webkit-border-radius 3px 3px 0 0 + :-moz-border-radius 3px 3px 0 0 :line :height 22px :background @@ -630,7 +632,6 @@ h1.big_text :color #ccc &.selected a - :z-index 50 :-webkit-box-shadow 0px -4px 6px -2px #777 :-moz-box-shadow 0px -4px 6px -2px #777 From 0203b9317b22fa4499b8d7afe35be7876b83e7fe Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Mon, 20 Sep 2010 14:04:09 +0200 Subject: [PATCH 167/292] better translation from sennewood --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 9fe2e5a32..34947cbc2 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -29,7 +29,7 @@ de: send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto bestätigst.' confirmed: 'Dein Konto wurde erfolgreich bestätigt. Du bist nun angemeldet.' registrations: - signed_up: 'Du wurdest erfolgreich registriert. Falls aktiviert, wurde dir eine E-Mail zur Bestätigung geschickt.' + signed_up: 'Du hast dich erfolgreich registriert. Sofern aktiviert, wurde dir eine Bestätigung per E-Mail gesendet.' updated: 'Dein Konto wurde aktualisiert.' destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' unlocks: From 5b75c1634d99207bf02f3082af6c94300b34f1f2 Mon Sep 17 00:00:00 2001 From: Daniele Di Sarli Date: Mon, 20 Sep 2010 23:03:12 +0800 Subject: [PATCH 168/292] corrected some Italian phrases --- config/locales/devise.it.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/locales/devise.it.yml b/config/locales/devise.it.yml index 75b90affc..76f761e37 100644 --- a/config/locales/devise.it.yml +++ b/config/locales/devise.it.yml @@ -12,7 +12,7 @@ it: devise: failure: - unauthenticated: "Devi effettuare l'accesso o registrarci prima di continuare." + unauthenticated: "Devi effettuare l'accesso o registrarti prima di continuare." unconfirmed: "Devi confermare il tuo account prima di continuare." locked: "Il tuo account è bloccato." invalid: "Email o password errati." @@ -31,11 +31,11 @@ it: registrations: signed_up: "Ti sei iscritto. Se il servizio è disponibile, riceverai una conferma via email." updated: "Hai aggiornato il tuo account." - destroyed: "Ciao!Il tuo account è stato rimosso. Speriamo che tu torni a trovarci presto." + destroyed: "Ciao! Il tuo account è stato rimosso. Speriamo che tu torni a trovarci presto." unlocks: send_instructions: "Tra pochi minuti riceverai una mail con le istruzioni su come sbloccare il tuo account." unlocked: "Il tuo account è stato sbloccato. Hai appena effettuato l'accesso." mailer: confirmation_instructions: "Istruzioni sulla conferma" reset_password_instructions: "Istruzioni su come cambiare la password" - unlock_instructions: "Istruzione su come sbloccare l'account" + unlock_instructions: "Istruzioni su come sbloccare l'account" From 850961f22ed78e143cd7b202a7dd91e699000d51 Mon Sep 17 00:00:00 2001 From: moziz Date: Sun, 19 Sep 2010 09:21:53 +0800 Subject: [PATCH 169/292] Corrected a typo and switched a few words so that the it sounds more 'official' and not slang. --- config/locales/devise.fi.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml index 4ee6761f8..9109b40a8 100644 --- a/config/locales/devise.fi.yml +++ b/config/locales/devise.fi.yml @@ -13,7 +13,7 @@ fi: devise: failure: unauthenticated: 'Kirjaudu tai rekisteröidy ennen kuin voit jatkaa.' - unconfirmed: 'Sinun pitää vahvistaa käyttäjätilisi ennen kuin voit jatkaa' + unconfirmed: 'Sinun täytyy vahvistaa käyttäjätilisi ennen kuin voit jatkaa' locked: 'Käyttäjätilisi on lukittu.' invalid: 'Väärä sähköpostiosoite tai salasana.' invalid_token: 'Viallinen todennus.' @@ -21,9 +21,9 @@ fi: inactive: 'Käyttätiliäsi ei ole vielä vahvistettu.' sessions: signed_in: 'Sisäänkirjautuminen onnistui.' - signed_out: 'Uoskirjautuminen onnistui.' + signed_out: 'Uloskirjautuminen onnistui.' passwords: - send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten asetat salasanasi uudelleen.' + send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten määrität salasanasi uudelleen.' updated: 'Salasanasi on vaihdettu. Olet nyt kirjautunut sisään.' confirmations: send_instructions: 'Saat hetken päästä sähköpostiisi ohjeet siitä miten vahvistat käyttäjätilisi luonnin.' @@ -37,5 +37,5 @@ fi: unlocked: 'Käyttäjätilisi lukitus on avattu. Olet nyt kirjautunut sisään.' mailer: confirmation_instructions: 'Ohjeet vahvistamiseen/todentamiseen' - reset_password_instructions: 'Ohjeet salananan uudelleenasettamiseksi' + reset_password_instructions: 'Ohjeet salananan uudelleenmäärittämiseksi' unlock_instructions: 'Ohjeet lukituksen poistamiseksi' From 445c6784eb474d46ad84e346513149ea1ff72422 Mon Sep 17 00:00:00 2001 From: Marcin Karpezo Date: Sat, 18 Sep 2010 19:32:17 +0800 Subject: [PATCH 170/292] Translated devise.en.yml --- config/locales/devise.pl.yml | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 config/locales/devise.pl.yml diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml new file mode 100644 index 000000000..ec9f44220 --- /dev/null +++ b/config/locales/devise.pl.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "nie znaleziono" + already_confirmed: "potwierdzono wcześniej" + not_locked: "nie był zablokowany" + + devise: + failure: + unauthenticated: 'By kontynuować musisz się zalogować lub zarejestrować.' + unconfirmed: 'Musisz aktywować swoje konto.' + locked: 'Twoje konto jest zablokowane.' + invalid: 'Nieprawidłowy adres email lub hasło.' + invalid_token: 'Nieprawidłowy kod identyfikacyjny.' + timeout: 'Twoja sesja wygasła, zaloguj się ponownie by kontynuować.' + inactive: 'Twoje konto nie zostało jeszcze aktywowane.' + sessions: + signed_in: 'Zalogowano pomyślnie.' + signed_out: 'Wylogowano.' + passwords: + send_instructions: 'W ciągu kilku minut otrzymasz maila zawierającego instrukcjie dotyczące zresetowania hasła.' + updated: 'Twoje hasło zostało zmienione, zostałeś zalogowany.' + confirmations: + send_instructions: 'W ciągu kilku minut otrzymasz maila zawierającego instrukcje dotyczące aktywacji konta.' + confirmed: 'Twoje konto zostało aktywowane, zostałeś zalogowany.' + registrations: + signed_up: 'Zostałeś zarejestrowany. Jeśli aktywowano odpowiednią opcję, wyślemy do Ciebie email potwierdzający rejestrację.' + updated: 'Pomyślnie zaktualizowano informacje o Twoim koncie.' + destroyed: 'Żegnaj! Twoje konto zostało usunięte.' + unlocks: + send_instructions: 'W ciągu kilku minut otrzymasz email z instrukcjami odblokowania konta.' + unlocked: 'Twoje konto zostało odblokowane, jesteś zalogowany.' + mailer: + confirmation_instructions: 'Instrukcje aktywacji' + reset_password_instructions: 'Instrukcje zmiany hasła' + unlock_instructions: 'Instrukcje odblokowania' From 9130c857185a27363ba25c4c0ed3341b89ce42ab Mon Sep 17 00:00:00 2001 From: Marcin Karpezo Date: Sat, 18 Sep 2010 19:34:02 +0800 Subject: [PATCH 171/292] Translated en.yml --- config/locales/pl.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 config/locales/pl.yml diff --git a/config/locales/pl.yml b/config/locales/pl.yml new file mode 100644 index 000000000..e31046c29 --- /dev/null +++ b/config/locales/pl.yml @@ -0,0 +1,10 @@ +# 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. + +en: + hello: "Witaj świecie" From a0a7d28e6d5d5f64a7eb14f7252323c729c36bb2 Mon Sep 17 00:00:00 2001 From: Marcin Karpezo Date: Sat, 18 Sep 2010 20:27:52 +0800 Subject: [PATCH 172/292] fixed translation --- config/locales/devise.pl.yml | 2 +- config/locales/pl.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml index ec9f44220..a490a1a39 100644 --- a/config/locales/devise.pl.yml +++ b/config/locales/devise.pl.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +pl: errors: messages: not_found: "nie znaleziono" diff --git a/config/locales/pl.yml b/config/locales/pl.yml index e31046c29..2052779bd 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -6,5 +6,5 @@ # 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. -en: +pl: hello: "Witaj świecie" From e6c8cf20d34d5594af5770656db0e79a02f2689d Mon Sep 17 00:00:00 2001 From: TJ Peden Date: Sat, 18 Sep 2010 14:30:17 +0800 Subject: [PATCH 173/292] Fixed receive_url problem --- app/models/request.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/request.rb b/app/models/request.rb index da62edd93..739500e4e 100644 --- a/app/models/request.rb +++ b/app/models/request.rb @@ -26,8 +26,8 @@ class Request validates_presence_of :destination_url, :callback_url before_validation :clean_link - scope :for_user, lambda{ |user| where(:destination_url => user.receive_url) } - scope :from_user, lambda{ |user| where(:destination_url.ne => user.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 = {}) person = options[:from] From aff4d783a642d0da4d8977cb9949f731d9638813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Soucaze?= Date: Fri, 17 Sep 2010 04:17:00 +0800 Subject: [PATCH 174/292] French localisation. --- config/locales/devise.fr.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/fr.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.fr.yml create mode 100644 config/locales/fr.yml diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml new file mode 100644 index 000000000..8829de132 --- /dev/null +++ b/config/locales/devise.fr.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "introuvable" + already_confirmed: "a déjà été confirmé" + not_locked: "n’a pas été verrouillé" + + devise: + failure: + 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_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é.' + sessions: + 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.' + 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.' + 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.' + 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.' + unlocked: 'Votre compte a été déverrouillé 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' diff --git a/config/locales/fr.yml b/config/locales/fr.yml new file mode 100644 index 000000000..641208b2a --- /dev/null +++ b/config/locales/fr.yml @@ -0,0 +1,10 @@ +# 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. + +en: + hello: "Bonjour tout le monde" From 77acb6268ebc0a2051583c286b6a628ccf122861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Soucaze?= Date: Sat, 18 Sep 2010 04:06:18 +0800 Subject: [PATCH 175/292] English localization updated with arielo's changes. --- config/locales/en.yml | 133 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 1de275cf9..867b120e0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -8,3 +8,136 @@ en: hello: "Hello world" + layouts: + application: + edit_profile: "edit profile" + logout: "logout" + shared: + aspect_nav: + all_aspects: "All Aspects" + manage: "Manage" + manage_your_aspects: "Manage your Aspects" + sub_header: + all_aspects: "All Aspects" + manage_aspects: "Manage Aspects" + publisher: + share: "Share" + aspect_friends: + add_friends: "add friends" + albums: + album: + you: "you" + new_album: + create: "create" + add_a_new_album: "Add a new album" + show: + edit_album: "Edit Album" + albums: "albums" + updated: "updated" + by: "by" + edit: + editing: "Editing" + updated: "updated" + are_you_sure: "Are you sure?" + delete_album: "Delete Album" + cancel: "Cancel" + index: + home: "home" + new_album: "New Album" + create: + success: "You've created an album called %{name}." + update: + success: "Album %{name} successfully edited." + failure: "Failed to edit album %{name}." + destroy: + success: "Album %{name} deleted." + aspects: + index: + photos: "photos" + show: + photos: "photos" + manage: + add_a_new_aspect: "Add a new aspect" + add_a_new_friend: "Add a new friend" + show: "Show" + update_aspects: "Update Aspects" + requests: "Requests" + ignore_remove: "Ignore/Remove" + new_aspect: + add_a_new_aspect: "Add a new aspect" + create: "Create" + create: + success:"Click on the plus on the left side to tell Diaspora who can see your new aspect." + users: + edit: + cancel: "Cancel" + update_profile: "Update Profile" + home: "Home" + diaspora_username: "DIASPORA USERNAME" + info: "Info" + picture: "Picture" + editing_profile: "Editing profile" + albums: "Albums" + you_dont_have_any_photos: "You don't have any photos! Go to the" + page_to_upload_some: "page to upload some." + comments: + comment: + ago: "ago" + new_comment: + comment: "Comment" + photos: + show: + prev: "prev" + full_size: "full size" + next: "next" + edit_photo: "Edit Photo" + delete_photo: "Delete Photo" + are_you_sure: "Are you sure?" + comments: "comments" + edit: + editing: "Editing" + are_you_sure: "Are you sure?" + delete_photo: "Delete Photo" + photo: + show_comments: "show comments" + posted_a_new_photo_to: "posted a new photo to" + new: + new_photo: "New Photo" + back_to_list: "Back to List" + post_it: "post it!" + registrations: + new: + sign_up: "Sign up" + status_messages: + new_status_message: + tell_me_something_good: "tell me something good" + oh_yeah: "oh yeah!" + status_message: + show_comments: "show comments" + delete: "Delete" + are_you_sure: "Are you sure?" + show: + status_message: "Status Message" + comments: "comments" + are_you_sure: "Are you sure?" + destroy: "Destroy" + view_all: "View All" + message: "Message" + owner: "Owner" + people: + index: + add_friend: "add friend" + real_name: "real name" + diaspora_handle: "diaspora handle" + thats_you: "that's you!" + friend_request_pending: "friend request pending" + you_have_a_friend_request_from_this_person: "you have a friend request from this person" + new: + new_person: "New Person" + back_to_list: "Back to List" + show: + last_seen: "last seen: %{how_long_ago}" + friends_since: "friends since: %{how_long_ago}" + save: "save" + are_you_sure: "Are you sure?" + remove_friend: "remove friend" \ No newline at end of file From c884a25da6fa90cd1049723ec104df6bfe2638d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Soucaze?= Date: Sat, 18 Sep 2010 04:07:02 +0800 Subject: [PATCH 176/292] French localization updated with arielo's changes. --- config/locales/devise.fr.yml | 2 +- config/locales/fr.yml | 137 ++++++++++++++++++++++++++++++++++- 2 files changed, 136 insertions(+), 3 deletions(-) diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index 8829de132..b8691eb3a 100644 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +fr: errors: messages: not_found: "introuvable" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 641208b2a..9c05ff973 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -3,8 +3,141 @@ # the COPYRIGHT file. -# Sample localization file for English. Add more files in this directory for other locales. +# Localization file for French. Add more files in this directory for other locales. # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. -en: +fr: hello: "Bonjour tout le monde" + layouts: + application: + edit_profile: "éditer le profil" + logout: "déconnexion" + shared: + aspect_nav: + 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érer les aspects" + publisher: + share: "Partager" + aspect_friends: + add_friends: "ajouter des amis" + albums: + album: + you: "vous" + new_album: + create: "créer" + add_a_new_album: "Ajouter un nouvel album" + show: + edit_album: "Éditer l’album" + albums: "albums" + updated: "mis à jour" + by: "par" + edit: + editing: "Édition" + updated: "mis à jour" + are_you_sure: "Êtes-vous sûr ?" + delete_album: "Supprimer l’album" + cancel: "Annuler" + index: + home: "accueil" + new_album: "Nouvel album" + create: + success: "Tu as 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é." + aspects: + index: + photos: "photos" + show: + photos: "photos" + manage: + add_a_new_aspect: "Ajouter un nouvel aspect" + add_a_new_friend: "Ajouter un nouvel ami" + show: "Afficher" + update_aspects: "Metre à jour les aspects" + requests: "Requêtes" + ignore_remove: "Ignorer/Supprimer" + new_aspect: + 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." + users: + edit: + cancel: "Annuler" + update_profile: "Mettre à jour le profil" + home: "Accueil" + diaspora_username: "NOM D’UTILISATEUR DIASPORA" + info: "Information" + 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." + comments: + comment: + ago: "il y a" + new_comment: + comment: "Commentaire" + photos: + show: + prev: "précédent" + full_size: "taille réelle" + next: "suivant" + edit_photo: "Éditer la photo" + delete_photo: "Supprimer la photo" + are_you_sure: "Êtes-vous sûr ?" + comments: "commentaires" + edit: + editing: "Édition" + are_you_sure: "Êtes-vous sûr ?" + delete_photo: "Supprimer la photo" + photo: + show_comments: "afficher les commentaires" + posted_a_new_photo_to: "a publié une nouvelle photo sur" + new: + new_photo: "Nouvelle photo" + back_to_list: "Retourner à la liste" + post_it: "publiez-la !" + registrations: + new: + sign_up: "Inscription" + status_messages: + new_status_message: + tell_me_something_good: "dites-moi quelque chose de bien" + oh_yeah: "oh ouais !" + status_message: + show_comments: "afficher les commentaires" + delete: "Supprimer" + are_you_sure: "Êtes-vous sûr ?" + show: + status_message: "Message d’état" + comments: "commentaires" + are_you_sure: "Êtes-vous sûr ?" + destroy: "Détruire" + view_all: "Tout voir" + message: "Message" + owner: "Propriétaire" + people: + index: + add_friend: "ajouter un ami" + real_name: "nom réel" + diaspora_handle: "maniement de diaspora" + thats_you: "c’est vous !" + friend_request_pending: "Requête d’ami en attente" + you_have_a_friend_request_from_this_person: "vous avez une requête d’ami de la part de cette personne" + new: + new_person: "Nouvelle personne" + back_to_list: "Retourner à la liste" + 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" \ No newline at end of file From c8d3ceae612685675cb4ea0ee5a57f255b74567d Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Mon, 20 Sep 2010 19:40:37 +0200 Subject: [PATCH 177/292] de translation: wieder -> erneut --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 34947cbc2..0119a9214 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -17,7 +17,7 @@ de: locked: 'Dein Konto ist gesperrt.' invalid: 'Ungültige E-Mail-Adresse oder Passwort.' invalid_token: 'Ungültiger Authentifizierungstoken.' - timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an um fortzufahren.' + timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich erneut an um fortzufahren.' inactive: 'Dein Konto wurde noch nicht aktiviert.' sessions: signed_in: 'Erfolgreich angemeldet.' From 718b0715b3e1918b50e43b7e2acb099052a5d71b Mon Sep 17 00:00:00 2001 From: Mikhail Zubrov Date: Sat, 18 Sep 2010 13:58:29 +0800 Subject: [PATCH 178/292] add a Russian translation --- config/locales/devise.ru.yml | 41 ++++++++++++++++++++++++++++++++++++ config/locales/ru.yml | 10 +++++++++ 2 files changed, 51 insertions(+) create mode 100644 config/locales/devise.ru.yml create mode 100644 config/locales/ru.yml diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml new file mode 100644 index 000000000..0e9b7b92f --- /dev/null +++ b/config/locales/devise.ru.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "не найден(о)" + already_confirmed: "уже подтвержден(о)" + not_locked: "не заблокирован(о)" + + devise: + failure: + unauthenticated: 'Вам нужно войти либо зарегистрироваться, чтобы продолжить.' + unconfirmed: 'Вам нужно подтвердить вашу учётную запись, чтобы продолжить.' + locked: 'Ваша учётная запись заблокирована.' + invalid: 'Неверный e-mail или пароль.' + invalid_token: 'Неверный ключ аутентификации.' + timeout: 'Срок вашего сеанса истёк, пожалуйста, войдите в систему снова.' + inactive: 'Ваша учётная запись ещё не активирована.' + sessions: + signed_in: 'Вход в систему выполнен успешно.' + signed_out: 'Выход из системы выполнен успешно.' + passwords: + send_instructions: 'Вы получите e-mail с указаниями по сбросу пароля в течение нескольких минут.' + updated: 'Ваш пароль был изменён. Вы вошли в систему.' + confirmations: + send_instructions: 'Вы получите e-mail с указаниями по подтверждению учётной записи в течение нескольких минут.' + confirmed: 'Ваша учётная запись была подтверждена. Вы вошли в систему.' + registrations: + signed_up: 'Регистрация выполнена успешно. В зависимости от настроек, вам может прийти e-mail с подтверждением.' + updated: 'Обновление вашей учётной записи выполнено успешно.' + destroyed: 'До свидания! Ваша учётная запись была удалена. Надеемся, что вскоре вас увидим снова.' + unlocks: + send_instructions: 'Вы получите e-mail с указаниями по разблокированию учётной записи в течение нескольких минут.' + unlocked: 'Ваша учётная запись была разблокирована. Вы вошли в систему.' + mailer: + confirmation_instructions: 'Подтверждение учётной записи' + reset_password_instructions: 'Сброс пароля' + unlock_instructions: 'Разблокирование учётной записи' diff --git a/config/locales/ru.yml b/config/locales/ru.yml new file mode 100644 index 000000000..1a8e7fc4e --- /dev/null +++ b/config/locales/ru.yml @@ -0,0 +1,10 @@ +# 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. + +en: + hello: "Привет, мир" From 5533f308406edf1e366027b17dd44cefd301c475 Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Mon, 20 Sep 2010 19:41:14 +0200 Subject: [PATCH 179/292] =?UTF-8?q?de=20translation:=20abgemeldet=20->=20g?= =?UTF-8?q?ek=C3=BCndigt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 0119a9214..7c0e0e758 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -31,7 +31,7 @@ de: registrations: signed_up: 'Du hast dich erfolgreich registriert. Sofern aktiviert, wurde dir eine Bestätigung per E-Mail gesendet.' updated: 'Dein Konto wurde aktualisiert.' - destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' + destroyed: 'Tschüss! Dein Konto wurde erfolgreich gekündigt. Wir hoffen dich bald wiederzusehen.' unlocks: send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto entsperren kannst.' unlocked: 'Dein Konto wurde erfolgreich entsperrt. Du bist nun angemeldet.' From b8dc20e4bbb04fa2531ba867efed15169ed87124 Mon Sep 17 00:00:00 2001 From: Claudius Coenen Date: Fri, 17 Sep 2010 05:55:57 +0800 Subject: [PATCH 180/292] adding german translation --- config/locales/de.yml | 116 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 config/locales/de.yml diff --git a/config/locales/de.yml b/config/locales/de.yml new file mode 100644 index 000000000..23617a3f3 --- /dev/null +++ b/config/locales/de.yml @@ -0,0 +1,116 @@ +# 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. + +de: + hello: "Hallo Welt" + layouts: + application: + edit_profile: "Profil bearbeiten" + logout: "Ausloggen" + shared: + aspect_nav: + all_aspects: "Alle Aspekte" + manage: "Verwalten" + manage_your_aspects: "Aspekte verwalten" + sub_header: + all_aspects: "Alle Aspekte" + manage_aspects: "Aspekte verwalten" + publisher: + share: "Teilen" + aspect_friends: + add_friends: "Freunde hinzufügen" + albums: + album: + you: "dir" + new_album: + create: "erstellen" + add_a_new_album: "Album hinzufügen" + show: + edit_album: "Album bearbeiten" + albums: "Alben" + updated: "aktualisiert" + by: "von" + edit: + editing: "Bearbeite" + updated: "geändert" + are_you_sure: "Bist du sicher?" + delete_album: "Album löschen" + cancel: "Abbrechen" + index: + home: "Startseite" + new_album: "Neues Album" + aspects: + index: + photos: "Fotos" + show: + photos: "Fotos" + manage: + add_a_new_aspect: "Neuen Aspekt erstellen" + add_a_new_friend: "Freund hinzufügen" + show: "Anzeigen" + update_aspects: "Aspekte aktualisieren" + requests: "Anfragen" + ignore_remove: "Ignorieren/Entfernen" + new_aspect: + create: "Erstellen" + users: + edit: + cancel: "Abbrechen" + update_profile: "Profil aktualisieren" + home: "Startseite" + diaspora_username: "Diaspora Benutzername" + info: "Info" + picture: "Bild" + editing_profile: "Profil bearbeiten" + albums: "Alben" + comments: + comment: + # this won't work in german at all. Needs more thorough I18n + ago: "ago" + new_comment: + comment: "Kommentar" + photos: + show: + prev: "zurück" + full_size: "volle Größe" + next: "vor" + edit_photo: "Foto bearbeiten" + delete_photo: "Foto löschen" + are_you_sure: "Bist du sicher?" + comments: "Kommentare" + edit: + editing: "Bearbeite" + are_you_sure: "Bist du sicher?" + delete_photo: "Foto löschen" + photo: + show_comments: "Kommentare anzeigen" + new: + new_photo: "Foto erstellen" + back_to_list: "Zurück zur Liste" + post_it: "Hochladen" + registrations: + new: + sign_up: "Anmelden" + status_messages: + new_status_message: + tell_me_something_good: "Erzähl' mir was schönes!" + oh_yeah: "Hey, super!" + status_message: + show_comments: "Kommentare anzeigen" + delete: "Löschen" + are_you_sure: "Bist du sicher?" + show: + status_message: "Statusmeldung" + comments: "Kommentare" + are_you_sure: "Bist du sicher?" + destroy: "Löschen" + view_all: "Alle anzeigen" + message: "Nachricht" + owner: "Besitzer" + + From 6501974f3077f17a8025645d229a452c1d8ad545 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 22:43:59 +0800 Subject: [PATCH 181/292] added more translations missing on views --- app/controllers/aspects_controller.rb | 2 +- app/views/aspects/_new_aspect.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index ab144ad12..82c35b36c 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -16,7 +16,7 @@ class AspectsController < ApplicationController def create @aspect = current_user.aspect params[:aspect] - flash[:notice] = "Click on the plus on the left side to tell Diaspora who can see your new aspect." + flash[:notice] = I18n.t('aspects.create.success') respond_with :location => aspects_manage_path end diff --git a/app/views/aspects/_new_aspect.haml b/app/views/aspects/_new_aspect.haml index b5bc7ace3..3ca07ac17 100644 --- a/app/views/aspects/_new_aspect.haml +++ b/app/views/aspects/_new_aspect.haml @@ -3,7 +3,7 @@ -# the COPYRIGHT file. -%h1 Add a new aspect +%h1=t('.add_a_new_aspect') = form_for Aspect.new do |f| = f.error_messages %p From 4c9ac0e5f6fbb931ed8220e238d26fe70a8e0adb Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Fri, 17 Sep 2010 01:03:08 +0800 Subject: [PATCH 182/292] initial german translation --- config/locales/devise.de.yml | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 config/locales/devise.de.yml diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml new file mode 100644 index 000000000..55ad12536 --- /dev/null +++ b/config/locales/devise.de.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +en: + errors: + messages: + not_found: "nicht gefunden" + already_confirmed: "wurde bereits bestätigt" + not_locked: "war nicht gesperrt" + + devise: + failure: + unauthenticated: 'Du musst dich anmelden oder registrieren um fortzufahren.' + unconfirmed: 'Du musst dein Konto bestätigen um fortzufahren.' + locked: 'Dein Konto ist gesperrt.' + invalid: 'Ungültige E-Mail-Adresse oder Passwort.' + invalid_token: 'Ungültiger Authentifizierungstoken.' + timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an, um fortzufahren.' + inactive: 'Dein Konto wurde noch nicht aktiviert.' + sessions: + signed_in: 'Erfolgreich angemeldet.' + signed_out: 'Erfolgreich abgemeldet.' + passwords: + send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Passwort zurücksetzt.' + updated: 'Dein Passwort wurde erfolgreich geändert. Du bist nun angemeldet.' + confirmations: + send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto bestätigst.' + confirmed: 'Dein Konto wurde erfolgreich bestätigt. Du bist nun angemeldet.' + registrations: + signed_up: 'Du wurdest erfolgreich registriert. Falls aktiviert, wurde dir eine E-Mail zur Bestätigung geschickt.' + updated: 'Du hast erfolgreich dein Konto aktualisiert.' + destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' + unlocks: + send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto entsperren kannst.' + unlocked: 'Dein Konto wurde erfolgreich entsperrt. Du bist nun angemeldet.' + mailer: + confirmation_instructions: 'Instruktionen zur Bestätigung' + reset_password_instructions: 'Instruktionen zum Zurücksetzen des Passworts' + unlock_instructions: 'Instruktionen zum Entsperren' From cc7c82ab5e3c0d9ec4eb6fc3f025abfe07d5d152 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 10:46:46 -0700 Subject: [PATCH 183/292] MS added openssl copywright exception --- COPYRIGHT | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/COPYRIGHT b/COPYRIGHT index c1e5ed876..af330bbc2 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1 +1,14 @@ Diaspora is copyright Diaspora Inc., 2010, and files herein are licensed under the Affero General Public License version 3, the text of which can be found in GNU-AGPL-3.0, unless otherwise noted. Components of Diaspora, including Rails, JQuery, and Devise, are licensed under the MIT/X11 license. Blueprint-CSS is licensed under a modified version of the MIT/X11 license. All unmodified files from these and other sources retain their original copyright and license notices: see the relevant individual files. Attribution information for Diaspora is contained in the AUTHORS file. + +* In addition, as a special exception, the copyright holders give +* permission to link the code of portions of this program with the +* OpenSSL library under certain conditions as described in each +* individual source file, and distribute linked combinations +* including the two. +* You must obey the GNU General Public License in all respects +* for all of the code used other than OpenSSL. If you modify +* file(s) with this exception, you may extend this exception to your +* version of the file(s), but you are not obligated to do so. If you +* do not wish to do so, delete this exception statement from your +* version. If you delete this exception statement from all source +* files in the program, then also delete it here. \ No newline at end of file From 852022ca79c12ecc03c7da51c07cfc6467eebcef Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Fri, 17 Sep 2010 01:15:36 +0800 Subject: [PATCH 184/292] change 'en' to 'de' in devise.de.yml --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 55ad12536..516eebfed 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +de: errors: messages: not_found: "nicht gefunden" From 83520f593c0984d7b3781936509eab4119cae347 Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Mon, 20 Sep 2010 00:15:36 +0800 Subject: [PATCH 185/292] some corrections from sennewood --- config/locales/devise.de.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 516eebfed..9fe2e5a32 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -17,7 +17,7 @@ de: locked: 'Dein Konto ist gesperrt.' invalid: 'Ungültige E-Mail-Adresse oder Passwort.' invalid_token: 'Ungültiger Authentifizierungstoken.' - timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an, um fortzufahren.' + timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an um fortzufahren.' inactive: 'Dein Konto wurde noch nicht aktiviert.' sessions: signed_in: 'Erfolgreich angemeldet.' @@ -30,7 +30,7 @@ de: confirmed: 'Dein Konto wurde erfolgreich bestätigt. Du bist nun angemeldet.' registrations: signed_up: 'Du wurdest erfolgreich registriert. Falls aktiviert, wurde dir eine E-Mail zur Bestätigung geschickt.' - updated: 'Du hast erfolgreich dein Konto aktualisiert.' + updated: 'Dein Konto wurde aktualisiert.' destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' unlocks: send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto entsperren kannst.' From 88bb50660a241e314922a6d8c62495f8f779d8a9 Mon Sep 17 00:00:00 2001 From: Felix Gruber Date: Mon, 20 Sep 2010 20:04:09 +0800 Subject: [PATCH 186/292] better translation from sennewood --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 9fe2e5a32..34947cbc2 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -29,7 +29,7 @@ de: send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto bestätigst.' confirmed: 'Dein Konto wurde erfolgreich bestätigt. Du bist nun angemeldet.' registrations: - signed_up: 'Du wurdest erfolgreich registriert. Falls aktiviert, wurde dir eine E-Mail zur Bestätigung geschickt.' + signed_up: 'Du hast dich erfolgreich registriert. Sofern aktiviert, wurde dir eine Bestätigung per E-Mail gesendet.' updated: 'Dein Konto wurde aktualisiert.' destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' unlocks: From 6294cf502d4c9a86175c581fb434361a7ac2ffc3 Mon Sep 17 00:00:00 2001 From: MrBison Date: Sat, 18 Sep 2010 17:18:07 +0800 Subject: [PATCH 187/292] oops, a stupid error. --- config/locales/devise.ru.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 0e9b7b92f..670d57026 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -en: +ru: errors: messages: not_found: "не найден(о)" From 1e5fc556a3dc914833b642648b7365bbd023c3ab Mon Sep 17 00:00:00 2001 From: MrBison Date: Sat, 18 Sep 2010 17:18:35 +0800 Subject: [PATCH 188/292] oops, a stupid error fixed --- config/locales/ru.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 1a8e7fc4e..fe944aa59 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -6,5 +6,5 @@ # 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. -en: +ru: hello: "Привет, мир" From 1f78c3400b10e871409301b65f4d2b97220c078f Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 04:30:17 +0800 Subject: [PATCH 189/292] Started Spanish Locale --- config/locales/es.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 config/locales/es.yml diff --git a/config/locales/es.yml b/config/locales/es.yml new file mode 100644 index 000000000..11c2effdd --- /dev/null +++ b/config/locales/es.yml @@ -0,0 +1,10 @@ +# 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. + +es: + hello: "Hello world" \ No newline at end of file From d1822d3dc874b47713718b1e28c570fde20f8ed1 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Mon, 20 Sep 2010 18:23:39 +0800 Subject: [PATCH 190/292] Swedish translation --- config/locales/devise.sv.yml | 40 ++++++++++++++++++++++++++++++++++++ config/locales/sv.yml | 10 +++++++++ 2 files changed, 50 insertions(+) create mode 100644 config/locales/devise.sv.yml create mode 100644 config/locales/sv.yml diff --git a/config/locales/devise.sv.yml b/config/locales/devise.sv.yml new file mode 100644 index 000000000..814383a79 --- /dev/null +++ b/config/locales/devise.sv.yml @@ -0,0 +1,40 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +sv: + errors: + messages: + not_found: "kan ej hitta" + not_locked: "var ej låst" + + devise: + failure: + unauthenticated: 'Du måste logga in innan du kan fortsätta.' + unconfirmed: 'Du måste verifiera ditt konto innan du kan fortsätta.' + locked: 'Ditt konto är låst.' + invalid: 'Felaktig användare eller lösenord.' + invalid_token: 'Ogiltig identifiering.' + timeout: 'Din session är avslutad, var vänlig logga in igen.' + inactive: 'Ditt konto är inte aktiverat.' + sessions: + signed_in: 'Inloggning ok.' + signed_out: 'Utloggning ok.' + passwords: + send_instructions: 'Du kommer att få ett ebrev med instruktioner för att återställa lösenordet inom några minuter.' + updated: 'Ditt lösenord har ändrats och du är inloggad.' + confirmations: + send_instructions: 'Du kommer att få ett ebrev med instruktioner för att verifiera ditt konto inom några minuter.' + confirmed: 'Ditt konto har verifierats och du är inloggad.' + registrations: + signed_up: 'Du har skapat ett konto. Beroende på inställningar kan ett ebrev ha skickats till dig.' + updated: 'Ditt konto har uppdateras.' + destroyed: 'Ditt konto är avslutat. Välkommen åter!' + unlocks: + send_instructions: 'Du kommer att få ett ebrev med instruktioner för att låsa upp ditt konto inom några minuter.' + unlocked: 'Ditt konto har är nu upplåst och du är inloggad' + mailer: + confirmation_instructions: 'Instruktioner för att verifiera ditt konto.' + reset_password_instructions: 'Instruktioner för att terställa ditt lösenord.' + unlock_instructions: 'Instruktioner för att låsa upp ditt konto.' diff --git a/config/locales/sv.yml b/config/locales/sv.yml new file mode 100644 index 000000000..1caf878b8 --- /dev/null +++ b/config/locales/sv.yml @@ -0,0 +1,10 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +# Swedish localization file. +# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +sv: + hello: "Hej" From 5e69292954f56d9482aac03ce60532550b086a18 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Tue, 21 Sep 2010 01:32:20 +0800 Subject: [PATCH 191/292] Typo fix --- config/locales/devise.sv.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.sv.yml b/config/locales/devise.sv.yml index 814383a79..b434666ce 100644 --- a/config/locales/devise.sv.yml +++ b/config/locales/devise.sv.yml @@ -26,7 +26,7 @@ sv: updated: 'Ditt lösenord har ändrats och du är inloggad.' confirmations: send_instructions: 'Du kommer att få ett ebrev med instruktioner för att verifiera ditt konto inom några minuter.' - confirmed: 'Ditt konto har verifierats och du är inloggad.' + confirmed: 'Ditt konto har verifierats och du är inloggad.' registrations: signed_up: 'Du har skapat ett konto. Beroende på inställningar kan ett ebrev ha skickats till dig.' updated: 'Ditt konto har uppdateras.' From 813dfae0599202c02a5fc83922056cb8788f819f Mon Sep 17 00:00:00 2001 From: gattytto Date: Mon, 20 Sep 2010 04:21:33 +0800 Subject: [PATCH 192/292] just a few 's' missing. :) --- config/locales/devise.es.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml index 70209ff79..06002aa63 100644 --- a/config/locales/devise.es.yml +++ b/config/locales/devise.es.yml @@ -18,10 +18,10 @@ es: signed_in: 'Has ingresado correctamente.' signed_out: 'Has salido correctamente.' passwords: - send_instructions: 'Recibirás un email con instrucciones para cambiar tu contraseña en poco minutos.' + send_instructions: 'Recibirás un email con instrucciones para cambiar tu contraseña en pocos minutos.' updated: 'Tu contraseña ha sido modificada. Ya has accedido a tu cuenta.' confirmations: - send_instructions: 'Recibirás un email con instrucciones para confirmar tu cuenta en poco minutos.' + send_instructions: 'Recibirás un email con instrucciones para confirmar tu cuenta en pocos minutos.' confirmed: 'Tu cuenta ha sido confirmada. Ya has accedido a tu cuenta.' registrations: signed_up: 'Te has registrado correctamente. Si está disponible, te habremos enviado un email de confirmación.' From db7ad1650380639c94e67765ec445637308d8b15 Mon Sep 17 00:00:00 2001 From: Ariel Zavala Date: Fri, 17 Sep 2010 03:00:21 +0800 Subject: [PATCH 193/292] Added localization to comments views --- app/views/comments/_comment.html.haml | 2 +- app/views/comments/_new_comment.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/comments/_comment.html.haml b/app/views/comments/_comment.html.haml index 56252c83d..4252d9762 100644 --- a/app/views/comments/_comment.html.haml +++ b/app/views/comments/_comment.html.haml @@ -9,4 +9,4 @@ = link_to post.person.real_name, post.person = auto_link sanitize post.text %div.time - = "#{time_ago_in_words(post.updated_at)} ago" + = "#{time_ago_in_words(post.updated_at)} #{t('.ago')}" diff --git a/app/views/comments/_new_comment.html.haml b/app/views/comments/_new_comment.html.haml index e998d98b7..a4268082d 100644 --- a/app/views/comments/_new_comment.html.haml +++ b/app/views/comments/_new_comment.html.haml @@ -9,4 +9,4 @@ = f.text_area :text, :rows => 1, :id => "comment_text_on_#{post.id}", :class => "comment_box" = f.hidden_field :post_id, :value => post.id %p{:style => "text-align:right;"} - = f.submit "Comment", :class => "comment_submit button" + = f.submit t('.comment'), :class => "comment_submit button" From 64d371d9d60e13c932b6090e06cbc86cc624fbc2 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 11:30:08 -0700 Subject: [PATCH 194/292] MS added a warning for account --- app/views/devise/sessions/new.html.haml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 1840d7acc..7ce75f5f3 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,3 +1,9 @@ +%h1 + This is a technology preview, do not provide any private information. +%h3 + your account may be deleted until we move into a more stable development period. +%h3 + USE AT YOUR OWN RISK!! = form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| #user %p.username @@ -14,6 +20,7 @@ / = f.check_box :remember_me / = f.label :remember_me = f.submit "Sign in" + = link_to "Have a problem? Find an answer here", 'http://diaspora.shapado.com/' %p = render :partial => "devise/shared/links" From fe306b37ab71c25f21b8d22ed27316f419f3aaf0 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 11:30:27 -0700 Subject: [PATCH 195/292] DG IZ; mass-assignment quick-fix in controllers --- app/controllers/albums_controller.rb | 17 +++++++++++-- app/controllers/aspects_controller.rb | 12 +++++++++- app/controllers/dev_utilities_controller.rb | 18 -------------- app/controllers/photos_controller.rb | 24 +++++++++++++++++-- app/controllers/registrations_controller.rb | 2 -- app/controllers/status_messages_controller.rb | 13 +++++++++- app/controllers/users_controller.rb | 19 ++++++++++++--- app/models/aspect.rb | 1 + app/views/users/edit.html.haml | 4 ---- 9 files changed, 77 insertions(+), 33 deletions(-) diff --git a/app/controllers/albums_controller.rb b/app/controllers/albums_controller.rb index dbd59c64e..281c83b5c 100644 --- a/app/controllers/albums_controller.rb +++ b/app/controllers/albums_controller.rb @@ -16,7 +16,10 @@ class AlbumsController < ApplicationController def create aspect = params[:album][:to] - @album = current_user.post(:album, params[:album]) + + data = clean_hash(params[:album]) + + @album = current_user.post(:album, data) flash[:notice] = "You've created an album called #{@album.name}." redirect_to :action => :show, :id => @album.id, :aspect => aspect end @@ -47,7 +50,10 @@ class AlbumsController < ApplicationController def update @album = current_user.album_by_id params[:id] - if @album.update_attributes params[:album] + + data = clean_hash(params[:album]) + + if @album.update_attributes data flash[:notice] = "Album #{@album.name} successfully edited." respond_with @album else @@ -56,4 +62,11 @@ class AlbumsController < ApplicationController end end + private + def clean_hash(params) + return { + :name => params[:name], + :to => params[:to] + } + end end diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index ab144ad12..afd6b016f 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -52,7 +52,9 @@ class AspectsController < ApplicationController def update @aspect = Aspect.find_by_id(params[:id]) - @aspect.update_attributes(params[:aspect]) + + data = clean_hash(params[:aspect]) + @aspect.update_attributes( data ) flash[:notice] = "Your aspect, #{@aspect.name}, has been successfully edited." respond_with @aspect end @@ -83,4 +85,12 @@ class AspectsController < ApplicationController respond_with Person.first(:id => params[:friend_id]) end end + + private + def clean_hash(params) + return { + :name => params[:name] + } + end + end diff --git a/app/controllers/dev_utilities_controller.rb b/app/controllers/dev_utilities_controller.rb index bcb0dd4f7..30d1a1799 100644 --- a/app/controllers/dev_utilities_controller.rb +++ b/app/controllers/dev_utilities_controller.rb @@ -7,24 +7,6 @@ class DevUtilitiesController < ApplicationController before_filter :authenticate_user!, :except => [:set_backer_number] include ApplicationHelper include RequestsHelper -def warzombie - render :nothing => true - if current_user.email == "tom@tom.joindiaspora.com" && StatusMessage.where(:message => "There's a bomb in the lasagna!?").first == nil - current_user.post(:status_message, :message => "There's a bomb in the lasagna!?") - current_user.post(:status_message, :message => "xkcd \nhttp://xkcd.com/743/" ) - current_user.post(:status_message, :message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :created_at => Time.now-930) - current_user.post(:status_message, :message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :created_at => Time.now-43990) - current_user.post(:status_message, :message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :created_at => Time.now-4390) - current_user.post(:status_message, :message => "Reddit\nhttp://reddit.com", :created_at => Time.now-54390) - current_user.post(:status_message, :message => "Commercials for IE make me SO MAD and my friends just don't get why.", :created_at => Time.now-30900) - current_user.post(:status_message, :message => "Zombo.com\nhttp://zombo.com", :created_at => Time.now-9090) - current_user.post(:status_message, :message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :created_at => Time.now-590000) - current_user.post(:status_message, :message => "Mmm. Friday night. Acknowledged.", :created_at => Time.now-503900) - current_user.post(:status_message, :message => "Getting a universal remote is the epitome of laziness, I do declare.", :created_at => Time.now-4400) - current_user.post(:status_message, :message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :created_at => Time.now-400239) - current_user.post(:status_message, :message => "A cool, cool morning for once.", :created_at => Time.now-150000) - end - end def zombiefriends render :nothing => true diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index cefc8f5d6..b77341820 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -33,7 +33,11 @@ class PhotosController < ApplicationController params[:user_file] = file - @photo = current_user.post(:photo, params) + + data = clean_hash(params) + + + @photo = current_user.post(:photo, data) respond_to do |format| format.json{render(:layout => false , :json => {"success" => true, "data" => @photo}.to_json )} @@ -83,7 +87,10 @@ class PhotosController < ApplicationController def update @photo = Photo.find_by_id params[:id] - if @photo.update_attributes params[:photo] + + data = clean_hash(params) + + if @photo.update_attributes data[:photo] flash[:notice] = "Photo successfully updated." respond_with @photo else @@ -91,4 +98,17 @@ class PhotosController < ApplicationController render :action => :edit end end + + + private + def clean_hash(params) + return { + :photo => { + :caption => params[:photo][:caption], + }, + :album_id => params[:album_id], + :user_file => params[:user_file] + } + end + end diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 8241aa294..d1f0718bc 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -15,9 +15,7 @@ class RegistrationsController < Devise::RegistrationsController flash[:error] = e.message end if user - #set_flash_message :notice, :signed_up flash[:notice] = "You've joined Diaspora!" - #redirect_to root_url sign_in_and_redirect(:user, user) else redirect_to new_user_registration_path diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index 5a588fb99..305194a8f 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -11,7 +11,10 @@ class StatusMessagesController < ApplicationController def create params[:status_message][:to] = params[:aspect_ids] - @status_message = current_user.post(:status_message, params[:status_message]) + + data = clean_hash params[:status_message] + + @status_message = current_user.post(:status_message, data) respond_with @status_message end @@ -25,4 +28,12 @@ class StatusMessagesController < ApplicationController @status_message = StatusMessage.find_by_id params[:id] respond_with @status_message end + + private + def clean_hash(params) + return { + :message => params[:message], + :to => params[:to] + } + end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 72666bc30..dbb69d1a2 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -17,14 +17,15 @@ class UsersController < ApplicationController def update @user = current_user - prep_image_url(params[:user]) - @user.update_profile params[:user] + data = clean_hash params[:user] + prep_image_url(data) + + @user.update_profile data respond_with(@user, :location => root_url) end private - def prep_image_url(params) if params[:profile][:image_url].empty? params[:profile].delete(:image_url) @@ -32,4 +33,16 @@ class UsersController < ApplicationController params[:profile][:image_url] = "http://" + request.host + ":" + request.port.to_s + params[:profile][:image_url] end end + + def clean_hash(params) + return { + :profile => + { + :first_name => params[:profile][:first_name], + :last_name => params[:profile][:last_name], + :image_url => params[:profile][:image_url] + } + } + end + end diff --git a/app/models/aspect.rb b/app/models/aspect.rb index 96f94e8fe..b60142671 100644 --- a/app/models/aspect.rb +++ b/app/models/aspect.rb @@ -39,5 +39,6 @@ class Aspect } } end + end diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index cddec8d77..fd94b2a42 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -53,10 +53,6 @@ = p.label :last_name = p.text_field :last_name, :value => @profile.last_name - %p - = f.label :email - = f.text_field :email - #submit_block = link_to "Cancel", root_path or From 5d1fdcaf3af6e2c7514096dabf089f9fc6476b4c Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 11:38:24 -0700 Subject: [PATCH 196/292] MS fixing bug #67. stripping whitespace from search --- app/models/person.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/person.rb b/app/models/person.rb index 6a328dff8..72f4c46b9 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -35,6 +35,7 @@ class Person /^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix def self.search(query) + query = query.to_s.strip Person.all('profile.first_name' => /^#{query}/i) | Person.all('profile.last_name' => /^#{query}/i) end From eeb132d82553408998585641f4d585d4f9444b4f Mon Sep 17 00:00:00 2001 From: Arnaud Delcasse Date: Mon, 20 Sep 2010 03:26:19 +0800 Subject: [PATCH 197/292] Writing "Already friends" instead of proposing to add people that we already added successfully or accepted in the search results. --- app/views/people/_person.html.haml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/people/_person.html.haml b/app/views/people/_person.html.haml index ef1c69d28..646d0b333 100644 --- a/app/views/people/_person.html.haml +++ b/app/views/people/_person.html.haml @@ -2,7 +2,6 @@ -# licensed under the Affero General Public License version 3. See -# the COPYRIGHT file. - %li.message{:id => person.id} = person_image_link(person) @@ -17,6 +16,8 @@ .right{ :style => "display:inline;top:0;" } - if person.id == current_user.person.id thats you! + - elsif current_user.friends.include?(person) + Already friends - elsif current_user.pending_requests.find_by_person_id(person.id) = link_to "pending request", aspects_manage_path - else From 1c79677c7c2dacda94b6c807188063408d4cb094 Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Mon, 20 Sep 2010 21:38:13 +0200 Subject: [PATCH 198/292] some more german translations --- config/locales/de.yml | 58 +++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index aabe057cd..e052637d8 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -10,15 +10,15 @@ de: hello: "Hallo Welt" application: helper: - unknown_person: "unknown person" - new_requests: "new requests" + unknown_person: "unbekannte Person" + new_requests: "neue Anfrage" dashboards: helper: home: "home" error_messages: helper: - invalid_fields: "Invalid Fields" - correct_the_following_errors_and_try_again: "Correct the following errors and try again." + invalid_fields: "Ungültige Felder" + correct_the_following_errors_and_try_again: "Korrigiere die folgenden Fehler und probier es erneut." people: helper: results_for: " resultados para %{params}" @@ -67,8 +67,8 @@ de: destroy: success: "Album %{name} gelöscht." helper: - friends_albums: "Friends Albums" - your_albums: "Your Albums" + friends_albums: "Alben von Freunden" + your_albums: "Deine Alben" aspects: index: photos: "Fotos" @@ -85,20 +85,20 @@ de: add_a_new_aspect: "Neuen Aspekt erstellen" create: "Erstellen" create: - success: "Click on the plus on the left side to tell Diaspora who can see your new aspect." + success: "Klicke auf das Plus auf der rechten Seite um Diaspora mitzuteilen wer deinen neuen Aspekt sehen kann." destroy: - success: "%{name} was successfully removed." + success: "%{name} wurde erfolgreich gelöscht." update: - success: "Your aspect, %{name}, has been successfully edited." + success: "Dein Aspekt, %{name}, wurde erfolgreich geändert." move_friends: failure: "Aspect editing failed for friend %{real_name}." - success: "Aspects edited successfully." + success: "Aspekt erfolgreich geändert." move_friend: error: "didn't work %{inspect}" notice: "You are now showing your friend a different aspect of yourself." helper: remove: "remove" - aspect_not_empty: "Aspect not empty" + aspect_not_empty: "Aspekt ist nicht leer" users: edit: cancel: "Abbrechen" @@ -142,15 +142,15 @@ de: integrity_error: "Photo upload failed. Are you sure that was an image?" type_error: "Photo upload failed. Are you sure an image was added?" update: - notice: "Photo successfully updated." + notice: "Foto erfolgreich aktualisiert." error: "Failed to edit photo." destroy: - notice: "Photo deleted." + notice: "Foto gelöscht." registrations: new: sign_up: "Anmelden" create: - success: "You've joined Diaspora!" + success: "Du bist Diaspora beigetreten!" status_messages: new_status_message: tell_me_something_good: "Erzähl' mir was schönes!" @@ -171,27 +171,27 @@ de: no_message_to_display: "No message to display." people: index: - add_friend: "add friend" + add_friend: "Freund hinzufügen" real_name: "real name" diaspora_handle: "diaspora handle" - thats_you: "that's you!" - friend_request_pending: "friend request pending" - you_have_a_friend_request_from_this_person: "you have a friend request from this person" + thats_you: "das bist du!" + friend_request_pending: "Freundschaftsanfrage ausstehend" + you_have_a_friend_request_from_this_person: "du hast eine Freundschaftsanfrage von dieser Person" new: - new_person: "New Person" - back_to_list: "Back to List" + new_person: "Neue Person" + back_to_list: "Zurück zur Liste" show: - last_seen: "last seen: %{how_long_ago}" - friends_since: "friends since: %{how_long_ago}" + last_seen: "zuletzt gesehen: %{how_long_ago}" + friends_since: "Freunde seit: %{how_long_ago}" save: "save" - are_you_sure: "Are you sure?" + are_you_sure: "Bist du sicher?" remove_friend: "remove friend" destroy: - success: "You are now friends." - error: "Please select an aspect!" - ignore: "Ignored friend request." + success: "Ihr seid jetzt Freunde." + error: "Bitte wähle einen Aspekt aus!" + ignore: "Freundschaftsanfrage ignorieren." create: error: "No diaspora seed found with this email!" - already_friends: "You are already friends with %{destination_url}!" - success: "A friend request was sent to %{destination_url}." - horribly_wrong: "Something went horribly wrong." + already_friends: "Du bist bereits mit %{destination_url} befreundet!" + success: "Eine Freundschaftsanfrage wurde an %{destination_url} gesendet." + horribly_wrong: "Etwas ging tierisch schief." From ac667e6ec9db87fa37d047290981cbcc44da1c2e Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Mon, 20 Sep 2010 21:39:56 +0200 Subject: [PATCH 199/292] de: Ausloggen -> Abmelden --- config/locales/de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index e052637d8..20b75e90c 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -26,7 +26,7 @@ de: layouts: application: edit_profile: "Profil bearbeiten" - logout: "Ausloggen" + logout: "Abmelden" shared: aspect_nav: all_aspects: "Alle Aspekte" From 0869ea6a6a9c24c728ecf7e247586afb5fe6089c Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 20 Sep 2010 12:51:33 -0700 Subject: [PATCH 200/292] Adjust readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 066e4171c..c9fc4c6c8 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ Once mongo is running and bundler has finished, run `bundle exec thin start` fro ### Run the websocket server run `bundle exec ruby ./script/websocket_server` to start the websocket server on port 8080. Change the port in config/app_config.yml. -### Logging in +### Logging in with a sample user Run `rake db:seed:tom`, then login with user `tom` and password `evankorth`. More details in db/seeds/tom.rb. From 747f7d11a052ae02ed02b42b3bd68b03d65ff965 Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 20 Sep 2010 12:51:47 -0700 Subject: [PATCH 201/292] Move thin yml back to development mode --- config/thin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/thin.yml b/config/thin.yml index b0a3abf8d..ad91436c1 100644 --- a/config/thin.yml +++ b/config/thin.yml @@ -13,7 +13,7 @@ max_conns: 1024 require: [] max_persistent_conns: 512 -environment: production +environment: development servers: 1 daemonize: true #chdir: /usr/applications/localhash/current From 5b6215db77eac18053206843f7c742d84f9da662 Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 20 Sep 2010 12:59:01 -0700 Subject: [PATCH 202/292] Replicating a bunch of Pistos' commits, because the HEADs diverged --- README.md | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c9fc4c6c8..14a380586 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ We need you to fill out a [contributor agreement form](https://spreadsheets.goog All commits must be tested, and after each commit, all tests should be green before a pull request is sent. Please write your tests in Rspec. -GEMS: We would like to keep external dependencies unduplicated. We're using Nokogiri, and Mongomapper, and EM::HttpRequest as much as possible. We have a few gems in the project we'd rather not use, but if you can, use dependencies we already have. +GEMS: We would like to keep external dependencies unduplicated. We're using Nokogiri, Mongomapper, and EM::HttpRequest as much as possible. We have a few gems in the project we'd rather not use, but if you can, use dependencies we already have. # Diaspora @@ -69,22 +69,28 @@ If you're on **Mac OS X**, you already have Ruby on your system. Yay! ### MongoDB -To install MongoDB on **Ubuntu**, add the official MongoDB repository from this link: - -http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages +To install MongoDB on **Ubuntu**, add the official MongoDB repository [here](http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages). For Lucid, add the following line to your /etc/apt/sources.list (for other distros, see http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages): deb http://downloads.mongodb.org/distros/ubuntu 10.4 10gen -And then run: +Then run: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 sudo apt-get update sudo apt-get install mongodb-stable You can also run the binary directly by doing the following: -If you're running a 32-bit system, run `wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz`. If you're running a 64-bit system, run `wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz`. +If you're running a 32-bit system, run: + + wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz + +If you're running a 64-bit system, run: + + wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz + +Then run: # extract tar xzf mongodb-linux-i686-1.4.0.tgz @@ -193,11 +199,11 @@ To start the app server for the first time, you need to use Bundler to install D ### Start Mongo If you installed the Ubuntu package, MongoDB should already be running (if not, run `service mongodb start`). If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. -If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. +If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where Mongo is installed to start Mongo. If you installed the OsX package through "brew", MongoDB will need to be started via `sudo launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist`. (before you have to go to /Library/LaunchDaemons and add a symlink to /usr/local/Cellar/mongodb/1.6.2-x86_64/org.mongodb.mongod.plist) -Diaspora will not run unless mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. +Diaspora will not run unless Mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. ### Run the server `./script/server` will start both thin and the websocket server. If you want to run a different app server, you will have to run them separately. See below for instructions. @@ -223,9 +229,10 @@ Ongoing discussion: - [Diaspora Developer Google Group](http://groups.google.com/group/diaspora-dev) - [Diaspora Discussion Google Group](http://groups.google.com/group/diaspora-discuss) - [Diaspora Q&A site](http://diaspora.shapado.com/) -- [#diaspora-dev](irc://irc.freenode.net/#diaspora-dev) +- [#diaspora-dev IRC channel](irc://irc.freenode.net/#diaspora-dev) + ([join via the web client](http://webchat.freenode.net?channels=diaspora-dev)) -More general info and updates about the project can be found on our [blog](http://joindiaspora.com), [twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://http://eepurl.com/Vebk). +More general info and updates about the project can be found on our [blog](http://joindiaspora.com), [and on Twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://http://eepurl.com/Vebk). If you wish to contact us privately about any exploits in Diaspora you may find, you can email [exploits@joindiaspora.com](mailto:exploits@joindiaspora.com). From cbbf3337a38ea88795522353490fcd9cfef85a9a Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 20 Sep 2010 13:00:19 -0700 Subject: [PATCH 203/292] Readme style conformance --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 14a380586..0bc06f27f 100644 --- a/README.md +++ b/README.md @@ -84,11 +84,11 @@ You can also run the binary directly by doing the following: If you're running a 32-bit system, run: - wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz + wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz If you're running a 64-bit system, run: - wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz + wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz Then run: From f28a96e356073ad18b8fed45e497fdba8a8d3fcd Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Mon, 20 Sep 2010 22:00:44 +0200 Subject: [PATCH 204/292] fix in header --- config/locales/de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index 20b75e90c..1c4dfb4ad 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -# Sample localization file for English. Add more files in this directory for other locales. +# Localization file for German. Add more files in this directory for other locales. # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. de: From 782373cc510bdfde1bc71171821cc5bfe9d5115c Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Tue, 21 Sep 2010 01:40:37 +0800 Subject: [PATCH 205/292] de translation: wieder -> erneut --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 34947cbc2..0119a9214 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -17,7 +17,7 @@ de: locked: 'Dein Konto ist gesperrt.' invalid: 'Ungültige E-Mail-Adresse oder Passwort.' invalid_token: 'Ungültiger Authentifizierungstoken.' - timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich wieder an um fortzufahren.' + timeout: 'Deine Sitzung ist abgelaufen, bitte melde dich erneut an um fortzufahren.' inactive: 'Dein Konto wurde noch nicht aktiviert.' sessions: signed_in: 'Erfolgreich angemeldet.' From 3f12b8b675fcbf3038dd7d958d7fe4530d85321a Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Tue, 21 Sep 2010 01:41:14 +0800 Subject: [PATCH 206/292] =?UTF-8?q?de=20translation:=20abgemeldet=20->=20g?= =?UTF-8?q?ek=C3=BCndigt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/devise.de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/devise.de.yml b/config/locales/devise.de.yml index 0119a9214..7c0e0e758 100644 --- a/config/locales/devise.de.yml +++ b/config/locales/devise.de.yml @@ -31,7 +31,7 @@ de: registrations: signed_up: 'Du hast dich erfolgreich registriert. Sofern aktiviert, wurde dir eine Bestätigung per E-Mail gesendet.' updated: 'Dein Konto wurde aktualisiert.' - destroyed: 'Tschüss! Dein Konto wurde erfolgreich abgemeldet. Wir hoffen dich bald wiederzusehen.' + destroyed: 'Tschüss! Dein Konto wurde erfolgreich gekündigt. Wir hoffen dich bald wiederzusehen.' unlocks: send_instructions: 'Du wirst in ein paar Minuten eine E-Mail erhalten, die beschreibt, wie du dein Konto entsperren kannst.' unlocked: 'Dein Konto wurde erfolgreich entsperrt. Du bist nun angemeldet.' From 12f667e1b6a6a6e956bc728c7192d84a4951c2a6 Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Tue, 21 Sep 2010 03:39:56 +0800 Subject: [PATCH 207/292] de: Ausloggen -> Abmelden --- config/locales/de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index 23617a3f3..da4882148 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -11,7 +11,7 @@ de: layouts: application: edit_profile: "Profil bearbeiten" - logout: "Ausloggen" + logout: "Abmelden" shared: aspect_nav: all_aspects: "Alle Aspekte" From 3b59175f43c5dfa9ba6d17d9bb39226b2b5f51d1 Mon Sep 17 00:00:00 2001 From: Michael Kaeufl Date: Tue, 21 Sep 2010 04:00:44 +0800 Subject: [PATCH 208/292] fix in header --- config/locales/de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index da4882148..093df3466 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -3,7 +3,7 @@ # the COPYRIGHT file. -# Sample localization file for English. Add more files in this directory for other locales. +# Localization file for German. Add more files in this directory for other locales. # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. de: From af9cda52afea5e96c2210f7185f15a9d5eba5d87 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 13:18:11 -0700 Subject: [PATCH 209/292] DG IZ; always query through the current_user in the controllers. --- app/controllers/albums_controller.rb | 11 +++++------ app/controllers/aspects_controller.rb | 16 ++++++++-------- app/controllers/comments_controller.rb | 5 ----- app/controllers/people_controller.rb | 2 +- app/controllers/photos_controller.rb | 10 +++++----- app/controllers/status_messages_controller.rb | 4 ++-- lib/diaspora/user/querying.rb | 13 +++++-------- spec/models/user/visible_posts_spec.rb | 13 +++++++++++++ 8 files changed, 39 insertions(+), 35 deletions(-) diff --git a/app/controllers/albums_controller.rb b/app/controllers/albums_controller.rb index 281c83b5c..c6cf7a829 100644 --- a/app/controllers/albums_controller.rb +++ b/app/controllers/albums_controller.rb @@ -15,7 +15,7 @@ class AlbumsController < ApplicationController end def create - aspect = params[:album][:to] + aspect = params[:album][:to] data = clean_hash(params[:album]) @@ -29,7 +29,7 @@ class AlbumsController < ApplicationController end def destroy - @album = current_user.album_by_id params[:id] + @album = current_user.find_visible_post_by_id params[:id] @album.destroy flash[:notice] = "Album #{@album.name} deleted." respond_with :location => albums_url @@ -37,19 +37,18 @@ class AlbumsController < ApplicationController def show @photo = Photo.new - @album = Album.find_by_id params[:id] + @album = current_user.find_visible_post_by_id( params[:id] ) @album_photos = @album.photos - respond_with @album end def edit - @album = current_user.album_by_id params[:id] + @album = current_user.find_visible_post_by_id params[:id] redirect_to @album unless current_user.owns? @album end def update - @album = current_user.album_by_id params[:id] + @album = current_user.find_visible_post_by_id params[:id] data = clean_hash(params[:album]) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 14aa9e7b8..520485d33 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -25,7 +25,7 @@ class AspectsController < ApplicationController end def destroy - @aspect = Aspect.find_by_id params[:id] + @aspect = current_user.aspect_by_id params[:id] begin current_user.drop_aspect @aspect @@ -38,7 +38,7 @@ class AspectsController < ApplicationController end def show - @aspect = Aspect.find_by_id params[:id] + @aspect = current_user.aspect_by_id params[:id] @friends = @aspect.people @posts = current_user.visible_posts( :by_members_of => @aspect ).paginate :per_page => 15, :order => 'created_at DESC' @@ -51,7 +51,7 @@ class AspectsController < ApplicationController end def update - @aspect = Aspect.find_by_id(params[:id]) + @aspect = current_user.aspect_by_id(params[:id]) data = clean_hash(params[:aspect]) @aspect.update_attributes( data ) @@ -63,26 +63,26 @@ class AspectsController < ApplicationController params[:moves].each{ |move| move = move[1] unless current_user.move_friend(move) - flash[:error] = "Aspect editing failed for friend #{Person.find_by_id( move[:friend_id] ).real_name}." - redirect_to Aspect.first, :action => "edit" + flash[:error] = "Aspect editing failed for friend #{current_user.visible_person_by_id( move[:friend_id] ).real_name}." + redirect_to aspects_manage_path return end } flash[:notice] = "Aspects edited successfully." - redirect_to Aspect.first, :action => "edit" + redirect_to aspects_manage_path end def move_friend unless current_user.move_friend( :friend_id => params[:friend_id], :from => params[:from], :to => params[:to][:to]) flash[:error] = "didn't work #{params.inspect}" end - if aspect = Aspect.first(:id => params[:to][:to]) + if aspect = current_user.aspect_by_id(params[:to][:to]) flash[:notice] = "You are now showing your friend a different aspect of yourself." respond_with aspect else flash[:notice] = "You are now showing your friend a different aspect of yourself." - respond_with Person.first(:id => params[:friend_id]) + respond_with current_user.visible_person_by_id(params[:friend_id]) end end diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index dc115ab5b..4caeb1414 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -17,9 +17,4 @@ class CommentsController < ApplicationController render :nothing => true end - def show - @comment = Comment.find_by_id params[:id] - respond_with @comment - end - end diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index d85c67691..08acdd424 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -22,7 +22,7 @@ class PeopleController < ApplicationController @profile = @person.profile @aspects_with_person = current_user.aspects_with_person(@person) @aspects_dropdown_array = current_user.aspects.collect{|x| [x.to_s, x.id]} - @posts = current_user.visible_posts_from_others(:from => @person).paginate :page => params[:page], :order => 'created_at DESC' + @posts = current_user.visible_posts(:from => @person).paginate :page => params[:page], :order => 'created_at DESC' @latest_status_message = current_user.raw_visible_posts.find_all_by__type_and_person_id("StatusMessage", params[:id]).last @post_count = @posts.count respond_with @person diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index b77341820..8fa7a3bdf 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -65,28 +65,28 @@ class PhotosController < ApplicationController end def destroy - @photo = Photo.find_by_id params[:id] + @photo = current_user.find_visible_post_by_id params[:id] + @photo.destroy flash[:notice] = "Photo deleted." respond_with :location => @photo.album end def show - @photo = Photo.find_by_id params[:id] + @photo = current_user.find_visible_post_by_id params[:id] @album = @photo.album - respond_with @photo, @album end def edit - @photo = Photo.find_by_id params[:id] + @photo = current_user.find_visible_post_by_id params[:id] @album = @photo.album redirect_to @photo unless current_user.owns? @album end def update - @photo = Photo.find_by_id params[:id] + @photo = current_user.find_visible_post_by_id params[:id] data = clean_hash(params) diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index 305194a8f..5a8efbe06 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -19,13 +19,13 @@ class StatusMessagesController < ApplicationController end def destroy - @status_message = StatusMessage.find_by_id params[:id] + @status_message = current_user.find_visible_post_by_id params[:id] @status_message.destroy respond_with :location => root_url end def show - @status_message = StatusMessage.find_by_id params[:id] + @status_message = current_user.find_visible_post_by_id params[:id] respond_with @status_message end diff --git a/lib/diaspora/user/querying.rb b/lib/diaspora/user/querying.rb index ad023f2fb..00ae27735 100644 --- a/lib/diaspora/user/querying.rb +++ b/lib/diaspora/user/querying.rb @@ -7,14 +7,9 @@ module Diaspora module UserModules module Querying - def visible_posts_from_others(opts ={}) - if opts[:from].class == Person - Post.where(:person_id => opts[:from].id, :_id.in => self.visible_post_ids) - elsif opts[:from].class == Aspect - Post.where(:_id.in => opts[:from].post_ids) unless opts[:from].user != self - else - Post.where(:_id.in => self.visible_post_ids) - end + + def find_visible_post_by_id( id ) + self.raw_visible_posts.find id end def visible_posts( opts = {} ) @@ -22,6 +17,8 @@ module Diaspora return raw_visible_posts if opts[:by_members_of] == :all aspect = self.aspects.find_by_id( opts[:by_members_of].id ) aspect.posts + elsif opts[:from] + self.raw_visible_posts.find_all_by_person_id(opts[:from].id, :order => 'created_at DESC') end end diff --git a/spec/models/user/visible_posts_spec.rb b/spec/models/user/visible_posts_spec.rb index ffb220531..5c44a2ce8 100644 --- a/spec/models/user/visible_posts_spec.rb +++ b/spec/models/user/visible_posts_spec.rb @@ -45,6 +45,19 @@ describe User do @user.visible_posts(:by_members_of => @aspect2).include?(status_message3).should be true end + describe 'querying' do + + it 'should find a visible post by id' do + status_message1 = @user.post :status_message, :message => "hi", :to => @aspect.id + status_message2 = @user2.post :status_message, :message => "heyyyy", :to => @user2_aspect.id + status_message3 = @user3.post :status_message, :message => "yooo", :to => @user3_aspect.id + + @user.find_visible_post_by_id(status_message1.id).should == status_message1 + @user2.find_visible_post_by_id(status_message1.id).should == nil + end + + end + describe 'albums' do before do @album = @user.post :album, :name => "Georges", :to => @aspect.id From 4fe4326ed1b7b8e58f340eadf316204d30122ec0 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 15:00:02 -0700 Subject: [PATCH 210/292] DG IZ photo uploading now works --- app/controllers/photos_controller.rb | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index 8fa7a3bdf..42b00007c 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -12,6 +12,7 @@ class PhotosController < ApplicationController def create album = Album.find_by_id params[:album_id] + puts params begin @@ -102,13 +103,18 @@ class PhotosController < ApplicationController private def clean_hash(params) - return { - :photo => { - :caption => params[:photo][:caption], - }, - :album_id => params[:album_id], - :user_file => params[:user_file] - } + if params[:photo] + return { + :photo => { + :caption => params[:photo][:caption], + } + } + else + return{ + :album_id => params[:album_id], + :user_file => params[:user_file] + } + end end end From 5e2fdedf8bb9ef0749dc79cda3ba558e55af5658 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 15:07:30 -0700 Subject: [PATCH 211/292] MS removed another logging of encrypted data.... --- app/controllers/publics_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index 6f2b09c43..72f8a0dfc 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -35,7 +35,7 @@ class PublicsController < ApplicationController begin @user = Person.first(:id => params[:id]).owner rescue NoMethodError => e - Rails.logger.error("Received post #{params[:xml]} for nonexistent person #{params[:id]}") + Rails.logger.error("Received post for nonexistent person #{params[:id]}") return end @user.receive_salmon params[:xml] From 5bb4ee5d3660977ac35e79ffa9aee4f45737c82c Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 15:15:37 -0700 Subject: [PATCH 212/292] DG IZ; posting now ensures aspect ownership. --- app/models/user.rb | 3 +++ spec/models/user/posting_spec.rb | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index f0481341a..e02c58534 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -105,7 +105,10 @@ class User end aspect_ids = [aspect_ids.to_s] if aspect_ids.is_a? BSON::ObjectId + raise ArgumentError.new("You must post to someone.") if aspect_ids.nil? || aspect_ids.empty? + aspect_ids.each{ |aspect_id| + raise ArgumentError.new("Cannot post to an aspect you do not own.") unless self.aspects.find(aspect_id) } post = build_post(class_name, options) diff --git a/spec/models/user/posting_spec.rb b/spec/models/user/posting_spec.rb index b1f6f71a8..d00747a2d 100644 --- a/spec/models/user/posting_spec.rb +++ b/spec/models/user/posting_spec.rb @@ -30,6 +30,10 @@ describe User do proc {@user.post(:status_message, :message => "heyheyhey")}.should raise_error /You must post to someone/ end + it 'should not be able to post to someone elses aspect' do + proc {@user.post(:status_message, :message => "heyheyhey", :to => @aspect2.id)}.should raise_error /Cannot post to an aspect you do not own./ + end + it 'should put the post in the aspect post array' do post = @user.post(:status_message, :message => "hey", :to => @aspect.id) @aspect.reload From fb2f027b24d64ffe38700d4f80ab19dd11fbfa15 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 15:25:19 -0700 Subject: [PATCH 213/292] DG IZ; escape regex characters in Person.search --- app/models/person.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/person.rb b/app/models/person.rb index 72f4c46b9..74079ff93 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -35,7 +35,7 @@ class Person /^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix def self.search(query) - query = query.to_s.strip + query = Regexp.escape( query.to_s.strip ) Person.all('profile.first_name' => /^#{query}/i) | Person.all('profile.last_name' => /^#{query}/i) end From cb0f0b72eb0e3fc0e65d234c6b0d20a2a76f06b7 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 15:32:18 -0700 Subject: [PATCH 214/292] MS removed a log and trying to be slightly more pedantic --- app/controllers/publics_controller.rb | 4 +++- app/helpers/requests_helper.rb | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index 72f8a0dfc..b6c03ff62 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -33,7 +33,9 @@ class PublicsController < ApplicationController render :nothing => true return unless params[:xml] begin - @user = Person.first(:id => params[:id]).owner + person = Person.first(:id => params[:id]) + puts person.real_name + @user = person.owner rescue NoMethodError => e Rails.logger.error("Received post for nonexistent person #{params[:id]}") return diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb index 32ce79fd9..52955fc94 100644 --- a/app/helpers/requests_helper.rb +++ b/app/helpers/requests_helper.rb @@ -33,6 +33,7 @@ module RequestsHelper def relationship_flow(identifier) action = :none person = nil + puts identifier person = Person.by_webfinger identifier if person action = (person == current_user.person ? :none : :friend) From fc9cddc7b834228ddeac1f4106bb220e9d1c3582 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 15:40:43 -0700 Subject: [PATCH 215/292] make the remote tom work --- db/seeds/tom.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 2e06913f2..61b2ad44f 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -7,7 +7,7 @@ require 'config/environment' remote_url = "http://tom.joindiaspora.com/" -remote_url = "http://localhost:3000/" +#remote_url = "http://localhost:3000/" # Create seed user user = User.instantiate!( :email => "tom@tom.joindiaspora.com", :username => "tom", From 40c96fc6194b265647d927a1e58e071ae79237f8 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 15:53:56 -0700 Subject: [PATCH 216/292] DG IZ; click to edit rollover text on aspect manage page --- app/views/aspects/manage.html.haml | 6 ++++-- app/views/shared/_sub_header.haml | 2 +- public/stylesheets/application.css | 10 ++++++++++ public/stylesheets/sass/application.sass | 13 +++++++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index c579671e1..656f0cb96 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -38,7 +38,9 @@ %li.aspect .aspect_name - %h1{:contenteditable => true}= aspect.name + %span.edit_name_field + %h1{:contenteditable => true}= aspect.name + %span.tip click to edit %ul.tools %li= link_to "add a new friend", "#add_request_pane_#{aspect.id}", :class => 'add_request_button' @@ -56,7 +58,7 @@ %li.person{:id => person.id, :from_aspect_id => aspect.id} = person_image_tag(person) .name - = person.real_name + = link_to person.real_name, person .yo{:style => 'display:none'} %div{:id => "add_request_pane_#{aspect.id}"} = render "requests/new_request", :aspect => aspect diff --git a/app/views/shared/_sub_header.haml b/app/views/shared/_sub_header.haml index badf8783d..4e0e2aca4 100644 --- a/app/views/shared/_sub_header.haml +++ b/app/views/shared/_sub_header.haml @@ -9,7 +9,7 @@ - if @aspect == :all = link_to "All Aspects", root_path - elsif @aspect == :manage - = link_to "Manage Aspects", root_path + = "Manage Aspects" - else = link_to @aspect.name, @aspect diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 98893cabb..60b50a9f4 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -520,6 +520,16 @@ h1.big_text { .requests h1, .remove h1 { display: inline-block; } + .aspect .tip, + .requests .tip, + .remove .tip { + display: none; + color: #999999; + margin-left: 0.5em; } + .aspect .edit_name_field:hover .tip, + .requests .edit_name_field:hover .tip, + .remove .edit_name_field:hover .tip { + display: inline; } .aspect .aspect_name, .requests .aspect_name, .remove .aspect_name { diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 5edc89135..80debac15 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -694,6 +694,19 @@ h1.big_text h1 :display inline-block + .tip + :display none + :color #999 + :margin + :left 0.5em + + .edit_name_field:hover + .tip + :display inline + + + + .aspect_name :position relative From 9f63dd9b69229a5c08b1b10e7a489c21d22ebbef Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 15:55:11 -0700 Subject: [PATCH 217/292] MS added another message in the readme about not using mod_rails, as mod_rails does not work with EventMachine --- README.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 0bc06f27f..9bff999fb 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ The privacy aware, personally controlled, do-it-all, open source social network. Also, we really want to continue to focus on features and improving the code base. When we think it is ready for general use, we will post more detailed instructions. +## Notice +We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the asynchronous feature of [EventMachine](http://rubyeventmachine.com/) +Because our websocket server and message queue both work using the power of the [Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use mod_rails, mongrel, or another non-eventmachine based application server, federation and/or websockets may not work. +We will try and fully support more webservers later, but that is what works for now. These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), [Fedora](http://www.fedoraproject.org) or Mac OS X. We are developing Diaspora for the latest and greatest browsers, so please update your Firefox, Chrome or Safari to the latest and greatest. @@ -235,14 +239,3 @@ Ongoing discussion: More general info and updates about the project can be found on our [blog](http://joindiaspora.com), [and on Twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://http://eepurl.com/Vebk). If you wish to contact us privately about any exploits in Diaspora you may find, you can email [exploits@joindiaspora.com](mailto:exploits@joindiaspora.com). - - -## License -Copyright 2010 Diaspora Inc. - -Diaspora is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - -Diaspora is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License along with Diaspora. If not, see . - From 788ed3aac25aff4af417a0122ac9361a6f2a92f7 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 15:58:09 -0700 Subject: [PATCH 218/292] small typo in readme --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9bff999fb..2c75561c1 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,10 @@ Also, we really want to continue to focus on features and improving the code bas ready for general use, we will post more detailed instructions. ## Notice -We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the asynchronous feature of [EventMachine](http://rubyeventmachine.com/) -Because our websocket server and message queue both work using the power of the [Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use mod_rails, mongrel, or another non-eventmachine based application server, federation and/or websockets may not work. +We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the asynchronous feature of [EventMachine](http://rubyeventmachine.com/) to send messages between seeds. +using the power of the [Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use mod_rails, mongrel, or another non-eventmachine based application server, federation and/or websockets may not work. + +If you don't like thin, you can always try [Rainbows!](http://rainbows.rubyforge.org/) We will try and fully support more webservers later, but that is what works for now. From 2b31c09ab387911f7297852e694cb2f837aa99c6 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 15:58:09 -0700 Subject: [PATCH 219/292] small typo in readme --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9bff999fb..d7960a634 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,10 @@ Also, we really want to continue to focus on features and improving the code bas ready for general use, we will post more detailed instructions. ## Notice -We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the asynchronous feature of [EventMachine](http://rubyeventmachine.com/) -Because our websocket server and message queue both work using the power of the [Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use mod_rails, mongrel, or another non-eventmachine based application server, federation and/or websockets may not work. +We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the asynchronous feature of [EventMachine](http://rubyeventmachine.com/) to send messages between seeds, +using the power of the [Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use mod_rails, mongrel, or another non-eventmachine based application server, federation and/or websockets may not work. + +If you don't like thin, you can always try [Rainbows!](http://rainbows.rubyforge.org/) We will try and fully support more webservers later, but that is what works for now. From 0bbbded89537c4478c45581e9960f4582cd1d162 Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 20 Sep 2010 16:02:10 -0700 Subject: [PATCH 220/292] or any later version of the AGPL --- COPYRIGHT | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index af330bbc2..8a380cc7e 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,4 +1,4 @@ -Diaspora is copyright Diaspora Inc., 2010, and files herein are licensed under the Affero General Public License version 3, the text of which can be found in GNU-AGPL-3.0, unless otherwise noted. Components of Diaspora, including Rails, JQuery, and Devise, are licensed under the MIT/X11 license. Blueprint-CSS is licensed under a modified version of the MIT/X11 license. All unmodified files from these and other sources retain their original copyright and license notices: see the relevant individual files. Attribution information for Diaspora is contained in the AUTHORS file. +Diaspora is copyright Diaspora Inc., 2010, and files herein are licensed under the Affero General Public License version 3, the text of which can be found in GNU-AGPL-3.0, or any later version of the AGPL, unless otherwise noted. Components of Diaspora, including Rails, JQuery, and Devise, are licensed under the MIT/X11 license. Blueprint-CSS is licensed under a modified version of the MIT/X11 license. All unmodified files from these and other sources retain their original copyright and license notices: see the relevant individual files. Attribution information for Diaspora is contained in the AUTHORS file. * In addition, as a special exception, the copyright holders give * permission to link the code of portions of this program with the @@ -11,4 +11,4 @@ Diaspora is copyright Diaspora Inc., 2010, and files herein are licensed under t * version of the file(s), but you are not obligated to do so. If you * do not wish to do so, delete this exception statement from your * version. If you delete this exception statement from all source -* files in the program, then also delete it here. \ No newline at end of file +* files in the program, then also delete it here. From 8dd11c0c95eaf2a0da1f183db78658f24070f500 Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 20 Sep 2010 16:41:03 -0700 Subject: [PATCH 221/292] Add a couple specs to friending --- lib/diaspora/user/friending.rb | 3 ++- spec/models/user/user_friending_spec.rb | 31 +++++++++++++++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/lib/diaspora/user/friending.rb b/lib/diaspora/user/friending.rb index e79608381..a4dcdd38d 100644 --- a/lib/diaspora/user/friending.rb +++ b/lib/diaspora/user/friending.rb @@ -86,7 +86,8 @@ module Diaspora def remove_friend(bad_friend) raise "Friend not deleted" unless self.friend_ids.delete( bad_friend.id ) - aspects.each{|g| g.person_ids.delete( bad_friend.id )} + aspects.each{|aspect| + aspect.person_ids.delete( bad_friend.id )} self.save self.raw_visible_posts.find_all_by_person_id( bad_friend.id ).each{|post| diff --git a/spec/models/user/user_friending_spec.rb b/spec/models/user/user_friending_spec.rb index bef8fa416..67ed9f799 100644 --- a/spec/models/user/user_friending_spec.rb +++ b/spec/models/user/user_friending_spec.rb @@ -189,16 +189,14 @@ describe User do @user2 = Factory.create :user @aspect2 = @user2.aspect(:name => "Gross people") - request = @user.send_friend_request_to( @user2, @aspect) - request.reverse_for @user2 - @user2.activate_friend(@user.person, @aspect2) - @user.receive request.to_diaspora_xml + friend_users(@user, @aspect, @user2, @aspect2) + @user.reload + @user2.reload + @aspect.reload + @aspect2.reload end it 'should unfriend the other user on the same seed' do - @user.reload - @user2.reload - @user.friends.count.should == 1 @user2.friends.count.should == 1 @@ -212,6 +210,25 @@ describe User do @aspect.people.count.should == 0 @aspect2.people.count.should == 0 end + context 'with a post' do + before do + @message = @user.post(:status_message, :message => "hi", :to => @aspect.id) + @user2.receive @message.to_diaspora_xml.to_s + @user2.unfriend @user.person + @user.unfriended_by @user2.person + @aspect.reload + @aspect2.reload + @user.reload + @user2.reload + end + it "deletes the unfriended user's posts from visible_posts" do + @user.raw_visible_posts.include?(@message.id).should be_false + end + it "deletes the unfriended user's posts from the aspect's posts" do + pending "We need to implement this" + @aspect2.posts.include?(@message).should be_false + end + end end From e2fc48c9ff8ec83eebbf9a6258d1082eec83c516 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 16:44:35 -0700 Subject: [PATCH 222/292] MS being slightly more proper with application helper, and fixing the person search page --- app/helpers/application_helper.rb | 4 ++-- app/views/people/_person.html.haml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 75a13dc6b..65f1c8679 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -43,11 +43,11 @@ module ApplicationHelper end def owner_image_tag - person_image_tag(current_user) + person_image_tag(current_user.person) end def owner_image_link - person_image_link(current_user) + person_image_link(current_user.person) end def person_image_tag(person) diff --git a/app/views/people/_person.html.haml b/app/views/people/_person.html.haml index 646d0b333..e0c77d990 100644 --- a/app/views/people/_person.html.haml +++ b/app/views/people/_person.html.haml @@ -8,7 +8,7 @@ .content %span.from - = link_to person.real_name, person + = link_to person.real_name, person_path(person) .info = person.diaspora_handle From 2be0cca2cd3f99c53c0220ef6082b6cc00ad5632 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 16:51:02 -0700 Subject: [PATCH 223/292] MS adding downcase to webfinger lookup --- app/models/person.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/person.rb b/app/models/person.rb index 74079ff93..970a90a0b 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -78,7 +78,7 @@ class Person def self.by_webfinger( identifier, opts = {}) #need to check if this is a valid email structure, maybe should do in JS - local_person = Person.first(:diaspora_handle => identifier.gsub('acct:', '')) + local_person = Person.first(:diaspora_handle => identifier.gsub('acct:', '').to_s.downcase) if local_person Rails.logger.info("Do not need to webfinger, found a local person #{local_person.real_name}") From 24ca139241e70444e696ed2cdb2f135083896499 Mon Sep 17 00:00:00 2001 From: maxwell Date: Mon, 20 Sep 2010 17:11:07 -0700 Subject: [PATCH 224/292] MS remove some stray puts --- app/controllers/publics_controller.rb | 2 -- app/views/people/show.html.haml | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index b6c03ff62..d7f4825de 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -10,7 +10,6 @@ class PublicsController < ApplicationController def hcard @person = Person.find_by_id params[:id] - puts @person unless @person.nil? || @person.owner.nil? render 'hcard' end @@ -34,7 +33,6 @@ class PublicsController < ApplicationController return unless params[:xml] begin person = Person.first(:id => params[:id]) - puts person.real_name @user = person.owner rescue NoMethodError => e Rails.logger.error("Received post for nonexistent person #{params[:id]}") diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index 4f76f18cf..0939bd376 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -4,7 +4,7 @@ - content_for :page_title do - = @person.real_name + profile - content_for :left_pane do #profile From e588d7ab6af5755cd91f9702a1b0513e5b9b7fca Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 17:26:20 -0700 Subject: [PATCH 225/292] DG IZ moving friends is now ajaxy --- app/controllers/aspects_controller.rb | 6 ++-- app/views/aspects/manage.html.haml | 4 --- app/views/shared/_aspect_nav.haml | 2 +- config/routes.rb | 5 +-- lib/diaspora/user/querying.rb | 3 +- public/javascripts/aspect-edit.js | 51 ++++++++------------------- 6 files changed, 22 insertions(+), 49 deletions(-) diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index 520485d33..779ce0f6f 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -79,10 +79,10 @@ class AspectsController < ApplicationController end if aspect = current_user.aspect_by_id(params[:to][:to]) flash[:notice] = "You are now showing your friend a different aspect of yourself." - respond_with aspect + render :nothing => true else - flash[:notice] = "You are now showing your friend a different aspect of yourself." - respond_with current_user.visible_person_by_id(params[:friend_id]) + flash[:error] = "Invalid aspect id!" + render aspects_manage_path end end diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 656f0cb96..3903039ea 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -63,8 +63,4 @@ %div{:id => "add_request_pane_#{aspect.id}"} = render "requests/new_request", :aspect => aspect -%p - %br - = link_to 'Update Aspects', '#', :class => 'button', :id => "move_friends_link" - #content_bottom diff --git a/app/views/shared/_aspect_nav.haml b/app/views/shared/_aspect_nav.haml index ed3fe6f8f..dbca3bbef 100644 --- a/app/views/shared/_aspect_nav.haml +++ b/app/views/shared/_aspect_nav.haml @@ -6,7 +6,7 @@ #aspect_nav %ul - for aspect in @aspects - %li{:id => aspect.id, :class => ("selected" if current_aspect?(aspect))} + %li{:class => ("selected" if current_aspect?(aspect))} = link_for_aspect aspect %ul{ :style => "position:absolute;right:0;bottom:0.01em;"} diff --git a/config/routes.rb b/config/routes.rb index 188c4b137..ae757499c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -13,10 +13,11 @@ Diaspora::Application.routes.draw do resources :photos, :except => [:index] resources :albums - match 'aspects/manage', :to => 'aspects#manage' - resources :aspects, :except => [:edit] match 'aspects/move_friends', :to => 'aspects#move_friends', :as => 'move_friends' match 'aspects/move_friend', :to => 'aspects#move_friend', :as => 'move_friend' + match 'aspects/manage', :to => 'aspects#manage' + resources :aspects, :except => [:edit] + match 'warzombie', :to => "dev_utilities#warzombie" match 'zombiefriends', :to => "dev_utilities#zombiefriends" diff --git a/lib/diaspora/user/querying.rb b/lib/diaspora/user/querying.rb index 00ae27735..1079949b0 100644 --- a/lib/diaspora/user/querying.rb +++ b/lib/diaspora/user/querying.rb @@ -31,8 +31,7 @@ module Diaspora end def aspect_by_id( id ) - id = id.to_id - aspects.detect{|x| x.id == id } + self.aspects.find( id ) end def album_by_id( id ) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index e07877cb7..39eee791a 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -20,28 +20,6 @@ function decrementRequestsCounter() { } $(function() { - - - $('#move_friends_link').live( 'click', function(){ - $.post( - '/aspects/move_friends', - { 'moves' : $('#aspect_list').data() }, - function() { - $('#aspect_title').html("Groups edited successfully!"); - } - ); - - // should the following logic be moved into the $.post() callback? - $("#aspect_list").removeData(); - - $(".person") - .css('background-color','none') - .attr('from_aspect_id', function() { - return $(this).parent().attr('id') - }); - - }); - // Multiple classes here won't work $("ul .person").draggable({ revert: true @@ -65,24 +43,23 @@ $(function() { } }); - } else { - var $aspect_list = $('#aspect_list'), - move = {}; - - // This is poor implementation - move[ 'friend_id' ] = ui.draggable[0].id; // ui.draggable.attr('id') - move[ 'to' ] = $(this)[0].id;// $(this).attr('id'); - move[ 'from' ] = ui.draggable[0].getAttribute('from_aspect_id'); // ui.draggable.attr('from_aspect_id') - - // if created custom attr's - should be using `data-foo` - - - if (move['to'] == move['from']){ - $aspect_list.data( ui.draggable[0].id, []); + }; + var dropzone = $(this)[0]; + + if ($(this)[0].id == ui.draggable[0].getAttribute('from_aspect_id')){ ui.draggable.css('background-color','#eee'); } else { - $aspect_list.data( ui.draggable[0].id, move); ui.draggable.css('background-color','orange'); + $.ajax({ + url: "/aspects/move_friend/", + data: {"friend_id" : ui.draggable[0].id, + "from" : ui.draggable[0].getAttribute('from_aspect_id'), + "to" : { "to" : dropzone.id }}, + success: function(data){ + ui.draggable.attr('from_aspect_id', dropzone.id); + ui.draggable.css('background','none'); + }}); + } } $(this).closest("ul").append(ui.draggable); From 441f75203a49ea2e1b0bcecc9294617e855c6dc4 Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 20 Sep 2010 17:33:05 -0700 Subject: [PATCH 226/292] Add autolink and sanitize to show page --- app/views/status_messages/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/status_messages/show.html.haml b/app/views/status_messages/show.html.haml index 358c2244b..26777408d 100644 --- a/app/views/status_messages/show.html.haml +++ b/app/views/status_messages/show.html.haml @@ -7,7 +7,7 @@ %p %strong Message: - = @status_message.message + = auto_link sanitize @status_message.message %p %strong Owner: From ca97d792af238b59b885c4e7f61345469ff8d945 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 18:08:59 -0700 Subject: [PATCH 227/292] DG IZ; fixing querying bug in aspect_by_id --- lib/diaspora/user/querying.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/diaspora/user/querying.rb b/lib/diaspora/user/querying.rb index 1079949b0..00ae27735 100644 --- a/lib/diaspora/user/querying.rb +++ b/lib/diaspora/user/querying.rb @@ -31,7 +31,8 @@ module Diaspora end def aspect_by_id( id ) - self.aspects.find( id ) + id = id.to_id + aspects.detect{|x| x.id == id } end def album_by_id( id ) From f50b70da9e2ed919c0202b2e5c6737a079276a73 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 18:14:12 -0700 Subject: [PATCH 228/292] DG IZ; removed stray mustache --- public/javascripts/aspect-edit.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index 39eee791a..9f9e5803e 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -47,7 +47,7 @@ $(function() { var dropzone = $(this)[0]; if ($(this)[0].id == ui.draggable[0].getAttribute('from_aspect_id')){ - ui.draggable.css('background-color','#eee'); + ui.draggable.css('background','none'); } else { ui.draggable.css('background-color','orange'); $.ajax({ @@ -61,7 +61,6 @@ $(function() { }}); } - } $(this).closest("ul").append(ui.draggable); } }); From 2d7b72e51878cdfc9a126d1b4cb397bfa1c963a9 Mon Sep 17 00:00:00 2001 From: Pistos Date: Mon, 20 Sep 2010 21:18:37 -0400 Subject: [PATCH 229/292] Added a newline after headings where it was missing. --- README.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0ae9faff1..3eade7240 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ ## Commit Guidlines + You are welcome to contribute, add and extend Diaspora however you see fit. We will do our best to incorporate everything that meets our guidelines. -We need you to fill out a [contributor agreement form](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq) before we can accept your patches. The agreement gives Diaspora joint ownership of the patch so the copyright isn't scattered. You can find it [here](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq). +We need you to fill out a [contributor agreement form](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq) before we can accept your patches. The agreement gives Diaspora joint ownership of the patch so the copyright isn't scattered. You can find it [here](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq). All commits must be tested, and after each commit, all tests should be green before a pull request is sent. Please write your tests in Rspec. @@ -14,7 +15,7 @@ The privacy aware, personally controlled, do-it-all, open source social network. **DISCLAIMER: THIS IS PRE-ALPHA SOFTWARE AND SHOULD BE TREATED ACCORDINGLY.** **PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS TO BE BROKEN** -Also, we really want to continue to focus on features and improving the code base. When we think it is +Also, we really want to continue to focus on features and improving the code base. When we think it is ready for general use, we will post more detailed instructions. ## Notice @@ -30,6 +31,7 @@ We will try and fully support more webservers later, but that is what works for These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), [Fedora](http://www.fedoraproject.org) or Mac OS X. We are developing Diaspora for the latest and greatest browsers, so please update your Firefox, Chrome or Safari to the latest and greatest. ## Preparing your system + In order to run Diaspora, you will need to download the following dependencies (specific instructions follow): - Build Tools - Packages needed to compile the components that follow. @@ -64,7 +66,7 @@ To install Ruby 1.8.7 on **Ubuntu**, run the following command: sudo apt-get install ruby-full -Please note that you need to have Universe enabled in your /etc/apt/sources.list file to install ruby using apt-get. +Please note that you need to have Universe enabled in your /etc/apt/sources.list file to install ruby using apt-get. At this time Fedora does not have Ruby 1.8.7. As a workaround it is possible to use [rvm](http://rvm.beginrescueend.com/) with a locally compiled Ruby installation. A semi automated method for doing this is available. It is highly recommended that you review the script before running it so you understand what will occur. The script can be executed by running the following command: @@ -90,11 +92,11 @@ Then run: You can also run the binary directly by doing the following: -If you're running a 32-bit system, run: +If you're running a 32-bit system, run: wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz - -If you're running a 64-bit system, run: + +If you're running a 64-bit system, run: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz @@ -202,9 +204,11 @@ If you have never used github before, their [help desk](http://help.github.com/) ## Running Diaspora ### Install required gems + To start the app server for the first time, you need to use Bundler to install Diaspora's gem depencencies. Run `bundle install` from Diaspora's root directory. Bundler will also warn you if there is a new dependency and you need to bundle install again. ### Start Mongo + If you installed the Ubuntu package, MongoDB should already be running (if not, run `service mongodb start`). If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where Mongo is installed to start Mongo. @@ -214,19 +218,24 @@ If you installed the OsX package through "brew", MongoDB will need to be started Diaspora will not run unless Mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. ### Run the server + `./script/server` will start both thin and the websocket server. If you want to run a different app server, you will have to run them separately. See below for instructions. ### Run the app server + Once mongo is running and bundler has finished, run `bundle exec thin start` from the root Diaspora directory. This will start the app server in development mode[.](http://bit.ly/9mwtUw) ### Run the websocket server + run `bundle exec ruby ./script/websocket_server` to start the websocket server on port 8080. Change the port in config/app_config.yml. ### Logging in with a sample user + Run `rake db:seed:tom`, then login with user `tom` and password `evankorth`. More details in db/seeds/tom.rb. ### Testing + Diaspora's test suite uses [rspec](http://rspec.info/), a behavior driven testing framework. In order to run the tests, run `bundle exec rspec spec`. ## Resources From fa1e09cadbfb5a1b505398e299e7777d40bf3ff2 Mon Sep 17 00:00:00 2001 From: Pistos Date: Mon, 20 Sep 2010 21:23:20 -0400 Subject: [PATCH 230/292] Hard-wrapped README text to confirm to an 80-character screen width. --- README.md | 185 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 133 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 3eade7240..e7c118631 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,87 @@ ## Commit Guidlines -You are welcome to contribute, add and extend Diaspora however you see fit. We will do our best to incorporate everything that meets our guidelines. +You are welcome to contribute, add and extend Diaspora however you see fit. We +will do our best to incorporate everything that meets our guidelines. -We need you to fill out a [contributor agreement form](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq) before we can accept your patches. The agreement gives Diaspora joint ownership of the patch so the copyright isn't scattered. You can find it [here](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq). +We need you to fill out a +[contributor agreement form](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq) +before we can accept your patches. The agreement gives Diaspora joint +ownership of the patch so the copyright isn't scattered. You can find it +[here](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq). -All commits must be tested, and after each commit, all tests should be green before a pull request is sent. Please write your tests in Rspec. +All commits must be tested, and after each commit, all tests should be green +before a pull request is sent. Please write your tests in Rspec. -GEMS: We would like to keep external dependencies unduplicated. We're using Nokogiri, Mongomapper, and EM::HttpRequest as much as possible. We have a few gems in the project we'd rather not use, but if you can, use dependencies we already have. +GEMS: We would like to keep external dependencies unduplicated. We're using +Nokogiri, Mongomapper, and EM::HttpRequest as much as possible. We have a few +gems in the project we'd rather not use, but if you can, use dependencies we +already have. # Diaspora -The privacy aware, personally controlled, do-it-all, open source social network. +The privacy aware, personally controlled, do-it-all, open source social +network. **DISCLAIMER: THIS IS PRE-ALPHA SOFTWARE AND SHOULD BE TREATED ACCORDINGLY.** -**PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS TO BE BROKEN** +**PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS +TO BE BROKEN** -Also, we really want to continue to focus on features and improving the code base. When we think it is -ready for general use, we will post more detailed instructions. +Also, we really want to continue to focus on features and improving the code +base. When we think it is ready for general use, we will post more detailed +instructions. ## Notice -We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the asynchronous feature of [EventMachine](http://rubyeventmachine.com/) to send messages between seeds, +We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as +our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the +asynchronous feature of [EventMachine](http://rubyeventmachine.com/) to send +messages between seeds, using the power of the +[Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use +mod_rails, mongrel, or another non-eventmachine based application server, +federation and/or websockets may not work. -using the power of the [Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use mod_rails, mongrel, or another non-eventmachine based application server, federation and/or websockets may not work. +If you don't like thin, you can always try +[Rainbows!](http://rainbows.rubyforge.org/) We will try and fully support more +webservers later, but that is what works for now. -If you don't like thin, you can always try [Rainbows!](http://rainbows.rubyforge.org/) -We will try and fully support more webservers later, but that is what works for now. - - -These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), [Fedora](http://www.fedoraproject.org) or Mac OS X. We are developing Diaspora for the latest and greatest browsers, so please update your Firefox, Chrome or Safari to the latest and greatest. +These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), +[Fedora](http://www.fedoraproject.org) or Mac OS X. We are developing Diaspora +for the latest and greatest browsers, so please update your Firefox, Chrome or +Safari to the latest and greatest. ## Preparing your system -In order to run Diaspora, you will need to download the following dependencies (specific instructions follow): +In order to run Diaspora, you will need to download the following dependencies +(specific instructions follow): - Build Tools - Packages needed to compile the components that follow. -- [Ruby](http://www.ruby-lang.org) - The Ruby programming language. (We're using **1.8.7**. It comes preinstalled on Mac OS X.) +- [Ruby](http://www.ruby-lang.org) - The Ruby programming language. + (We're using **1.8.7**. It comes preinstalled on Mac OS X.) - [MongoDB](http://www.mongodb.org) - A snappy noSQL database. -- [OpenSSL](http://www.openssl.org/) - An encryption library. (It comes preinstalled on Mac OS X and Ubuntu.) -- [ImageMagick](http://www.imagemagick.org/) - An Image processing library used to resize uploaded photos. +- [OpenSSL](http://www.openssl.org/) - An encryption library. + (It comes preinstalled on Mac OS X and Ubuntu.) +- [ImageMagick](http://www.imagemagick.org/) - An Image processing library used + to resize uploaded photos. - [Git](http://git-scm.com/) - The fast version control system. -After you have Ruby installed on your system, you will need to get RubyGems, then install Bundler: +After you have Ruby installed on your system, you will need to get RubyGems, +then install Bundler: - [RubyGems](http://rubygems.org/) - Source for Ruby gems. - [Bundler](http://gembundler.com/) - Gem management tool for Ruby projects. -**We suggest using a package management system to download these dependencies. Trust us, it's going to make your life a lot easier. If you're using Mac OS X, you can use [homebrew](http://mxcl.github.com/homebrew/); if you're using Ubuntu, just use [Synaptic](http://www.nongnu.org/synaptic/) (it comes pre-installed); if you're using Fedora simply use [yum](http://yum.baseurl.org/). The instructions below assume you have these installed.** +**We suggest using a package management system to download these dependencies. +Trust us, it's going to make your life a lot easier. If you're using Mac OS X, +you can use [homebrew](http://mxcl.github.com/homebrew/); if you're using +Ubuntu, just use [Synaptic](http://www.nongnu.org/synaptic/) (it comes +pre-installed); if you're using Fedora simply use +[yum](http://yum.baseurl.org/). The instructions below assume you have these +installed.** ### Build Tools -To install build tools on **Ubuntu**, run the following (includes the gcc and xml parsing dependencies): +To install build tools on **Ubuntu**, run the following (includes the gcc and +xml parsing dependencies): sudo apt-get install build-essential libxslt1.1 libxslt1-dev libxml2 @@ -58,7 +89,8 @@ To install build tools on **Fedora**, run the following: sudo yum install libxslt libxslt-devel libxml2 libxml2-devel -To install build tools on **Mac OS X**, you need to download and install [Xcode](http://developer.apple.com/technologies/tools/xcode.html). +To install build tools on **Mac OS X**, you need to download and install +[Xcode](http://developer.apple.com/technologies/tools/xcode.html). ### Ruby @@ -66,22 +98,30 @@ To install Ruby 1.8.7 on **Ubuntu**, run the following command: sudo apt-get install ruby-full -Please note that you need to have Universe enabled in your /etc/apt/sources.list file to install ruby using apt-get. +Please note that you need to have Universe enabled in your +/etc/apt/sources.list file to install ruby using apt-get. -At this time Fedora does not have Ruby 1.8.7. As a workaround it is possible to use [rvm](http://rvm.beginrescueend.com/) with a locally compiled Ruby installation. A semi automated method for doing this is available. It is highly recommended that you review the script before running it so you understand what will occur. The script can be executed by running the following command: +At this time Fedora does not have Ruby 1.8.7. As a workaround it is possible to +use [rvm](http://rvm.beginrescueend.com/) with a locally compiled Ruby +installation. A semi automated method for doing this is available. It is +highly recommended that you review the script before running it so you +understand what will occur. The script can be executed by running the +following command: ./script/bootstrap-fedora-diaspora.sh -After reviewing and executing the above script you will need to follow the "MongoDB" section and then you should skip all the way down to "Start Mongo". - +After reviewing and executing the above script you will need to follow the +"MongoDB" section and then you should skip all the way down to "Start Mongo". If you're on **Mac OS X**, you already have Ruby on your system. Yay! ### MongoDB -To install MongoDB on **Ubuntu**, add the official MongoDB repository [here](http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages). +To install MongoDB on **Ubuntu**, add the official MongoDB repository +[here](http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages). -For Lucid, add the following line to your /etc/apt/sources.list (for other distros, see http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages): +For Lucid, add the following line to your /etc/apt/sources.list (for other +distros, see http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages): deb http://downloads.mongodb.org/distros/ubuntu 10.4 10gen @@ -109,7 +149,10 @@ Then run: sudo chmod -Rv 777 /data/ -To install MongoDB on a x86_64 **Fedora** system, add the official MongoDB repository from MongoDB (http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages) into /etc/yum.repos.d/10gen.repo: +To install MongoDB on a x86_64 **Fedora** system, add the official MongoDB +repository from MongoDB +(http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages) into +/etc/yum.repos.d/10gen.repo: [10gen] name=10gen Repository @@ -117,13 +160,14 @@ To install MongoDB on a x86_64 **Fedora** system, add the official MongoDB repos gpgcheck=0 enabled=1 - Then use yum to install the packages: sudo yum install mongo-stable mongo-stable-server - -If you're running a 32-bit system, run `wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz`. If you're running a 64-bit system, run `wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz`. +If you're running a 32-bit system, run `wget +http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz`. If you're +running a 64-bit system, run `wget +http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz`. # extract tar xzf mongodb-linux-i686-1.4.0.tgz @@ -131,7 +175,6 @@ If you're running a 32-bit system, run `wget http://fastdl.mongodb.org/linux/mon sudo mkdir -p /data/db sudo chmod -Rv 777 /data/ - To install MongoDB on **Mac OS X**, run the following: brew install mongo @@ -140,7 +183,8 @@ To install MongoDB on **Mac OS X**, run the following: ### OpenSSL -If you're running either **Ubuntu**, **Fedora** or **Mac OS X** you already have OpenSSL installed! +If you're running either **Ubuntu**, **Fedora** or **Mac OS X** you already +have OpenSSL installed! ### ImageMagick @@ -180,67 +224,99 @@ On **Ubuntu** 10.04, run the following: sudo apt-get update sudo apt-get install rubygems -This PPA is maintained by an Ubuntu Developer. For Ubuntu 10.10, this version of rubygems is in the repositories. +This PPA is maintained by an Ubuntu Developer. For Ubuntu 10.10, this version +of rubygems is in the repositories. On **Fedora**, run the following: sudo yum install rubygems -On **Mac OS X**, RubyGems comes preinstalled; however, you might need to update it for use with the latest Bundler. To update RubyGems, run `sudo gem update --system`. +On **Mac OS X**, RubyGems comes preinstalled; however, you might need to update +it for use with the latest Bundler. To update RubyGems, run `sudo gem update +--system`. ### Bundler -After RubyGems is updated, simply run `sudo gem install bundler` to get Bundler. If you're using Ubuntu repository .debs, bundler is found at /var/lib/gems/1.8/bin/bundle +After RubyGems is updated, simply run `sudo gem install bundler` to get +Bundler. If you're using Ubuntu repository .debs, bundler is found at +/var/lib/gems/1.8/bin/bundle ## Getting Diaspora git clone http://github.com/diaspora/diaspora.git -If you have never used github before, their [help desk](http://help.github.com/) has a pretty awesome guide on getting setup. +If you have never used github before, their +[help desk](http://help.github.com/) has a pretty awesome guide on getting +setup. ## Running Diaspora ### Install required gems -To start the app server for the first time, you need to use Bundler to install Diaspora's gem depencencies. Run `bundle install` from Diaspora's root directory. Bundler will also warn you if there is a new dependency and you need to bundle install again. +To start the app server for the first time, you need to use Bundler to install +Diaspora's gem depencencies. Run `bundle install` from Diaspora's root +directory. Bundler will also warn you if there is a new dependency and you +need to bundle install again. ### Start Mongo -If you installed the Ubuntu package, MongoDB should already be running (if not, run `service mongodb start`). If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. +If you installed the Ubuntu package, MongoDB should already be running (if not, +run `service mongodb start`). If you installed the binary manually, run `sudo +mongod` from where mongo is installed to start mongo. -If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where Mongo is installed to start Mongo. +If you installed the Fedora package, MongoDB will need to be started via +`service mongodb start`. If you installed the binary manually, run `sudo +mongod` from where Mongo is installed to start Mongo. -If you installed the OsX package through "brew", MongoDB will need to be started via `sudo launchctl load /Library/LaunchDaemons/org.mongodb.mongod.plist`. (before you have to go to /Library/LaunchDaemons and add a symlink to /usr/local/Cellar/mongodb/1.6.2-x86_64/org.mongodb.mongod.plist) +If you installed the OsX package through "brew", MongoDB will need to be +started via `sudo launchctl load +/Library/LaunchDaemons/org.mongodb.mongod.plist`. (before you have to go to +/Library/LaunchDaemons and add a symlink to +/usr/local/Cellar/mongodb/1.6.2-x86_64/org.mongodb.mongod.plist) -Diaspora will not run unless Mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. +Diaspora will not run unless Mongo is running. Mongo will not run by default, +and will need to be started every time you wish to use or run the test suite +for Diaspora. ### Run the server -`./script/server` will start both thin and the websocket server. If you want to run a different app server, you will have to run them separately. See below for instructions. +`./script/server` will start both thin and the websocket server. If you want +to run a different app server, you will have to run them separately. See below +for instructions. ### Run the app server -Once mongo is running and bundler has finished, run `bundle exec thin start` from the root Diaspora directory. This will start the app server in development mode[.](http://bit.ly/9mwtUw) +Once mongo is running and bundler has finished, run `bundle exec thin start` +from the root Diaspora directory. This will start the app server in +development mode[.](http://bit.ly/9mwtUw) ### Run the websocket server -run `bundle exec ruby ./script/websocket_server` to start the websocket server on port 8080. Change the port in config/app_config.yml. +run `bundle exec ruby ./script/websocket_server` to start the websocket server +on port 8080. Change the port in config/app_config.yml. ### Logging in with a sample user -Run `rake db:seed:tom`, then login with user `tom` and password `evankorth`. More details in db/seeds/tom.rb. +Run `rake db:seed:tom`, then login with user `tom` and password `evankorth`. +More details in db/seeds/tom.rb. ### Testing -Diaspora's test suite uses [rspec](http://rspec.info/), a behavior driven testing framework. In order to run the tests, run `bundle exec rspec spec`. +Diaspora's test suite uses [rspec](http://rspec.info/), a behavior driven +testing framework. In order to run the tests, run `bundle exec rspec spec`. ## Resources -We are maintaining a [public tracker project](http://www.pivotaltracker.com/projects/61641) and a [roadmap](https://github.com/diaspora/diaspora/wiki/Roadmap). Also, you can file [bug reports](https://github.com/diaspora/diaspora/issues) right here on github. +We are maintaining a +[public tracker project](http://www.pivotaltracker.com/projects/61641) +and a +[roadmap](https://github.com/diaspora/diaspora/wiki/Roadmap). Also, you can +file [bug reports](https://github.com/diaspora/diaspora/issues) right here on +github. Ongoing discussion: - [Diaspora Developer Google Group](http://groups.google.com/group/diaspora-dev) @@ -249,6 +325,11 @@ Ongoing discussion: - [#diaspora-dev IRC channel](irc://irc.freenode.net/#diaspora-dev) ([join via the web client](http://webchat.freenode.net?channels=diaspora-dev)) -More general info and updates about the project can be found on our [blog](http://joindiaspora.com), [and on Twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://http://eepurl.com/Vebk). +More general info and updates about the project can be found on our +[blog](http://joindiaspora.com), +[and on Twitter](http://twitter.com/joindiaspora). Also, be sure to join the +official [mailing list](http://http://eepurl.com/Vebk). -If you wish to contact us privately about any exploits in Diaspora you may find, you can email [exploits@joindiaspora.com](mailto:exploits@joindiaspora.com). +If you wish to contact us privately about any exploits in Diaspora you may +find, you can email +[exploits@joindiaspora.com](mailto:exploits@joindiaspora.com). From bdd752f07b43dd316b9c87d7d454538ebe69ea00 Mon Sep 17 00:00:00 2001 From: Thomas Krehbiel Date: Mon, 20 Sep 2010 21:49:14 -0400 Subject: [PATCH 231/292] Fix for 'Local variable hides method' --- app/models/person.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 72f4c46b9..8a6b85175 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -104,8 +104,8 @@ class Person return nil unless public_key_entry - public_key = public_key_entry.first.href - new_person.exported_key = Base64.decode64 public_key + pubkey = public_key_entry.first.href + new_person.exported_key = Base64.decode64 pubkey guid = profile.links.select{|x| x.rel == 'http://joindiaspora.com/guid'}.first.href new_person.id = guid From 4d200fea87719398f16c29d16684533e8aba954b Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 20:17:18 -0700 Subject: [PATCH 232/292] removed view all link from status_message#show --- app/views/status_messages/show.html.haml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/app/views/status_messages/show.html.haml b/app/views/status_messages/show.html.haml index 26777408d..251c92a0e 100644 --- a/app/views/status_messages/show.html.haml +++ b/app/views/status_messages/show.html.haml @@ -3,20 +3,14 @@ -# the COPYRIGHT file. -- title "Status Message" - -%p - %strong Message: +%h1 + = link_to @status_message.person.real_name, @status_message.person = auto_link sanitize @status_message.message -%p - %strong Owner: - = @status_message.person.real_name %h4= "comments (#{@status_message.comments.count})" = render "comments/comments", :post => @status_message %p - = link_to "Destroy", @status_message, :confirm => 'Are you sure?', :method => :delete - | - = link_to "View All", status_messages_path + - if current_user.owns? @status_message + = link_to "Destroy", @status_message, :confirm => 'Are you sure?', :method => :delete From b019ade588948065fe958a9caa9dddf0c05c0c03 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Mon, 20 Sep 2010 21:50:06 -0700 Subject: [PATCH 233/292] minor changes from production --- public/stylesheets/application.css | 14 +++++++++++--- public/stylesheets/fileuploader.css | 8 ++++---- public/stylesheets/sass/application.sass | 16 ++++++++++++---- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 60b50a9f4..9e8561cc2 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -346,12 +346,18 @@ label { margin-top: 26px; } #publisher textarea { width: 600px; - height: 40px; + height: 42px; margin-top: 0; margin-bottom: 0; - -webkit-box-shadow: 0 1px 0 white; } + box-shadow: 0 1px white; + -moz-box-shadow: 0 1px white; + -webkit-box-shadow: 0 1px white; } #publisher .button { margin-left: 100px; } + #publisher img { + -webkit-box-shadow: 0 1px 0 white; + border: 1px solid #bbbbbb; + border-top: 1px solid #666666; } #image_picker .small_photo { height: 100px; @@ -463,6 +469,7 @@ h1.big_text { display: inline; margin-right: 2px; } #aspect_nav ul > li a { + text-shadow: 0 2px 0 #444444; -webkit-border-radius: 3px 3px 0 0; -moz-border-radius: 3px 3px 0 0; line-height: 22px; @@ -557,7 +564,8 @@ h1.big_text { .requests .grey, .remove .grey { color: #999999; - cursor: default; } + cursor: default; + text-shadow: 0 2px white; } .aspect ul.dropzone, .requests ul.dropzone, .remove ul.dropzone { diff --git a/public/stylesheets/fileuploader.css b/public/stylesheets/fileuploader.css index 0e3f111a9..823c1b346 100755 --- a/public/stylesheets/fileuploader.css +++ b/public/stylesheets/fileuploader.css @@ -3,14 +3,14 @@ .qq-upload-button { display:block; /* or inline-block */ width: 105px; padding: 7px 0; text-align:center; - background:#880000; border-bottom:1px solid #ddd;color:#fff; + background:#333; border-bottom:1px solid #999;color:#fff; } -.qq-upload-button-hover {background:#cc0000;} +.qq-upload-button-hover {background:#666;} .qq-upload-button-focus {outline:1px dotted black;} .qq-upload-drop-area { position:absolute; top:0; left:0; width:100%; height:100%; min-height: 70px; z-index:2; - background:#FF9797; text-align:center; + background:#ccc; text-align:center; } .qq-upload-drop-area span { display:block; position:absolute; top: 50%; width:100%; margin-top:-8px; font-size:16px; @@ -28,4 +28,4 @@ .qq-upload-size,.qq-upload-cancel {font-size:11px;} .qq-upload-failed-text {display:none;} -.qq-upload-fail .qq-upload-failed-text {display:inline;} \ No newline at end of file +.qq-upload-fail .qq-upload-failed-text {display:inline;} diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 80debac15..88145b6df 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -453,16 +453,24 @@ label textarea :width 600px - :height 40px + :height 42px :margin :top 0 :bottom 0 - :-webkit-box-shadow 0 1px 0 #fff + :box-shadow 0 1px #fff + :-moz-box-shadow 0 1px #fff + :-webkit-box-shadow 0 1px #fff .button :margin-left 100px + img + :-webkit-box-shadow 0 1px 0 #fff + :border 1px solid #bbb + :top 1px solid #666 + + #image_picker .small_photo @@ -613,6 +621,7 @@ h1.big_text :right 2px a + :text-shadow 0 2px 0 #444 :-webkit-border-radius 3px 3px 0 0 :-moz-border-radius 3px 3px 0 0 :line @@ -705,8 +714,6 @@ h1.big_text :display inline - - .aspect_name :position relative @@ -731,6 +738,7 @@ h1.big_text .grey :color #999 :cursor default + :text-shadow 0 2px #fff ul.dropzone :min-height 20px From 50414fef40392605e50da4598c52cd638201db86 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 21 Sep 2010 11:03:21 -0700 Subject: [PATCH 234/292] Remove unused method from message handler --- lib/message_handler.rb | 6 +----- spec/lib/message_handler_spec.rb | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/lib/message_handler.rb b/lib/message_handler.rb index 7149ee65e..0b55ee0f7 100644 --- a/lib/message_handler.rb +++ b/lib/message_handler.rb @@ -31,7 +31,7 @@ class MessageHandler http.callback { process; process} when :get http = EventMachine::HttpRequest.new(query.destination).get :timeout => TIMEOUT - http.callback {send_to_seed(query, http.response); process} + http.callback {process} else raise "message is not a type I know!" end @@ -47,10 +47,6 @@ class MessageHandler } unless @queue.size == 0 end - def send_to_seed(message, http_response) - #DO SOMETHING! - end - def size @queue.size end diff --git a/spec/lib/message_handler_spec.rb b/spec/lib/message_handler_spec.rb index 00db2a1b8..e6cd668e2 100644 --- a/spec/lib/message_handler_spec.rb +++ b/spec/lib/message_handler_spec.rb @@ -123,7 +123,6 @@ describe MessageHandler do request = FakeHttpRequest.new(:success) request.should_receive(:get).exactly(1).times.and_return(request) request.should_receive(:post).exactly(1).times.and_return(request) - @handler.should_receive(:send_to_seed).once EventMachine::HttpRequest.stub!(:new).and_return(request) From 003a8b454f446ae4cf6b16cb41bcf0ef8629fe93 Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 20 Sep 2010 05:29:06 +0800 Subject: [PATCH 235/292] Some refactoring again (define code rules would be good) --- app/helpers/application_helper.rb | 2 -- app/helpers/dashboards_helper.rb | 3 +-- app/helpers/photos_helper.rb | 1 - app/helpers/publics_helper.rb | 1 - app/helpers/requests_helper.rb | 2 -- app/helpers/sockets_helper.rb | 3 --- 6 files changed, 1 insertion(+), 11 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 65f1c8679..2c110f422 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -4,7 +4,6 @@ module ApplicationHelper - def current_aspect?(aspect) !@aspect.is_a?(Symbol) && @aspect.id == aspect.id end @@ -68,5 +67,4 @@ module ApplicationHelper def post_yield_tag(post) (':' + post.id.to_s).to_sym end - end diff --git a/app/helpers/dashboards_helper.rb b/app/helpers/dashboards_helper.rb index 542d938ee..ee83d72eb 100644 --- a/app/helpers/dashboards_helper.rb +++ b/app/helpers/dashboards_helper.rb @@ -4,8 +4,7 @@ module DashboardsHelper - def title_for_page - 'home' + 'home' end end diff --git a/app/helpers/photos_helper.rb b/app/helpers/photos_helper.rb index 2d0ddad6e..2737d3a2d 100644 --- a/app/helpers/photos_helper.rb +++ b/app/helpers/photos_helper.rb @@ -4,7 +4,6 @@ module PhotosHelper - def linked_scaled_photo(photo, album) link_to (image_tag photo.url(:scaled_full)), photo_path(album.next_photo(photo)), :rel => "prefetch" end diff --git a/app/helpers/publics_helper.rb b/app/helpers/publics_helper.rb index 9e76f59f7..46e778e2b 100644 --- a/app/helpers/publics_helper.rb +++ b/app/helpers/publics_helper.rb @@ -9,7 +9,6 @@ module PublicsHelper subscriber ||= Subscriber.new(:url => opts[:callback], :topic => opts[:topic]) if subscriber.save - if opts[:verify] == 'sync' 204 elsif opts[:verify] == 'async' diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb index 52955fc94..faefe1f6e 100644 --- a/app/helpers/requests_helper.rb +++ b/app/helpers/requests_helper.rb @@ -4,7 +4,6 @@ module RequestsHelper - def subscription_mode(profile) if diaspora?(profile) :friend @@ -40,5 +39,4 @@ module RequestsHelper end { action => person } end - end diff --git a/app/helpers/sockets_helper.rb b/app/helpers/sockets_helper.rb index cbe465e7b..69135092a 100644 --- a/app/helpers/sockets_helper.rb +++ b/app/helpers/sockets_helper.rb @@ -33,7 +33,4 @@ module SocketsHelper action_hash.to_json end - - - end From 1882509a0beea16031928c569890b73c2d98dafe Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 11:59:04 -0700 Subject: [PATCH 236/292] removed the auto_link seems to fix HTML injection, no more autolinking --- app/views/comments/_comment.html.haml | 2 +- app/views/status_messages/_status_message.html.haml | 2 +- app/views/status_messages/show.html.haml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/comments/_comment.html.haml b/app/views/comments/_comment.html.haml index 4252d9762..4fd46eb56 100644 --- a/app/views/comments/_comment.html.haml +++ b/app/views/comments/_comment.html.haml @@ -7,6 +7,6 @@ = person_image_tag(post.person) %span.from = link_to post.person.real_name, post.person - = auto_link sanitize post.text + = post.text %div.time = "#{time_ago_in_words(post.updated_at)} #{t('.ago')}" diff --git a/app/views/status_messages/_status_message.html.haml b/app/views/status_messages/_status_message.html.haml index 396f143a7..dcee761d1 100644 --- a/app/views/status_messages/_status_message.html.haml +++ b/app/views/status_messages/_status_message.html.haml @@ -10,7 +10,7 @@ .content %span.from = link_to post.person.real_name, post.person - = auto_link sanitize post.message + = post.message .info %span.time= link_to(how_long_ago(post), object_path(post)) diff --git a/app/views/status_messages/show.html.haml b/app/views/status_messages/show.html.haml index 251c92a0e..4a701d6a6 100644 --- a/app/views/status_messages/show.html.haml +++ b/app/views/status_messages/show.html.haml @@ -5,7 +5,7 @@ %h1 = link_to @status_message.person.real_name, @status_message.person - = auto_link sanitize @status_message.message + = @status_message.message %h4= "comments (#{@status_message.comments.count})" From 4d00a0e99eef36f2aace91053f72fc006a007dfb Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 12:35:48 -0700 Subject: [PATCH 237/292] IZ posting to all albums should now work, needed to check for all in user.post --- app/models/user.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index e02c58534..e86a98cfb 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -96,6 +96,7 @@ class User ######## Posting ######## def post(class_name, options = {}) + puts options.inspect if class_name == :photo raise ArgumentError.new("No album_id given") unless options[:album_id] aspect_ids = aspects_with_post( options[:album_id] ) @@ -108,7 +109,7 @@ class User raise ArgumentError.new("You must post to someone.") if aspect_ids.nil? || aspect_ids.empty? aspect_ids.each{ |aspect_id| - raise ArgumentError.new("Cannot post to an aspect you do not own.") unless self.aspects.find(aspect_id) } + raise ArgumentError.new("Cannot post to an aspect you do not own.") unless aspect_id == "all" || self.aspects.find(aspect_id) } post = build_post(class_name, options) From 11d31901e4647f15e02af3fb4d9a5f76a369ac47 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 21 Sep 2010 13:59:52 -0700 Subject: [PATCH 238/292] IZ, RS, Pulled receiving out of user file, refactored receive method to be clearer --- app/models/user.rb | 75 +-------------------------- lib/diaspora/user/receiving.rb | 93 ++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 73 deletions(-) create mode 100644 lib/diaspora/user/receiving.rb diff --git a/app/models/user.rb b/app/models/user.rb index e02c58534..7c9bfdc1b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -5,12 +5,14 @@ require 'lib/diaspora/user/friending.rb' require 'lib/diaspora/user/querying.rb' +require 'lib/diaspora/user/receiving.rb' require 'lib/salmon/salmon' class User include MongoMapper::Document include Diaspora::UserModules::Friending include Diaspora::UserModules::Querying + include Diaspora::UserModules::Receiving include Encryptor::Private QUEUE = MessageHandler.new @@ -220,79 +222,6 @@ class User end end - ###### Receiving ####### - def receive_salmon ciphertext - cleartext = decrypt( ciphertext) - salmon = Salmon::SalmonSlap.parse cleartext - if salmon.verified_for_key?(salmon.author.public_key) - Rails.logger.info("data in salmon: #{salmon.data}") - self.receive(salmon.data) - end - end - - def receive xml - object = Diaspora::Parser.from_xml(xml) - Rails.logger.debug("Receiving object for #{self.real_name}:\n#{object.inspect}") - Rails.logger.debug("From: #{object.person.inspect}") if object.person - - if object.is_a? Retraction - if object.type == 'Person' - - Rails.logger.info( "the person id is #{object.post_id} the friend found is #{visible_person_by_id(object.post_id).inspect}") - unfriended_by visible_person_by_id(object.post_id) -else - object.perform self.id - aspects = self.aspects_with_person(object.person) - aspects.each{ |aspect| aspect.post_ids.delete(object.post_id.to_id) - aspect.save - } - end - elsif object.is_a? Request - person = Diaspora::Parser.parse_or_find_person_from_xml( xml ) - person.serialized_key ||= object.exported_key - object.person = person - object.person.save - old_request = Request.first(:id => object.id) - object.aspect_id = old_request.aspect_id if old_request - object.save - receive_friend_request(object) - elsif object.is_a? Profile - person = Diaspora::Parser.owner_id_from_xml xml - person.profile = object - person.save - - elsif object.is_a?(Comment) - object.person = Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? - self.visible_people = self.visible_people | [object.person] - self.save - Rails.logger.debug("The person parsed from comment xml is #{object.person.inspect}") unless object.person.nil? - object.person.save - Rails.logger.debug("From: #{object.person.inspect}") if object.person - raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature - object.save - unless owns?(object) - dispatch_comment object - end - object.socket_to_uid(id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) - else - Rails.logger.debug("Saving object: #{object}") - object.user_refs += 1 - object.save - - self.raw_visible_posts << object - self.save - - aspects = self.aspects_with_person(object.person) - aspects.each{ |aspect| - aspect.posts << object - aspect.save - object.socket_to_uid(id, :aspect_ids => [aspect.id]) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) - } - - end - - end - ###Helpers############ def self.instantiate!( opts = {} ) hostname = opts[:url].gsub(/(https?:|www\.)\/\//, '') diff --git a/lib/diaspora/user/receiving.rb b/lib/diaspora/user/receiving.rb new file mode 100644 index 000000000..39b1af5d2 --- /dev/null +++ b/lib/diaspora/user/receiving.rb @@ -0,0 +1,93 @@ +module Diaspora + module UserModules + module Receiving + def receive_salmon ciphertext + cleartext = decrypt( ciphertext) + salmon = Salmon::SalmonSlap.parse cleartext + if salmon.verified_for_key?(salmon.author.public_key) + Rails.logger.info("data in salmon: #{salmon.data}") + self.receive(salmon.data) + end + end + + def receive xml + object = Diaspora::Parser.from_xml(xml) + Rails.logger.debug("Receiving object for #{self.real_name}:\n#{object.inspect}") + Rails.logger.debug("From: #{object.person.inspect}") if object.person + + if object.is_a? Retraction + receive_retraction object, xml + elsif object.is_a? Request + receive_request object, xml + elsif object.is_a? Profile + receive_profile object, xml + elsif object.is_a?(Comment) + receive_comment object, xml + else + receive_post object, xml + end + end + + def receive_retraction retraction, xml + if retraction.type == 'Person' + Rails.logger.info( "the person id is #{retraction.post_id} the friend found is #{visible_person_by_id(retraction.post_id).inspect}") + unfriended_by visible_person_by_id(retraction.post_id) + else + retraction.perform self.id + aspects = self.aspects_with_person(retraction.person) + aspects.each{ |aspect| aspect.post_ids.delete(retraction.post_id.to_id) + aspect.save + } + end + end + + def receive_request request, xml + person = Diaspora::Parser.parse_or_find_person_from_xml( xml ) + person.serialized_key ||= request.exported_key + request.person = person + request.person.save + old_request = Request.first(:id => request.id) + request.aspect_id = old_request.aspect_id if old_request + request.save + receive_friend_request(request) + end + + def receive_profile profile, xml + person = Diaspora::Parser.owner_id_from_xml xml + person.profile = profile + person.save + end + + def receive_comment comment, xml + comment.person = Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if comment.person.nil? + self.visible_people = self.visible_people | [comment.person] + self.save + Rails.logger.debug("The person parsed from comment xml is #{comment.person.inspect}") unless comment.person.nil? + comment.person.save + Rails.logger.debug("From: #{comment.person.inspect}") if comment.person + raise "In receive for #{self.real_name}, signature was not valid on: #{comment.inspect}" unless comment.post.person == self.person || comment.verify_post_creator_signature + comment.save + unless owns?(comment) + dispatch_comment comment + end + comment.socket_to_uid(id) if (comment.respond_to?(:socket_to_uid) && !self.owns?(comment)) + end + + def receive_post post, xml + Rails.logger.debug("Saving post: #{post}") + post.user_refs += 1 + post.save + + self.raw_visible_posts << post + self.save + + aspects = self.aspects_with_person(post.person) + aspects.each{ |aspect| + aspect.posts << post + aspect.save + post.socket_to_uid(id, :aspect_ids => [aspect.id]) if (post.respond_to?(:socket_to_uid) && !self.owns?(post)) + } + end + end + end +end From 4e951d8abf8b773e548d4a77d3d857184c04e580 Mon Sep 17 00:00:00 2001 From: Raphael Date: Tue, 21 Sep 2010 14:08:18 -0700 Subject: [PATCH 239/292] Fixing COPYRIGHT file --- COPYRIGHT | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 8a380cc7e..f1bed1a6b 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,14 +1,23 @@ -Diaspora is copyright Diaspora Inc., 2010, and files herein are licensed under the Affero General Public License version 3, the text of which can be found in GNU-AGPL-3.0, or any later version of the AGPL, unless otherwise noted. Components of Diaspora, including Rails, JQuery, and Devise, are licensed under the MIT/X11 license. Blueprint-CSS is licensed under a modified version of the MIT/X11 license. All unmodified files from these and other sources retain their original copyright and license notices: see the relevant individual files. Attribution information for Diaspora is contained in the AUTHORS file. +Diaspora is copyright Diaspora Inc., 2010, and files herein are licensed +under the Affero General Public License version 3, the text of which can +be found in GNU-AGPL-3.0, or any later version of the AGPL, unless otherwise +noted. Components of Diaspora, including Rails, JQuery, and Devise, are +licensed under the MIT/X11 license. Blueprint-CSS is licensed under a +modified version of the MIT/X11 license. All unmodified files from these +and other sources retain their original copyright and license notices: see +the relevant individual files. Attribution information for Diaspora is +contained in the AUTHORS file. -* In addition, as a special exception, the copyright holders give -* permission to link the code of portions of this program with the -* OpenSSL library under certain conditions as described in each -* individual source file, and distribute linked combinations -* including the two. -* You must obey the GNU General Public License in all respects -* for all of the code used other than OpenSSL. If you modify -* file(s) with this exception, you may extend this exception to your -* version of the file(s), but you are not obligated to do so. If you -* do not wish to do so, delete this exception statement from your -* version. If you delete this exception statement from all source -* files in the program, then also delete it here. +In addition, as a special exception, the copyright holders give +permission to link the code of portions of this program with the +OpenSSL library under certain conditions as described in each +individual source file, and distribute linked combinations +including the two. + +You must obey the GNU Affero General Public License V3 or later in all respects +for all of the code used other than OpenSSL or the components mentioned +above. If you modify file(s) with this exception, you may extend this +exception to your version of the file(s), but you are not obligated to +do so. If you do not wish to do so, delete this exception statement from your +version. If you delete this exception statement from all source files in the +program, then also delete it here. From 9db4fea9ac4d2d14a7a24314b8e517c6861ac09c Mon Sep 17 00:00:00 2001 From: Raphael Sofaer Date: Tue, 21 Sep 2010 14:44:36 -0700 Subject: [PATCH 240/292] Correct mailing list link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ae9faff1..6e9c40aa0 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,6 @@ Ongoing discussion: - [#diaspora-dev IRC channel](irc://irc.freenode.net/#diaspora-dev) ([join via the web client](http://webchat.freenode.net?channels=diaspora-dev)) -More general info and updates about the project can be found on our [blog](http://joindiaspora.com), [and on Twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://http://eepurl.com/Vebk). +More general info and updates about the project can be found on our [blog](http://joindiaspora.com), [and on Twitter](http://twitter.com/joindiaspora). Also, be sure to join the official [mailing list](http://eepurl.com/Vebk). If you wish to contact us privately about any exploits in Diaspora you may find, you can email [exploits@joindiaspora.com](mailto:exploits@joindiaspora.com). From 44db21ffd4fc27656da7ef68e8344eb194ac5311 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Tue, 21 Sep 2010 15:12:47 -0700 Subject: [PATCH 241/292] DG MS; cleaned up spec --- app/models/user.rb | 1 - spec/models/user/posting_spec.rb | 101 ++++++++++++++++--------------- spec/models/user_spec.rb | 9 +-- 3 files changed, 53 insertions(+), 58 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 86b818bb0..4e2e642e3 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -98,7 +98,6 @@ class User ######## Posting ######## def post(class_name, options = {}) - puts options.inspect if class_name == :photo raise ArgumentError.new("No album_id given") unless options[:album_id] aspect_ids = aspects_with_post( options[:album_id] ) diff --git a/spec/models/user/posting_spec.rb b/spec/models/user/posting_spec.rb index d00747a2d..1f24f3fed 100644 --- a/spec/models/user/posting_spec.rb +++ b/spec/models/user/posting_spec.rb @@ -7,65 +7,68 @@ require File.dirname(__FILE__) + '/../../spec_helper' describe User do - before do - @user = Factory.create :user - @aspect = @user.aspect(:name => 'heroes') - @aspect1 = @user.aspect(:name => 'heroes') - @user2 = Factory.create(:user) - @aspect2 = @user2.aspect(:name => 'losers') + let(:user) { Factory(:user) } + let(:user2) { Factory(:user) } + let(:user3) { Factory(:user) } + let(:user4) { Factory(:user) } - @user3 = Factory.create(:user) - @aspect3 = @user3.aspect(:name => 'heroes') + let(:aspect) {user.aspect(:name => 'heroes')} + let!(:aspect1) {user.aspect(:name => 'heroes')} + let!(:aspect2) {user2.aspect(:name => 'losers')} + let!(:aspect3) {user3.aspect(:name => 'heroes')} + let!(:aspect4) {user4.aspect(:name => 'heroes')} - @user4 = Factory.create(:user) - @aspect4 = @user4.aspect(:name => 'heroes') - - friend_users(@user, @aspect, @user2, @aspect2) - friend_users(@user, @aspect, @user3, @aspect3) - friend_users(@user, @aspect1, @user4, @aspect4) - end - - it 'should not be able to post without a aspect' do - proc {@user.post(:status_message, :message => "heyheyhey")}.should raise_error /You must post to someone/ + before do + friend_users(user, aspect, user2, aspect2) + friend_users(user, aspect, user3, aspect3) + friend_users(user, aspect1, user4, aspect4) end - it 'should not be able to post to someone elses aspect' do - proc {@user.post(:status_message, :message => "heyheyhey", :to => @aspect2.id)}.should raise_error /Cannot post to an aspect you do not own./ - end - - it 'should put the post in the aspect post array' do - post = @user.post(:status_message, :message => "hey", :to => @aspect.id) - @aspect.reload - @aspect.post_ids.include?(post.id).should be true + context 'posting' do + describe '#post' do + it 'should not be able to post without a aspect' do + proc {user.post(:status_message, :message => "heyheyhey")}.should raise_error /You must post to someone/ + end + + it 'should not be able to post to someone elses aspect' do + proc {user.post(:status_message, :message => "heyheyhey", :to => aspect2.id)}.should raise_error /Cannot post to an aspect you do not own./ + end + + it 'should put the post in the aspect post array' do + post = user.post(:status_message, :message => "hey", :to => aspect.id) + aspect.reload + aspect.posts.should include post + end + + it 'should put an album in the aspect post array' do + album = user.post :album, :name => "Georges", :to => aspect.id + aspect.reload + aspect.posts.should include album + end + end end - it 'should put an album in the aspect post array' do - album = @user.post :album, :name => "Georges", :to => @aspect.id - @aspect.reload - @aspect.post_ids.include?(album.id).should be true - @aspect.posts.include?(album).should be true - end + context 'dispatching' do + let!(:post) { user.build_post :status_message, :message => "hey" } - describe 'dispatching' do - before do - @post = @user.build_post :status_message, :message => "hey" - end - it 'should push a post to a aspect' do - @user.should_receive(:salmon).twice - @user.push_to_aspects(@post, @aspect.id) + describe '#push_to_aspects' do + it 'should push a post to a aspect' do + user.should_receive(:salmon).twice + user.push_to_aspects(post, aspect.id) + end + + it 'should push a post to all aspects' do + user.should_receive(:salmon).exactly(3).times + user.push_to_aspects(post, :all) + end end - it 'should push a post to all aspects' do - @user.should_receive(:salmon).exactly(3).times - @user.push_to_aspects(@post, :all) + describe '#push_to_people' do + it 'should push to people' do + user.should_receive(:salmon).twice + user.push_to_people(post, [user2.person, user3.person]) + end end - - it 'should push to people' do - @user.should_receive(:salmon).twice - @user.push_to_people(@post, [@user2.person, @user3.person]) - end - - end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 223881671..ef9a08cc5 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -12,14 +12,6 @@ describe User do @aspect = @user.aspect(:name => 'heroes') end - it 'should create with pivotal or allowed emails' do - user1 = Factory.create(:user, :email => "kimfuh@yahoo.com") - user2 = Factory.create(:user, :email => "awesome@sofaer.net") - user3 = Factory.create(:user, :email => "steveellis@pivotallabs.com") - user1.created_at.nil?.should be false - user2.created_at.nil?.should be false - user3.created_at.nil?.should be false - end describe 'profiles' do it 'should be able to update their profile and send it to their friends' do @@ -58,4 +50,5 @@ describe User do @user.aspects.include?(@aspect).should == true end end + end From efd901dcd9c71cd9e671973b8bd3d0ea834ff338 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 15:46:57 -0700 Subject: [PATCH 242/292] RS, IZ; Pod url moved to app_config.yml, app_config.yml refactored, diaspora_handle now set based on APP_CONFIG --- app/controllers/photos_controller.rb | 3 --- app/helpers/requests_helper.rb | 1 - app/models/user.rb | 10 ++-------- config/app_config.yml | 20 +++++--------------- config/initializers/_load_app_config.rb | 10 ++++++++-- spec/factories.rb | 5 ++++- spec/models/person_spec.rb | 16 ++++++++++++++-- spec/models/user_spec.rb | 20 +++++++++++++------- 8 files changed, 46 insertions(+), 39 deletions(-) diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index 42b00007c..afc193413 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -10,10 +10,7 @@ class PhotosController < ApplicationController respond_to :json, :only => :show def create - album = Album.find_by_id params[:album_id] - puts params - begin ######################## dealing with local files ############# diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb index faefe1f6e..fec093aac 100644 --- a/app/helpers/requests_helper.rb +++ b/app/helpers/requests_helper.rb @@ -32,7 +32,6 @@ module RequestsHelper def relationship_flow(identifier) action = :none person = nil - puts identifier person = Person.by_webfinger identifier if person action = (person == current_user.person ? :none : :friend) diff --git a/app/models/user.rb b/app/models/user.rb index 86b818bb0..d129db2ce 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -97,8 +97,6 @@ class User ######## Posting ######## def post(class_name, options = {}) - - puts options.inspect if class_name == :photo raise ArgumentError.new("No album_id given") unless options[:album_id] aspect_ids = aspects_with_post( options[:album_id] ) @@ -225,11 +223,7 @@ class User ###Helpers############ def self.instantiate!( opts = {} ) - hostname = opts[:url].gsub(/(https?:|www\.)\/\//, '') - hostname.chop! if hostname[-1, 1] == '/' - - opts[:person][:diaspora_handle] = "#{opts[:username]}@#{hostname}" - puts opts[:person][:diaspora_handle] + opts[:person][:diaspora_handle] = "#{opts[:username]}@#{terse_url}" opts[:person][:serialized_key] = generate_key User.create(opts) end @@ -240,7 +234,7 @@ class User end def terse_url - terse = self.url.gsub(/(https?:|www\.)\/\//, '') + terse = APP_CONFIG[:pod_url].gsub(/(https?:|www\.)\/\//, '') terse = terse.chop! if terse[-1, 1] == '/' terse end diff --git a/config/app_config.yml b/config/app_config.yml index b4fd6f0ab..5ee07c405 100644 --- a/config/app_config.yml +++ b/config/app_config.yml @@ -3,8 +3,8 @@ # the COPYRIGHT file. - -development: +default: + pod_url: "http://example.org/" debug: false socket_debug : false socket_host: 0.0.0.0 @@ -13,21 +13,11 @@ development: pubsub_server: 'https://pubsubhubbub.appspot.com/' mongo_host: 'localhost' mongo_post: 27017 + +development: test: - debug: false - socket_debug : false - socket_host: 0.0.0.0 + pod_url: "http://example.org/" socket_port: 8081 - pubsub_server: 'https://pubsubhubbub.appspot.com/' - mongo_host: 'localhost' - mongo_post: 27017 production: - debug: false - socket_debug : false - socket_host: 0.0.0.0 - socket_port: 8080 - pubsub_server: 'https://pubsubhubbub.appspot.com/' - mongo_host: 'localhost' - mongo_post: 27017 diff --git a/config/initializers/_load_app_config.rb b/config/initializers/_load_app_config.rb index 1a5094d9b..ac14c97d8 100644 --- a/config/initializers/_load_app_config.rb +++ b/config/initializers/_load_app_config.rb @@ -2,6 +2,12 @@ # licensed under the Affero General Public License version 3. See # the COPYRIGHT file. - raw_config = File.read("#{Rails.root}/config/app_config.yml") -APP_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys +all_envs = YAML.load(raw_config) +if all_envs[Rails.env] + APP_CONFIG = all_envs['default'].merge(all_envs[Rails.env]).symbolize_keys +else + APP_CONFIG = all_envs['default'].symbolize_keys +end + +puts "WARNING: Please modify your app_config.yml to have a proper pod_url!" if APP_CONFIG[:pod_url] == "http://example.org/" && Rails.env != :test diff --git a/spec/factories.rb b/spec/factories.rb index c1dfcd50a..21a7ad110 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -39,7 +39,10 @@ Factory.define :user do |u| u.sequence(:email) {|n| "bob#{n}@pivotallabs.com"} u.password "bluepin7" u.password_confirmation "bluepin7" - u.person { |a| Factory.create(:person_with_user, :owner_id => a._id)} + u.person { |a| Factory.create(:person_with_user, + :owner_id => a._id, + :diaspora_handle => "#{a.username}@#{APP_CONFIG[:pod_url].gsub(/(https?:|www\.)\/\//, '').chop!}") + } end Factory.define :status_message do |m| diff --git a/spec/models/person_spec.rb b/spec/models/person_spec.rb index 4f236b733..3275d9245 100644 --- a/spec/models/person_spec.rb +++ b/spec/models/person_spec.rb @@ -15,6 +15,20 @@ describe Person do @aspect2 = @user2.aspect(:name => "Abscence of Babes") end + describe '#diaspora_handle' do + context 'local people' do + it 'uses the pod config url to set the diaspora_handle' do + @user.person.diaspora_handle.should == @user.username + "@example.org" + end + end + + context 'remote people' do + it 'stores the diaspora_handle in the database' do + @person.diaspora_handle.include?(@user.terse_url).should be false + end + end + end + it 'should not allow two people with the same diaspora_handle' do person_two = Factory.build(:person, :url => @person.diaspora_handle) person_two.valid?.should == false @@ -148,13 +162,11 @@ describe Person do end it 'should search by diaspora_handle exactly' do - stub_success("tom@tom.joindiaspora.com") Person.by_webfinger(@friend_one.diaspora_handle).should == @friend_one end it 'should create a stub for a remote user' do - stub_success("tom@tom.joindiaspora.com") tom = Person.by_webfinger('tom@tom.joindiaspora.com') tom.real_name.include?("Hamiltom").should be true diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 223881671..63639bc73 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -7,11 +7,17 @@ require File.dirname(__FILE__) + '/../spec_helper' describe User do - before do - @user = Factory.create(:user) - @aspect = @user.aspect(:name => 'heroes') - end - + before do + @user = Factory.create(:user) + @aspect = @user.aspect(:name => 'heroes') + end + + describe '#diaspora_handle' do + it 'uses the pod config url to set the diaspora_handle' do + @user.diaspora_handle.should == @user.username + "@example.org" + end + end + it 'should create with pivotal or allowed emails' do user1 = Factory.create(:user, :email => "kimfuh@yahoo.com") user2 = Factory.create(:user, :email => "awesome@sofaer.net") @@ -49,12 +55,12 @@ describe User do friend_users(@user, Aspect.find_by_id(@aspect.id), user2, Aspect.find_by_id(aspect2.id)) @aspect.reload - + @user.aspects.include?(@aspect).should == true proc{@user.drop_aspect(@aspect)}.should raise_error /Aspect not empty/ - @user.reload + @user.reload @user.aspects.include?(@aspect).should == true end end From d26e7850ac72fd02d152bf6775f7592aa48bd468 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 15:52:26 -0700 Subject: [PATCH 243/292] RS, IZ; removed url from user and views --- app/models/user.rb | 3 +-- app/views/devise/sessions/new.html.haml | 2 +- app/views/registrations/new.html.haml | 3 --- app/views/users/edit.html.haml | 4 ++-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index d129db2ce..4e9e968ca 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -25,8 +25,6 @@ class User key :visible_post_ids, Array key :visible_person_ids, Array - key :url, String - one :person, :class_name => 'Person', :foreign_key => :owner_id many :friends, :in => :friend_ids, :class_name => 'Person' @@ -224,6 +222,7 @@ class User ###Helpers############ def self.instantiate!( opts = {} ) opts[:person][:diaspora_handle] = "#{opts[:username]}@#{terse_url}" + opts[:person][:url] = APP_CONFIG[:pod_url] opts[:person][:serialized_key] = generate_key User.create(opts) end diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 7ce75f5f3..15880df0b 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -10,7 +10,7 @@ = f.label :username = f.text_field :username %p.user_network - ="@#{request.host}" + ="@#{APP_CONFIG[:pod_url]}" %p = f.label :password diff --git a/app/views/registrations/new.html.haml b/app/views/registrations/new.html.haml index eefa94519..3e1dc0830 100644 --- a/app/views/registrations/new.html.haml +++ b/app/views/registrations/new.html.haml @@ -2,7 +2,6 @@ = form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| - = f.hidden_field :url, :value => request.host %p = f.label :username = f.text_field :username @@ -17,8 +16,6 @@ = f.password_field :password_confirmation = f.fields_for :person do |p| - = p.hidden_field :url, :value => request.host - = p.fields_for :profile do |pr| %p = pr.label :first_name diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index fd94b2a42..880d25ef4 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -17,11 +17,11 @@ %h3 Picture %div#image_picker - = p.hidden_field :image_url, :value => (@profile.image_url.sub(@user.url,'/') if @profile.image_url), :id => 'image_url_field' + = p.hidden_field :image_url, :value => (@profile.image_url.sub(APP_CONFIG[:pod_url],'/') if @profile.image_url), :id => 'image_url_field' - unless @photos.nil? || @photos.empty? - for photo in @photos - - if @profile.image_url && (photo.url(:thumb_medium) == @profile.image_url.sub(@user.url,'/')) + - if @profile.image_url && (photo.url(:thumb_medium) == @profile.image_url.sub(APP_CONFIG[:pod_url],'/')) %div.small_photo{:id => photo.url(:thumb_medium), :class=>'selected'} = check_box_tag 'checked_photo', true, true = link_to image_tag(photo.url(:thumb_medium)), "#" From d3b0b9c07e4bf61e1bb0964de47713ffafd3d20c Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 16:13:21 -0700 Subject: [PATCH 244/292] Make db seed set app_config[:pod_url] --- db/seeds/backer.rb | 23 ++++++++++++++++++----- db/seeds/dev.rb | 12 ++---------- db/seeds/tom.rb | 27 +++++++++++++++++---------- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index b32b62377..d39ce490c 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -15,25 +15,38 @@ require 'config/environment' def create + + config = YAML.load_file(File.dirname(__FILE__) + '/../../config/deploy_config.yml') backer_info = config['servers']['backer'] backer_number = YAML.load_file(Rails.root.join('config','backer_number.yml'))[:seed_number].to_i - # Create seed user + + #set pod url username = backer_info[backer_number]['username'].gsub(/ /,'').downcase + set_app_config username + require 'config/initializers/_load_app_config.rb' + + # Create seed user user = User.instantiate!(:email => "#{username}@#{username}.joindiaspora.com", :username => username, :password => "#{username+backer_info[backer_number]['pin'].to_s}", :password_confirmation => "#{username+backer_info[backer_number]['pin'].to_s}", - :url=> "http://#{username}.joindiaspora.com/", :person => Person.new( - :diaspora_handle => "#{username}@#{username}.joindiaspora.com", :profile => Profile.new( :first_name => backer_info[backer_number]['given_name'], :last_name => backer_info[backer_number]['family_name'], - :image_url => "http://#{username}.joindiaspora.com/images/user/#{username}.jpg"), - :url=> "http://#{username}.joindiaspora.com/") + :image_url => "http://#{username}.joindiaspora.com/images/user/#{username}.jpg") ) user.person.save! user.aspect(:name => "Presidents") end +def set_app_config username + current_config = YAML.load(Rails.root.join('config', 'app_config.yml')) + current_config[Rails.env] ||= {} + current_config[Rails.env][:pod_url] = "#{username}.joindiaspora.com" + current_config[:default][:pod_url] = "#{username}.joindiaspora.com" + file = File.new(Rails.root.join('config','app_config.yml'),'w') + file.write(current_config.to_yaml) + file.close +end diff --git a/db/seeds/dev.rb b/db/seeds/dev.rb index 12c728ddf..ef9dddecf 100644 --- a/db/seeds/dev.rb +++ b/db/seeds/dev.rb @@ -6,31 +6,23 @@ require 'config/environment' -host = "localhost:3000" -url = "http://#{host}/" username = "tom" # Create seed user user = User.instantiate!( :email => "tom@tom.joindiaspora.com", :username => "tom", :password => "evankorth", :password_confirmation => "evankorth", - :url=> "http://#{username}.joindiaspora.com/" :person => Person.new( - :diaspora_handle => "tom@tom.joindiaspora.com", - :url => url, :profile => Profile.new( :first_name => "Alexander", :last_name => "Hamiltom" )) ) user.person.save! user2 = User.instantiate!( :email => "korth@tom.joindiaspora.com", :username => "korth", - :url=> "http://#{username}.joindiaspora.com/" :password => "evankorth", :password_confirmation => "evankorth", - :person => Person.new( :diaspora_handle => "korth@tom.joindiaspora.com", - :url => url, - :profile => Profile.new( :first_name => "Evan", - :last_name => "Korth"))) + :person => Person.new( + :profile => Profile.new( :first_name => "Evan", :last_name => "Korth"))) user2.person.save! diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 61b2ad44f..b81d10827 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -6,17 +6,26 @@ require 'config/environment' -remote_url = "http://tom.joindiaspora.com/" -#remote_url = "http://localhost:3000/" +def set_app_config username + current_config = YAML.load(Rails.root.join('config', 'app_config.yml')) + current_config[Rails.env] ||= {} + current_config[Rails.env][:pod_url] = "#{username}.joindiaspora.com" + current_config[:default][:pod_url] = "#{username}.joindiaspora.com" + file = File.new(Rails.root.join('config','app_config.yml'),'w') + file.write(current_config.to_yaml) + file.close +end + +set_app_config "tom" +require 'config/initializers/_load_app_config.rb' + + # Create seed user user = User.instantiate!( :email => "tom@tom.joindiaspora.com", :username => "tom", :password => "evankorth", :password_confirmation => "evankorth", - :url => remote_url, :person => { - :diaspora_handle => "tom@tom.joindiaspora.com", - :url => remote_url, :profile => { :first_name => "Alexander", :last_name => "Hamiltom", :image_url => "http://tom.joindiaspora.com/images/user/tom.jpg"}} ) @@ -26,11 +35,7 @@ user2 = User.instantiate!( :email => "korth@tom.joindiaspora.com", :password => "evankorth", :password_confirmation => "evankorth", :username => "korth", - :url => remote_url, - :person => { :diaspora_handle => "korth@tom.joindiaspora.com", - :url => remote_url, - :profile => { :first_name => "Evan", - :last_name => "Korth", + :person => {:profile => { :first_name => "Evan", :last_name => "Korth", :image_url => "http://tom.joindiaspora.com/images/user/korth.jpg"}}) user2.person.save! @@ -41,3 +46,5 @@ request = user.send_friend_request_to(user2, aspect) reversed_request = user2.accept_friend_request( request.id, user2.aspect(:name => "presidents").id ) user.receive reversed_request.to_diaspora_xml user.aspect(:name => "Presidents") + + From dc0a08172d8daee7e487e51c62580258092deb39 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 16:23:42 -0700 Subject: [PATCH 245/292] syntax error in seed script --- db/seeds/backer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index d39ce490c..277615323 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -35,7 +35,7 @@ def create :person => Person.new( :profile => Profile.new( :first_name => backer_info[backer_number]['given_name'], :last_name => backer_info[backer_number]['family_name'], :image_url => "http://#{username}.joindiaspora.com/images/user/#{username}.jpg") - ) + )) user.person.save! user.aspect(:name => "Presidents") From c8e52526d9c8b4af5b29a36056e70c6ce990563d Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 16:31:27 -0700 Subject: [PATCH 246/292] another silly mistake, need to symbolize keys in deploy scripts --- db/seeds/backer.rb | 2 +- db/seeds/tom.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index 277615323..9ebe1248f 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -42,7 +42,7 @@ def create end def set_app_config username - current_config = YAML.load(Rails.root.join('config', 'app_config.yml')) + current_config = YAML.load(Rails.root.join('config', 'app_config.yml')).symbolize_keys current_config[Rails.env] ||= {} current_config[Rails.env][:pod_url] = "#{username}.joindiaspora.com" current_config[:default][:pod_url] = "#{username}.joindiaspora.com" diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index b81d10827..c35058bf7 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -7,7 +7,7 @@ require 'config/environment' def set_app_config username - current_config = YAML.load(Rails.root.join('config', 'app_config.yml')) + current_config = YAML.load(Rails.root.join('config', 'app_config.yml')).symbolize_keys current_config[Rails.env] ||= {} current_config[Rails.env][:pod_url] = "#{username}.joindiaspora.com" current_config[:default][:pod_url] = "#{username}.joindiaspora.com" From 107c05ef6f89c99d41fa65a0703b7d63cdc96618 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Tue, 21 Sep 2010 16:35:18 -0700 Subject: [PATCH 247/292] DG MS; validate_aspect_permissions broken out of post method --- app/models/user.rb | 28 +++++++++++++++++++++++----- spec/models/user/posting_spec.rb | 25 +++++++++++++++++++++---- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 4e2e642e3..91d84340d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -106,11 +106,7 @@ class User aspect_ids = options.delete(:to) end - aspect_ids = [aspect_ids.to_s] if aspect_ids.is_a? BSON::ObjectId - - raise ArgumentError.new("You must post to someone.") if aspect_ids.nil? || aspect_ids.empty? - aspect_ids.each{ |aspect_id| - raise ArgumentError.new("Cannot post to an aspect you do not own.") unless aspect_id == "all" || self.aspects.find(aspect_id) } + aspect_ids = validate_aspect_permissions(aspect_ids) post = build_post(class_name, options) @@ -120,6 +116,28 @@ class User post end + def repost( post, options = {} ) + aspect_ids = validate_aspect_permissions(options[:to]) + push_to_aspects(post, aspect_ids) + post + end + + def validate_aspect_permissions(aspect_ids) + aspect_ids = [aspect_ids.to_s] if aspect_ids.is_a? BSON::ObjectId + + if aspect_ids.nil? || aspect_ids.empty? + raise ArgumentError.new("You must post to someone.") + end + + aspect_ids.each do |aspect_id| + unless aspect_id == "all" || self.aspects.find(aspect_id) + raise ArgumentError.new("Cannot post to an aspect you do not own.") + end + end + + aspect_ids + end + def build_post( class_name, options = {}) options[:person] = self.person model_class = class_name.to_s.camelize.constantize diff --git a/spec/models/user/posting_spec.rb b/spec/models/user/posting_spec.rb index 1f24f3fed..da52ed849 100644 --- a/spec/models/user/posting_spec.rb +++ b/spec/models/user/posting_spec.rb @@ -26,15 +26,22 @@ describe User do end context 'posting' do - describe '#post' do + + describe '#validate_aspect_permissions' do it 'should not be able to post without a aspect' do - proc {user.post(:status_message, :message => "heyheyhey")}.should raise_error /You must post to someone/ + proc { + user.validate_aspect_permissions([]) + }.should raise_error /You must post to someone/ end it 'should not be able to post to someone elses aspect' do - proc {user.post(:status_message, :message => "heyheyhey", :to => aspect2.id)}.should raise_error /Cannot post to an aspect you do not own./ + proc { + user.validate_aspect_permissions(aspect2.id) + }.should raise_error /Cannot post to an aspect you do not own./ end - + end + + describe '#post' do it 'should put the post in the aspect post array' do post = user.post(:status_message, :message => "hey", :to => aspect.id) aspect.reload @@ -47,6 +54,16 @@ describe User do aspect.posts.should include album end end + + describe '#repost' do + let!(:status_message) { user.post(:status_message, :message => "hello", :to => aspect.id) } + + it 'should make the post visible in another aspect' do + user.repost( status_message, :to => aspect1.id ) + aspect1.reload + aspect1.posts.count.should be 1 + end + end end context 'dispatching' do From 020ff603bdbbea476483a70c0aad764de646893a Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 16:59:06 -0700 Subject: [PATCH 248/292] terse_url in user, db seeds are fixed, config/app_config.yml is now in gitignore, copy over config/app_config_example.yml. --- .gitignore | 1 + app/models/user.rb | 3 +++ config/app_config.yml | 34 ++++++++++++++-------------------- config/app_config_example.yml | 23 +++++++++++++++++++++++ db/seeds/backer.rb | 8 ++++---- db/seeds/dev.rb | 12 ++++++++++++ db/seeds/tom.rb | 8 ++++---- 7 files changed, 61 insertions(+), 28 deletions(-) create mode 100644 config/app_config_example.yml diff --git a/.gitignore b/.gitignore index 89b33da60..0025a86f5 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ gpg/diaspora-production/*.gpg gpg/*/random_seed public/uploads/* .rvmrc +config/app_config.yml diff --git a/app/models/user.rb b/app/models/user.rb index 4e9e968ca..a98217b4e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -221,6 +221,9 @@ class User ###Helpers############ def self.instantiate!( opts = {} ) + terse_url = APP_CONFIG[:pod_url].gsub(/(https?:|www\.)\/\//, '') + terse_url.chop! if terse_url[-1, 1] == '/' + opts[:person][:diaspora_handle] = "#{opts[:username]}@#{terse_url}" opts[:person][:url] = APP_CONFIG[:pod_url] opts[:person][:serialized_key] = generate_key diff --git a/config/app_config.yml b/config/app_config.yml index 5ee07c405..bd306725e 100644 --- a/config/app_config.yml +++ b/config/app_config.yml @@ -1,23 +1,17 @@ -# Copyright (c) 2010, Diaspora Inc. This file is -# licensed under the Affero General Public License version 3. See -# the COPYRIGHT file. - - -default: - pod_url: "http://example.org/" - debug: false - socket_debug : false +--- +default: socket_host: 0.0.0.0 - socket_port: 8080 - socket_collection_name: 'websocket' - pubsub_server: 'https://pubsubhubbub.appspot.com/' - mongo_host: 'localhost' + socket_debug: false + pod_url: tom.joindiaspora.com mongo_post: 27017 - -development: - -test: - pod_url: "http://example.org/" + socket_collection_name: websocket + socket_port: 8080 + pubsub_server: https://pubsubhubbub.appspot.com/ + mongo_host: localhost + debug: false +production: +development: + pod_url: tom.joindiaspora.com +test: + pod_url: http://example.org/ socket_port: 8081 - -production: diff --git a/config/app_config_example.yml b/config/app_config_example.yml new file mode 100644 index 000000000..5ee07c405 --- /dev/null +++ b/config/app_config_example.yml @@ -0,0 +1,23 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +default: + pod_url: "http://example.org/" + debug: false + socket_debug : false + socket_host: 0.0.0.0 + socket_port: 8080 + socket_collection_name: 'websocket' + pubsub_server: 'https://pubsubhubbub.appspot.com/' + mongo_host: 'localhost' + mongo_post: 27017 + +development: + +test: + pod_url: "http://example.org/" + socket_port: 8081 + +production: diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index 9ebe1248f..700839f62 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -42,10 +42,10 @@ def create end def set_app_config username - current_config = YAML.load(Rails.root.join('config', 'app_config.yml')).symbolize_keys - current_config[Rails.env] ||= {} - current_config[Rails.env][:pod_url] = "#{username}.joindiaspora.com" - current_config[:default][:pod_url] = "#{username}.joindiaspora.com" + current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml'))) + current_config[Rails.env.to_s] ||= {} + current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" + current_config['default']['pod_url'] = "#{username}.joindiaspora.com" file = File.new(Rails.root.join('config','app_config.yml'),'w') file.write(current_config.to_yaml) file.close diff --git a/db/seeds/dev.rb b/db/seeds/dev.rb index ef9dddecf..4ffa947e7 100644 --- a/db/seeds/dev.rb +++ b/db/seeds/dev.rb @@ -6,7 +6,19 @@ require 'config/environment' +def set_app_config username + current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml'))) + current_config[Rails.env.to_s] ||= {} + current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" + current_config['default']['pod_url'] = "#{username}.joindiaspora.com" + file = File.new(Rails.root.join('config','app_config.yml'),'w') + file.write(current_config.to_yaml) + file.close +end + username = "tom" +set_app_config username + # Create seed user user = User.instantiate!( :email => "tom@tom.joindiaspora.com", :username => "tom", diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index c35058bf7..cf6a1ed0c 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -7,10 +7,10 @@ require 'config/environment' def set_app_config username - current_config = YAML.load(Rails.root.join('config', 'app_config.yml')).symbolize_keys - current_config[Rails.env] ||= {} - current_config[Rails.env][:pod_url] = "#{username}.joindiaspora.com" - current_config[:default][:pod_url] = "#{username}.joindiaspora.com" + current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml'))) + current_config[Rails.env.to_s] ||= {} + current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" + current_config['default']['pod_url'] = "#{username}.joindiaspora.com" file = File.new(Rails.root.join('config','app_config.yml'),'w') file.write(current_config.to_yaml) file.close From e3d52bb467bd8f45d380a8715c80799065ccb036 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 17:39:44 -0700 Subject: [PATCH 249/292] putting the config file in a shared directory for in the deploy scripts --- config/deploy.rb | 7 ++++++- db/seeds/backer.rb | 2 +- db/seeds/tom.rb | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/config/deploy.rb b/config/deploy.rb index c84d25556..478736392 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -53,6 +53,11 @@ namespace :deploy do run "ln -s -f #{shared_path}/bundle #{current_path}/vendor/bundle" end + task :symlink_config do + run "touch #{shared_path}/app_config.yml" + run "ln -s -f #{shared_path}/app_config.yml #{current_path}/config/app_config.yml" + end + task :start do start_mongo start_thin @@ -150,4 +155,4 @@ namespace :db do end -after "deploy:symlink", "deploy:symlink_images", "deploy:symlink_bundle" +after "deploy:symlink", "deploy:symlink_images", "deploy:symlink_bundle", 'deploy:symlink_config" diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index 700839f62..1730ee202 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -46,7 +46,7 @@ def set_app_config username current_config[Rails.env.to_s] ||= {} current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" current_config['default']['pod_url'] = "#{username}.joindiaspora.com" - file = File.new(Rails.root.join('config','app_config.yml'),'w') + file = File.new(Rails.root.join('..','shared','app_config.yml'),'w') file.write(current_config.to_yaml) file.close end diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index cf6a1ed0c..d8152a33b 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -11,7 +11,7 @@ def set_app_config username current_config[Rails.env.to_s] ||= {} current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" current_config['default']['pod_url'] = "#{username}.joindiaspora.com" - file = File.new(Rails.root.join('config','app_config.yml'),'w') + file = File.new(Rails.root.join('..','shared','app_config.yml'),'w') file.write(current_config.to_yaml) file.close end From 74a92a26374cebd9adbf236c47f148d85dd307ce Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 17:40:43 -0700 Subject: [PATCH 250/292] tiny typo --- config/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/deploy.rb b/config/deploy.rb index 478736392..2f8065134 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -155,4 +155,4 @@ namespace :db do end -after "deploy:symlink", "deploy:symlink_images", "deploy:symlink_bundle", 'deploy:symlink_config" +after "deploy:symlink", "deploy:symlink_images", "deploy:symlink_bundle", 'deploy:symlink_config' From 4a3bfea1ba1f13d8f03fe1c478cd50d6ba433b66 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Tue, 21 Sep 2010 17:43:46 -0700 Subject: [PATCH 251/292] DG MS; cleaned spec --- lib/diaspora/user/querying.rb | 5 - spec/models/user/visible_posts_spec.rb | 131 ++++++++++++------------- 2 files changed, 64 insertions(+), 72 deletions(-) diff --git a/lib/diaspora/user/querying.rb b/lib/diaspora/user/querying.rb index 00ae27735..bd4174c76 100644 --- a/lib/diaspora/user/querying.rb +++ b/lib/diaspora/user/querying.rb @@ -35,11 +35,6 @@ module Diaspora aspects.detect{|x| x.id == id } end - def album_by_id( id ) - id = id.to_id - albums.detect{|x| x.id == id } - end - def aspects_with_post( id ) self.aspects.find_all_by_post_ids( id.to_id ) end diff --git a/spec/models/user/visible_posts_spec.rb b/spec/models/user/visible_posts_spec.rb index 5c44a2ce8..bcab473bc 100644 --- a/spec/models/user/visible_posts_spec.rb +++ b/spec/models/user/visible_posts_spec.rb @@ -7,83 +7,80 @@ require File.dirname(__FILE__) + '/../../spec_helper' describe User do - before do - @user = Factory.create(:user) - @aspect = @user.aspect(:name => 'heroes') - @aspect2 = @user.aspect(:name => 'losers') + let(:user) { Factory(:user) } - @user2 = Factory.create :user - @user2_aspect = @user2.aspect(:name => 'dudes') + let(:user2) { Factory(:user) } + let(:user3) { Factory(:user) } + let(:user4) { Factory(:user) } - friend_users(@user, @aspect, @user2, @user2_aspect) + let!(:aspect) { user.aspect(:name => 'heroes') } + let!(:aspect2) { user.aspect(:name => 'losers') } - @user3 = Factory.create :user - @user3_aspect = @user3.aspect(:name => 'dudes') - friend_users(@user, @aspect2, @user3, @user3_aspect) + let!(:user2_aspect) { user2.aspect(:name => 'dudes') } + let!(:user3_aspect) { user3.aspect(:name => 'dudes') } + let!(:user4_aspect) { user4.aspect(:name => 'dudes') } - @user4 = Factory.create :user - @user4_aspect = @user4.aspect(:name => 'dudes') - friend_users(@user, @aspect2, @user4, @user4_aspect) - end + let(:status_message1) { user2.post :status_message, :message => "hi", :to => user2_aspect.id } + let(:status_message2) { user3.post :status_message, :message => "heyyyy", :to => user3_aspect.id } + let(:status_message3) { user4.post :status_message, :message => "yooo", :to => user4_aspect.id } - it 'should generate a valid stream for a aspect of people' do - status_message1 = @user2.post :status_message, :message => "hi", :to => @user2_aspect.id - status_message2 = @user3.post :status_message, :message => "heyyyy", :to => @user3_aspect.id - status_message3 = @user4.post :status_message, :message => "yooo", :to => @user4_aspect.id + before do + friend_users(user, aspect, user2, user2_aspect) + friend_users(user, aspect2, user3, user3_aspect) + friend_users(user, aspect2, user4, user4_aspect) + end - @user.receive status_message1.to_diaspora_xml - @user.receive status_message2.to_diaspora_xml - @user.receive status_message3.to_diaspora_xml - @user.reload + it 'should generate a valid stream for a aspect of people' do + (1..3).each{ |n| + eval("user.receive status_message#{n}.to_diaspora_xml") + } - @user.visible_posts(:by_members_of => @aspect).include?(status_message1).should be true - @user.visible_posts(:by_members_of => @aspect).include?(status_message2).should be false - @user.visible_posts(:by_members_of => @aspect).include?(status_message3).should be false + user.visible_posts(:by_members_of => aspect).should include status_message1 + user.visible_posts(:by_members_of => aspect).should_not include status_message2 + user.visible_posts(:by_members_of => aspect).should_not include status_message3 - @user.visible_posts(:by_members_of => @aspect2).include?(status_message1).should be false - @user.visible_posts(:by_members_of => @aspect2).include?(status_message2).should be true - @user.visible_posts(:by_members_of => @aspect2).include?(status_message3).should be true - end + user.visible_posts(:by_members_of => aspect2).should_not include status_message1 + user.visible_posts(:by_members_of => aspect2).should include status_message2 + user.visible_posts(:by_members_of => aspect2).should include status_message3 + end - describe 'querying' do - - it 'should find a visible post by id' do - status_message1 = @user.post :status_message, :message => "hi", :to => @aspect.id - status_message2 = @user2.post :status_message, :message => "heyyyy", :to => @user2_aspect.id - status_message3 = @user3.post :status_message, :message => "yooo", :to => @user3_aspect.id - - @user.find_visible_post_by_id(status_message1.id).should == status_message1 - @user2.find_visible_post_by_id(status_message1.id).should == nil - end - - end - - describe 'albums' do - before do - @album = @user.post :album, :name => "Georges", :to => @aspect.id - @aspect.reload - @aspect2.reload - @user.reload - - @album2 = @user.post :album, :name => "Borges", :to => @aspect.id - @aspect.reload - @aspect2.reload - @user.reload - - @user.post :album, :name => "Luises", :to => @aspect2.id - @aspect.reload - @aspect2.reload - @user.reload - end - - it 'should find all albums if passed :all' do - @user.albums_by_aspect(:all).size.should == 3 - end - - it 'should return the right number of albums' do - @user.albums_by_aspect(@aspect).size.should == 2 - @user.albums_by_aspect(@aspect2).size.should == 1 + context 'querying' do + describe '#find_visible_post_by_id' do + it 'should query' do + user2.find_visible_post_by_id(status_message1.id).should == status_message1 + user.find_visible_post_by_id(status_message1.id).should == nil end end + end + + context 'albums' do + + + before do + @album = user.post :album, :name => "Georges", :to => aspect.id + aspect.reload + aspect2.reload + user.reload + + @album2 = user.post :album, :name => "Borges", :to => aspect.id + aspect.reload + aspect2.reload + user.reload + + user.post :album, :name => "Luises", :to => aspect2.id + aspect.reload + aspect2.reload + user.reload + end + + it 'should find all albums if passed :all' do + user.albums_by_aspect(:all).should have(3).albums + end + + it 'should return the right number of albums' do + user.albums_by_aspect(aspect).should have(2).albums + user.albums_by_aspect(aspect2).should have(1).album + end + end end From b01928af4bdfb43201ec8abda59b4f4eb92869b7 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 17:52:11 -0700 Subject: [PATCH 252/292] RS IZ if yaml fails to load (empty config) file load the example --- config/initializers/_load_app_config.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/initializers/_load_app_config.rb b/config/initializers/_load_app_config.rb index ac14c97d8..034a62f24 100644 --- a/config/initializers/_load_app_config.rb +++ b/config/initializers/_load_app_config.rb @@ -4,6 +4,12 @@ raw_config = File.read("#{Rails.root}/config/app_config.yml") all_envs = YAML.load(raw_config) + +unless all_envs + raw_config = File.read("#{Rails.root}/config/app_config_example.yml") + all_envs = YAML.load(raw_config) +end + if all_envs[Rails.env] APP_CONFIG = all_envs['default'].merge(all_envs[Rails.env]).symbolize_keys else From 96aaf3093cb99d383fbdbfb6ebfa778207f20ee7 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 18:04:36 -0700 Subject: [PATCH 253/292] Make load_app_config more robust, point to the right folder in db seed --- config/initializers/_load_app_config.rb | 20 ++++++++++++-------- db/seeds/backer.rb | 2 +- db/seeds/tom.rb | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/config/initializers/_load_app_config.rb b/config/initializers/_load_app_config.rb index 034a62f24..33f7b183b 100644 --- a/config/initializers/_load_app_config.rb +++ b/config/initializers/_load_app_config.rb @@ -2,16 +2,20 @@ # licensed under the Affero General Public License version 3. See # the COPYRIGHT file. -raw_config = File.read("#{Rails.root}/config/app_config.yml") -all_envs = YAML.load(raw_config) - -unless all_envs - raw_config = File.read("#{Rails.root}/config/app_config_example.yml") - all_envs = YAML.load(raw_config) +def load_config_yaml filename + YAML.load(File.read(filename)) end -if all_envs[Rails.env] - APP_CONFIG = all_envs['default'].merge(all_envs[Rails.env]).symbolize_keys +if File.exist? "#{Rails.root}/config/app_config.yml" + all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml" + all_envs = load_config_yaml "#{Rails.root}/config/app_config_example.yml" unless all_envs +else + puts "WARNING: No config/app_config.yml found! Look at config/app_config_example.yml for help." + all_envs = load_config_yaml "#{Rails.root}/config/app_config_example.yml" +end + +if all_envs[Rails.env.to_s] + APP_CONFIG = all_envs['default'].merge(all_envs[Rails.env.to_s]).symbolize_keys else APP_CONFIG = all_envs['default'].symbolize_keys end diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index 1730ee202..8fa72f23d 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -46,7 +46,7 @@ def set_app_config username current_config[Rails.env.to_s] ||= {} current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" current_config['default']['pod_url'] = "#{username}.joindiaspora.com" - file = File.new(Rails.root.join('..','shared','app_config.yml'),'w') + file = File.new(Rails.root.join('..','..','shared','app_config.yml'),'w') file.write(current_config.to_yaml) file.close end diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index d8152a33b..50d41eb91 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -11,7 +11,7 @@ def set_app_config username current_config[Rails.env.to_s] ||= {} current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" current_config['default']['pod_url'] = "#{username}.joindiaspora.com" - file = File.new(Rails.root.join('..','shared','app_config.yml'),'w') + file = File.new(Rails.root.join('..','..','shared','app_config.yml'),'w') file.write(current_config.to_yaml) file.close end From d60dc03d35e6b918b069d1447f5b1dcd8ec42740 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 18:10:26 -0700 Subject: [PATCH 254/292] removed app_config from repo --- config/app_config.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 config/app_config.yml diff --git a/config/app_config.yml b/config/app_config.yml deleted file mode 100644 index bd306725e..000000000 --- a/config/app_config.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -default: - socket_host: 0.0.0.0 - socket_debug: false - pod_url: tom.joindiaspora.com - mongo_post: 27017 - socket_collection_name: websocket - socket_port: 8080 - pubsub_server: https://pubsubhubbub.appspot.com/ - mongo_host: localhost - debug: false -production: -development: - pod_url: tom.joindiaspora.com -test: - pod_url: http://example.org/ - socket_port: 8081 From df5b7d6d848bbcad04ecb9b58fb23a8c4d8be38e Mon Sep 17 00:00:00 2001 From: danielvincent Date: Tue, 21 Sep 2010 18:14:46 -0700 Subject: [PATCH 255/292] DG MS; new function in post --- app/models/user.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 928a02173..2277f1583 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -105,12 +105,15 @@ class User aspect_ids = validate_aspect_permissions(aspect_ids) - post = build_post(class_name, options) + intitial_post(class_name, aspect_ids, options) + end + + def intitial_post(class_name, aspect_ids, options = {}) + post = build_post(class_name, options) post.socket_to_uid(id, :aspect_ids => aspect_ids) if post.respond_to?(:socket_to_uid) push_to_aspects(post, aspect_ids) - - post + post end def repost( post, options = {} ) From 6d6ca3d8bca9707b302e051b3bd936e29b524cc2 Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 20:01:56 -0700 Subject: [PATCH 256/292] added terse_pod_url to the APP_CONFIG hash --- app/models/user.rb | 7 ++----- config/initializers/_load_app_config.rb | 5 ++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 928a02173..c68cbb6dc 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -239,11 +239,8 @@ class User ###Helpers############ def self.instantiate!( opts = {} ) - terse_url = APP_CONFIG[:pod_url].gsub(/(https?:|www\.)\/\//, '') - terse_url.chop! if terse_url[-1, 1] == '/' - - opts[:person][:diaspora_handle] = "#{opts[:username]}@#{terse_url}" - opts[:person][:url] = APP_CONFIG[:pod_url] + opts[:person][:diaspora_handle] = "#{opts[:username]}@#{APP_CONFIG[:terse_pod_url]}" + pts[:person][:url] = APP_CONFIG[:pod_url] opts[:person][:serialized_key] = generate_key User.create(opts) end diff --git a/config/initializers/_load_app_config.rb b/config/initializers/_load_app_config.rb index 33f7b183b..521f9f0a0 100644 --- a/config/initializers/_load_app_config.rb +++ b/config/initializers/_load_app_config.rb @@ -20,4 +20,7 @@ else APP_CONFIG = all_envs['default'].symbolize_keys end -puts "WARNING: Please modify your app_config.yml to have a proper pod_url!" if APP_CONFIG[:pod_url] == "http://example.org/" && Rails.env != :test +APP_CONFIG[:terse_pod_url] = APP_CONFIG[:pod_url].gsub(/(https?:|www\.)\/\//, '') +APP_CONFIG[:terse_pod_url].chop! if APP_CONFIG[:terse_pod_url][-1, 1] == '/' + +puts "WARNING: Please modify your app_config.yml to have a proper pod_url!" if APP_CONFIG[:terse_pod_url] == "example.org" && Rails.env != :test From 4c0dc584583d862172e460e036830407ab40fb5e Mon Sep 17 00:00:00 2001 From: danielvincent Date: Tue, 21 Sep 2010 20:02:37 -0700 Subject: [PATCH 257/292] spec cleanup --- spec/models/user_spec.rb | 53 +++++++++++++++------------------------- 1 file changed, 20 insertions(+), 33 deletions(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 2249ae0b1..1608bbe58 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -7,54 +7,41 @@ require File.dirname(__FILE__) + '/../spec_helper' describe User do - before do - @user = Factory.create(:user) - @aspect = @user.aspect(:name => 'heroes') - end + let(:user) { Factory(:user) } + let(:aspect) { user.aspect(:name => 'heroes') } describe '#diaspora_handle' do it 'uses the pod config url to set the diaspora_handle' do - @user.diaspora_handle.should == @user.username + "@example.org" + user.diaspora_handle.should == user.username + "@example.org" end end - - - describe 'profiles' do + context 'profiles' do it 'should be able to update their profile and send it to their friends' do - Factory.create(:person) + updated_profile = { :profile => { + :first_name => 'bob', + :last_name => 'billytown', + :image_url => "http://clown.com"} } - updated_profile = {:profile => {:first_name => 'bob', :last_name => 'billytown', :image_url => "http://clown.com"}} - - @user.update_profile(updated_profile).should == true - @user.profile.image_url.should == "http://clown.com" + user.update_profile(updated_profile).should be true + user.profile.image_url.should == "http://clown.com" end end - describe 'aspects' do - it 'should delete an empty aspect' do - @user.aspects.include?(@aspect).should == true - @user.drop_aspect(@aspect) - @user.reload + context 'aspects' do + let(:user2) { Factory(:user) } + let(:aspect2) { user2.aspect(:name => 'stuff') } - @user.aspects.include?(@aspect).should == false + it 'should delete an empty aspect' do + user.drop_aspect(aspect) + user.aspects.include?(aspect).should == false end it 'should not delete an aspect with friends' do - user2 = Factory.create(:user) - aspect2 = user2.aspect(:name => 'stuff') - user2.reload - aspect2.reload - - friend_users(@user, Aspect.find_by_id(@aspect.id), user2, Aspect.find_by_id(aspect2.id)) - @aspect.reload - - @user.aspects.include?(@aspect).should == true - - proc{@user.drop_aspect(@aspect)}.should raise_error /Aspect not empty/ - - @user.reload - @user.aspects.include?(@aspect).should == true + friend_users(user, Aspect.find_by_id(aspect.id), user2, Aspect.find_by_id(aspect2.id)) + aspect.reload + proc{user.drop_aspect(aspect)}.should raise_error /Aspect not empty/ + user.aspects.include?(aspect).should == true end end From 63ed6a3a9505850affef46544fd5cf3fbae5bb37 Mon Sep 17 00:00:00 2001 From: maxwell Date: Tue, 21 Sep 2010 21:31:53 -0700 Subject: [PATCH 258/292] MS DG made async webfingering controller. need to call it from javascript to prevent seeds from blocking. remember to update your gems --- Gemfile | 4 ++++ Gemfile.lock | 6 ++++++ app/controllers/requests_controller.rb | 3 +++ config/routes.rb | 1 + 4 files changed, 14 insertions(+) diff --git a/Gemfile b/Gemfile index cc92bec3d..adc4431aa 100644 --- a/Gemfile +++ b/Gemfile @@ -38,6 +38,10 @@ gem 'magent', :git => 'http://github.com/dcu/magent.git' gem 'carrierwave', :git => 'git://github.com/rsofaer/carrierwave.git' , :branch => 'master' #Untested mongomapper branch gem 'mini_magick' +#sinatra +gem 'sinatra', '1.0' +gem 'async_sinatra' + group :test, :development do gem 'factory_girl_rails' end diff --git a/Gemfile.lock b/Gemfile.lock index dd181b320..abad54828 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -104,6 +104,8 @@ GEM addressable (2.2.1) arel (1.0.1) activesupport (~> 3.0.0) + async_sinatra (0.2.3) + sinatra (>= 1.0) autotest (4.3.2) bcrypt-ruby (2.1.2) bson (1.0.7) @@ -212,6 +214,8 @@ GEM selenium-client (1.2.18) selenium-rc (2.2.4) selenium-client (>= 1.2.18) + sinatra (1.0) + rack (>= 1.0) subexec (0.0.4) thin (1.2.7) daemons (>= 1.0.9) @@ -238,6 +242,7 @@ PLATFORMS DEPENDENCIES addressable + async_sinatra autotest bson (= 1.0.7) bson_ext (= 1.0.7) @@ -266,6 +271,7 @@ DEPENDENCIES ruby-debug saucelabs-adapter (= 0.8.12) selenium-rc + sinatra (= 1.0) sprinkle! thin webmock diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index 6087ebe85..fd6e10e7b 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -42,6 +42,9 @@ class RequestsController < ApplicationController return end + + + # rel_hash = {:friend => params[:friend_handle]} Rails.logger.debug("Sending request: #{rel_hash}") begin diff --git a/config/routes.rb b/config/routes.rb index ae757499c..5b7ddba4f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -33,6 +33,7 @@ Diaspora::Application.routes.draw do match 'signup', :to => 'registrations#new', :as => "new_user_registration" match 'get_to_the_choppa', :to => redirect("/signup") + match "/finger", :to => AsyncController #public routes # match 'webfinger', :to => 'publics#webfinger' From 6bd22034b7978b090cdf9bbc9cf3d4824f2f189a Mon Sep 17 00:00:00 2001 From: ilya Date: Tue, 21 Sep 2010 21:45:29 -0700 Subject: [PATCH 259/292] typo in user --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 99230b8f6..06652a494 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -243,7 +243,7 @@ class User ###Helpers############ def self.instantiate!( opts = {} ) opts[:person][:diaspora_handle] = "#{opts[:username]}@#{APP_CONFIG[:terse_pod_url]}" - pts[:person][:url] = APP_CONFIG[:pod_url] + opts[:person][:url] = APP_CONFIG[:pod_url] opts[:person][:serialized_key] = generate_key User.create(opts) end From c87ad060abc0ae4919fa41761f0ee7ed590a1413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Di=C3=B3genes?= Date: Wed, 22 Sep 2010 20:34:43 +0800 Subject: [PATCH 260/292] Add translation (from English locale) to Brazilian Portuguese --- config/locales/pt-BR.yml | 135 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 67c077090..10425864b 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -7,4 +7,137 @@ # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. pt-BR: - hello: "Olá Mundo" + hello: "Olá mundo" + layouts: + application: + edit_profile: "editar perfil" + logout: "sair" + shared: + aspect_nav: + all_aspects: "Todos Aspectos" + manage: "Gerenciar" + manage_your_aspects: "Gerencie seus Aspectos" + sub_header: + all_aspects: "Todos Aspectos" + manage_aspects: "Gerenciar Aspectos" + publisher: + share: "Compartilhar" + aspect_friends: + add_friends: "adicionar amigos" + albums: + album: + you: "você" + new_album: + create: "criar" + add_a_new_album: "Adicionar novo álbum" + show: + edit_album: "Editar Álbum" + albums: "álbuns" + updated: "atualizado" + by: "por" + edit: + editing: "Editando" + updated: "atualizado" + are_you_sure: "Tem certeza?" + delete_album: "Excluir Álbum" + cancel: "Cancelar" + index: + home: "home" + new_album: "Novo Álbum" + create: + success: "Você criou com sucesso um álbum chamado %{name}." + update: + success: "O álbum %{name} foi editado com sucesso." + failure: "Erro ao editar o álbum %{name}." + destroy: + success: "O álbum %{name} foi excluído com sucesso." + aspects: + index: + photos: "photos" + show: + photos: "photos" + manage: + add_a_new_aspect: "Adicionar um novo aspecto" + add_a_new_friend: "Adicionar um novo amigo" + show: "Exibir" + update_aspects: "Atualizar Aspectos" + requests: "Solicitações" + ignore_remove: "Ignorar/Excluir" + new_aspect: + add_a_new_aspect: "Adicionar um novo aspecto" + create: "Criar" + create: + success:"Clique no mais(+) do lado esquerdo para dizer ao Diaspora quem pode ver seu novo aspecto." + users: + edit: + cancel: "Cancelar" + update_profile: "Atualizar Perfil" + home: "Home" + diaspora_username: "USUÁRIO DIASPORA" + info: "Informações" + picture: "Imagem" + editing_profile: "Editando perfil" + albums: "Álbuns" + you_dont_have_any_photos: "Você não possui nenhuma photo! Vá para" + page_to_upload_some: "para fazer o upload de alguma." + comments: + comment: + ago: "atrás" + new_comment: + comment: "Comentário" + photos: + show: + prev: "anterior" + full_size: "tamanho máximo" + next: "próxima" + edit_photo: "Editar Foto" + delete_photo: "Excluir Foto" + are_you_sure: "Tem certeza?" + comments: "comentários" + edit: + editing: "Editando" + are_you_sure: "Tem certeza?" + delete_photo: "Excluir Foto" + photo: + show_comments: "exibir comentários" + posted_a_new_photo_to: "enviada um nova foto para" + new: + new_photo: "Nova Foto" + back_to_list: "Voltar para a Lista" + post_it: "enviar!" + registrations: + new: + sign_up: "Cadastro" + status_messages: + new_status_message: + tell_me_something_good: "diga-me qualquer coisa legal" + oh_yeah: "É isso aí!" + status_message: + show_comments: "exibir comentários" + delete: "Excluir" + are_you_sure: "Tem certeza?" + show: + status_message: "Mensagem de Status" + comments: "comentários" + are_you_sure: "Tem certeza?" + destroy: "Excluir" + view_all: "Exibir Todas" + message: "Mensagem" + owner: "Pertence a" + people: + index: + add_friend: "adicionar amigo(a)" + real_name: "nome real" + diaspora_handle: "diaspora handle" + thats_you: "esse é você!" + friend_request_pending: "pedido de amizade pendente" + you_have_a_friend_request_from_this_person: "você possui um pedido de amizade dessa pessoa" + new: + new_person: "Nova Pessoa" + back_to_list: "Voltar para a Lista" + show: + last_seen: "visto pela última vez a: %{how_long_ago}" + friends_since: "amigos desde: %{how_long_ago}" + save: "salvar" + are_you_sure: "Tem certeza?" + remove_friend: "excluir amigo" From 7049cb3ca49f1f1a2208eaf616120c633272f0c1 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 10:31:40 -0700 Subject: [PATCH 261/292] A less efficient, but simpler way of checking whether the photo is the profile photo --- app/views/users/edit.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index 880d25ef4..cb578c590 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -17,11 +17,11 @@ %h3 Picture %div#image_picker - = p.hidden_field :image_url, :value => (@profile.image_url.sub(APP_CONFIG[:pod_url],'/') if @profile.image_url), :id => 'image_url_field' + = p.hidden_field :image_url, :value => (@profile.image_url if @profile.image_url), :id => 'image_url_field' - unless @photos.nil? || @photos.empty? - for photo in @photos - - if @profile.image_url && (photo.url(:thumb_medium) == @profile.image_url.sub(APP_CONFIG[:pod_url],'/')) + - if @profile.image_url && @profile.image_url.include?(photo.url(:thumb_medium)) %div.small_photo{:id => photo.url(:thumb_medium), :class=>'selected'} = check_box_tag 'checked_photo', true, true = link_to image_tag(photo.url(:thumb_medium)), "#" From 6dd7911c8c3a07d2757c946dfa39241733a984c7 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 22 Sep 2010 10:52:29 -0700 Subject: [PATCH 262/292] DG IZ; update_or_repost --- app/controllers/albums_controller.rb | 2 +- app/controllers/photos_controller.rb | 2 +- app/models/user.rb | 10 ++++++++++ spec/models/user/posting_spec.rb | 23 +++++++++++++++++++++++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/controllers/albums_controller.rb b/app/controllers/albums_controller.rb index c6cf7a829..14adcebe1 100644 --- a/app/controllers/albums_controller.rb +++ b/app/controllers/albums_controller.rb @@ -52,7 +52,7 @@ class AlbumsController < ApplicationController data = clean_hash(params[:album]) - if @album.update_attributes data + if current_user.update_or_repost( @album, data ) flash[:notice] = "Album #{@album.name} successfully edited." respond_with @album else diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index afc193413..8d383f53a 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -88,7 +88,7 @@ class PhotosController < ApplicationController data = clean_hash(params) - if @photo.update_attributes data[:photo] + if current_user.update_or_repost( @photo, data[:photo] ) flash[:notice] = "Photo successfully updated." respond_with @photo else diff --git a/app/models/user.rb b/app/models/user.rb index 06652a494..45f947807 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -122,6 +122,16 @@ class User post end + def update_or_repost( post, post_hash = {} ) + if self.owns? post + if post_hash[:aspect_ids] + repost(post, post_hash[:aspect_ids]) if validate_aspect_permissions post_hash[:aspect_ids] + else + post.update_attributes!(post_hash) + end + end + end + def validate_aspect_permissions(aspect_ids) aspect_ids = [aspect_ids.to_s] if aspect_ids.is_a? BSON::ObjectId diff --git a/spec/models/user/posting_spec.rb b/spec/models/user/posting_spec.rb index da52ed849..6b939b573 100644 --- a/spec/models/user/posting_spec.rb +++ b/spec/models/user/posting_spec.rb @@ -64,6 +64,29 @@ describe User do aspect1.posts.count.should be 1 end end + + describe '#update_or_repost' do + let!(:album) { user.post(:album, :name => "Profile Photos", :to => aspect.id) } + + it 'should repost' do + update_hash = { :aspect_ids => aspect1.id } + user.should_receive(:repost).with(album, update_hash[:aspect_ids]).and_return album + user.update_or_repost( album, update_hash ) + end + + it 'should update fields' do + update_hash = { :name => "Other Photos" } + user.update_or_repost( album, update_hash ) + album.name.should == "Other Photos" + end + + it 'should reject posting to an external aspect' do + update_hash = { :aspect_ids => [aspect3.id] } + proc{ + user.update_or_repost( album, update_hash ) + }.should raise_error /Cannot post to an aspect you do not own./ + end + end end context 'dispatching' do From 894197522443eaa5b2989f1e2dbddb5ade9ba630 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 22 Sep 2010 10:59:23 -0700 Subject: [PATCH 263/292] DG IZ; example extension convention for app_config --- config/{app_config_example.yml => app_config.yml.example} | 0 config/initializers/_load_app_config.rb | 6 +++--- db/seeds/backer.rb | 2 +- db/seeds/dev.rb | 2 +- db/seeds/tom.rb | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename config/{app_config_example.yml => app_config.yml.example} (100%) diff --git a/config/app_config_example.yml b/config/app_config.yml.example similarity index 100% rename from config/app_config_example.yml rename to config/app_config.yml.example diff --git a/config/initializers/_load_app_config.rb b/config/initializers/_load_app_config.rb index 521f9f0a0..e739941e9 100644 --- a/config/initializers/_load_app_config.rb +++ b/config/initializers/_load_app_config.rb @@ -8,10 +8,10 @@ end if File.exist? "#{Rails.root}/config/app_config.yml" all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml" - all_envs = load_config_yaml "#{Rails.root}/config/app_config_example.yml" unless all_envs + all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example" unless all_envs else - puts "WARNING: No config/app_config.yml found! Look at config/app_config_example.yml for help." - all_envs = load_config_yaml "#{Rails.root}/config/app_config_example.yml" + puts "WARNING: No config/app_config.yml found! Look at config/app_config.yml.example for help." + all_envs = load_config_yaml "#{Rails.root}/config/app_config.yml.example" end if all_envs[Rails.env.to_s] diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index 8fa72f23d..20fe90fdf 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -42,7 +42,7 @@ def create end def set_app_config username - current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml'))) + current_config = YAML.load(File.read(Rails.root.join('config', 'app_config.yml.example'))) current_config[Rails.env.to_s] ||= {} current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" current_config['default']['pod_url'] = "#{username}.joindiaspora.com" diff --git a/db/seeds/dev.rb b/db/seeds/dev.rb index 4ffa947e7..e2d8a5495 100644 --- a/db/seeds/dev.rb +++ b/db/seeds/dev.rb @@ -7,7 +7,7 @@ require 'config/environment' def set_app_config username - current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml'))) + current_config = YAML.load(File.read(Rails.root.join('config', 'app_config.yml.example'))) current_config[Rails.env.to_s] ||= {} current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" current_config['default']['pod_url'] = "#{username}.joindiaspora.com" diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 50d41eb91..cc3000d0b 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -7,7 +7,7 @@ require 'config/environment' def set_app_config username - current_config = YAML.load(File.read(Rails.root.join('config', 'app_config_example.yml'))) + current_config = YAML.load(File.read(Rails.root.join('config', 'app_config.yml.example'))) current_config[Rails.env.to_s] ||= {} current_config[Rails.env.to_s]['pod_url'] = "#{username}.joindiaspora.com" current_config['default']['pod_url'] = "#{username}.joindiaspora.com" From 5ef32b7d55947f745256d98658f717da3f91297c Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 22 Sep 2010 12:03:25 -0700 Subject: [PATCH 264/292] DG IZ; a user can repost. aspects are not sent through the websocket. post does not show where it curently is going in its partial --- app/controllers/application_controller.rb | 9 +++++++++ app/views/status_messages/_status_message.html.haml | 6 ++++++ config/routes.rb | 4 +++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f0ca5bfc8..ac0d11b1c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -37,4 +37,13 @@ class ApplicationController < ActionController::Base @request_count = Request.for_user(current_user).size if current_user end + def repost + @post = current_user.find_visible_post_by_id params[:id] + if current_user.repost( @post, :to => params[:aspect_ids] ) + flash[:notice] = "Item re-shared." + else + flash[:error] = "Failed to re-share." + end + end + end diff --git a/app/views/status_messages/_status_message.html.haml b/app/views/status_messages/_status_message.html.haml index dcee761d1..ee484f47b 100644 --- a/app/views/status_messages/_status_message.html.haml +++ b/app/views/status_messages/_status_message.html.haml @@ -22,3 +22,9 @@ - if current_user.owns?(post) .destroy_link = link_to 'Delete', status_message_path(post), :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "delete" + + %b reshare: + -if @aspects + - for aspect in @aspects + = link_to aspect, repost_path( :id => post.id, :aspect_ids => aspect.id ) + diff --git a/config/routes.rb b/config/routes.rb index ae757499c..1a7a53925 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,12 +7,14 @@ Diaspora::Application.routes.draw do resources :people, :only => [:index, :show, :destroy] resources :users, :except => [:create, :new, :show] - resources :status_messages, :only => [:create, :destroy, :show] + resources :status_messages resources :comments, :except => [:index] resources :requests, :except => [:edit, :update] resources :photos, :except => [:index] resources :albums + match 'repost', :to => 'application#repost', :as => 'repost' + match 'aspects/move_friends', :to => 'aspects#move_friends', :as => 'move_friends' match 'aspects/move_friend', :to => 'aspects#move_friend', :as => 'move_friend' match 'aspects/manage', :to => 'aspects#manage' From de9092363115adca04879f06961d9bd5d7fd8d63 Mon Sep 17 00:00:00 2001 From: Thomas Krehbiel Date: Wed, 22 Sep 2010 18:05:11 -0400 Subject: [PATCH 265/292] Fix for sending unlimited duplicate friend requests --- lib/diaspora/user/friending.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/diaspora/user/friending.rb b/lib/diaspora/user/friending.rb index a4dcdd38d..f3b30f9b3 100644 --- a/lib/diaspora/user/friending.rb +++ b/lib/diaspora/user/friending.rb @@ -8,6 +8,9 @@ module Diaspora module UserModules module Friending def send_friend_request_to(desired_friend, aspect) + # should have different exception types for these? + raise "You have already sent a friend request to that person!" if self.pending_requests.detect{ + |x| x.destination_url == desired_friend.receive_url } raise "You are already friends with that person!" if self.friends.detect{ |x| x.receive_url == desired_friend.receive_url} request = Request.instantiate( From 474cf7770815bb1cf87c277cc9727be9e8d627bc Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 22 Sep 2010 15:05:51 -0700 Subject: [PATCH 266/292] DG IZ; reposting now works. redirects to a template missing page, though. --- app/views/shared/_reshare.haml | 27 +++++++++ .../status_messages/_status_message.html.haml | 8 +-- public/stylesheets/application.css | 37 ++++++++++++ public/stylesheets/sass/application.sass | 56 +++++++++++++++++++ 4 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 app/views/shared/_reshare.haml diff --git a/app/views/shared/_reshare.haml b/app/views/shared/_reshare.haml new file mode 100644 index 000000000..61f48e73b --- /dev/null +++ b/app/views/shared/_reshare.haml @@ -0,0 +1,27 @@ +-# Copyright (c) 2010, Diaspora Inc. This file is +-# licensed under the Affero General Public License version 3. See +-# the COPYRIGHT file. + + + +:javascript + $(".reshare_button").toggle(function(e){ + e.preventDefault(); + $(this).parent(".reshare_pane").children(".reshare_box").fadeIn(200); + }, function(e) { + e.preventDefault(); + $(this).parent(".reshare_pane").children(".reshare_box").fadeOut(200); + }); + +.reshare_pane + %span.reshare_button + = link_to "Reshare", "#" + + %ul.reshare_box + - for aspect in current_user.aspects_with_post( post.id ) + %li.currently_sharing= aspect.name + + - for aspect in current_user.aspects + - unless aspect.posts.include? post + %li.aspect_to_share= link_to aspect, repost_path( :id => post.id, :aspect_ids => aspect.id ) + diff --git a/app/views/status_messages/_status_message.html.haml b/app/views/status_messages/_status_message.html.haml index ee484f47b..33764453f 100644 --- a/app/views/status_messages/_status_message.html.haml +++ b/app/views/status_messages/_status_message.html.haml @@ -17,14 +17,10 @@ \-- = link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments" - = render "comments/comments", :post => post + = render "comments/comments", :post => post - if current_user.owns?(post) .destroy_link = link_to 'Delete', status_message_path(post), :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "delete" - - %b reshare: - -if @aspects - - for aspect in @aspects - = link_to aspect, repost_path( :id => post.id, :aspect_ids => aspect.id ) + = render "shared/reshare", :post => post, :current_user => current_user diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 9e8561cc2..e95107081 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -171,6 +171,40 @@ li.message { li.message .content div.info .time a { color: #666666; } +.reshare_pane { + margin-left: 5px; + margin-right: 5px; + display: inline; + position: relative; } + .reshare_pane ul.reshare_box { + display: none; + z-index: 10; + position: absolute; + margin-top: 5px; + padding: 0; + background-color: #fafafa; + list-style: none; + border: 5px solid #666666; + -webkit-box-shadow: 0 0 5px #666666; + -moz-box-shadow: 0 0 5px #666666; + text-shadow: 0 2px white; + color: black; } + .reshare_pane ul.reshare_box > li { + font-weight: bold; + padding: 8px; + padding-right: 15px; + border-top: 1px solid white; + border-bottom: 1px solid #cccccc; } + .reshare_pane ul.reshare_box > li:first-child { + border-top: none; } + .reshare_pane ul.reshare_box > li:last-child { + border-bottom: none; } + .reshare_pane ul.reshare_box > li a { + display: block; + height: 100%; } + .reshare_pane ul.reshare_box > li a:hover { + background-color: #eeeeee; } + form { position: relative; font-size: 120%; @@ -270,6 +304,9 @@ ul.comment_set { .destroy_link a, .request_button a { color: #999999; font-weight: normal; } + .destroy_link a:hover, .request_button a:hover { + text-decoration: underline; + background: none; } .destroy_link { display: none; diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 88145b6df..30f03f8c0 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -225,6 +225,58 @@ li.message a :color #666 +.reshare_pane + :margin + :left 5px + :right 5px + :display inline + :position relative + + ul.reshare_box + :display none + :z-index 10 + :position absolute + :margin + :top 5px + :padding 0 + + :background + :color #fafafa + + :list + :style none + + :border 5px solid #666 + :-webkit-box-shadow 0 0 5px #666 + :-moz-box-shadow 0 0 5px #666 + + :text-shadow 0 2px #fff + :color #000 + + > li + :font + :weight bold + + :padding 8px + :right 15px + :border + :top 1px solid #fff + :bottom 1px solid #ccc + + &:first-child + :border + :top none + &:last-child + :border + :bottom none + a + :display block + :height 100% + + &:hover + :background + :color #eee + form :position relative @@ -360,6 +412,10 @@ ul.comment_set :color #999 :font :weight normal + &:hover + :text + :decoration underline + :background none .destroy_link :display none From 10e6ff9df8e3168545d4ba8d074d22e78132d37e Mon Sep 17 00:00:00 2001 From: Thomas Krehbiel Date: Wed, 22 Sep 2010 18:05:11 -0400 Subject: [PATCH 267/292] Fix for sending unlimited duplicate friend requests --- app/controllers/requests_controller.rb | 4 ++-- lib/diaspora/user/friending.rb | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index 6087ebe85..2a8090c9e 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -47,8 +47,8 @@ class RequestsController < ApplicationController begin @request = current_user.send_friend_request_to(rel_hash[:friend], aspect) rescue Exception => e - raise e unless e.message.include? "already friends" - flash[:notice] = "You are already friends with #{params[:request][:destination_url]}!" + raise e unless e.message.include? "already" + flash[:notice] = "#{e.message} #{params[:request][:destination_url]}" respond_with :location => aspect return end diff --git a/lib/diaspora/user/friending.rb b/lib/diaspora/user/friending.rb index a4dcdd38d..f3b30f9b3 100644 --- a/lib/diaspora/user/friending.rb +++ b/lib/diaspora/user/friending.rb @@ -8,6 +8,9 @@ module Diaspora module UserModules module Friending def send_friend_request_to(desired_friend, aspect) + # should have different exception types for these? + raise "You have already sent a friend request to that person!" if self.pending_requests.detect{ + |x| x.destination_url == desired_friend.receive_url } raise "You are already friends with that person!" if self.friends.detect{ |x| x.receive_url == desired_friend.receive_url} request = Request.instantiate( From 695e5fe396457b1b894c2ad378f4470574d3e80a Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 15:19:26 -0700 Subject: [PATCH 268/292] Don't log huge encrypted params --- config/application.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/application.rb b/config/application.rb index b409f91d3..bf3b5699a 100644 --- a/config/application.rb +++ b/config/application.rb @@ -51,5 +51,6 @@ module Diaspora # Configure sensitive parameters which will be filtered from the log file. config.filter_parameters += [:password] + config.filter_parameters += [:xml] end end From b9be543ef6695ee6737b40f9600815247ce7f5dc Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 22 Sep 2010 15:32:11 -0700 Subject: [PATCH 269/292] DG IZ; reshare redirects to specific page --- app/views/shared/_publisher.haml | 2 +- app/views/shared/_reshare.haml | 4 ++-- public/stylesheets/application.css | 1 + public/stylesheets/sass/application.sass | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/views/shared/_publisher.haml b/app/views/shared/_publisher.haml index 4645ec65c..130f136a9 100644 --- a/app/views/shared/_publisher.haml +++ b/app/views/shared/_publisher.haml @@ -10,7 +10,7 @@ = f.error_messages %p %label{:for => "status_message_message"} Message - = f.text_area :message, :rows => 2 + = f.text_area :message, :rows => 2, :value => params[:prefill] %ul.aspect_selector{ :style => "display:none;"} going to... diff --git a/app/views/shared/_reshare.haml b/app/views/shared/_reshare.haml index 61f48e73b..0b4120d52 100644 --- a/app/views/shared/_reshare.haml +++ b/app/views/shared/_reshare.haml @@ -19,9 +19,9 @@ %ul.reshare_box - for aspect in current_user.aspects_with_post( post.id ) + %li.currently_sharing= aspect.name - for aspect in current_user.aspects - unless aspect.posts.include? post - %li.aspect_to_share= link_to aspect, repost_path( :id => post.id, :aspect_ids => aspect.id ) - + %li.aspect_to_share= link_to aspect, :controller => "aspects", :action => "show", :id => aspect.id, :prefill => post.message diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index e95107081..82bbd8b6d 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -177,6 +177,7 @@ li.message { display: inline; position: relative; } .reshare_pane ul.reshare_box { + width: 150px; display: none; z-index: 10; position: absolute; diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 30f03f8c0..7c77a0b79 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -233,6 +233,7 @@ li.message :position relative ul.reshare_box + :width 150px :display none :z-index 10 :position absolute From 955d9130a24fdb700b60cb5c241ebde707f5206f Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 22 Sep 2010 15:35:23 -0700 Subject: [PATCH 270/292] DG IZ; shift+enter in publisher box submits contents --- public/javascripts/view.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/javascripts/view.js b/public/javascripts/view.js index 4713c7164..092d69f16 100644 --- a/public/javascripts/view.js +++ b/public/javascripts/view.js @@ -41,6 +41,12 @@ $(document).ready(function(){ } ); + $("#publisher textarea").keydown( function(e) { + if (e.shiftKey && e.keyCode == 13) { + $("#publisher form").submit(); + } + }); + });//end document ready From d0dbcd47fc7f76b4faab3e9cbf8166fa1390c666 Mon Sep 17 00:00:00 2001 From: Pistos Date: Tue, 21 Sep 2010 09:18:37 +0800 Subject: [PATCH 271/292] Added a newline after headings where it was missing. --- README.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6e9c40aa0..d20252583 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ ## Commit Guidlines + You are welcome to contribute, add and extend Diaspora however you see fit. We will do our best to incorporate everything that meets our guidelines. -We need you to fill out a [contributor agreement form](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq) before we can accept your patches. The agreement gives Diaspora joint ownership of the patch so the copyright isn't scattered. You can find it [here](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq). +We need you to fill out a [contributor agreement form](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq) before we can accept your patches. The agreement gives Diaspora joint ownership of the patch so the copyright isn't scattered. You can find it [here](https://spreadsheets.google.com/a/joindiaspora.com/viewform?formkey=dGI2cHA3ZnNHLTJvbm10LUhXRTJjR0E6MQ&theme=0AX42CRMsmRFbUy1iOGYwN2U2Mi1hNWU0LTRlNjEtYWMyOC1lZmU4ODg1ODc1ODI&ifq). All commits must be tested, and after each commit, all tests should be green before a pull request is sent. Please write your tests in Rspec. @@ -14,7 +15,7 @@ The privacy aware, personally controlled, do-it-all, open source social network. **DISCLAIMER: THIS IS PRE-ALPHA SOFTWARE AND SHOULD BE TREATED ACCORDINGLY.** **PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS TO BE BROKEN** -Also, we really want to continue to focus on features and improving the code base. When we think it is +Also, we really want to continue to focus on features and improving the code base. When we think it is ready for general use, we will post more detailed instructions. ## Notice @@ -30,6 +31,7 @@ We will try and fully support more webservers later, but that is what works for These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), [Fedora](http://www.fedoraproject.org) or Mac OS X. We are developing Diaspora for the latest and greatest browsers, so please update your Firefox, Chrome or Safari to the latest and greatest. ## Preparing your system + In order to run Diaspora, you will need to download the following dependencies (specific instructions follow): - Build Tools - Packages needed to compile the components that follow. @@ -64,7 +66,7 @@ To install Ruby 1.8.7 on **Ubuntu**, run the following command: sudo apt-get install ruby-full -Please note that you need to have Universe enabled in your /etc/apt/sources.list file to install ruby using apt-get. +Please note that you need to have Universe enabled in your /etc/apt/sources.list file to install ruby using apt-get. At this time Fedora does not have Ruby 1.8.7. As a workaround it is possible to use [rvm](http://rvm.beginrescueend.com/) with a locally compiled Ruby installation. A semi automated method for doing this is available. It is highly recommended that you review the script before running it so you understand what will occur. The script can be executed by running the following command: @@ -90,11 +92,11 @@ Then run: You can also run the binary directly by doing the following: -If you're running a 32-bit system, run: +If you're running a 32-bit system, run: wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz - -If you're running a 64-bit system, run: + +If you're running a 64-bit system, run: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz @@ -202,9 +204,11 @@ If you have never used github before, their [help desk](http://help.github.com/) ## Running Diaspora ### Install required gems + To start the app server for the first time, you need to use Bundler to install Diaspora's gem depencencies. Run `bundle install` from Diaspora's root directory. Bundler will also warn you if there is a new dependency and you need to bundle install again. ### Start Mongo + If you installed the Ubuntu package, MongoDB should already be running (if not, run `service mongodb start`). If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. If you installed the Fedora package, MongoDB will need to be started via `service mongodb start`. If you installed the binary manually, run `sudo mongod` from where Mongo is installed to start Mongo. @@ -214,19 +218,24 @@ If you installed the OsX package through "brew", MongoDB will need to be started Diaspora will not run unless Mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. ### Run the server + `./script/server` will start both thin and the websocket server. If you want to run a different app server, you will have to run them separately. See below for instructions. ### Run the app server + Once mongo is running and bundler has finished, run `bundle exec thin start` from the root Diaspora directory. This will start the app server in development mode[.](http://bit.ly/9mwtUw) ### Run the websocket server + run `bundle exec ruby ./script/websocket_server` to start the websocket server on port 8080. Change the port in config/app_config.yml. ### Logging in with a sample user + Run `rake db:seed:tom`, then login with user `tom` and password `evankorth`. More details in db/seeds/tom.rb. ### Testing + Diaspora's test suite uses [rspec](http://rspec.info/), a behavior driven testing framework. In order to run the tests, run `bundle exec rspec spec`. ## Resources From e9d16cc09b5c6dd2ae256658e0ec8b30fb56f882 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 22 Sep 2010 15:48:50 -0700 Subject: [PATCH 272/292] DG IZ; cleanup --- app/controllers/albums_controller.rb | 2 +- app/controllers/application_controller.rb | 9 --------- app/controllers/photos_controller.rb | 2 +- app/models/user.rb | 8 ++------ config/routes.rb | 2 -- spec/models/user/posting_spec.rb | 17 ++--------------- 6 files changed, 6 insertions(+), 34 deletions(-) diff --git a/app/controllers/albums_controller.rb b/app/controllers/albums_controller.rb index 14adcebe1..d3cad54e2 100644 --- a/app/controllers/albums_controller.rb +++ b/app/controllers/albums_controller.rb @@ -52,7 +52,7 @@ class AlbumsController < ApplicationController data = clean_hash(params[:album]) - if current_user.update_or_repost( @album, data ) + if current_user.update_post( @album, data ) flash[:notice] = "Album #{@album.name} successfully edited." respond_with @album else diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ac0d11b1c..f0ca5bfc8 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -37,13 +37,4 @@ class ApplicationController < ActionController::Base @request_count = Request.for_user(current_user).size if current_user end - def repost - @post = current_user.find_visible_post_by_id params[:id] - if current_user.repost( @post, :to => params[:aspect_ids] ) - flash[:notice] = "Item re-shared." - else - flash[:error] = "Failed to re-share." - end - end - end diff --git a/app/controllers/photos_controller.rb b/app/controllers/photos_controller.rb index 8d383f53a..d0cb1871e 100644 --- a/app/controllers/photos_controller.rb +++ b/app/controllers/photos_controller.rb @@ -88,7 +88,7 @@ class PhotosController < ApplicationController data = clean_hash(params) - if current_user.update_or_repost( @photo, data[:photo] ) + if current_user.update_post( @photo, data[:photo] ) flash[:notice] = "Photo successfully updated." respond_with @photo else diff --git a/app/models/user.rb b/app/models/user.rb index 45f947807..8f74e2233 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -122,13 +122,9 @@ class User post end - def update_or_repost( post, post_hash = {} ) + def update_post( post, post_hash = {} ) if self.owns? post - if post_hash[:aspect_ids] - repost(post, post_hash[:aspect_ids]) if validate_aspect_permissions post_hash[:aspect_ids] - else - post.update_attributes!(post_hash) - end + post.update_attributes(post_hash) end end diff --git a/config/routes.rb b/config/routes.rb index 1a7a53925..0ac115b76 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -13,8 +13,6 @@ Diaspora::Application.routes.draw do resources :photos, :except => [:index] resources :albums - match 'repost', :to => 'application#repost', :as => 'repost' - match 'aspects/move_friends', :to => 'aspects#move_friends', :as => 'move_friends' match 'aspects/move_friend', :to => 'aspects#move_friend', :as => 'move_friend' match 'aspects/manage', :to => 'aspects#manage' diff --git a/spec/models/user/posting_spec.rb b/spec/models/user/posting_spec.rb index 6b939b573..d307e7a43 100644 --- a/spec/models/user/posting_spec.rb +++ b/spec/models/user/posting_spec.rb @@ -65,27 +65,14 @@ describe User do end end - describe '#update_or_repost' do + describe '#update_post' do let!(:album) { user.post(:album, :name => "Profile Photos", :to => aspect.id) } - it 'should repost' do - update_hash = { :aspect_ids => aspect1.id } - user.should_receive(:repost).with(album, update_hash[:aspect_ids]).and_return album - user.update_or_repost( album, update_hash ) - end - it 'should update fields' do update_hash = { :name => "Other Photos" } - user.update_or_repost( album, update_hash ) + user.update_post( album, update_hash ) album.name.should == "Other Photos" end - - it 'should reject posting to an external aspect' do - update_hash = { :aspect_ids => [aspect3.id] } - proc{ - user.update_or_repost( album, update_hash ) - }.should raise_error /Cannot post to an aspect you do not own./ - end end end From 5fad23c63245301d3bbc71274d9788f6077b6c67 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 15:53:40 -0700 Subject: [PATCH 273/292] Adjust readme wording --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2aeba0670..4e5152fbf 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ network. **PLEASE, DO NOT RUN IN PRODUCTION. IT IS FUN TO GET RUNNING, BUT EXPECT THINGS TO BE BROKEN** -Also, we really want to continue to focus on features and improving the code -base. When we think it is ready for general use, we will post more detailed +We are continuing to build features and improve the code base. +When we think it is ready for general use, we will post more detailed instructions. ## Notice From bfd39b01b6549deb8e7ecee1207c82d713453eaf Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 20:50:01 -0700 Subject: [PATCH 274/292] Readme wording adjustment --- README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4e5152fbf..c02b369e7 100644 --- a/README.md +++ b/README.md @@ -33,15 +33,13 @@ instructions. ## Notice We currently run Diaspora with the [thin](http://code.macournoyer.com/thin/) as -our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses the -asynchronous feature of [EventMachine](http://rubyeventmachine.com/) to send -messages between seeds, using the power of the -[Reactor](http://en.wikipedia.org/wiki/Reactor_pattern) pattern. If you use -mod_rails, mongrel, or another non-eventmachine based application server, -federation and/or websockets may not work. +our webserver, behind [nginx](http://wiki.nginx.org/Main). Diaspora uses an +asynchronous [EventMachine](http://rubyeventmachine.com/) queue inside the appserver +to send messages between seeds. If you use mod_rails, mongrel, or another +non-eventmachine based application server, federation may not work. If you don't like thin, you can always try -[Rainbows!](http://rainbows.rubyforge.org/) We will try and fully support more +[Rainbows!](http://rainbows.rubyforge.org/) We will try to fully support more webservers later, but that is what works for now. These instructions are for machines running [Ubuntu](http://www.ubuntu.com/), From e179ae5b55aa181d5e7cfdcd23cbc58f8474adfc Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 20:52:44 -0700 Subject: [PATCH 275/292] Add mention of app_config.yml to readme --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index c02b369e7..0d5cee400 100644 --- a/README.md +++ b/README.md @@ -279,6 +279,12 @@ Diaspora will not run unless Mongo is running. Mongo will not run by default, and will need to be started every time you wish to use or run the test suite for Diaspora. +### Configure Diaspora + +Diaspora needs to know where on the internet it is. Copy config/app_config_example.yml +to config/app_config.yml, put your url into the url field, and make any other +needed configuration changes. + ### Run the server `./script/server` will start both thin and the websocket server. If you want From cc3819c256a0db250fe70e832d17f64e5e9b4fce Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 21:39:22 -0700 Subject: [PATCH 276/292] Forgot a merge conflict --- app/views/aspects/manage.html.haml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/app/views/aspects/manage.html.haml b/app/views/aspects/manage.html.haml index 251a8d9a6..af64fcc23 100644 --- a/app/views/aspects/manage.html.haml +++ b/app/views/aspects/manage.html.haml @@ -61,11 +61,4 @@ %div{:id => "add_request_pane_#{aspect.id}"} = render "requests/new_request", :aspect => aspect -<<<<<<< HEAD -%p - %br - = link_to t('.update_aspects'), '#', :class => 'button', :id => "move_friends_link" - -======= ->>>>>>> master #content_bottom From 1964bd5ecfc6fa26995067ea4f04b2e4ba44b105 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 21:57:00 -0700 Subject: [PATCH 277/292] Hit the right thing in aspects move friend --- config/locales/en.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index d25c04591..8e6542639 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -94,8 +94,8 @@ en: failure: "Aspect editing failed for friend %{real_name}." success: "Aspects edited successfully." move_friend: - error: "didn't work %{inspect}" - notice: "You are now showing your friend a different aspect of yourself." + failure: "didn't work %{inspect}" + success: "You are now showing your friend a different aspect of yourself." helper: remove: "remove" aspect_not_empty: "Aspect not empty" From 5edd054ac78a00057d74d61ffb8d8bf8c19a358a Mon Sep 17 00:00:00 2001 From: Steve Conover Date: Wed, 22 Sep 2010 22:22:18 -0700 Subject: [PATCH 278/292] MS Use class_eval because of some sort of load ordering issue --- spec/controllers/sockets_controller_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/controllers/sockets_controller_spec.rb b/spec/controllers/sockets_controller_spec.rb index 4104d0d51..799d37500 100644 --- a/spec/controllers/sockets_controller_spec.rb +++ b/spec/controllers/sockets_controller_spec.rb @@ -6,11 +6,11 @@ require File.dirname(__FILE__) + '/../spec_helper' -class SocketsController +SocketsController.class_eval <<-EOT def url_options {:host => ""} end -end +EOT describe SocketsController do render_views From 494f765066204e92c685f990a41f988bc1b53ab0 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 22:57:53 -0700 Subject: [PATCH 279/292] fix_diaspora_handle rake task --- lib/tasks/db.rake | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 80e3bafe5..32aabc0db 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -58,19 +58,12 @@ namespace :db do task :fix_diaspora_handle do puts "fixing the people in this seed" require 'config/environment' - - people = Person.all( '$where' => "function(){ - return this.diaspora_handle.charAt(this.diaspora_handle.length-1) == '@' - }") - - puts "Found #{people.count} people with broken diaspora_handle fields" - people.each do |person| + Person.where(:url => 'example.org').all.each{|person| if person.owner - puts "Resetting diaspora handle for #{person.owner.username}" + person.url = APP_CONFIG[:pod_url] person.diaspora_handle = person.owner.diaspora_handle - person.save end - end + } puts "everything should be peachy" end end From f11a481ed7f3c57f6fc73525e8892ed1828264c0 Mon Sep 17 00:00:00 2001 From: Raphael Date: Wed, 22 Sep 2010 22:59:17 -0700 Subject: [PATCH 280/292] Actually do something --- lib/tasks/db.rake | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 32aabc0db..c0d289cda 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -62,6 +62,7 @@ namespace :db do if person.owner person.url = APP_CONFIG[:pod_url] person.diaspora_handle = person.owner.diaspora_handle + person.save end } puts "everything should be peachy" From c711e85c89a887bec7d8cbd7e2f8298dcc2359be Mon Sep 17 00:00:00 2001 From: uiri Date: Wed, 22 Sep 2010 09:33:37 +0800 Subject: [PATCH 281/292] adding gif support --- app/views/photos/_new_photo.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/photos/_new_photo.haml b/app/views/photos/_new_photo.haml index 0f1e423fb..abb8cf528 100644 --- a/app/views/photos/_new_photo.haml +++ b/app/views/photos/_new_photo.haml @@ -8,7 +8,7 @@ var uploader = new qq.FileUploader({ element: document.getElementById('file-upload'), params: {'album_id' : "#{@album.id}"}, - allowedExtensions: ['jpg', 'jpeg', 'png'], + allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'], action: "#{photos_path}" }); } From 1625f6b1314dc5bd3d0dc12ad1cfb7484896b563 Mon Sep 17 00:00:00 2001 From: mousey Date: Tue, 21 Sep 2010 07:02:12 +0800 Subject: [PATCH 282/292] Welsh Language Localization. --- config/locales/devise.cy.yml | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 config/locales/devise.cy.yml diff --git a/config/locales/devise.cy.yml b/config/locales/devise.cy.yml new file mode 100644 index 000000000..4f89f9b34 --- /dev/null +++ b/config/locales/devise.cy.yml @@ -0,0 +1,42 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +cy: + errors: + messages: + not_found: "ni chanfuwyd" + already_confirmed: "cadarnhawyd eisioes" + not_locked: "heb ei gloi" + + devise: + failure: + unauthenticated: 'Mae angen i chi arwyddo i mewn neu ymuno cyn parhau.' + unconfirmed: 'Rhaid i chi gadarnhau eich cyfrif cyn parhau.' + locked: 'Mae eich cyfrif wedi'i gloi.' + invalid: 'E-bost neu gyfrinair annilys.' + invalid_token: 'Tocyn dilysu annilys.' + timeout: 'Mae eich sesiwn wedi dod i ben, arwyddwch i mewn eto i barhau.' + inactive: 'Nid yw eich cyfrif wedi'i actifadu.' + sessions: + signed_in: 'Arwyddwyd i fewn yn llwyddiannus.' + signed_out: 'Arwyddwyd allan yn llwyddiannus.' + passwords: + send_instructions: 'Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau.' + updated: 'Newidiwyd eich cyfrinair yn llwyddiannus. Rydych chi wedi arwyddo i fewn.' + confirmations: + send_instructions: 'Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau.' + confirmed: 'Cadarnhawyd eich cyfrif yn llwyddiannus. Rydych chi wedi arwyddo i fewn.' + registrations: + signed_up: 'Rydych chi wedi arwyddo i fyny yn llwyddiannus. Anfonwyd cadarnhad at eich e-bost os yw wedi'i alluogi.' + updated: 'Diweddarwyd eich cyfrif yn llwyddiannus.' + destroyed: 'Hwyl fawr! Canslwyd eich cyfrif yn llwyddiannus. Rydym yn gobeithio gweld chi eto yn fuan.' + unlocks: + send_instructions: 'Byddwch yn derbyn e-bost gyda cyfarwyddiadau ar sut i agor eich cyfrif mewn ychydig funudau.' + unlocked: 'Datglowyd eich cyfrif yn llwyddiannus. Rydych chi wedi arwyddo i fewn.' + mailer: + confirmation_instructions: 'Cyfarwyddiadau cadarnhad.' + reset_password_instructions: 'Ailosod cyfarwyddiadau cyfrinair' + unlock_instructions: 'Cyfarwyddiadau Datgloi' + \ No newline at end of file From b1dd054fdb4454d4d5cb1b313619ee5876b3d0f6 Mon Sep 17 00:00:00 2001 From: mousey Date: Wed, 22 Sep 2010 01:25:15 +0800 Subject: [PATCH 283/292] More Welsh Localization --- config/locales/cy.yml | 143 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 config/locales/cy.yml diff --git a/config/locales/cy.yml b/config/locales/cy.yml new file mode 100644 index 000000000..b7d9c9af4 --- /dev/null +++ b/config/locales/cy.yml @@ -0,0 +1,143 @@ +# 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. + +cy: + hello: "Helo byd" + layouts: + application: + edit_profile: "golygu proffil" + logout: "arwyddo allan" + shared: + aspect_nav: + all_aspects: "Pob agwedd" + manage: "Rheoli" + manage_your_aspects: "Rheoli eich agweddau" + sub_header: + all_aspects: "Pob agwedd" + manage_aspects: "Rheloi agweddau" + publisher: + share: "Rhannu" + aspect_friends: + add_friends: "ychwanegu ffrindiau" + albums: + album: + you: "chi" + new_album: + create: "creu" + add_a_new_album: "Ychwanegu albwm newydd" + show: + edit_album: "Golygu Albwm" + albums: "albymau" + updated: "diweddarwyd" + by: "gan" + edit: + editing: "Wrthi'n golygu" + updated: "diweddarwyd" + are_you_sure: "Ydych chi'n sicr?" + delete_album: "Dileu Albwm" + cancel: "Cancel" + index: + home: "adref" + new_album: "Albwm Newydd" + create: + success: "Chi wedi creu albwm a'i enwi'n %{name}." + update: + success: "Mae albwm %{name} wedi'i olygu yn llwyddiannus." + failure: "Wedi methu golygu albwm %{name}." + destroy: + success: "Wedi dileu albwm %{name}." + aspects: + index: + photos: "lluniau" + show: + photos: "lluniau" + manage: + add_a_new_aspect: "Ychwanegwch agwedd" + add_a_new_friend: "Ychwanegwch ffrind newydd" + show: "Dangos" + update_aspects: "Diweddaru Agweddau" + requests: "Ceisiadau" + ignore_remove: "Anwybyddu/Tynnu" + new_aspect: + add_a_new_aspect: "Ychwanegwch agwedd newydd" + create: "Creu" + create: + success:"Cliciwch ar y plus ar y chwith i ddweud wrth Diaspora pwy all weld eich agwedd newydd." + users: + edit: + cancel: "Cancel" + update_profile: "Diweddaru Proffil" + home: "Adref" + diaspora_username: "FFUGENW DIASPORA" + info: "Gwybodaeth" + picture: "Llun" + editing_profile: "Golygu proffil" + albums: "Albymau" + you_dont_have_any_photos: "Does gennych chi ddim lluniau! Ewch i'r" + page_to_upload_some: "dudalen i uwchlwytho rhai." + comments: + comment: + ago: "yn ol" + new_comment: + comment: "Sylw" + photos: + show: + prev: "blaenorol" + full_size: "maint llawn" + next: "neasf" + edit_photo: "Golygu Llun" + delete_photo: "Dileu Llun" + are_you_sure: "Ydych chi'n sicr?" + comments: "sylwadau" + edit: + editing: "Golygu" + are_you_sure: "Ydych chi'n sicr?" + delete_photo: "Dileu Llun" + photo: + show_comments: "dangos sylwadau" + posted_a_new_photo_to: "postiwyd llun newydd i" + new: + new_photo: "Llun Newydd" + back_to_list: "Nol i'r Rhestr" + post_it: "postiwch e!" + registrations: + new: + sign_up: "Cofrestrwch" + status_messages: + new_status_message: + tell_me_something_good: "Dwi eisiau clywed rhwbeth da" + oh_yeah: "oh yeah!" + status_message: + show_comments: "dangos sylwadau" + delete: "Dileu" + are_you_sure: "Ydych chi'n sicr?" + show: + status_message: "Neges Statws" + comments: "sylwadau" + are_you_sure: "Ydych chi'n sicr?" + destroy: "Dinistrio" + view_all: "Gweld Pob Un" + message: "Neges" + owner: "Perchennog" + people: + index: + add_friend: "ychwanegu ffrind" + real_name: "enw llawn" + diaspora_handle: "bachyn diaspora" + thats_you: "dyna chi!" + friend_request_pending: "cais ffrind dan ystyriaeth" + you_have_a_friend_request_from_this_person: "mae'r person yma eisiau bod yn ffrind i chi" + new: + new_person: "Person Newydd" + back_to_list: "Nol i'r Rhestr" + show: + last_seen: "gwelwyd diwethaf: %{how_long_ago}" + friends_since: "yn ffrindiau ers: %{how_long_ago}" + save: "arbed" + are_you_sure: "Ydych chi'n sicr?" + remove_friend: "dileu ffrind" \ No newline at end of file From d55c0ae5511d5839fe1abb27dc470370f87c4d4c Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 23 Sep 2010 22:50:28 +0800 Subject: [PATCH 284/292] mongodb now in Fedora repos. --- README.md | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 0d5cee400..d215f5e98 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,14 @@ If you're on **Mac OS X**, you already have Ruby on your system. Yay! ### MongoDB +To install MongoDB on **Fedora**, use the official repositories + + sudo yum install mongodb-server + +Ensure that the server is started at system reboot: + + sudo chkconfig mongod on + To install MongoDB on **Ubuntu**, add the official MongoDB repository [here](http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages). @@ -147,32 +155,6 @@ Then run: sudo chmod -Rv 777 /data/ -To install MongoDB on a x86_64 **Fedora** system, add the official MongoDB -repository from MongoDB -(http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages) into -/etc/yum.repos.d/10gen.repo: - - [10gen] - name=10gen Repository - baseurl=http://downloads.mongodb.org/distros/fedora/13/os/x86_64/ - gpgcheck=0 - enabled=1 - -Then use yum to install the packages: - - sudo yum install mongo-stable mongo-stable-server - -If you're running a 32-bit system, run `wget -http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.2.tgz`. If you're -running a 64-bit system, run `wget -http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.2.tgz`. - - # extract - tar xzf mongodb-linux-i686-1.4.0.tgz - # create the required data directory - sudo mkdir -p /data/db - sudo chmod -Rv 777 /data/ - To install MongoDB on **Mac OS X**, run the following: brew install mongo @@ -266,7 +248,7 @@ run `service mongodb start`). If you installed the binary manually, run `sudo mongod` from where mongo is installed to start mongo. If you installed the Fedora package, MongoDB will need to be started via -`service mongodb start`. If you installed the binary manually, run `sudo +`service mongod start`. If you installed the binary manually, run `sudo mongod` from where Mongo is installed to start Mongo. If you installed the OsX package through "brew", MongoDB will need to be From c1242a0984da81e707872504590c861ef93f3e61 Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Thu, 23 Sep 2010 23:00:35 +0800 Subject: [PATCH 285/292] typo fix --- config/app_config.yml.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/app_config.yml.example b/config/app_config.yml.example index 5ee07c405..75568dd11 100644 --- a/config/app_config.yml.example +++ b/config/app_config.yml.example @@ -12,7 +12,7 @@ default: socket_collection_name: 'websocket' pubsub_server: 'https://pubsubhubbub.appspot.com/' mongo_host: 'localhost' - mongo_post: 27017 + mongo_port: 27017 development: From c000b31ffb365241d3128800aacece7d8475f357 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 23 Sep 2010 10:17:13 -0700 Subject: [PATCH 286/292] query for post through user --- app/controllers/comments_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 4caeb1414..fe11cb8ae 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -10,7 +10,7 @@ class CommentsController < ApplicationController respond_to :json, :only => :show def create - target = Post.find_by_id params[:comment][:post_id] + target = current_user.find_visible_post_by_id params[:comment][:post_id] text = params[:comment][:text] @comment = current_user.comment text, :on => target From ed6df7d1bf9fbf04e720fb1dd2ba30ff7fa03723 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 23 Sep 2010 10:24:10 -0700 Subject: [PATCH 287/292] Delete user.terse_url --- app/models/user.rb | 7 +------ spec/models/person_spec.rb | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 8f74e2233..2b74f437b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -259,14 +259,9 @@ class User aspect(:name => "Work") end - def terse_url - terse = APP_CONFIG[:pod_url].gsub(/(https?:|www\.)\/\//, '') - terse = terse.chop! if terse[-1, 1] == '/' - terse - end def diaspora_handle - "#{self.username}@#{self.terse_url}" + "#{self.username}@#{APP_CONFIG[:terse_pod_url]}" end def downcase_username diff --git a/spec/models/person_spec.rb b/spec/models/person_spec.rb index 3275d9245..721310409 100644 --- a/spec/models/person_spec.rb +++ b/spec/models/person_spec.rb @@ -24,7 +24,7 @@ describe Person do context 'remote people' do it 'stores the diaspora_handle in the database' do - @person.diaspora_handle.include?(@user.terse_url).should be false + @person.diaspora_handle.include?(APP_CONFIG[:terse_pod_url]).should be false end end end From 3d1ca6adc84d1b60bf8aa58421cc3e021af400db Mon Sep 17 00:00:00 2001 From: Dan Cirnat Date: Thu, 23 Sep 2010 00:35:46 +0800 Subject: [PATCH 288/292] Romanian locale added --- config/locales/devise.ro.yml | 41 ++++++++++ config/locales/ro.yml | 143 +++++++++++++++++++++++++++++++++++ 2 files changed, 184 insertions(+) create mode 100644 config/locales/devise.ro.yml create mode 100644 config/locales/ro.yml diff --git a/config/locales/devise.ro.yml b/config/locales/devise.ro.yml new file mode 100644 index 000000000..63501ea7b --- /dev/null +++ b/config/locales/devise.ro.yml @@ -0,0 +1,41 @@ +# Copyright (c) 2010, Diaspora Inc. This file is +# licensed under the Affero General Public License version 3. See +# the COPYRIGHT file. + + +ro: + errors: + messages: + not_found: "inexistent" + already_confirmed: "a fost deja confirmat" + not_locked: "nu a fost blocat" + + devise: + failure: + unauthenticated: 'Pentru a continuna, înregistrați-vă.' + unconfirmed: 'Pentru a continua, confirmați contul dvs.' + locked: 'Contul dvs. este blocat.' + invalid: 'Email sau parolă incorectă.' + invalid_token: 'Cheie de autentificare invalidă.' + timeout: 'Sesiunea dvs. a expirat, autentificați-vă din nou pentru a continua.' + inactive: 'Contul dvs. încă nu a fost activat.' + sessions: + signed_in: 'Autentificare cu succes.' + signed_out: 'Deconectare cu succes.' + passwords: + send_instructions: 'În scurt timp veți primi un email cu instrucțiuni pentru resetarea parolei.' + updated: 'Parolă schimbată cu success. Sunteți acum autentificat(ă).' + confirmations: + send_instructions: 'În scurt timp veți primi un email cu instrucțiuni pentru confirmarea contului.' + confirmed: 'Contul dvs. a fost confirmat cu succes. Sunteți acum autentificat(ă).' + registrations: + signed_up: 'Sunteți autentificat(ă). Dacă este cazul, un mesaj de confirmare a fost trimis pe email-ul dvs.' + updated: 'Cont actualizat cu succes.' + destroyed: 'Pa! Contul dvs. a fost dezactivat cu succes. Sperăm să vă revedem în curând.' + unlocks: + send_instructions: 'În scurt timp veți primi un email cu instrucțiuni pentru deblocarea contului.' + unlocked: 'Cont deblocat cu succes. Sunteți acum autentificat(ă).' + mailer: + confirmation_instructions: 'Instrucțiuni pentru confirmarea contului.' + reset_password_instructions: 'Instrucțiuni pentru resetarea parolei.' + unlock_instructions: 'Instrucțiuni pentru deblocare contului.' diff --git a/config/locales/ro.yml b/config/locales/ro.yml new file mode 100644 index 000000000..8878a8fc7 --- /dev/null +++ b/config/locales/ro.yml @@ -0,0 +1,143 @@ +# 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. + +ro: + hello: "Bună, lume!" + layouts: + application: + edit_profile: "editare profil" + logout: "deconectare" + shared: + aspect_nav: + all_aspects: "Toate Aspectele" + manage: "Administrare" + manage_your_aspects: "Administrare Aspecte" + sub_header: + all_aspects: "Toate Aspectele" + manage_aspects: "Administrare Aspecte" + publisher: + share: "Distribuie" + aspect_friends: + add_friends: "adăugare prieteni" + albums: + album: + you: "tu" + new_album: + create: "crează" + add_a_new_album: "Album nou" + show: + edit_album: "Editare Album" + albums: "albume" + updated: "actualizat" + by: "de" + edit: + editing: "Editare" + updated: "actualizat" + are_you_sure: "Sunteți sigur(ă)?" + delete_album: "Șterge Album" + cancel: "Renuță" + index: + home: "acasă" + new_album: "Album Nou" + create: + success: "Ați creat un album numit %{name}." + update: + success: "Albumul %{name} a fost modificat cu succes." + failure: "Eroare la editarea albumului %{name}." + destroy: + success: "Albumul %{name} a fost șters." + aspects: + index: + photos: "poze" + show: + photos: "poze" + manage: + add_a_new_aspect: "Adaugă aspect" + add_a_new_friend: "Adadugă prieten" + show: "Arată" + update_aspects: "Actualizează Aspecte" + requests: "Cereri" + ignore_remove: "Ignoră/Șterge" + new_aspect: + add_a_new_aspect: "Adaugă aspect" + create: "Crează" + create: + success:"Click pe semnul plus în partea stângă pentru a indica cine poate accesa noul aspect." + users: + edit: + cancel: "Renunță" + update_profile: "Actualizează Profil" + home: "Home" + diaspora_username: "DIASPORA USERNAME" + info: "Info" + picture: "Poză" + editing_profile: "Editare profil" + albums: "Albume" + you_dont_have_any_photos: "Nu ai nici o fotografie! Mergi la" + page_to_upload_some: "pentru a încărca câteva." + comments: + comment: + ago: "în urmă" + new_comment: + comment: "Comentariu" + photos: + show: + prev: "precedent" + full_size: "mărime deplină" + next: "următor" + edit_photo: "Modifică Poză" + delete_photo: "Șterge Poză" + are_you_sure: "Sunteți sigur(ă)?" + comments: "comments" + edit: + editing: "Modificare" + are_you_sure: "Sunteți sigur(ă)?" + delete_photo: "Șterge poză" + photo: + show_comments: "arată comentarii" + posted_a_new_photo_to: "a postat o nouă poză în" + new: + new_photo: "Poză nouă" + back_to_list: "Înapoi la Listă" + post_it: "postează!" + registrations: + new: + sign_up: "Înregistrare" + status_messages: + new_status_message: + tell_me_something_good: "spune-mi ceva bun" + oh_yeah: "o, da!" + status_message: + show_comments: "arată comentarii" + delete: "Șterge" + are_you_sure: "Sunteți sigur(ă)?" + show: + status_message: "Mesaj Stare" + comments: "comentarii" + are_you_sure: "Sunteți sigur(ă)?" + destroy: "Distruge" + view_all: "Vezi Toate" + message: "Mesaj" + owner: "Proprietar" + people: + index: + add_friend: "adaugă prieten" + real_name: "nume real" + diaspora_handle: "diaspora id" + thats_you: "acesta ești tu!" + friend_request_pending: "cerere de prietenie nerezolvată" + you_have_a_friend_request_from_this_person: "aveți o cerere de prietenie din partea acestei persoane" + new: + new_person: "Persoană Nouă" + back_to_list: "Înapoi la Listă" + show: + last_seen: "văzut: %{how_long_ago}" + friends_since: "prieteni: %{how_long_ago}" + save: "salvează" + are_you_sure: "Sunteți sigur(ă)?" + remove_friend: "șterge prieten" From 4be2fdef8f95a1ef1b4af1d452305f7801041163 Mon Sep 17 00:00:00 2001 From: Dan Cirnat Date: Thu, 23 Sep 2010 01:03:25 +0800 Subject: [PATCH 289/292] Removed "sample" message from Romanian locale --- config/locales/ro.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 8878a8fc7..c99bd2a85 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -2,10 +2,6 @@ # 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. - ro: hello: "Bună, lume!" layouts: From e6d1b8b8089f1387e91605f6037bc2e6f27f72e5 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 23 Sep 2010 10:29:36 -0700 Subject: [PATCH 290/292] fixed syntax in welsch translation --- config/locales/devise.cy.yml | 44 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/config/locales/devise.cy.yml b/config/locales/devise.cy.yml index 4f89f9b34..5d6d6049a 100644 --- a/config/locales/devise.cy.yml +++ b/config/locales/devise.cy.yml @@ -12,31 +12,31 @@ cy: devise: failure: - unauthenticated: 'Mae angen i chi arwyddo i mewn neu ymuno cyn parhau.' - unconfirmed: 'Rhaid i chi gadarnhau eich cyfrif cyn parhau.' - locked: 'Mae eich cyfrif wedi'i gloi.' - invalid: 'E-bost neu gyfrinair annilys.' - invalid_token: 'Tocyn dilysu annilys.' - timeout: 'Mae eich sesiwn wedi dod i ben, arwyddwch i mewn eto i barhau.' - inactive: 'Nid yw eich cyfrif wedi'i actifadu.' + unauthenticated: "Mae angen i chi arwyddo i mewn neu ymuno cyn parhau." + unconfirmed: "Rhaid i chi gadarnhau eich cyfrif cyn parhau." + locked: "Mae eich cyfrif wedi'i gloi." + invalid: "E-bost neu gyfrinair annilys." + invalid_token: "Tocyn dilysu annilys." + timeout: "Mae eich sesiwn wedi dod i ben, arwyddwch i mewn eto i barhau." + inactive: "Nid yw eich cyfrif wedi'i actifadu." sessions: - signed_in: 'Arwyddwyd i fewn yn llwyddiannus.' - signed_out: 'Arwyddwyd allan yn llwyddiannus.' + signed_in: "Arwyddwyd i fewn yn llwyddiannus." + signed_out: "Arwyddwyd allan yn llwyddiannus." passwords: - send_instructions: 'Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau.' - updated: 'Newidiwyd eich cyfrinair yn llwyddiannus. Rydych chi wedi arwyddo i fewn.' + send_instructions: "Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau." + updated: "Newidiwyd eich cyfrinair yn llwyddiannus. Rydych chi wedi arwyddo i fewn." confirmations: - send_instructions: 'Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau.' - confirmed: 'Cadarnhawyd eich cyfrif yn llwyddiannus. Rydych chi wedi arwyddo i fewn.' + send_instructions: "Byddwch yn derbyn e-bost â chyfarwyddiadau ar sut i gadarnhau eich cyfrif mewn ychydig funudau." + confirmed: "Cadarnhawyd eich cyfrif yn llwyddiannus. Rydych chi wedi arwyddo i fewn." registrations: - signed_up: 'Rydych chi wedi arwyddo i fyny yn llwyddiannus. Anfonwyd cadarnhad at eich e-bost os yw wedi'i alluogi.' - updated: 'Diweddarwyd eich cyfrif yn llwyddiannus.' - destroyed: 'Hwyl fawr! Canslwyd eich cyfrif yn llwyddiannus. Rydym yn gobeithio gweld chi eto yn fuan.' + signed_up: "Rydych chi wedi arwyddo i fyny yn llwyddiannus. Anfonwyd cadarnhad at eich e-bost os yw wedi'i alluogi." + updated: "Diweddarwyd eich cyfrif yn llwyddiannus." + destroyed: "Hwyl fawr! Canslwyd eich cyfrif yn llwyddiannus. Rydym yn gobeithio gweld chi eto yn fuan." unlocks: - send_instructions: 'Byddwch yn derbyn e-bost gyda cyfarwyddiadau ar sut i agor eich cyfrif mewn ychydig funudau.' - unlocked: 'Datglowyd eich cyfrif yn llwyddiannus. Rydych chi wedi arwyddo i fewn.' + send_instructions: "Byddwch yn derbyn e-bost gyda cyfarwyddiadau ar sut i agor eich cyfrif mewn ychydig funudau." + unlocked: "Datglowyd eich cyfrif yn llwyddiannus. Rydych chi wedi arwyddo i fewn." mailer: - confirmation_instructions: 'Cyfarwyddiadau cadarnhad.' - reset_password_instructions: 'Ailosod cyfarwyddiadau cyfrinair' - unlock_instructions: 'Cyfarwyddiadau Datgloi' - \ No newline at end of file + confirmation_instructions: "Cyfarwyddiadau cadarnhad." + reset_password_instructions: "Ailosod cyfarwyddiadau cyfrinair" + unlock_instructions: "Cyfarwyddiadau Datgloi" + From 40d736d233098d6a1d2962a4f4ca20675fefa2be Mon Sep 17 00:00:00 2001 From: maxwell Date: Thu, 23 Sep 2010 10:39:47 -0700 Subject: [PATCH 291/292] MS changed the session page to show APP_CONFIG[:terse_pod_url] --- app/views/devise/sessions/new.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 15880df0b..a2de719b5 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -10,7 +10,7 @@ = f.label :username = f.text_field :username %p.user_network - ="@#{APP_CONFIG[:pod_url]}" + ="@#{APP_CONFIG[:terse_pod_url]}" %p = f.label :password From 8c0bc4b9e60e0e94fd515ba7f595e6d08fba34af Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 23 Sep 2010 10:49:35 -0700 Subject: [PATCH 292/292] fix in person partial --- app/helpers/application_helper.rb | 6 +++++- app/views/people/_person.html.haml | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 89df26155..b6e4c4389 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -57,7 +57,11 @@ module ApplicationHelper end def person_image_link(person) - link_to person_image_tag(person), object_path(person) + if current_user.friends.include?(person) || current_user.person == person + link_to person_image_tag(person), object_path(person) + else + person_image_tag person + end end def new_request(request_count) diff --git a/app/views/people/_person.html.haml b/app/views/people/_person.html.haml index 7e22a5570..185695db1 100644 --- a/app/views/people/_person.html.haml +++ b/app/views/people/_person.html.haml @@ -8,7 +8,10 @@ .content %span.from - = link_to person.real_name, person_path(person) + - if current_user.friends.include?(person) || person.id == current_user.person.id + = link_to person.real_name, person_path(person) + - else + = person.real_name .info = person.diaspora_handle