Commit a700537c4634a1332b10c4615cd731e42b288072
Exists in
master
and in
20 other branches
Merge branch 'rails4'
Noosfero now uses Rails 4.2, and requires Debian Jessie.
Showing
1143 changed files
with
15359 additions
and
31589 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 1143 files displayed.
.travis.yml
@@ -8,8 +8,7 @@ notifications: | @@ -8,8 +8,7 @@ notifications: | ||
8 | 8 | ||
9 | language: ruby | 9 | language: ruby |
10 | rvm: | 10 | rvm: |
11 | -# for 2.2 support we need to upgrade the pg gem | ||
12 | - - 2.1.6 | 11 | + - 2.2.3 |
13 | 12 | ||
14 | sudo: false | 13 | sudo: false |
15 | addons: | 14 | addons: |
@@ -26,19 +25,16 @@ addons: | @@ -26,19 +25,16 @@ addons: | ||
26 | - libsqlite3-dev | 25 | - libsqlite3-dev |
27 | - libxslt1-dev | 26 | - libxslt1-dev |
28 | 27 | ||
29 | -before_install: | ||
30 | - - gem env | ||
31 | - | ||
32 | # workaround for https://github.com/travis-ci/travis-ci/issues/4536 | 28 | # workaround for https://github.com/travis-ci/travis-ci/issues/4536 |
33 | before_install: | 29 | before_install: |
34 | - - export GEM_HOME=$PWD/vendor/bundle/ruby/2.1.0 | 30 | + - export GEM_HOME=$PWD/vendor/bundle/ruby/2.2.0 |
35 | - gem install bundler | 31 | - gem install bundler |
36 | cache: bundler | 32 | cache: bundler |
37 | 33 | ||
38 | before_script: | 34 | before_script: |
39 | - mkdir -p tmp/{pids,cache} log | 35 | - mkdir -p tmp/{pids,cache} log |
40 | - script/noosfero-plugins disableall | 36 | - script/noosfero-plugins disableall |
41 | - - bundle exec rake makemo &>/dev/null | 37 | + #- bundle exec rake makemo &>/dev/null |
42 | # database | 38 | # database |
43 | - cp config/database.yml.travis config/database.yml | 39 | - cp config/database.yml.travis config/database.yml |
44 | - psql -c 'create database myapp_test;' -U postgres | 40 | - psql -c 'create database myapp_test;' -U postgres |
@@ -49,7 +45,7 @@ env: | @@ -49,7 +45,7 @@ env: | ||
49 | - TASK=test:units | 45 | - TASK=test:units |
50 | - TASK=test:functionals | 46 | - TASK=test:functionals |
51 | - TASK=test:integration | 47 | - TASK=test:integration |
52 | - - TASK=cucumber | 48 | + - TASK=cucumber LANG=en |
53 | - TASK=selenium | 49 | - TASK=selenium |
54 | - TASK=test:noosfero_plugins BUNDLE_OPTS=install | 50 | - TASK=test:noosfero_plugins BUNDLE_OPTS=install |
55 | 51 |
Gemfile
1 | source "https://rubygems.org" | 1 | source "https://rubygems.org" |
2 | -gem 'rails', '~> 3.2.22' | ||
3 | -gem 'minitest', '~> 3.2.0' | ||
4 | -gem 'fast_gettext', '~> 0.6.8' | ||
5 | -gem 'acts-as-taggable-on', '~> 3.4.2' | 2 | +gem 'rails', '~> 4.2.4' |
3 | +gem 'fast_gettext', '~> 0.9' | ||
4 | +gem 'acts-as-taggable-on', '~> 3.5' | ||
6 | gem 'rails_autolink', '~> 1.1.5' | 5 | gem 'rails_autolink', '~> 1.1.5' |
7 | -gem 'pg', '~> 0.13.2' | ||
8 | -gem 'rmagick', '~> 2.13.1' | ||
9 | -gem 'RedCloth', '~> 4.2.9' | ||
10 | -gem 'will_paginate', '~> 3.0.3' | 6 | +gem 'pg', '~> 0.17' |
7 | +gem 'rmagick', '~> 2.13' | ||
8 | +gem 'RedCloth', '~> 4.2' | ||
11 | gem 'ruby-feedparser', '~> 0.7' | 9 | gem 'ruby-feedparser', '~> 0.7' |
12 | -gem 'daemons', '~> 1.1.5' | 10 | +gem 'daemons', '~> 1.1' |
13 | gem 'unicorn', '~> 4.8' | 11 | gem 'unicorn', '~> 4.8' |
14 | -gem 'nokogiri', '~> 1.5.5' | 12 | +gem 'nokogiri', '~> 1.6.0' |
13 | +gem 'will_paginate' | ||
14 | +gem 'pothoven-attachment_fu', '~> 3.2.16' | ||
15 | +gem 'delayed_job' | ||
16 | +gem 'delayed_job_active_record' | ||
15 | gem 'rake', :require => false | 17 | gem 'rake', :require => false |
16 | -gem 'rest-client', '~> 1.6.7' | 18 | +gem 'rest-client', '~> 1.6' |
17 | gem 'exception_notification', '~> 4.0.1' | 19 | gem 'exception_notification', '~> 4.0.1' |
18 | -gem 'gettext', '~> 2.2.1', :require => false | ||
19 | -gem 'locale', '~> 2.0.5' | 20 | +gem 'gettext', '~> 3.1', :require => false |
21 | +gem 'locale', '~> 2.1' | ||
20 | gem 'whenever', :require => false | 22 | gem 'whenever', :require => false |
21 | -gem 'eita-jrails', '~> 0.9.5', require: 'jrails' | 23 | +gem 'eita-jrails', '~> 0.10.0', require: 'jrails' |
24 | +gem 'diffy', '~> 3.0' | ||
22 | 25 | ||
23 | # API dependencies | 26 | # API dependencies |
24 | gem 'grape', '~> 0.12' | 27 | gem 'grape', '~> 0.12' |
@@ -30,30 +33,55 @@ gem 'rack-contrib' | @@ -30,30 +33,55 @@ gem 'rack-contrib' | ||
30 | # asset pipeline | 33 | # asset pipeline |
31 | gem 'uglifier', '>= 1.0.3' | 34 | gem 'uglifier', '>= 1.0.3' |
32 | gem 'sass-rails' | 35 | gem 'sass-rails' |
33 | -gem 'sass', '~> 3.1.19' | 36 | + |
37 | +# gems to enable rails3 behaviour | ||
38 | +gem 'protected_attributes' | ||
39 | +gem 'rails-observers' | ||
40 | +gem 'actionpack-page_caching' | ||
41 | +gem 'actionpack-action_caching' | ||
42 | +gem 'activerecord-session_store' | ||
43 | +gem 'activerecord-deprecated_finders', require: 'active_record/deprecated_finders' | ||
34 | 44 | ||
35 | group :production do | 45 | group :production do |
36 | gem 'dalli', '~> 2.7.0' | 46 | gem 'dalli', '~> 2.7.0' |
37 | end | 47 | end |
38 | 48 | ||
49 | +group :development do | ||
50 | +end | ||
51 | + | ||
52 | +group :development, :test do | ||
53 | + gem 'spring' | ||
54 | +end | ||
55 | + | ||
39 | group :test do | 56 | group :test do |
40 | - gem 'rspec', '~> 2.14.0' | ||
41 | - gem 'rspec-rails', '~> 2.14.1' | 57 | + gem 'rspec', '~> 3.3' |
58 | + gem 'rspec-rails', '~> 3.2' | ||
42 | gem 'mocha', '~> 1.1.0', :require => false | 59 | gem 'mocha', '~> 1.1.0', :require => false |
43 | gem 'test-unit' if RUBY_VERSION >= '2.2.0' | 60 | gem 'test-unit' if RUBY_VERSION >= '2.2.0' |
61 | + gem 'minitest' | ||
62 | + gem 'minitest-reporters' | ||
44 | end | 63 | end |
45 | 64 | ||
46 | group :cucumber do | 65 | group :cucumber do |
47 | - gem 'cucumber-rails', '~> 1.0.6', :require => false | ||
48 | - gem 'capybara', '~> 2.1.0' | ||
49 | - gem 'cucumber', '~> 1.0.6' | ||
50 | - gem 'database_cleaner', '~> 1.2.0' | ||
51 | - gem 'selenium-webdriver', '~> 2.47.0' | 66 | + gem 'capybara', '~> 2.2' |
67 | + gem 'launchy' | ||
68 | + gem 'cucumber' | ||
69 | + gem 'cucumber-rails', '~> 1.4.2', :require => false | ||
70 | + gem 'database_cleaner', '~> 1.3' | ||
71 | + gem 'selenium-webdriver' | ||
52 | end | 72 | end |
53 | 73 | ||
54 | # Requires custom dependencies | 74 | # Requires custom dependencies |
55 | eval(File.read('config/Gemfile'), binding) rescue nil | 75 | eval(File.read('config/Gemfile'), binding) rescue nil |
56 | 76 | ||
77 | +vendor = Dir.glob('vendor/{,plugins/}*') - ['vendor/plugins'] | ||
78 | +vendor.each do |dir| | ||
79 | + plugin = File.basename dir | ||
80 | + version = if Dir.glob("#{dir}/*.gemspec").length > 0 then '> 0.0.0' else '0.0.0' end | ||
81 | + | ||
82 | + gem plugin, version, path: dir | ||
83 | +end | ||
84 | + | ||
57 | # include gemfiles from enabled plugins | 85 | # include gemfiles from enabled plugins |
58 | # plugins in baseplugins/ are not included on purpose. They should not have any | 86 | # plugins in baseplugins/ are not included on purpose. They should not have any |
59 | # dependencies. | 87 | # dependencies. |
Vagrantfile
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | 3 | ||
4 | VAGRANTFILE_API_VERSION = "2" | 4 | VAGRANTFILE_API_VERSION = "2" |
5 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | 5 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| |
6 | - config.vm.box = ENV.fetch('VAGRANT_BOX', "debian-wheezy") | 6 | + config.vm.box = ENV.fetch('VAGRANT_BOX', "debian/jessie64") |
7 | config.vm.network :forwarded_port, host: 3000, guest: 3000 | 7 | config.vm.network :forwarded_port, host: 3000, guest: 3000 |
8 | config.vm.provision :shell do |shell| | 8 | config.vm.provision :shell do |shell| |
9 | shell.inline = 'su vagrant -c /vagrant/script/vagrant' | 9 | shell.inline = 'su vagrant -c /vagrant/script/vagrant' |
app/controllers/admin/admin_panel_controller.rb
@@ -12,7 +12,7 @@ class AdminPanelController < AdminController | @@ -12,7 +12,7 @@ class AdminPanelController < AdminController | ||
12 | if params[:environment][:languages] | 12 | if params[:environment][:languages] |
13 | params[:environment][:languages] = params[:environment][:languages].map {|lang, value| lang if value=='true'}.compact | 13 | params[:environment][:languages] = params[:environment][:languages].map {|lang, value| lang if value=='true'}.compact |
14 | end | 14 | end |
15 | - if @environment.update_attributes(params[:environment]) | 15 | + if @environment.update(params[:environment]) |
16 | session[:notice] = _('Environment settings updated') | 16 | session[:notice] = _('Environment settings updated') |
17 | redirect_to :action => 'index' | 17 | redirect_to :action => 'index' |
18 | end | 18 | end |
@@ -54,7 +54,7 @@ class AdminPanelController < AdminController | @@ -54,7 +54,7 @@ class AdminPanelController < AdminController | ||
54 | 54 | ||
55 | if request.post? | 55 | if request.post? |
56 | env = environment | 56 | env = environment |
57 | - folders = params[:folders].map{|fid| Folder.find(:first, :conditions => {:profile_id => env.portal_community, :id => fid})} if params[:folders] | 57 | + folders = env.portal_community.folders.where(id: params[:folders]).order(params[:folders].reverse.map{ |f| "id=#{f}" }) if params[:folders] |
58 | env.portal_folders = folders | 58 | env.portal_folders = folders |
59 | if env.save | 59 | if env.save |
60 | session[:notice] = _('Saved the portal folders') | 60 | session[:notice] = _('Saved the portal folders') |
@@ -65,7 +65,7 @@ class AdminPanelController < AdminController | @@ -65,7 +65,7 @@ class AdminPanelController < AdminController | ||
65 | 65 | ||
66 | def set_portal_news_amount | 66 | def set_portal_news_amount |
67 | if request.post? | 67 | if request.post? |
68 | - if @environment.update_attributes(params[:environment]) | 68 | + if @environment.update(params[:environment]) |
69 | session[:notice] = _('Saved the number of news on folders') | 69 | session[:notice] = _('Saved the number of news on folders') |
70 | redirect_to :action => 'index' | 70 | redirect_to :action => 'index' |
71 | end | 71 | end |
app/controllers/admin/categories_controller.rb
1 | class CategoriesController < AdminController | 1 | class CategoriesController < AdminController |
2 | 2 | ||
3 | protect 'manage_environment_categories', :environment | 3 | protect 'manage_environment_categories', :environment |
4 | - | 4 | + |
5 | helper :categories | 5 | helper :categories |
6 | 6 | ||
7 | def index | 7 | def index |
8 | - @categories = environment.categories.find(:all, :conditions => "parent_id is null AND type is null") | ||
9 | - @regions = environment.regions.find(:all, :conditions => {:parent_id => nil}) | ||
10 | - @product_categories = environment.product_categories.find(:all, :conditions => {:parent_id => nil}) | 8 | + @categories = environment.categories.where("parent_id is null AND type is null") |
9 | + @regions = environment.regions.where(:parent_id => nil) | ||
10 | + @product_categories = environment.product_categories.where(:parent_id => nil) | ||
11 | end | 11 | end |
12 | 12 | ||
13 | def get_children | 13 | def get_children |
@@ -43,7 +43,7 @@ class CategoriesController < AdminController | @@ -43,7 +43,7 @@ class CategoriesController < AdminController | ||
43 | begin | 43 | begin |
44 | @category = environment.categories.find(params[:id]) | 44 | @category = environment.categories.find(params[:id]) |
45 | if request.post? | 45 | if request.post? |
46 | - @category.update_attributes!(params[:category]) | 46 | + @category.update!(params[:category]) |
47 | @saved = true | 47 | @saved = true |
48 | session[:notice] = _("Category %s saved." % @category.name) | 48 | session[:notice] = _("Category %s saved." % @category.name) |
49 | redirect_to :action => 'index' | 49 | redirect_to :action => 'index' |
app/controllers/admin/environment_role_manager_controller.rb
@@ -2,7 +2,7 @@ class EnvironmentRoleManagerController < AdminController | @@ -2,7 +2,7 @@ class EnvironmentRoleManagerController < AdminController | ||
2 | protect 'manage_environment_roles', :environment | 2 | protect 'manage_environment_roles', :environment |
3 | 3 | ||
4 | def index | 4 | def index |
5 | - @admins = Person.find(:all, :conditions => ['role_assignments.resource_type = ?', 'Environment'], :include => :role_assignments ) | 5 | + @admins = Person.where('role_assignments.resource_type = ?', 'Environment').includes(:role_assignments) |
6 | end | 6 | end |
7 | 7 | ||
8 | def change_roles | 8 | def change_roles |
app/controllers/admin/features_controller.rb
1 | class FeaturesController < AdminController | 1 | class FeaturesController < AdminController |
2 | protect 'edit_environment_features', :environment | 2 | protect 'edit_environment_features', :environment |
3 | - | 3 | + |
4 | def index | 4 | def index |
5 | @features = Environment.available_features.sort_by{|k,v|v} | 5 | @features = Environment.available_features.sort_by{|k,v|v} |
6 | end | 6 | end |
7 | 7 | ||
8 | post_only :update | 8 | post_only :update |
9 | def update | 9 | def update |
10 | - if @environment.update_attributes(params[:environment]) | 10 | + if @environment.update(params[:environment]) |
11 | session[:notice] = _('Features updated successfully.') | 11 | session[:notice] = _('Features updated successfully.') |
12 | redirect_to :action => 'index' | 12 | redirect_to :action => 'index' |
13 | else | 13 | else |
@@ -53,7 +53,7 @@ class FeaturesController < AdminController | @@ -53,7 +53,7 @@ class FeaturesController < AdminController | ||
53 | 53 | ||
54 | def search_members | 54 | def search_members |
55 | arg = params[:q].downcase | 55 | arg = params[:q].downcase |
56 | - result = environment.people.find(:all, :conditions => ['LOWER(name) LIKE ? OR identifier LIKE ?', "%#{arg}%", "%#{arg}%"]) | 56 | + result = environment.people.where('LOWER(name) LIKE ? OR identifier LIKE ?', "%#{arg}%", "%#{arg}%") |
57 | render :text => prepare_to_token_input(result).to_json | 57 | render :text => prepare_to_token_input(result).to_json |
58 | end | 58 | end |
59 | 59 |
app/controllers/admin/licenses_controller.rb
@@ -23,7 +23,7 @@ class LicensesController < AdminController | @@ -23,7 +23,7 @@ class LicensesController < AdminController | ||
23 | @license = environment.licenses.find(params[:license_id]) | 23 | @license = environment.licenses.find(params[:license_id]) |
24 | if request.post? | 24 | if request.post? |
25 | begin | 25 | begin |
26 | - @license.update_attributes!(params[:license]) | 26 | + @license.update!(params[:license]) |
27 | session[:notice] = _('License updated') | 27 | session[:notice] = _('License updated') |
28 | redirect_to :action => 'index' | 28 | redirect_to :action => 'index' |
29 | rescue | 29 | rescue |
app/controllers/admin/plugins_controller.rb
@@ -8,7 +8,7 @@ class PluginsController < AdminController | @@ -8,7 +8,7 @@ class PluginsController < AdminController | ||
8 | post_only :update | 8 | post_only :update |
9 | def update | 9 | def update |
10 | params[:environment][:enabled_plugins].delete('') | 10 | params[:environment][:enabled_plugins].delete('') |
11 | - if @environment.update_attributes(params[:environment]) | 11 | + if @environment.update(params[:environment]) |
12 | session[:notice] = _('Plugins updated successfully.') | 12 | session[:notice] = _('Plugins updated successfully.') |
13 | else | 13 | else |
14 | session[:error] = _('Plugins were not updated successfully.') | 14 | session[:error] = _('Plugins were not updated successfully.') |
app/controllers/admin/role_controller.rb
@@ -29,7 +29,7 @@ class RoleController < AdminController | @@ -29,7 +29,7 @@ class RoleController < AdminController | ||
29 | 29 | ||
30 | def update | 30 | def update |
31 | @role = environment.roles.find(params[:id]) | 31 | @role = environment.roles.find(params[:id]) |
32 | - if @role.update_attributes(params[:role]) | 32 | + if @role.update(params[:role]) |
33 | redirect_to :action => 'show', :id => @role | 33 | redirect_to :action => 'show', :id => @role |
34 | else | 34 | else |
35 | session[:notice] = _('Failed to edit role') | 35 | session[:notice] = _('Failed to edit role') |
app/controllers/admin/users_controller.rb
@@ -63,7 +63,7 @@ class UsersController < AdminController | @@ -63,7 +63,7 @@ class UsersController < AdminController | ||
63 | respond_to do |format| | 63 | respond_to do |format| |
64 | format.html | 64 | format.html |
65 | format.xml do | 65 | format.xml do |
66 | - users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person]) | 66 | + users = User.where(:environment_id => environment.id).includes(:person) |
67 | send_data users.to_xml( | 67 | send_data users.to_xml( |
68 | :skip_types => true, | 68 | :skip_types => true, |
69 | :only => %w[email login created_at updated_at], | 69 | :only => %w[email login created_at updated_at], |
app/controllers/application.rb
@@ -1 +0,0 @@ | @@ -1 +0,0 @@ | ||
1 | -require 'application_controller' |
app/controllers/application_controller.rb
@@ -8,7 +8,7 @@ class ApplicationController < ActionController::Base | @@ -8,7 +8,7 @@ class ApplicationController < ActionController::Base | ||
8 | before_filter :init_noosfero_plugins | 8 | before_filter :init_noosfero_plugins |
9 | before_filter :allow_cross_domain_access | 9 | before_filter :allow_cross_domain_access |
10 | 10 | ||
11 | - before_filter :login_from_cookie | 11 | + include AuthenticatedSystem |
12 | before_filter :require_login_for_environment, :if => :private_environment? | 12 | before_filter :require_login_for_environment, :if => :private_environment? |
13 | 13 | ||
14 | before_filter :verify_members_whitelist, :if => [:private_environment?, :user] | 14 | before_filter :verify_members_whitelist, :if => [:private_environment?, :user] |
@@ -45,7 +45,7 @@ class ApplicationController < ActionController::Base | @@ -45,7 +45,7 @@ class ApplicationController < ActionController::Base | ||
45 | include ApplicationHelper | 45 | include ApplicationHelper |
46 | layout :get_layout | 46 | layout :get_layout |
47 | def get_layout | 47 | def get_layout |
48 | - return nil if request.format == :js or request.xhr? | 48 | + return false if request.format == :js or request.xhr? |
49 | 49 | ||
50 | theme_layout = theme_option(:layout) | 50 | theme_layout = theme_option(:layout) |
51 | if theme_layout | 51 | if theme_layout |
@@ -69,15 +69,12 @@ class ApplicationController < ActionController::Base | @@ -69,15 +69,12 @@ class ApplicationController < ActionController::Base | ||
69 | helper :language | 69 | helper :language |
70 | 70 | ||
71 | include DesignHelper | 71 | include DesignHelper |
72 | - | ||
73 | - # Be sure to include AuthenticationSystem in Application Controller instead | ||
74 | - include AuthenticatedSystem | ||
75 | include PermissionCheck | 72 | include PermissionCheck |
76 | 73 | ||
77 | before_filter :set_locale | 74 | before_filter :set_locale |
78 | def set_locale | 75 | def set_locale |
79 | FastGettext.available_locales = environment.available_locales | 76 | FastGettext.available_locales = environment.available_locales |
80 | - FastGettext.default_locale = environment.default_locale | 77 | + FastGettext.default_locale = environment.default_locale || 'en' |
81 | FastGettext.locale = (params[:lang] || session[:lang] || environment.default_locale || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en') | 78 | FastGettext.locale = (params[:lang] || session[:lang] || environment.default_locale || request.env['HTTP_ACCEPT_LANGUAGE'] || 'en') |
82 | I18n.locale = FastGettext.locale.to_s.gsub '_', '-' | 79 | I18n.locale = FastGettext.locale.to_s.gsub '_', '-' |
83 | I18n.default_locale = FastGettext.default_locale.to_s.gsub '_', '-' | 80 | I18n.default_locale = FastGettext.default_locale.to_s.gsub '_', '-' |
@@ -148,7 +145,7 @@ class ApplicationController < ActionController::Base | @@ -148,7 +145,7 @@ class ApplicationController < ActionController::Base | ||
148 | # Check if the requested profile belongs to another domain | 145 | # Check if the requested profile belongs to another domain |
149 | if @profile && !params[:profile].blank? && params[:profile] != @profile.identifier | 146 | if @profile && !params[:profile].blank? && params[:profile] != @profile.identifier |
150 | @profile = @environment.profiles.find_by_identifier params[:profile] | 147 | @profile = @environment.profiles.find_by_identifier params[:profile] |
151 | - redirect_to params.merge(:host => @profile.default_hostname) | 148 | + redirect_to url_for(params.merge host: @profile.default_hostname) |
152 | end | 149 | end |
153 | end | 150 | end |
154 | end | 151 | end |
@@ -163,7 +160,8 @@ class ApplicationController < ActionController::Base | @@ -163,7 +160,8 @@ class ApplicationController < ActionController::Base | ||
163 | def render_not_found(path = nil) | 160 | def render_not_found(path = nil) |
164 | @no_design_blocks = true | 161 | @no_design_blocks = true |
165 | @path ||= request.path | 162 | @path ||= request.path |
166 | - render :template => 'shared/not_found.html.erb', :status => 404, :layout => get_layout | 163 | + # force html template even if the browser asked for a image |
164 | + render template: 'shared/not_found', status: 404, layout: get_layout, formats: [:html] | ||
167 | end | 165 | end |
168 | alias :render_404 :render_not_found | 166 | alias :render_404 :render_not_found |
169 | 167 | ||
@@ -171,7 +169,8 @@ class ApplicationController < ActionController::Base | @@ -171,7 +169,8 @@ class ApplicationController < ActionController::Base | ||
171 | @no_design_blocks = true | 169 | @no_design_blocks = true |
172 | @message = message | 170 | @message = message |
173 | @title = title | 171 | @title = title |
174 | - render :template => 'shared/access_denied.html.erb', :status => 403 | 172 | + # force html template even if the browser asked for a image |
173 | + render template: 'shared/access_denied', status: 403, formats: [:html] | ||
175 | end | 174 | end |
176 | 175 | ||
177 | def load_category | 176 | def load_category |
@@ -204,7 +203,7 @@ class ApplicationController < ActionController::Base | @@ -204,7 +203,7 @@ class ApplicationController < ActionController::Base | ||
204 | def redirect_to_current_user | 203 | def redirect_to_current_user |
205 | if params[:profile] == '~' | 204 | if params[:profile] == '~' |
206 | if logged_in? | 205 | if logged_in? |
207 | - redirect_to params.merge(:profile => user.identifier) | 206 | + redirect_to url_for(params.merge profile: user.identifier) |
208 | else | 207 | else |
209 | render_not_found | 208 | render_not_found |
210 | end | 209 | end |
app/controllers/box_organizer_controller.rb
@@ -84,9 +84,9 @@ class BoxOrganizerController < ApplicationController | @@ -84,9 +84,9 @@ class BoxOrganizerController < ApplicationController | ||
84 | if request.xhr? and params[:query] | 84 | if request.xhr? and params[:query] |
85 | search = params[:query] | 85 | search = params[:query] |
86 | path_list = if boxes_holder.is_a?(Environment) && boxes_holder.enabled?('use_portal_community') && boxes_holder.portal_community | 86 | path_list = if boxes_holder.is_a?(Environment) && boxes_holder.enabled?('use_portal_community') && boxes_holder.portal_community |
87 | - boxes_holder.portal_community.articles.find(:all, :conditions=>"name ILIKE '%#{search}%' or path ILIKE '%#{search}%'", :limit=>20).map { |content| "/{portal}/"+content.path } | 87 | + boxes_holder.portal_community.articles.where("name ILIKE ? OR path ILIKE ?", "%#{search}%", "%#{search}%").limit(20).map { |content| "/{portal}/"+content.path } |
88 | elsif boxes_holder.is_a?(Profile) | 88 | elsif boxes_holder.is_a?(Profile) |
89 | - boxes_holder.articles.find(:all, :conditions=>"name ILIKE '%#{search}%' or path ILIKE '%#{search}%'", :limit=>20).map { |content| "/{profile}/"+content.path } | 89 | + boxes_holder.articles.where("name ILIKE ? OR path ILIKE ?", "%#{search}%", "%#{search}%").limit(20).map { |content| "/{profile}/"+content.path } |
90 | else | 90 | else |
91 | [] | 91 | [] |
92 | end | 92 | end |
@@ -98,7 +98,7 @@ class BoxOrganizerController < ApplicationController | @@ -98,7 +98,7 @@ class BoxOrganizerController < ApplicationController | ||
98 | 98 | ||
99 | def save | 99 | def save |
100 | @block = boxes_holder.blocks.find(params[:id]) | 100 | @block = boxes_holder.blocks.find(params[:id]) |
101 | - @block.update_attributes(params[:block]) | 101 | + @block.update(params[:block]) |
102 | redirect_to :action => 'index' | 102 | redirect_to :action => 'index' |
103 | end | 103 | end |
104 | 104 |
app/controllers/my_profile/cms_controller.rb
@@ -6,7 +6,7 @@ class CmsController < MyProfileController | @@ -6,7 +6,7 @@ class CmsController < MyProfileController | ||
6 | 6 | ||
7 | def search_tags | 7 | def search_tags |
8 | arg = params[:term].downcase | 8 | arg = params[:term].downcase |
9 | - result = ActsAsTaggableOn::Tag.where('name ILIKE ?', "%#{arg}%").limit(10) | 9 | + result = Tag.where('name ILIKE ?', "%#{arg}%").limit(10) |
10 | render :text => prepare_to_token_input_by_label(result).to_json, :content_type => 'application/json' | 10 | render :text => prepare_to_token_input_by_label(result).to_json, :content_type => 'application/json' |
11 | end | 11 | end |
12 | 12 | ||
@@ -50,16 +50,9 @@ class CmsController < MyProfileController | @@ -50,16 +50,9 @@ class CmsController < MyProfileController | ||
50 | 50 | ||
51 | def view | 51 | def view |
52 | @article = profile.articles.find(params[:id]) | 52 | @article = profile.articles.find(params[:id]) |
53 | - conditions = [] | ||
54 | - if @article.has_posts? | ||
55 | - conditions = ['type != ?', 'RssFeed'] | ||
56 | - end | ||
57 | - | ||
58 | - @articles = @article.children.reorder("case when type = 'Folder' then 0 when type ='Blog' then 1 else 2 end, updated_at DESC, name").paginate( | ||
59 | - :conditions => conditions, | ||
60 | - :per_page => per_page, | ||
61 | - :page => params[:npage] | ||
62 | - ) | 53 | + @articles = @article.children.reorder("case when type = 'Folder' then 0 when type ='Blog' then 1 else 2 end, updated_at DESC, name") |
54 | + @articles = @articles.where "type <> ?", 'RssFeed' if @article.has_posts? | ||
55 | + @articles = @articles.paginate per_page: per_page, page: params[:npage] | ||
63 | end | 56 | end |
64 | 57 | ||
65 | def index | 58 | def index |
@@ -99,7 +92,7 @@ class CmsController < MyProfileController | @@ -99,7 +92,7 @@ class CmsController < MyProfileController | ||
99 | @article.image.save! | 92 | @article.image.save! |
100 | end | 93 | end |
101 | @article.last_changed_by = user | 94 | @article.last_changed_by = user |
102 | - if @article.update_attributes(params[:article]) | 95 | + if @article.update(params[:article]) |
103 | if !continue | 96 | if !continue |
104 | if @article.content_type.nil? || @article.image? | 97 | if @article.content_type.nil? || @article.image? |
105 | success_redirect | 98 | success_redirect |
@@ -230,7 +223,7 @@ class CmsController < MyProfileController | @@ -230,7 +223,7 @@ class CmsController < MyProfileController | ||
230 | else | 223 | else |
231 | session[:notice] = _('File(s) successfully uploaded') | 224 | session[:notice] = _('File(s) successfully uploaded') |
232 | if @back_to | 225 | if @back_to |
233 | - redirect_to @back_to | 226 | + redirect_to url_for(@back_to) |
234 | elsif @parent | 227 | elsif @parent |
235 | redirect_to :action => 'view', :id => @parent.id | 228 | redirect_to :action => 'view', :id => @parent.id |
236 | else | 229 | else |
@@ -381,7 +374,7 @@ class CmsController < MyProfileController | @@ -381,7 +374,7 @@ class CmsController < MyProfileController | ||
381 | 374 | ||
382 | def search_article_privacy_exceptions | 375 | def search_article_privacy_exceptions |
383 | arg = params[:q].downcase | 376 | arg = params[:q].downcase |
384 | - result = profile.members.find(:all, :conditions => ['LOWER(name) LIKE ?', "%#{arg}%"]) | 377 | + result = profile.members.where('LOWER(name) LIKE ?', "%#{arg}%") |
385 | render :text => prepare_to_token_input(result).to_json | 378 | render :text => prepare_to_token_input(result).to_json |
386 | end | 379 | end |
387 | 380 |
app/controllers/my_profile/enterprise_validation_controller.rb
@@ -54,7 +54,7 @@ class EnterpriseValidationController < MyProfileController | @@ -54,7 +54,7 @@ class EnterpriseValidationController < MyProfileController | ||
54 | def edit_validation_info | 54 | def edit_validation_info |
55 | @info = profile.validation_info | 55 | @info = profile.validation_info |
56 | if request.post? | 56 | if request.post? |
57 | - if @info.update_attributes(params[:info]) | 57 | + if @info.update(params[:info]) |
58 | redirect_to :action => 'index' | 58 | redirect_to :action => 'index' |
59 | end | 59 | end |
60 | end | 60 | end |
app/controllers/my_profile/manage_products_controller.rb
@@ -69,7 +69,7 @@ class ManageProductsController < ApplicationController | @@ -69,7 +69,7 @@ class ManageProductsController < ApplicationController | ||
69 | field = params[:field] | 69 | field = params[:field] |
70 | if request.post? | 70 | if request.post? |
71 | begin | 71 | begin |
72 | - @product.update_attributes!(params[:product]) | 72 | + @product.update!(params[:product]) |
73 | render :partial => "display_#{field}", :locals => {:product => @product} | 73 | render :partial => "display_#{field}", :locals => {:product => @product} |
74 | rescue Exception => e | 74 | rescue Exception => e |
75 | render :partial => "edit_#{field}", :locals => {:product => @product, :errors => true} | 75 | render :partial => "edit_#{field}", :locals => {:product => @product, :errors => true} |
@@ -86,7 +86,7 @@ class ManageProductsController < ApplicationController | @@ -86,7 +86,7 @@ class ManageProductsController < ApplicationController | ||
86 | @edit = true | 86 | @edit = true |
87 | @level = @category.level | 87 | @level = @category.level |
88 | if request.post? | 88 | if request.post? |
89 | - if @product.update_attributes({:product_category_id => params[:selected_category_id]}, :without_protection => true) | 89 | + if @product.update({:product_category_id => params[:selected_category_id]}, :without_protection => true) |
90 | render :partial => 'shared/redirect_via_javascript', | 90 | render :partial => 'shared/redirect_via_javascript', |
91 | :locals => { :url => url_for(:controller => 'manage_products', :action => 'show', :id => @product) } | 91 | :locals => { :url => url_for(:controller => 'manage_products', :action => 'show', :id => @product) } |
92 | else | 92 | else |
@@ -115,7 +115,7 @@ class ManageProductsController < ApplicationController | @@ -115,7 +115,7 @@ class ManageProductsController < ApplicationController | ||
115 | @categories = ProductCategory.top_level_for(environment) | 115 | @categories = ProductCategory.top_level_for(environment) |
116 | @level = 0 | 116 | @level = 0 |
117 | if request.post? | 117 | if request.post? |
118 | - if @input.update_attributes(:product_category_id => params[:selected_category_id]) | 118 | + if @input.update(:product_category_id => params[:selected_category_id]) |
119 | @inputs = @product.inputs | 119 | @inputs = @product.inputs |
120 | render :partial => 'display_inputs' | 120 | render :partial => 'display_inputs' |
121 | else | 121 | else |
@@ -172,7 +172,7 @@ class ManageProductsController < ApplicationController | @@ -172,7 +172,7 @@ class ManageProductsController < ApplicationController | ||
172 | @input = @profile.inputs.find_by_id(params[:id]) | 172 | @input = @profile.inputs.find_by_id(params[:id]) |
173 | if @input | 173 | if @input |
174 | if request.post? | 174 | if request.post? |
175 | - if @input.update_attributes(params[:input]) | 175 | + if @input.update(params[:input]) |
176 | render :partial => 'display_input', :locals => {:input => @input} | 176 | render :partial => 'display_input', :locals => {:input => @input} |
177 | else | 177 | else |
178 | render :partial => 'edit_input' | 178 | render :partial => 'edit_input' |
app/controllers/my_profile/maps_controller.rb
@@ -15,7 +15,7 @@ class MapsController < MyProfileController | @@ -15,7 +15,7 @@ class MapsController < MyProfileController | ||
15 | end | 15 | end |
16 | 16 | ||
17 | Profile.transaction do | 17 | Profile.transaction do |
18 | - if profile.update_attributes!(params[:profile_data]) | 18 | + if profile.update!(params[:profile_data]) |
19 | BlockSweeper.expire_blocks profile.blocks.select{ |b| b.class == LocationBlock } | 19 | BlockSweeper.expire_blocks profile.blocks.select{ |b| b.class == LocationBlock } |
20 | session[:notice] = _('Address was updated successfully!') | 20 | session[:notice] = _('Address was updated successfully!') |
21 | redirect_to :action => 'edit_location' | 21 | redirect_to :action => 'edit_location' |
app/controllers/my_profile/profile_editor_controller.rb
@@ -27,7 +27,7 @@ class ProfileEditorController < MyProfileController | @@ -27,7 +27,7 @@ class ProfileEditorController < MyProfileController | ||
27 | Image.transaction do | 27 | Image.transaction do |
28 | begin | 28 | begin |
29 | @plugins.dispatch(:profile_editor_transaction_extras) | 29 | @plugins.dispatch(:profile_editor_transaction_extras) |
30 | - @profile_data.update_attributes!(params[:profile_data]) | 30 | + @profile_data.update!(params[:profile_data]) |
31 | redirect_to :action => 'index', :profile => profile.identifier | 31 | redirect_to :action => 'index', :profile => profile.identifier |
32 | rescue Exception => ex | 32 | rescue Exception => ex |
33 | profile.identifier = params[:profile] if profile.identifier.blank? | 33 | profile.identifier = params[:profile] if profile.identifier.blank? |
@@ -83,7 +83,7 @@ class ProfileEditorController < MyProfileController | @@ -83,7 +83,7 @@ class ProfileEditorController < MyProfileController | ||
83 | if @profile.destroy | 83 | if @profile.destroy |
84 | session[:notice] = _('The profile was deleted.') | 84 | session[:notice] = _('The profile was deleted.') |
85 | if(params[:return_to]) | 85 | if(params[:return_to]) |
86 | - redirect_to params[:return_to] | 86 | + redirect_to url_for(params[:return_to]) |
87 | else | 87 | else |
88 | redirect_to :controller => 'home' | 88 | redirect_to :controller => 'home' |
89 | end | 89 | end |
@@ -97,7 +97,7 @@ class ProfileEditorController < MyProfileController | @@ -97,7 +97,7 @@ class ProfileEditorController < MyProfileController | ||
97 | @welcome_page = profile.welcome_page || TinyMceArticle.new(:name => 'Welcome Page', :profile => profile, :published => false) | 97 | @welcome_page = profile.welcome_page || TinyMceArticle.new(:name => 'Welcome Page', :profile => profile, :published => false) |
98 | if request.post? | 98 | if request.post? |
99 | begin | 99 | begin |
100 | - @welcome_page.update_attributes!(params[:welcome_page]) | 100 | + @welcome_page.update!(params[:welcome_page]) |
101 | profile.welcome_page = @welcome_page | 101 | profile.welcome_page = @welcome_page |
102 | profile.save! | 102 | profile.save! |
103 | session[:notice] = _('Welcome page saved successfully.') | 103 | session[:notice] = _('Welcome page saved successfully.') |
app/controllers/my_profile/profile_members_controller.rb
@@ -47,7 +47,7 @@ class ProfileMembersController < MyProfileController | @@ -47,7 +47,7 @@ class ProfileMembersController < MyProfileController | ||
47 | end | 47 | end |
48 | 48 | ||
49 | def remove_role | 49 | def remove_role |
50 | - @association = RoleAssignment.find(:all, :conditions => {:id => params[:id], :target_id => profile.id}) | 50 | + @association = RoleAssignment.where(:id => params[:id], :target_id => profile.id) |
51 | if @association.destroy | 51 | if @association.destroy |
52 | session[:notice] = 'Member succefully unassociated' | 52 | session[:notice] = 'Member succefully unassociated' |
53 | else | 53 | else |
@@ -120,7 +120,7 @@ class ProfileMembersController < MyProfileController | @@ -120,7 +120,7 @@ class ProfileMembersController < MyProfileController | ||
120 | 120 | ||
121 | def search_user | 121 | def search_user |
122 | role = Role.find(params[:role]) | 122 | role = Role.find(params[:role]) |
123 | - render :text => environment.people.find(:all, :conditions => ['LOWER(name) LIKE ? OR LOWER(identifier) LIKE ?', "%#{params['q_'+role.key]}%", "%#{params['q_'+role.key]}%"]). | 123 | + render :text => environment.people.where('LOWER(name) LIKE ? OR LOWER(identifier) LIKE ?', "%#{params['q_'+role.key]}%", "%#{params['q_'+role.key]}%"). |
124 | select { |person| !profile.members_by_role(role).include?(person) }. | 124 | select { |person| !profile.members_by_role(role).include?(person) }. |
125 | map {|person| {:id => person.id, :name => person.name} }. | 125 | map {|person| {:id => person.id, :name => person.name} }. |
126 | to_json | 126 | to_json |
app/controllers/my_profile/profile_roles_controller.rb
@@ -58,7 +58,7 @@ class ProfileRolesController < MyProfileController | @@ -58,7 +58,7 @@ class ProfileRolesController < MyProfileController | ||
58 | 58 | ||
59 | def update | 59 | def update |
60 | @role = environment.roles.find(params[:id]) | 60 | @role = environment.roles.find(params[:id]) |
61 | - if @role.update_attributes(params[:role]) | 61 | + if @role.update(params[:role]) |
62 | redirect_to :action => 'show', :id => @role | 62 | redirect_to :action => 'show', :id => @role |
63 | else | 63 | else |
64 | session[:notice] = _('Failed to edit role') | 64 | session[:notice] = _('Failed to edit role') |
app/controllers/my_profile/tasks_controller.rb
@@ -48,7 +48,7 @@ class TasksController < MyProfileController | @@ -48,7 +48,7 @@ class TasksController < MyProfileController | ||
48 | if request.post? && VALID_DECISIONS.include?(decision) && id && decision != 'skip' | 48 | if request.post? && VALID_DECISIONS.include?(decision) && id && decision != 'skip' |
49 | task = profile.find_in_all_tasks(id) | 49 | task = profile.find_in_all_tasks(id) |
50 | begin | 50 | begin |
51 | - task.update_attributes(value[:task]) | 51 | + task.update(value[:task]) |
52 | task.send(decision, current_person) | 52 | task.send(decision, current_person) |
53 | rescue Exception => ex | 53 | rescue Exception => ex |
54 | message = "#{task.title} (#{task.requestor ? task.requestor.name : task.author_name})" | 54 | message = "#{task.title} (#{task.requestor ? task.requestor.name : task.author_name})" |
@@ -86,7 +86,7 @@ class TasksController < MyProfileController | @@ -86,7 +86,7 @@ class TasksController < MyProfileController | ||
86 | end | 86 | end |
87 | 87 | ||
88 | def ticket_details | 88 | def ticket_details |
89 | - @ticket = Ticket.find(:first, :conditions => ['(requestor_id = ? or target_id = ?) and id = ?', profile.id, profile.id, params[:id]]) | 89 | + @ticket = Ticket.where('(requestor_id = ? or target_id = ?) and id = ?', profile.id, profile.id, params[:id]).first |
90 | end | 90 | end |
91 | 91 | ||
92 | end | 92 | end |
app/controllers/public/account_controller.rb
@@ -117,9 +117,9 @@ class AccountController < ApplicationController | @@ -117,9 +117,9 @@ class AccountController < ApplicationController | ||
117 | @user.signup! | 117 | @user.signup! |
118 | owner_role = Role.find_by_name('owner') | 118 | owner_role = Role.find_by_name('owner') |
119 | @user.person.affiliate(@user.person, [owner_role]) if owner_role | 119 | @user.person.affiliate(@user.person, [owner_role]) if owner_role |
120 | - invitation = Task.find_by_code(@invitation_code) | 120 | + invitation = Task.from_code(@invitation_code).first |
121 | if invitation | 121 | if invitation |
122 | - invitation.update_attributes!({:friend => @user.person}) | 122 | + invitation.update! friend: @user.person |
123 | invitation.finish | 123 | invitation.finish |
124 | end | 124 | end |
125 | 125 | ||
@@ -209,7 +209,7 @@ class AccountController < ApplicationController | @@ -209,7 +209,7 @@ class AccountController < ApplicationController | ||
209 | # | 209 | # |
210 | # Posts back. | 210 | # Posts back. |
211 | def new_password | 211 | def new_password |
212 | - @change_password = ChangePassword.find_by_code(params[:code]) | 212 | + @change_password = ChangePassword.from_code(params[:code]).first |
213 | 213 | ||
214 | unless @change_password | 214 | unless @change_password |
215 | render :action => 'invalid_change_password_code', :status => 403 | 215 | render :action => 'invalid_change_password_code', :status => 403 |
@@ -218,7 +218,7 @@ class AccountController < ApplicationController | @@ -218,7 +218,7 @@ class AccountController < ApplicationController | ||
218 | 218 | ||
219 | if request.post? | 219 | if request.post? |
220 | begin | 220 | begin |
221 | - @change_password.update_attributes!(params[:change_password]) | 221 | + @change_password.update!(params[:change_password]) |
222 | @change_password.finish | 222 | @change_password.finish |
223 | render :action => 'new_password_ok' | 223 | render :action => 'new_password_ok' |
224 | rescue ActiveRecord::RecordInvalid => e | 224 | rescue ActiveRecord::RecordInvalid => e |
@@ -402,7 +402,7 @@ class AccountController < ApplicationController | @@ -402,7 +402,7 @@ class AccountController < ApplicationController | ||
402 | end | 402 | end |
403 | 403 | ||
404 | def load_enterprise_activation | 404 | def load_enterprise_activation |
405 | - @enterprise_activation ||= EnterpriseActivation.find_by_code(params[:enterprise_code]) | 405 | + @enterprise_activation ||= EnterpriseActivation.from_code(params[:enterprise_code]).first |
406 | end | 406 | end |
407 | 407 | ||
408 | def load_enterprise | 408 | def load_enterprise |
@@ -426,7 +426,7 @@ class AccountController < ApplicationController | @@ -426,7 +426,7 @@ class AccountController < ApplicationController | ||
426 | 426 | ||
427 | def go_to_initial_page | 427 | def go_to_initial_page |
428 | if params[:return_to] | 428 | if params[:return_to] |
429 | - redirect_to params[:return_to] | 429 | + redirect_to url_for(params[:return_to]) |
430 | elsif environment.enabled?('allow_change_of_redirection_after_login') | 430 | elsif environment.enabled?('allow_change_of_redirection_after_login') |
431 | check_redirection_options(user, user.preferred_login_redirection, user.admin_url) | 431 | check_redirection_options(user, user.preferred_login_redirection, user.admin_url) |
432 | else | 432 | else |
@@ -487,7 +487,7 @@ class AccountController < ApplicationController | @@ -487,7 +487,7 @@ class AccountController < ApplicationController | ||
487 | def check_redirection | 487 | def check_redirection |
488 | unless params[:redirection].blank? | 488 | unless params[:redirection].blank? |
489 | session[:return_to] = @user.return_to | 489 | session[:return_to] = @user.return_to |
490 | - @user.update_attributes(:return_to => nil) | 490 | + @user.update(:return_to => nil) |
491 | end | 491 | end |
492 | end | 492 | end |
493 | 493 |
app/controllers/public/chat_controller.rb
@@ -67,7 +67,7 @@ class ChatController < PublicController | @@ -67,7 +67,7 @@ class ChatController < PublicController | ||
67 | 67 | ||
68 | def update_presence_status | 68 | def update_presence_status |
69 | if request.xhr? | 69 | if request.xhr? |
70 | - current_user.update_attributes({:chat_status_at => DateTime.now}.merge(params[:status] || {})) | 70 | + current_user.update({:chat_status_at => DateTime.now}.merge(params[:status] || {})) |
71 | end | 71 | end |
72 | render :nothing => true | 72 | render :nothing => true |
73 | end | 73 | end |
app/controllers/public/comment_controller.rb
@@ -78,7 +78,7 @@ class CommentController < ApplicationController | @@ -78,7 +78,7 @@ class CommentController < ApplicationController | ||
78 | respond_to do |format| | 78 | respond_to do |format| |
79 | format.js do | 79 | format.js do |
80 | comment_to_render = @comment.comment_root | 80 | comment_to_render = @comment.comment_root |
81 | - render :json => { | 81 | + render :json => { |
82 | :render_target => comment_to_render.anchor, | 82 | :render_target => comment_to_render.anchor, |
83 | :html => render_to_string(:partial => 'comment', :locals => {:comment => comment_to_render, :display_link => true}), | 83 | :html => render_to_string(:partial => 'comment', :locals => {:comment => comment_to_render, :display_link => true}), |
84 | :msg => _('Comment successfully created.') | 84 | :msg => _('Comment successfully created.') |
@@ -114,7 +114,7 @@ class CommentController < ApplicationController | @@ -114,7 +114,7 @@ class CommentController < ApplicationController | ||
114 | end | 114 | end |
115 | 115 | ||
116 | def update | 116 | def update |
117 | - if @comment.update_attributes(params[:comment]) | 117 | + if @comment.update(params[:comment]) |
118 | @plugins.dispatch(:process_extra_comment_params, [@comment,params]) | 118 | @plugins.dispatch(:process_extra_comment_params, [@comment,params]) |
119 | 119 | ||
120 | respond_to do |format| | 120 | respond_to do |format| |
app/controllers/public/enterprise_registration_controller.rb
@@ -4,7 +4,7 @@ class EnterpriseRegistrationController < ApplicationController | @@ -4,7 +4,7 @@ class EnterpriseRegistrationController < ApplicationController | ||
4 | before_filter :login_required | 4 | before_filter :login_required |
5 | 5 | ||
6 | # Just go to the first step. | 6 | # Just go to the first step. |
7 | - # | 7 | + # |
8 | # FIXME: shouldn't this action present some sort of welcome message and point | 8 | # FIXME: shouldn't this action present some sort of welcome message and point |
9 | # to the first step explicitly? | 9 | # to the first step explicitly? |
10 | def index | 10 | def index |
@@ -15,7 +15,7 @@ class EnterpriseRegistrationController < ApplicationController | @@ -15,7 +15,7 @@ class EnterpriseRegistrationController < ApplicationController | ||
15 | @create_enterprise.target = Profile.find(params[:create_enterprise][:target_id]) | 15 | @create_enterprise.target = Profile.find(params[:create_enterprise][:target_id]) |
16 | end | 16 | end |
17 | elsif @validation == :admin || @validation == :none | 17 | elsif @validation == :admin || @validation == :none |
18 | - @create_enterprise.target = environment | 18 | + @create_enterprise.target = environment |
19 | end | 19 | end |
20 | @create_enterprise.requestor = user | 20 | @create_enterprise.requestor = user |
21 | the_action = | 21 | the_action = |
@@ -40,7 +40,7 @@ class EnterpriseRegistrationController < ApplicationController | @@ -40,7 +40,7 @@ class EnterpriseRegistrationController < ApplicationController | ||
40 | 40 | ||
41 | protected | 41 | protected |
42 | 42 | ||
43 | - # Fill in the form and select your Region. | 43 | + # Fill in the form and select your Region. |
44 | # | 44 | # |
45 | # Posts back. | 45 | # Posts back. |
46 | def basic_information | 46 | def basic_information |
app/controllers/public/profile_controller.rb
@@ -37,7 +37,7 @@ class ProfileController < PublicController | @@ -37,7 +37,7 @@ class ProfileController < PublicController | ||
37 | 37 | ||
38 | def tag_feed | 38 | def tag_feed |
39 | @tag = params[:id] | 39 | @tag = params[:id] |
40 | - tagged = profile.articles.paginate(:per_page => 20, :page => 1, :order => 'published_at DESC', :include => :tags, :conditions => ['tags.name LIKE ?', @tag]) | 40 | + tagged = profile.articles.paginate(:per_page => 20, :page => 1).order('published_at DESC').joins(:tags).where('tags.name LIKE ?', @tag) |
41 | feed_writer = FeedWriter.new | 41 | feed_writer = FeedWriter.new |
42 | data = feed_writer.write( | 42 | data = feed_writer.write( |
43 | tagged, | 43 | tagged, |
@@ -205,7 +205,7 @@ class ProfileController < PublicController | @@ -205,7 +205,7 @@ class ProfileController < PublicController | ||
205 | 205 | ||
206 | def more_comments | 206 | def more_comments |
207 | profile_filter = @profile.person? ? {:user_id => @profile} : {:target_id => @profile} | 207 | profile_filter = @profile.person? ? {:user_id => @profile} : {:target_id => @profile} |
208 | - activity = ActionTracker::Record.find(:first, :conditions => {:id => params[:activity]}.merge(profile_filter)) | 208 | + activity = ActionTracker::Record.where({:id => params[:activity]}.merge profile_filter).first |
209 | comments_count = activity.comments.count | 209 | comments_count = activity.comments.count |
210 | comment_page = (params[:comment_page] || 1).to_i | 210 | comment_page = (params[:comment_page] || 1).to_i |
211 | comments_per_page = 5 | 211 | comments_per_page = 5 |
@@ -225,7 +225,7 @@ class ProfileController < PublicController | @@ -225,7 +225,7 @@ class ProfileController < PublicController | ||
225 | end | 225 | end |
226 | 226 | ||
227 | def more_replies | 227 | def more_replies |
228 | - activity = Scrap.find(:first, :conditions => {:id => params[:activity], :receiver_id => @profile, :scrap_id => nil}) | 228 | + activity = Scrap.where(:id => params[:activity], :receiver_id => @profile, :scrap_id => nil).first |
229 | comments_count = activity.replies.count | 229 | comments_count = activity.replies.count |
230 | comment_page = (params[:comment_page] || 1).to_i | 230 | comment_page = (params[:comment_page] || 1).to_i |
231 | comments_per_page = 5 | 231 | comments_per_page = 5 |
@@ -272,7 +272,7 @@ class ProfileController < PublicController | @@ -272,7 +272,7 @@ class ProfileController < PublicController | ||
272 | def remove_notification | 272 | def remove_notification |
273 | begin | 273 | begin |
274 | raise if !can_edit_profile | 274 | raise if !can_edit_profile |
275 | - notification = ActionTrackerNotification.find(:first, :conditions => {:profile_id => profile.id, :action_tracker_id => params[:activity_id]}) | 275 | + notification = ActionTrackerNotification.where(profile_id: profile.id, action_tracker_id: params[:activity_id]).first |
276 | notification.destroy | 276 | notification.destroy |
277 | render :text => _('Notification successfully removed.') | 277 | render :text => _('Notification successfully removed.') |
278 | rescue | 278 | rescue |
app/controllers/public/search_controller.rb
@@ -14,7 +14,7 @@ class SearchController < PublicController | @@ -14,7 +14,7 @@ class SearchController < PublicController | ||
14 | # Backwards compatibility with old URLs | 14 | # Backwards compatibility with old URLs |
15 | def redirect_asset_param | 15 | def redirect_asset_param |
16 | return unless params.has_key?(:asset) | 16 | return unless params.has_key?(:asset) |
17 | - redirect_to params.merge(:action => params.delete(:asset)) | 17 | + redirect_to url_for(params.merge action: params.delete(:asset)) |
18 | end | 18 | end |
19 | 19 | ||
20 | no_design_blocks | 20 | no_design_blocks |
@@ -62,12 +62,12 @@ class SearchController < PublicController | @@ -62,12 +62,12 @@ class SearchController < PublicController | ||
62 | end | 62 | end |
63 | 63 | ||
64 | def articles | 64 | def articles |
65 | - @scope = @environment.articles.public | 65 | + @scope = @environment.articles.is_public |
66 | full_text_search | 66 | full_text_search |
67 | end | 67 | end |
68 | 68 | ||
69 | def contents | 69 | def contents |
70 | - redirect_to params.merge(:action => :articles) | 70 | + redirect_to url_for(params.merge action: :articles) |
71 | end | 71 | end |
72 | 72 | ||
73 | def people | 73 | def people |
@@ -122,7 +122,7 @@ class SearchController < PublicController | @@ -122,7 +122,7 @@ class SearchController < PublicController | ||
122 | # keep old URLs workings | 122 | # keep old URLs workings |
123 | def assets | 123 | def assets |
124 | params[:action] = params[:asset].is_a?(Array) ? :index : params.delete(:asset) | 124 | params[:action] = params[:asset].is_a?(Array) ? :index : params.delete(:asset) |
125 | - redirect_to params | 125 | + redirect_to url_for(params) |
126 | end | 126 | end |
127 | 127 | ||
128 | def tags | 128 | def tags |
app/helpers/application_helper.rb
@@ -8,6 +8,10 @@ module ApplicationHelper | @@ -8,6 +8,10 @@ module ApplicationHelper | ||
8 | 8 | ||
9 | include PermissionNameHelper | 9 | include PermissionNameHelper |
10 | 10 | ||
11 | + include UrlHelper | ||
12 | + | ||
13 | + include PartialsHelper | ||
14 | + | ||
11 | include ModalHelper | 15 | include ModalHelper |
12 | 16 | ||
13 | include BoxesHelper | 17 | include BoxesHelper |
@@ -281,36 +285,6 @@ module ApplicationHelper | @@ -281,36 +285,6 @@ module ApplicationHelper | ||
281 | concat(content_tag('div', capture(&block).to_s + tag('br', :style => 'clear: left;'), options)) | 285 | concat(content_tag('div', capture(&block).to_s + tag('br', :style => 'clear: left;'), options)) |
282 | end | 286 | end |
283 | 287 | ||
284 | - | ||
285 | - def partial_for_class_in_view_path(klass, view_path, prefix = nil, suffix = nil) | ||
286 | - return nil if klass.nil? | ||
287 | - name = [prefix, klass.name.underscore, suffix].compact.map(&:to_s).join('_') | ||
288 | - | ||
289 | - search_name = String.new(name) | ||
290 | - if search_name.include?("/") | ||
291 | - search_name.gsub!(/(\/)([^\/]*)$/,'\1_\2') | ||
292 | - name = File.join(params[:controller], name) if defined?(params) && params[:controller] | ||
293 | - else | ||
294 | - search_name = "_" + search_name | ||
295 | - end | ||
296 | - | ||
297 | - path = defined?(params) && params[:controller] ? File.join(view_path, params[:controller], search_name + '.html.erb') : File.join(view_path, search_name + '.html.erb') | ||
298 | - return name if File.exists?(File.join(path)) | ||
299 | - | ||
300 | - partial_for_class_in_view_path(klass.superclass, view_path, prefix, suffix) | ||
301 | - end | ||
302 | - | ||
303 | - def partial_for_class(klass, prefix=nil, suffix=nil) | ||
304 | - raise ArgumentError, 'No partial for object. Is there a partial for any class in the inheritance hierarchy?' if klass.nil? | ||
305 | - name = klass.name.underscore | ||
306 | - controller.view_paths.each do |view_path| | ||
307 | - partial = partial_for_class_in_view_path(klass, view_path, prefix, suffix) | ||
308 | - return partial if partial | ||
309 | - end | ||
310 | - | ||
311 | - raise ArgumentError, 'No partial for object. Is there a partial for any class in the inheritance hierarchy?' | ||
312 | - end | ||
313 | - | ||
314 | def render_profile_actions klass | 288 | def render_profile_actions klass |
315 | name = klass.to_s.underscore | 289 | name = klass.to_s.underscore |
316 | begin | 290 | begin |
@@ -907,8 +881,14 @@ module ApplicationHelper | @@ -907,8 +881,14 @@ module ApplicationHelper | ||
907 | end | 881 | end |
908 | alias :top_url :base_url | 882 | alias :top_url :base_url |
909 | 883 | ||
884 | + class View < ActionView::Base | ||
885 | + def url_for *args | ||
886 | + self.controller.url_for *args | ||
887 | + end | ||
888 | + end | ||
889 | + | ||
910 | def helper_for_article(article) | 890 | def helper_for_article(article) |
911 | - article_helper = ActionView::Base.new | 891 | + article_helper = View.new |
912 | article_helper.controller = controller | 892 | article_helper.controller = controller |
913 | article_helper.extend ArticleHelper | 893 | article_helper.extend ArticleHelper |
914 | article_helper.extend Rails.application.routes.url_helpers | 894 | article_helper.extend Rails.application.routes.url_helpers |
app/helpers/block_helper.rb
@@ -19,7 +19,7 @@ module BlockHelper | @@ -19,7 +19,7 @@ module BlockHelper | ||
19 | content_tag('span', _('Title')) + | 19 | content_tag('span', _('Title')) + |
20 | text_field_tag('block[images][][title]', image[:title], :class => 'highlight-title', :size => 45) | 20 | text_field_tag('block[images][][title]', image[:title], :class => 'highlight-title', :size => 45) |
21 | }</label></td> | 21 | }</label></td> |
22 | - <td>#{button_without_text(:delete, _('Remove'), '#', class: 'delete-highlight', :confirm=>_('Are you sure you want to remove this highlight'))}</td> | 22 | + <td>#{button_without_text(:delete, _('Remove'), '#', class: 'delete-highlight', data: {confirm: _('Are you sure you want to remove this highlight')})}</td> |
23 | </tr> | 23 | </tr> |
24 | " | 24 | " |
25 | end | 25 | end |
app/helpers/boxes_helper.rb
@@ -236,7 +236,7 @@ module BoxesHelper | @@ -236,7 +236,7 @@ module BoxesHelper | ||
236 | end | 236 | end |
237 | 237 | ||
238 | if movable?(block) && !block.main? | 238 | if movable?(block) && !block.main? |
239 | - buttons << icon_button(:delete, _('Remove block'), { :action => 'remove', :id => block.id }, { :method => 'post', :confirm => _('Are you sure you want to remove this block?')}) | 239 | + buttons << icon_button(:delete, _('Remove block'), { action: 'remove', id: block.id }, method: 'post', data: {confirm: _('Are you sure you want to remove this block?')}) |
240 | buttons << icon_button(:clone, _('Clone'), { :action => 'clone_block', :id => block.id }, { :method => 'post' }) | 240 | buttons << icon_button(:clone, _('Clone'), { :action => 'clone_block', :id => block.id }, { :method => 'post' }) |
241 | end | 241 | end |
242 | 242 |
app/helpers/cms_helper.rb
@@ -34,7 +34,7 @@ module CmsHelper | @@ -34,7 +34,7 @@ module CmsHelper | ||
34 | end | 34 | end |
35 | 35 | ||
36 | def display_delete_button(article) | 36 | def display_delete_button(article) |
37 | - expirable_button article, :delete, _('Delete'), { :action => 'destroy', :id => article.id }, :method => :post, :confirm => delete_article_message(article) | 37 | + expirable_button article, :delete, _('Delete'), { :action => 'destroy', :id => article.id }, :method => :post, 'data-confirm' => delete_article_message(article) |
38 | end | 38 | end |
39 | 39 | ||
40 | def expirable_button(content, action, title, url, options = {}) | 40 | def expirable_button(content, action, title, url, options = {}) |
@@ -42,7 +42,7 @@ module CmsHelper | @@ -42,7 +42,7 @@ module CmsHelper | ||
42 | if reason.present? | 42 | if reason.present? |
43 | options[:class] = (options[:class] || '') + ' disabled' | 43 | options[:class] = (options[:class] || '') + ' disabled' |
44 | options[:disabled] = 'disabled' | 44 | options[:disabled] = 'disabled' |
45 | - options.delete(:confirm) | 45 | + options.delete('data-confirm') |
46 | options.delete(:method) | 46 | options.delete(:method) |
47 | title = reason | 47 | title = reason |
48 | end | 48 | end |
app/helpers/events_helper.rb
@@ -24,7 +24,7 @@ module EventsHelper | @@ -24,7 +24,7 @@ module EventsHelper | ||
24 | end | 24 | end |
25 | 25 | ||
26 | def populate_calendar(selected_date, events) | 26 | def populate_calendar(selected_date, events) |
27 | - events.reject! {|event| !event.display_to?(user)} | 27 | + events = events.reject{ |event| !event.display_to? user } |
28 | calendar = Event.date_range(selected_date.year, selected_date.month).map do |date| | 28 | calendar = Event.date_range(selected_date.year, selected_date.month).map do |date| |
29 | [ | 29 | [ |
30 | # the day itself | 30 | # the day itself |
app/helpers/folder_helper.rb
@@ -5,13 +5,11 @@ module FolderHelper | @@ -5,13 +5,11 @@ module FolderHelper | ||
5 | def list_contents(configure={}) | 5 | def list_contents(configure={}) |
6 | configure[:recursive] ||= false | 6 | configure[:recursive] ||= false |
7 | configure[:list_type] ||= :folder | 7 | configure[:list_type] ||= :folder |
8 | - if !configure[:contents].blank? | ||
9 | - configure[:contents] = configure[:contents].paginate( | ||
10 | - :order => "name ASC", | ||
11 | - :per_page => 30, | ||
12 | - :page => params[:npage] | ||
13 | - ) | ||
14 | - | 8 | + contents = configure[:contents] |
9 | + contents = contents.order('name ASC') unless contents.is_a? Array | ||
10 | + contents = contents.paginate per_page: 30, page: params[:npage] | ||
11 | + configure[:contents] = contents | ||
12 | + if contents.present? | ||
15 | render :file => 'shared/content_list', :locals => configure | 13 | render :file => 'shared/content_list', :locals => configure |
16 | else | 14 | else |
17 | content_tag('em', _('(empty folder)')) | 15 | content_tag('em', _('(empty folder)')) |
@@ -0,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
1 | +module PartialsHelper | ||
2 | + | ||
3 | + def partial_for_class_in_view_path(klass, view_path, prefix = nil, suffix = nil) | ||
4 | + return nil if klass.nil? | ||
5 | + name = [prefix, klass.name.underscore, suffix].compact.map(&:to_s).join('_') | ||
6 | + | ||
7 | + search_name = String.new(name) | ||
8 | + if search_name.include?("/") | ||
9 | + search_name.gsub!(/(\/)([^\/]*)$/,'\1_\2') | ||
10 | + name = File.join(params[:controller], name) if defined?(params) && params[:controller] | ||
11 | + else | ||
12 | + search_name = "_" + search_name | ||
13 | + end | ||
14 | + | ||
15 | + path = defined?(params) && params[:controller] ? File.join(view_path, params[:controller], search_name + '.html.erb') : File.join(view_path, search_name + '.html.erb') | ||
16 | + return name if File.exists?(File.join(path)) | ||
17 | + | ||
18 | + partial_for_class_in_view_path(klass.superclass, view_path, prefix, suffix) | ||
19 | + end | ||
20 | + | ||
21 | + def partial_for_class(klass, prefix=nil, suffix=nil) | ||
22 | + raise ArgumentError, 'No partial for object. Is there a partial for any class in the inheritance hierarchy?' if klass.nil? | ||
23 | + name = klass.name.underscore | ||
24 | + controller.view_paths.each do |view_path| | ||
25 | + partial = partial_for_class_in_view_path(klass, view_path, prefix, suffix) | ||
26 | + return partial if partial | ||
27 | + end | ||
28 | + | ||
29 | + raise ArgumentError, 'No partial for object. Is there a partial for any class in the inheritance hierarchy?' | ||
30 | + end | ||
31 | + | ||
32 | + def render_partial_for_class klass, *args | ||
33 | + raise ArgumentError, 'No partial for object. Is there a partial for any class in the inheritance hierarchy?' if klass.nil? | ||
34 | + begin | ||
35 | + partial = klass.name.underscore | ||
36 | + partial = "#{params[:controller]}/#{partial}" if params[:controller] and partial.index '/' | ||
37 | + return render partial, *args | ||
38 | + rescue ActionView::MissingTemplate | ||
39 | + return render_partial_for_class klass.superclass, *args | ||
40 | + end | ||
41 | + end | ||
42 | + | ||
43 | +end |
@@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
1 | +require_relative '../helpers/application_helper' | ||
2 | + | ||
3 | +class ApplicationMailer < ActionMailer::Base | ||
4 | + | ||
5 | + include AuthenticatedSystem | ||
6 | + | ||
7 | + helper ApplicationHelper | ||
8 | + | ||
9 | + attr_accessor :environment | ||
10 | + | ||
11 | + def default_url_options options = nil | ||
12 | + options ||= {} | ||
13 | + options[:host] = environment.default_hostname if environment | ||
14 | + options | ||
15 | + end | ||
16 | + | ||
17 | +end | ||
18 | + |
app/mailers/comment_notifier.rb
1 | -class CommentNotifier < ActionMailer::Base | 1 | +class CommentNotifier < ApplicationMailer |
2 | + | ||
2 | def notification(comment) | 3 | def notification(comment) |
3 | profile = comment.article.profile | 4 | profile = comment.article.profile |
5 | + self.environment = profile.environment | ||
4 | @recipient = profile.nickname || profile.name | 6 | @recipient = profile.nickname || profile.name |
5 | @sender = comment.author_name | 7 | @sender = comment.author_name |
6 | @sender_link = comment.author_link | 8 | @sender_link = comment.author_link |
@@ -8,7 +10,6 @@ class CommentNotifier < ActionMailer::Base | @@ -8,7 +10,6 @@ class CommentNotifier < ActionMailer::Base | ||
8 | @comment_url = comment.url | 10 | @comment_url = comment.url |
9 | @comment_title = comment.title | 11 | @comment_title = comment.title |
10 | @comment_body = comment.body | 12 | @comment_body = comment.body |
11 | - @environment = profile.environment.name | ||
12 | @url = profile.environment.top_url | 13 | @url = profile.environment.top_url |
13 | 14 | ||
14 | mail( | 15 | mail( |
@@ -20,6 +21,8 @@ class CommentNotifier < ActionMailer::Base | @@ -20,6 +21,8 @@ class CommentNotifier < ActionMailer::Base | ||
20 | 21 | ||
21 | def mail_to_followers(comment, emails) | 22 | def mail_to_followers(comment, emails) |
22 | profile = comment.article.profile | 23 | profile = comment.article.profile |
24 | + self.environment = profile.environment | ||
25 | + | ||
23 | @recipient = profile.nickname || profile.name | 26 | @recipient = profile.nickname || profile.name |
24 | @sender = comment.author_name | 27 | @sender = comment.author_name |
25 | @sender_link = comment.author_link | 28 | @sender_link = comment.author_link |
@@ -28,7 +31,6 @@ class CommentNotifier < ActionMailer::Base | @@ -28,7 +31,6 @@ class CommentNotifier < ActionMailer::Base | ||
28 | @unsubscribe_url = comment.article.view_url.merge({:unfollow => true}) | 31 | @unsubscribe_url = comment.article.view_url.merge({:unfollow => true}) |
29 | @comment_title = comment.title | 32 | @comment_title = comment.title |
30 | @comment_body = comment.body | 33 | @comment_body = comment.body |
31 | - @environment = profile.environment.name | ||
32 | @url = profile.environment.top_url | 34 | @url = profile.environment.top_url |
33 | 35 | ||
34 | mail( | 36 | mail( |
app/mailers/contact.rb
@@ -30,14 +30,16 @@ class Contact | @@ -30,14 +30,16 @@ class Contact | ||
30 | Contact::Sender.notification(self).deliver | 30 | Contact::Sender.notification(self).deliver |
31 | end | 31 | end |
32 | 32 | ||
33 | - class Sender < ActionMailer::Base | 33 | + class Sender < ApplicationMailer |
34 | + | ||
34 | def notification(contact) | 35 | def notification(contact) |
36 | + self.environment = contact.dest.environment | ||
37 | + | ||
35 | @name = contact.name | 38 | @name = contact.name |
36 | @email = contact.email | 39 | @email = contact.email |
37 | @city = contact.city | 40 | @city = contact.city |
38 | @state = contact.state | 41 | @state = contact.state |
39 | @message = contact.message | 42 | @message = contact.message |
40 | - @environment = contact.dest.environment.name | ||
41 | @url = url_for(:host => contact.dest.environment.default_hostname, :controller => 'home') | 43 | @url = url_for(:host => contact.dest.environment.default_hostname, :controller => 'home') |
42 | @target = contact.dest.name | 44 | @target = contact.dest.name |
43 | 45 |
app/mailers/environment_mailing.rb
1 | class EnvironmentMailing < Mailing | 1 | class EnvironmentMailing < Mailing |
2 | 2 | ||
3 | def recipients(offset=0, limit=100) | 3 | def recipients(offset=0, limit=100) |
4 | - source.people.all(:order => :id, :offset => offset, :limit => limit, :joins => "LEFT OUTER JOIN mailing_sents m ON (m.mailing_id = #{id} AND m.person_id = profiles.id)", :conditions => { "m.person_id" => nil }) | 4 | + source.people.order(:id).offset(offset).limit(limit) |
5 | + .joins("LEFT OUTER JOIN mailing_sents m ON (m.mailing_id = #{id} AND m.person_id = profiles.id)") | ||
6 | + .where("m.person_id" => nil) | ||
5 | end | 7 | end |
6 | 8 | ||
7 | def each_recipient | 9 | def each_recipient |
app/mailers/mailing.rb
@@ -46,7 +46,8 @@ class Mailing < ActiveRecord::Base | @@ -46,7 +46,8 @@ class Mailing < ActiveRecord::Base | ||
46 | end | 46 | end |
47 | end | 47 | end |
48 | 48 | ||
49 | - class Sender < ActionMailer::Base | 49 | + class Sender < ApplicationMailer |
50 | + | ||
50 | def notification(mailing, recipient) | 51 | def notification(mailing, recipient) |
51 | @message = mailing.body | 52 | @message = mailing.body |
52 | @signature_message = mailing.signature_message | 53 | @signature_message = mailing.signature_message |
app/mailers/organization_mailing.rb
@@ -5,7 +5,9 @@ class OrganizationMailing < Mailing | @@ -5,7 +5,9 @@ class OrganizationMailing < Mailing | ||
5 | end | 5 | end |
6 | 6 | ||
7 | def recipients(offset=0, limit=100) | 7 | def recipients(offset=0, limit=100) |
8 | - source.members.all(:order => :id, :offset => offset, :limit => limit, :joins => "LEFT OUTER JOIN mailing_sents m ON (m.mailing_id = #{id} AND m.person_id = profiles.id)", :conditions => { "m.person_id" => nil }) | 8 | + source.members.order(:id).offset(offset).limit(limit) |
9 | + .joins("LEFT OUTER JOIN mailing_sents m ON (m.mailing_id = #{id} AND m.person_id = profiles.id)") | ||
10 | + .where("m.person_id" => nil) | ||
9 | end | 11 | end |
10 | 12 | ||
11 | def each_recipient | 13 | def each_recipient |
app/mailers/pending_task_notifier.rb
1 | -class PendingTaskNotifier < ActionMailer::Base | 1 | +class PendingTaskNotifier < ApplicationMailer |
2 | 2 | ||
3 | def notification(person) | 3 | def notification(person) |
4 | + self.environment = person.environment | ||
5 | + | ||
4 | @person = person | 6 | @person = person |
5 | @tasks = person.tasks.pending | 7 | @tasks = person.tasks.pending |
6 | @organizations_with_pending_tasks = person.organizations_with_pending_tasks | 8 | @organizations_with_pending_tasks = person.organizations_with_pending_tasks |
7 | - @environment = person.environment.name | ||
8 | @url = url_for(:host => person.environment.default_hostname, :controller => 'home') | 9 | @url = url_for(:host => person.environment.default_hostname, :controller => 'home') |
9 | @default_hostname = person.environment.default_hostname | 10 | @default_hostname = person.environment.default_hostname |
10 | @url_for_pending_tasks = url_for(:host => person.environment.default_hostname, :controller => 'tasks', :profile => person.identifier) | 11 | @url_for_pending_tasks = url_for(:host => person.environment.default_hostname, :controller => 'tasks', :profile => person.identifier) |
app/mailers/scrap_notifier.rb
1 | -class ScrapNotifier < ActionMailer::Base | 1 | +class ScrapNotifier < ApplicationMailer |
2 | + | ||
2 | def notification(scrap) | 3 | def notification(scrap) |
3 | sender, receiver = scrap.sender, scrap.receiver | 4 | sender, receiver = scrap.sender, scrap.receiver |
5 | + self.environment = sender.environment | ||
4 | # for tests | 6 | # for tests |
5 | return unless receiver.email | 7 | return unless receiver.email |
6 | 8 | ||
@@ -9,7 +11,6 @@ class ScrapNotifier < ActionMailer::Base | @@ -9,7 +11,6 @@ class ScrapNotifier < ActionMailer::Base | ||
9 | @sender_link = sender.url | 11 | @sender_link = sender.url |
10 | @scrap_content = scrap.content | 12 | @scrap_content = scrap.content |
11 | @wall_url = scrap.scrap_wall_url | 13 | @wall_url = scrap.scrap_wall_url |
12 | - @environment = sender.environment.name | ||
13 | @url = sender.environment.top_url | 14 | @url = sender.environment.top_url |
14 | mail( | 15 | mail( |
15 | to: receiver.email, | 16 | to: receiver.email, |
app/mailers/task_mailer.rb
1 | -class TaskMailer < ActionMailer::Base | 1 | +class TaskMailer < ApplicationMailer |
2 | 2 | ||
3 | def target_notification(task, message) | 3 | def target_notification(task, message) |
4 | + self.environment = task.environment | ||
5 | + | ||
4 | @message = extract_message(message) | 6 | @message = extract_message(message) |
5 | @target = task.target.name | 7 | @target = task.target.name |
6 | - @environment = task.environment.name | ||
7 | @url = generate_environment_url(task, :controller => 'home') | 8 | @url = generate_environment_url(task, :controller => 'home') |
8 | url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.tasks_url.merge(:script_name => Noosfero.root('/'))) | 9 | url_for_tasks_list = task.target.kind_of?(Environment) ? '' : url_for(task.target.tasks_url.merge(:script_name => Noosfero.root('/'))) |
9 | @tasks_url = url_for_tasks_list | 10 | @tasks_url = url_for_tasks_list |
@@ -16,6 +17,8 @@ class TaskMailer < ActionMailer::Base | @@ -16,6 +17,8 @@ class TaskMailer < ActionMailer::Base | ||
16 | end | 17 | end |
17 | 18 | ||
18 | def invitation_notification(task) | 19 | def invitation_notification(task) |
20 | + self.environment = task.requestor.environment | ||
21 | + | ||
19 | msg = task.expanded_message | 22 | msg = task.expanded_message |
20 | @message = msg.gsub /<url>/, generate_environment_url(task, :controller => 'account', :action => 'signup', :invitation_code => task.code) | 23 | @message = msg.gsub /<url>/, generate_environment_url(task, :controller => 'account', :action => 'signup', :invitation_code => task.code) |
21 | 24 | ||
@@ -27,11 +30,12 @@ class TaskMailer < ActionMailer::Base | @@ -27,11 +30,12 @@ class TaskMailer < ActionMailer::Base | ||
27 | end | 30 | end |
28 | 31 | ||
29 | def generic_message(name, task) | 32 | def generic_message(name, task) |
33 | + self.environment = task.requestor.environment | ||
34 | + | ||
30 | return if !task.respond_to?("#{name}_message") | 35 | return if !task.respond_to?("#{name}_message") |
31 | 36 | ||
32 | @message = extract_message(task.send("#{name}_message")) | 37 | @message = extract_message(task.send("#{name}_message")) |
33 | @requestor = task.requestor.name | 38 | @requestor = task.requestor.name |
34 | - @environment = task.requestor.environment.name | ||
35 | @url = url_for(:host => task.requestor.environment.default_hostname, :controller => 'home') | 39 | @url = url_for(:host => task.requestor.environment.default_hostname, :controller => 'home') |
36 | 40 | ||
37 | mail( | 41 | mail( |
app/mailers/user_mailer.rb
1 | -class UserMailer < ActionMailer::Base | 1 | +class UserMailer < ApplicationMailer |
2 | + | ||
2 | def activation_email_notify(user) | 3 | def activation_email_notify(user) |
4 | + self.environment = user.environment | ||
5 | + | ||
3 | user_email = "#{user.login}@#{user.email_domain}" | 6 | user_email = "#{user.login}@#{user.email_domain}" |
4 | @name = user.name | 7 | @name = user.name |
5 | @email = user_email | 8 | @email = user_email |
6 | @webmail = MailConf.webmail_url(user.login, user.email_domain) | 9 | @webmail = MailConf.webmail_url(user.login, user.email_domain) |
7 | - @environment = user.environment.name | ||
8 | @url = url_for(:host => user.environment.default_hostname, :controller => 'home') | 10 | @url = url_for(:host => user.environment.default_hostname, :controller => 'home') |
9 | 11 | ||
10 | mail( | 12 | mail( |
@@ -15,9 +17,10 @@ class UserMailer < ActionMailer::Base | @@ -15,9 +17,10 @@ class UserMailer < ActionMailer::Base | ||
15 | end | 17 | end |
16 | 18 | ||
17 | def activation_code(user) | 19 | def activation_code(user) |
20 | + self.environment = user.environment | ||
21 | + | ||
18 | @recipient = user.name | 22 | @recipient = user.name |
19 | @activation_code = user.activation_code | 23 | @activation_code = user.activation_code |
20 | - @environment = user.environment.name | ||
21 | @url = user.environment.top_url | 24 | @url = user.environment.top_url |
22 | @redirection = (true if user.return_to) | 25 | @redirection = (true if user.return_to) |
23 | @join = (user.community_to_join if user.community_to_join) | 26 | @join = (user.community_to_join if user.community_to_join) |
@@ -30,6 +33,8 @@ class UserMailer < ActionMailer::Base | @@ -30,6 +33,8 @@ class UserMailer < ActionMailer::Base | ||
30 | end | 33 | end |
31 | 34 | ||
32 | def signup_welcome_email(user) | 35 | def signup_welcome_email(user) |
36 | + self.environment = user.environment | ||
37 | + | ||
33 | @body = user.environment.signup_welcome_text_body.gsub('{user_name}', user.name) | 38 | @body = user.environment.signup_welcome_text_body.gsub('{user_name}', user.name) |
34 | email_subject = user.environment.signup_welcome_text_subject | 39 | email_subject = user.environment.signup_welcome_text_subject |
35 | mail( | 40 | mail( |
@@ -42,8 +47,9 @@ class UserMailer < ActionMailer::Base | @@ -42,8 +47,9 @@ class UserMailer < ActionMailer::Base | ||
42 | end | 47 | end |
43 | 48 | ||
44 | def profiles_suggestions_email(user) | 49 | def profiles_suggestions_email(user) |
50 | + self.environment = user.environment | ||
51 | + | ||
45 | @recipient = user.name | 52 | @recipient = user.name |
46 | - @environment = user.environment.name | ||
47 | @url = user.environment.top_url | 53 | @url = user.environment.top_url |
48 | @people_suggestions_url = user.people_suggestions_url | 54 | @people_suggestions_url = user.people_suggestions_url |
49 | @people_suggestions = user.suggested_people.sample(3) | 55 | @people_suggestions = user.suggested_people.sample(3) |
app/models/add_member.rb
@@ -11,7 +11,7 @@ class AddMember < Task | @@ -11,7 +11,7 @@ class AddMember < Task | ||
11 | alias :organization :target | 11 | alias :organization :target |
12 | alias :organization= :target= | 12 | alias :organization= :target= |
13 | 13 | ||
14 | - settings_items :roles | 14 | + settings_items :roles, type: Array |
15 | 15 | ||
16 | after_create do |task| | 16 | after_create do |task| |
17 | remove_from_suggestion_list(task) | 17 | remove_from_suggestion_list(task) |
app/models/approve_comment.rb
@@ -8,7 +8,7 @@ class ApproveComment < Task | @@ -8,7 +8,7 @@ class ApproveComment < Task | ||
8 | def comment | 8 | def comment |
9 | unless @comment || self.comment_attributes.nil? | 9 | unless @comment || self.comment_attributes.nil? |
10 | @comment = Comment.new | 10 | @comment = Comment.new |
11 | - @comment.assign_attributes(ActiveSupport::JSON.decode(self.comment_attributes), :without_protection => true) | 11 | + @comment.assign_attributes(ActiveSupport::JSON.decode(self.comment_attributes.to_s), :without_protection => true) |
12 | end | 12 | end |
13 | @comment | 13 | @comment |
14 | end | 14 | end |
app/models/article.rb
@@ -79,7 +79,7 @@ class Article < ActiveRecord::Base | @@ -79,7 +79,7 @@ class Article < ActiveRecord::Base | ||
79 | 79 | ||
80 | has_many :comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc' | 80 | has_many :comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc' |
81 | 81 | ||
82 | - has_many :article_categorizations, :conditions => [ 'articles_categories.virtual = ?', false ] | 82 | + has_many :article_categorizations, -> { where 'articles_categories.virtual = ?', false } |
83 | has_many :categories, :through => :article_categorizations | 83 | has_many :categories, :through => :article_categorizations |
84 | 84 | ||
85 | has_many :article_categorizations_including_virtual, :class_name => 'ArticleCategorization' | 85 | has_many :article_categorizations_including_virtual, :class_name => 'ArticleCategorization' |
@@ -131,17 +131,15 @@ class Article < ActiveRecord::Base | @@ -131,17 +131,15 @@ class Article < ActiveRecord::Base | ||
131 | 131 | ||
132 | xss_terminate :only => [ :name ], :on => 'validation', :with => 'white_list' | 132 | xss_terminate :only => [ :name ], :on => 'validation', :with => 'white_list' |
133 | 133 | ||
134 | - scope :in_category, lambda { |category| | ||
135 | - {:include => 'categories_including_virtual', :conditions => { 'categories.id' => category.id }} | 134 | + scope :in_category, -> category { |
135 | + includes('categories_including_virtual').where('categories.id' => category.id) | ||
136 | } | 136 | } |
137 | 137 | ||
138 | include TimeScopes | 138 | include TimeScopes |
139 | 139 | ||
140 | - scope :by_range, lambda { |range| { | ||
141 | - :conditions => [ | ||
142 | - 'articles.published_at BETWEEN :start_date AND :end_date', { :start_date => range.first, :end_date => range.last } | ||
143 | - ] | ||
144 | - }} | 140 | + scope :by_range, -> range { |
141 | + where 'articles.published_at BETWEEN :start_date AND :end_date', { start_date: range.first, end_date: range.last } | ||
142 | + } | ||
145 | 143 | ||
146 | URL_FORMAT = /\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?\Z/ix | 144 | URL_FORMAT = /\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?\Z/ix |
147 | 145 | ||
@@ -263,19 +261,21 @@ class Article < ActiveRecord::Base | @@ -263,19 +261,21 @@ class Article < ActiveRecord::Base | ||
263 | 261 | ||
264 | # retrieves all articles belonging to the given +profile+ that are not | 262 | # retrieves all articles belonging to the given +profile+ that are not |
265 | # sub-articles of any other article. | 263 | # sub-articles of any other article. |
266 | - scope :top_level_for, lambda { |profile| | ||
267 | - {:conditions => [ 'parent_id is null and profile_id = ?', profile.id ]} | 264 | + scope :top_level_for, -> profile { |
265 | + where 'parent_id is null and profile_id = ?', profile.id | ||
268 | } | 266 | } |
269 | 267 | ||
270 | - scope :public, | ||
271 | - :conditions => [ "advertise = ? AND published = ? AND profiles.visible = ? AND profiles.public_profile = ?", true, true, true, true ], :joins => [:profile] | 268 | + scope :is_public, -> { |
269 | + joins(:profile). | ||
270 | + where("articles.advertise = ? AND articles.published = ? AND profiles.visible = ? AND profiles.public_profile = ?", true, true, true, true) | ||
271 | + } | ||
272 | 272 | ||
273 | - scope :more_recent, | ||
274 | - :conditions => [ "advertise = ? AND published = ? AND profiles.visible = ? AND profiles.public_profile = ? AND | ||
275 | - ((articles.type != ?) OR articles.type is NULL)", | ||
276 | - true, true, true, true, 'RssFeed' | ||
277 | - ], | ||
278 | - :order => 'articles.published_at desc, articles.id desc' | 273 | + scope :more_recent, -> { |
274 | + order('articles.published_at desc, articles.id desc') | ||
275 | + .where("articles.advertise = ? AND articles.published = ? AND profiles.visible = ? AND profiles.public_profile = ? AND | ||
276 | + ((articles.type != ?) OR articles.type is NULL)", | ||
277 | + true, true, true, true, 'RssFeed') | ||
278 | + } | ||
279 | 279 | ||
280 | # retrives the most commented articles, sorted by the comment count (largest | 280 | # retrives the most commented articles, sorted by the comment count (largest |
281 | # first) | 281 | # first) |
@@ -283,12 +283,14 @@ class Article < ActiveRecord::Base | @@ -283,12 +283,14 @@ class Article < ActiveRecord::Base | ||
283 | paginate(:order => 'comments_count DESC', :page => 1, :per_page => limit) | 283 | paginate(:order => 'comments_count DESC', :page => 1, :per_page => limit) |
284 | end | 284 | end |
285 | 285 | ||
286 | - scope :more_popular, :order => 'hits DESC' | ||
287 | - scope :relevant_as_recent, :conditions => ["(articles.type != 'UploadedFile' and articles.type != 'RssFeed' and articles.type != 'Blog') OR articles.type is NULL"] | 286 | + scope :more_popular, -> { order 'hits DESC' } |
287 | + scope :relevant_as_recent, -> { | ||
288 | + where "(articles.type != 'UploadedFile' and articles.type != 'RssFeed' and articles.type != 'Blog') OR articles.type is NULL" | ||
289 | + } | ||
288 | 290 | ||
289 | def self.recent(limit = nil, extra_conditions = {}, pagination = true) | 291 | def self.recent(limit = nil, extra_conditions = {}, pagination = true) |
290 | result = scoped({:conditions => extra_conditions}). | 292 | result = scoped({:conditions => extra_conditions}). |
291 | - public. | 293 | + is_public. |
292 | relevant_as_recent. | 294 | relevant_as_recent. |
293 | limit(limit). | 295 | limit(limit). |
294 | order(['articles.published_at desc', 'articles.id desc']) | 296 | order(['articles.published_at desc', 'articles.id desc']) |
@@ -413,7 +415,7 @@ class Article < ActiveRecord::Base | @@ -413,7 +415,7 @@ class Article < ActiveRecord::Base | ||
413 | self.translations.map(&:language) | 415 | self.translations.map(&:language) |
414 | end | 416 | end |
415 | 417 | ||
416 | - scope :native_translations, :conditions => { :translation_of_id => nil } | 418 | + scope :native_translations, -> { where :translation_of_id => nil } |
417 | 419 | ||
418 | def translatable? | 420 | def translatable? |
419 | false | 421 | false |
@@ -455,7 +457,7 @@ class Article < ActiveRecord::Base | @@ -455,7 +457,7 @@ class Article < ActiveRecord::Base | ||
455 | 457 | ||
456 | def rotate_translations | 458 | def rotate_translations |
457 | unless self.translations.empty? | 459 | unless self.translations.empty? |
458 | - rotate = self.translations | 460 | + rotate = self.translations.all |
459 | root = rotate.shift | 461 | root = rotate.shift |
460 | root.update_attribute(:translation_of_id, nil) | 462 | root.update_attribute(:translation_of_id, nil) |
461 | root.translations = rotate | 463 | root.translations = rotate |
@@ -468,7 +470,7 @@ class Article < ActiveRecord::Base | @@ -468,7 +470,7 @@ class Article < ActiveRecord::Base | ||
468 | elsif self.native_translation.language == locale | 470 | elsif self.native_translation.language == locale |
469 | self.native_translation | 471 | self.native_translation |
470 | else | 472 | else |
471 | - self.native_translation.translations.first(:conditions => { :language => locale }) | 473 | + self.native_translation.translations.where(:language => locale).first |
472 | end | 474 | end |
473 | end | 475 | end |
474 | 476 | ||
@@ -492,19 +494,19 @@ class Article < ActiveRecord::Base | @@ -492,19 +494,19 @@ class Article < ActiveRecord::Base | ||
492 | ['TextArticle', 'TextileArticle', 'TinyMceArticle'] | 494 | ['TextArticle', 'TextileArticle', 'TinyMceArticle'] |
493 | end | 495 | end |
494 | 496 | ||
495 | - scope :published, :conditions => ['articles.published = ?', true] | ||
496 | - scope :folders, lambda {|profile|{:conditions => ['articles.type IN (?)', profile.folder_types] }} | ||
497 | - scope :no_folders, lambda {|profile|{:conditions => ['articles.type NOT IN (?)', profile.folder_types]}} | ||
498 | - scope :galleries, :conditions => [ "articles.type IN ('Gallery')" ] | ||
499 | - scope :images, :conditions => { :is_image => true } | ||
500 | - scope :no_images, :conditions => { :is_image => false } | ||
501 | - scope :text_articles, :conditions => [ 'articles.type IN (?)', text_article_types ] | ||
502 | - scope :files, :conditions => { :type => 'UploadedFile' } | ||
503 | - scope :with_types, lambda { |types| { :conditions => [ 'articles.type IN (?)', types ] } } | 497 | + scope :published, -> { where 'articles.published = ?', true } |
498 | + scope :folders, -> profile { where 'articles.type IN (?)', profile.folder_types } | ||
499 | + scope :no_folders, -> profile { where 'articles.type NOT IN (?)', profile.folder_types } | ||
500 | + scope :galleries, -> { where "articles.type IN ('Gallery')" } | ||
501 | + scope :images, -> { where :is_image => true } | ||
502 | + scope :no_images, -> { where :is_image => false } | ||
503 | + scope :text_articles, -> { where 'articles.type IN (?)', text_article_types } | ||
504 | + scope :files, -> { where :type => 'UploadedFile' } | ||
505 | + scope :with_types, -> types { where 'articles.type IN (?)', types } | ||
504 | 506 | ||
505 | - scope :more_popular, :order => 'hits DESC' | ||
506 | - scope :more_comments, :order => "comments_count DESC" | ||
507 | - scope :more_recent, :order => "created_at DESC" | 507 | + scope :more_popular, -> { order 'hits DESC' } |
508 | + scope :more_comments, -> { order "comments_count DESC" } | ||
509 | + scope :more_recent, -> { order "created_at DESC" } | ||
508 | 510 | ||
509 | scope :display_filter, lambda {|user, profile| | 511 | scope :display_filter, lambda {|user, profile| |
510 | return published if (user.nil? && profile && profile.public?) | 512 | return published if (user.nil? && profile && profile.public?) |
@@ -626,7 +628,7 @@ class Article < ActiveRecord::Base | @@ -626,7 +628,7 @@ class Article < ActiveRecord::Base | ||
626 | ] | 628 | ] |
627 | 629 | ||
628 | def self.find_by_old_path(old_path) | 630 | def self.find_by_old_path(old_path) |
629 | - find(:first, :include => :versions, :conditions => ['article_versions.path = ?', old_path], :order => 'article_versions.id desc') | 631 | + self.includes(:versions).where('article_versions.path = ?', old_path).order('article_versions.id DESC').first |
630 | end | 632 | end |
631 | 633 | ||
632 | def hit | 634 | def hit |
@@ -704,11 +706,11 @@ class Article < ActiveRecord::Base | @@ -704,11 +706,11 @@ class Article < ActiveRecord::Base | ||
704 | end | 706 | end |
705 | 707 | ||
706 | def get_version(version_number = nil) | 708 | def get_version(version_number = nil) |
707 | - version_number ? versions.find(:first, :order => 'version', :offset => version_number - 1) : versions.earliest | 709 | + if version_number then self.versions.order('version').offset(version_number - 1).first else self.versions.earliest end |
708 | end | 710 | end |
709 | 711 | ||
710 | def author_by_version(version_number = nil) | 712 | def author_by_version(version_number = nil) |
711 | - version_number ? profile.environment.people.find_by_id(get_version(version_number).author_id) : author | 713 | + if version_number then profile.environment.people.where(id: get_version(version_number).author_id).first else author end |
712 | end | 714 | end |
713 | 715 | ||
714 | def author_name(version_number = nil) | 716 | def author_name(version_number = nil) |
@@ -804,7 +806,7 @@ class Article < ActiveRecord::Base | @@ -804,7 +806,7 @@ class Article < ActiveRecord::Base | ||
804 | end | 806 | end |
805 | 807 | ||
806 | def activity | 808 | def activity |
807 | - ActionTracker::Record.find_by_target_type_and_target_id 'Article', self.id | 809 | + ActionTracker::Record.where(target_type: 'Article', target_id: self.id).first |
808 | end | 810 | end |
809 | 811 | ||
810 | def create_activity | 812 | def create_activity |
app/models/article_categorization.rb
app/models/block.rb
@@ -20,7 +20,7 @@ class Block < ActiveRecord::Base | @@ -20,7 +20,7 @@ class Block < ActiveRecord::Base | ||
20 | 20 | ||
21 | acts_as_having_settings | 21 | acts_as_having_settings |
22 | 22 | ||
23 | - scope :enabled, :conditions => { :enabled => true } | 23 | + scope :enabled, -> { where :enabled => true } |
24 | 24 | ||
25 | after_save do |block| | 25 | after_save do |block| |
26 | if block.owner.kind_of?(Profile) && block.owner.is_template? && block.mirror? | 26 | if block.owner.kind_of?(Profile) && block.owner.is_template? && block.mirror? |
app/models/blog_archives_block.rb
@@ -15,7 +15,7 @@ class BlogArchivesBlock < Block | @@ -15,7 +15,7 @@ class BlogArchivesBlock < Block | ||
15 | _('Blog posts') | 15 | _('Blog posts') |
16 | end | 16 | end |
17 | 17 | ||
18 | - settings_items :blog_id, Integer | 18 | + settings_items :blog_id, type: Integer |
19 | 19 | ||
20 | def blog | 20 | def blog |
21 | blog_id && owner.blogs.exists?(blog_id) ? owner.blogs.find(blog_id) : owner.blog | 21 | blog_id && owner.blogs.exists?(blog_id) ? owner.blogs.find(blog_id) : owner.blog |
@@ -33,10 +33,10 @@ class BlogArchivesBlock < Block | @@ -33,10 +33,10 @@ class BlogArchivesBlock < Block | ||
33 | results = '' | 33 | results = '' |
34 | posts = visible_posts(args[:person]) | 34 | posts = visible_posts(args[:person]) |
35 | posts.except(:order).count(:all, :group => 'EXTRACT(YEAR FROM published_at)').sort_by {|year, count| -year.to_i}.each do |year, count| | 35 | posts.except(:order).count(:all, :group => 'EXTRACT(YEAR FROM published_at)').sort_by {|year, count| -year.to_i}.each do |year, count| |
36 | - results << content_tag('li', content_tag('strong', "#{year} (#{count})")) | ||
37 | - results << "<ul class='#{year}-archive'>" | ||
38 | - posts.except(:order).count(:all, :conditions => ['EXTRACT(YEAR FROM published_at)=?', year], :group => 'EXTRACT(MONTH FROM published_at)').sort_by {|month, count| -month.to_i}.each do |month, count| | ||
39 | - results << content_tag('li', link_to("#{month_name(month.to_i)} (#{count})", owner_blog.url.merge(:year => year, :month => month))) | 36 | + results << content_tag('li', content_tag('strong', "#{year.to_i} (#{count})")) |
37 | + results << "<ul class='#{year.to_i}-archive'>" | ||
38 | + posts.except(:order).where('EXTRACT(YEAR FROM published_at)=?', year.to_i).group('EXTRACT(MONTH FROM published_at)').count.sort_by {|month, count| -month.to_i}.each do |month, count| | ||
39 | + results << content_tag('li', link_to("#{month_name(month.to_i)} (#{count})", owner_blog.url.merge(year: year.to_i, month: month.to_i))) | ||
40 | end | 40 | end |
41 | results << "</ul>" | 41 | results << "</ul>" |
42 | end | 42 | end |
app/models/box.rb
@@ -7,7 +7,7 @@ class Box < ActiveRecord::Base | @@ -7,7 +7,7 @@ class Box < ActiveRecord::Base | ||
7 | 7 | ||
8 | include Noosfero::Plugin::HotSpot | 8 | include Noosfero::Plugin::HotSpot |
9 | 9 | ||
10 | - scope :with_position, :conditions => ['boxes.position > 0'] | 10 | + scope :with_position, -> { where 'boxes.position > 0' } |
11 | 11 | ||
12 | def environment | 12 | def environment |
13 | owner ? (owner.kind_of?(Environment) ? owner : owner.environment) : nil | 13 | owner ? (owner.kind_of?(Environment) ? owner : owner.environment) : nil |
app/models/categorization.rb
1 | module Categorization | 1 | module Categorization |
2 | 2 | ||
3 | def add_category_to_object(category, object) | 3 | def add_category_to_object(category, object) |
4 | - if !find(:first, :conditions => {object_id_column => object, :category_id => category} ) | 4 | + if !self.where(object_id_column => object, :category_id => category).first |
5 | connection.execute("insert into #{table_name} (category_id, #{object_id_column}) values(#{category.id}, #{object.id})") | 5 | connection.execute("insert into #{table_name} (category_id, #{object_id_column}) values(#{category.id}, #{object.id})") |
6 | 6 | ||
7 | c = category.parent | 7 | c = category.parent |
8 | - while !c.nil? && !self.find(:first, :conditions => {object_id_column => object, :category_id => c}) | 8 | + while !c.nil? && !self.where(object_id_column => object, :category_id => c).first |
9 | connection.execute("insert into #{table_name} (category_id, #{object_id_column}, virtual) values(#{c.id}, #{object.id}, 1>0)") | 9 | connection.execute("insert into #{table_name} (category_id, #{object_id_column}, virtual) values(#{c.id}, #{object.id}, 1>0)") |
10 | c = c.parent | 10 | c = c.parent |
11 | end | 11 | end |
app/models/category.rb
@@ -14,12 +14,12 @@ class Category < ActiveRecord::Base | @@ -14,12 +14,12 @@ class Category < ActiveRecord::Base | ||
14 | validates_uniqueness_of :slug,:scope => [ :environment_id, :parent_id ], :message => N_('{fn} is already being used by another category.').fix_i18n | 14 | validates_uniqueness_of :slug,:scope => [ :environment_id, :parent_id ], :message => N_('{fn} is already being used by another category.').fix_i18n |
15 | belongs_to :environment | 15 | belongs_to :environment |
16 | 16 | ||
17 | - # Finds all top level categories for a given environment. | ||
18 | - scope :top_level_for, lambda { |environment| | ||
19 | - {:conditions => ['parent_id is null and environment_id = ?', environment.id ]} | 17 | + # Finds all top level categories for a given environment. |
18 | + scope :top_level_for, -> environment { | ||
19 | + where 'parent_id is null and environment_id = ?', environment.id | ||
20 | } | 20 | } |
21 | 21 | ||
22 | - scope :on_level, lambda { |parent| {:conditions => {:parent_id => parent}} } | 22 | + scope :on_level, -> parent { where :parent_id => parent } |
23 | 23 | ||
24 | acts_as_filesystem | 24 | acts_as_filesystem |
25 | 25 | ||
@@ -46,26 +46,26 @@ class Category < ActiveRecord::Base | @@ -46,26 +46,26 @@ class Category < ActiveRecord::Base | ||
46 | display_color = nil if display_color.blank? | 46 | display_color = nil if display_color.blank? |
47 | end | 47 | end |
48 | 48 | ||
49 | - scope :from_types, lambda { |types| | ||
50 | - types.select{ |t| t.blank? }.empty? ? | ||
51 | - { :conditions => { :type => types } } : | ||
52 | - { :conditions => [ "type IN (?) OR type IS NULL", types.reject{ |t| t.blank? } ] } | 49 | + scope :from_types, -> types { |
50 | + if types.select{ |t| t.blank? }.empty? then | ||
51 | + where(type: types) else | ||
52 | + where("type IN (?) OR type IS NULL", types.reject{ |t| t.blank? }) end | ||
53 | } | 53 | } |
54 | 54 | ||
55 | def recent_people(limit = 10) | 55 | def recent_people(limit = 10) |
56 | - self.people.paginate(:order => 'created_at DESC, id DESC', :page => 1, :per_page => limit) | 56 | + self.people.reorder('created_at DESC, id DESC').paginate(page: 1, per_page: limit) |
57 | end | 57 | end |
58 | 58 | ||
59 | def recent_enterprises(limit = 10) | 59 | def recent_enterprises(limit = 10) |
60 | - self.enterprises.paginate(:order => 'created_at DESC, id DESC', :page => 1, :per_page => limit) | 60 | + self.enterprises.reorder('created_at DESC, id DESC').paginate(page: 1, per_page: limit) |
61 | end | 61 | end |
62 | 62 | ||
63 | def recent_communities(limit = 10) | 63 | def recent_communities(limit = 10) |
64 | - self.communities.paginate(:order => 'created_at DESC, id DESC', :page => 1, :per_page => limit) | 64 | + self.communities.reorder('created_at DESC, id DESC').paginate(page: 1, per_page: limit) |
65 | end | 65 | end |
66 | 66 | ||
67 | def recent_products(limit = 10) | 67 | def recent_products(limit = 10) |
68 | - self.products.paginate(:order => 'created_at DESC, id DESC', :page => 1, :per_page => limit) | 68 | + self.products.reorder('created_at DESC, id DESC').paginate(page: 1, per_page: limit) |
69 | end | 69 | end |
70 | 70 | ||
71 | def recent_articles(limit = 10) | 71 | def recent_articles(limit = 10) |
@@ -73,7 +73,7 @@ class Category < ActiveRecord::Base | @@ -73,7 +73,7 @@ class Category < ActiveRecord::Base | ||
73 | end | 73 | end |
74 | 74 | ||
75 | def recent_comments(limit = 10) | 75 | def recent_comments(limit = 10) |
76 | - comments.paginate(:order => 'created_at DESC, comments.id DESC', :page => 1, :per_page => limit) | 76 | + self.comments.reorder('created_at DESC, comments.id DESC').paginate(page: 1, per_page: limit) |
77 | end | 77 | end |
78 | 78 | ||
79 | def most_commented_articles(limit = 10) | 79 | def most_commented_articles(limit = 10) |
@@ -81,7 +81,7 @@ class Category < ActiveRecord::Base | @@ -81,7 +81,7 @@ class Category < ActiveRecord::Base | ||
81 | end | 81 | end |
82 | 82 | ||
83 | def upcoming_events(limit = 10) | 83 | def upcoming_events(limit = 10) |
84 | - self.events.paginate(:conditions => [ 'start_date >= ?', DateTime.now.beginning_of_day ], :order => 'start_date', :page => 1, :per_page => limit) | 84 | + self.events.where('start_date >= ?', DateTime.now.beginning_of_day).order('start_date').paginate(page: 1, per_page: limit) |
85 | end | 85 | end |
86 | 86 | ||
87 | def display_in_menu? | 87 | def display_in_menu? |
@@ -90,11 +90,11 @@ class Category < ActiveRecord::Base | @@ -90,11 +90,11 @@ class Category < ActiveRecord::Base | ||
90 | 90 | ||
91 | def children_for_menu | 91 | def children_for_menu |
92 | results = [] | 92 | results = [] |
93 | - pending = children.find(:all, :conditions => { :display_in_menu => true}) | ||
94 | - while !pending.empty? | 93 | + pending = children.where(display_in_menu: true).all |
94 | + while pending.present? | ||
95 | cat = pending.shift | 95 | cat = pending.shift |
96 | results << cat | 96 | results << cat |
97 | - pending += cat.children.find(:all, :conditions => { :display_in_menu => true} ) | 97 | + pending += cat.children.where :display_in_menu => true |
98 | end | 98 | end |
99 | 99 | ||
100 | results | 100 | results |
@@ -102,7 +102,7 @@ class Category < ActiveRecord::Base | @@ -102,7 +102,7 @@ class Category < ActiveRecord::Base | ||
102 | 102 | ||
103 | def is_leaf_displayable_in_menu? | 103 | def is_leaf_displayable_in_menu? |
104 | return false if self.display_in_menu == false | 104 | return false if self.display_in_menu == false |
105 | - self.children.find(:all, :conditions => {:display_in_menu => true}).empty? | 105 | + self.children.where(:display_in_menu => true).empty? |
106 | end | 106 | end |
107 | 107 | ||
108 | def with_color | 108 | def with_color |
app/models/certifier.rb
@@ -20,7 +20,7 @@ class Certifier < ActiveRecord::Base | @@ -20,7 +20,7 @@ class Certifier < ActiveRecord::Base | ||
20 | validates_presence_of :name | 20 | validates_presence_of :name |
21 | 21 | ||
22 | def destroy | 22 | def destroy |
23 | - product_qualifiers.each { |pq| pq.update_attributes! :certifier => nil } | 23 | + product_qualifiers.each { |pq| pq.update! :certifier => nil } |
24 | super | 24 | super |
25 | end | 25 | end |
26 | 26 |
app/models/comment.rb
@@ -18,7 +18,7 @@ class Comment < ActiveRecord::Base | @@ -18,7 +18,7 @@ class Comment < ActiveRecord::Base | ||
18 | has_many :children, :class_name => 'Comment', :foreign_key => 'reply_of_id', :dependent => :destroy | 18 | has_many :children, :class_name => 'Comment', :foreign_key => 'reply_of_id', :dependent => :destroy |
19 | belongs_to :reply_of, :class_name => 'Comment', :foreign_key => 'reply_of_id' | 19 | belongs_to :reply_of, :class_name => 'Comment', :foreign_key => 'reply_of_id' |
20 | 20 | ||
21 | - scope :without_reply, :conditions => ['reply_of_id IS NULL'] | 21 | + scope :without_reply, -> { where 'reply_of_id IS NULL' } |
22 | 22 | ||
23 | include TimeScopes | 23 | include TimeScopes |
24 | 24 |
app/models/create_community.rb
@@ -34,7 +34,7 @@ class CreateCommunity < Task | @@ -34,7 +34,7 @@ class CreateCommunity < Task | ||
34 | ! DATA_FIELDS.include?(key.to_s) | 34 | ! DATA_FIELDS.include?(key.to_s) |
35 | end | 35 | end |
36 | 36 | ||
37 | - community.update_attributes(community_data) | 37 | + community.update(community_data) |
38 | community.image = image if image | 38 | community.image = image if image |
39 | community.environment = self.environment | 39 | community.environment = self.environment |
40 | community.save! | 40 | community.save! |
app/models/create_enterprise.rb
@@ -16,13 +16,13 @@ class CreateEnterprise < Task | @@ -16,13 +16,13 @@ class CreateEnterprise < Task | ||
16 | settings_items field.to_sym | 16 | settings_items field.to_sym |
17 | end | 17 | end |
18 | 18 | ||
19 | - # checks for virtual attributes | 19 | + # checks for virtual attributes |
20 | validates_presence_of :name, :identifier | 20 | validates_presence_of :name, :identifier |
21 | 21 | ||
22 | #checks if the validation method is region to validates | 22 | #checks if the validation method is region to validates |
23 | validates_presence_of :region_id, :if => lambda { |obj| obj.environment.organization_approval_method == :region } | 23 | validates_presence_of :region_id, :if => lambda { |obj| obj.environment.organization_approval_method == :region } |
24 | 24 | ||
25 | - validates_format_of :foundation_year, :with => /^\d*$/ | 25 | + validates_numericality_of :foundation_year, only_integer: true, if: -> o { o.foundation_year.present? } |
26 | 26 | ||
27 | # checks for actual attributes | 27 | # checks for actual attributes |
28 | validates_presence_of :requestor_id, :target_id | 28 | validates_presence_of :requestor_id, :target_id |
@@ -129,7 +129,7 @@ class CreateEnterprise < Task | @@ -129,7 +129,7 @@ class CreateEnterprise < Task | ||
129 | finish | 129 | finish |
130 | end | 130 | end |
131 | 131 | ||
132 | - # tells if this request was appoved | 132 | + # tells if this request was appoved |
133 | def approved? | 133 | def approved? |
134 | self.status == Task::Status::FINISHED | 134 | self.status == Task::Status::FINISHED |
135 | end | 135 | end |
app/models/domain.rb
@@ -14,7 +14,7 @@ class Domain < ActiveRecord::Base | @@ -14,7 +14,7 @@ class Domain < ActiveRecord::Base | ||
14 | 14 | ||
15 | # <tt>name</tt> must be sequences of alphanumeric characters (a to z, | 15 | # <tt>name</tt> must be sequences of alphanumeric characters (a to z, |
16 | # 0 to 9), plus '_' or '-', separated by dots. Letters must be lowercase. | 16 | # 0 to 9), plus '_' or '-', separated by dots. Letters must be lowercase. |
17 | - validates_format_of :name, :with => /^([a-z0-9_-]+\.)+[a-z0-9_-]+$/, :message => N_('{fn} must be composed of sequences of lowercase letters (a to z), numbers (0 to 9), "_" and "-", separated by dots.').fix_i18n | 17 | + validates_format_of :name, with: /\A([a-z0-9_-]+\.)+[a-z0-9_-]+\z/, message: N_('{fn} must be composed of sequences of lowercase letters (a to z), numbers (0 to 9), "_" and "-", separated by dots.').fix_i18n |
18 | 18 | ||
19 | # checks validations that could not be expressed using Rails' predefined | 19 | # checks validations that could not be expressed using Rails' predefined |
20 | # validations. In particular: | 20 | # validations. In particular: |
@@ -37,7 +37,7 @@ class Domain < ActiveRecord::Base | @@ -37,7 +37,7 @@ class Domain < ActiveRecord::Base | ||
37 | # "www.", but it will be removed before searching. So searching for | 37 | # "www.", but it will be removed before searching. So searching for |
38 | # 'www.example.net' is exactly the same as searching for just 'example.net' | 38 | # 'www.example.net' is exactly the same as searching for just 'example.net' |
39 | def self.find_by_name(name) | 39 | def self.find_by_name(name) |
40 | - self.find(:first, :conditions => [ 'name = ?', self.extract_domain_name(name) ]) | 40 | + self.where('name = ?', self.extract_domain_name(name)).first |
41 | end | 41 | end |
42 | 42 | ||
43 | # turns the argument (expected to be a String) into a domain name that is | 43 | # turns the argument (expected to be a String) into a domain name that is |
app/models/enterprise.rb
@@ -71,7 +71,7 @@ class Enterprise < Organization | @@ -71,7 +71,7 @@ class Enterprise < Organization | ||
71 | end | 71 | end |
72 | 72 | ||
73 | def highlighted_products_with_image(options = {}) | 73 | def highlighted_products_with_image(options = {}) |
74 | - Product.find(:all, {:conditions => {:highlighted => true}, :joins => :image}.merge(options)) | 74 | + Product.where(:highlighted => true).joins(:image) |
75 | end | 75 | end |
76 | 76 | ||
77 | def required_fields | 77 | def required_fields |
app/models/environment.rb
@@ -17,7 +17,10 @@ class Environment < ActiveRecord::Base | @@ -17,7 +17,10 @@ class Environment < ActiveRecord::Base | ||
17 | 17 | ||
18 | has_many :users | 18 | has_many :users |
19 | 19 | ||
20 | - self.partial_updates = false | 20 | + # allow roles use |
21 | + def self.dangerous_attribute_method? name | ||
22 | + false | ||
23 | + end | ||
21 | 24 | ||
22 | has_many :tasks, :dependent => :destroy, :as => 'target' | 25 | has_many :tasks, :dependent => :destroy, :as => 'target' |
23 | has_many :search_terms, :as => :context | 26 | has_many :search_terms, :as => :context |
@@ -108,7 +111,7 @@ class Environment < ActiveRecord::Base | @@ -108,7 +111,7 @@ class Environment < ActiveRecord::Base | ||
108 | def admins | 111 | def admins |
109 | admin_role = Environment::Roles.admin(self) | 112 | admin_role = Environment::Roles.admin(self) |
110 | return [] if admin_role.blank? | 113 | return [] if admin_role.blank? |
111 | - Person.members_of(self).all(:conditions => ['role_assignments.role_id = ?', admin_role.id]) | 114 | + Person.members_of(self).where 'role_assignments.role_id = ?', admin_role.id |
112 | end | 115 | end |
113 | 116 | ||
114 | # returns the available features for a Environment, in the form of a | 117 | # returns the available features for a Environment, in the form of a |
@@ -223,9 +226,11 @@ class Environment < ActiveRecord::Base | @@ -223,9 +226,11 @@ class Environment < ActiveRecord::Base | ||
223 | has_many :licenses | 226 | has_many :licenses |
224 | 227 | ||
225 | has_many :categories | 228 | has_many :categories |
226 | - has_many :display_categories, :class_name => 'Category', :conditions => 'display_color is not null and parent_id is null', :order => 'display_color' | 229 | + has_many :display_categories, -> { |
230 | + order('display_color').where('display_color is not null and parent_id is null') | ||
231 | + }, class_name: 'Category' | ||
227 | 232 | ||
228 | - has_many :product_categories, :conditions => { :type => 'ProductCategory'} | 233 | + has_many :product_categories, -> { where type: 'ProductCategory'} |
229 | has_many :regions | 234 | has_many :regions |
230 | has_many :states | 235 | has_many :states |
231 | has_many :cities | 236 | has_many :cities |
@@ -690,7 +695,7 @@ class Environment < ActiveRecord::Base | @@ -690,7 +695,7 @@ class Environment < ActiveRecord::Base | ||
690 | 695 | ||
691 | # the default Environment. | 696 | # the default Environment. |
692 | def self.default | 697 | def self.default |
693 | - self.find(:first, :conditions => [ 'is_default = ?', true ] ) | 698 | + self.where('is_default = ?', true).first |
694 | end | 699 | end |
695 | 700 | ||
696 | # returns an array with the top level categories for this environment. | 701 | # returns an array with the top level categories for this environment. |
@@ -871,7 +876,7 @@ class Environment < ActiveRecord::Base | @@ -871,7 +876,7 @@ class Environment < ActiveRecord::Base | ||
871 | end | 876 | end |
872 | 877 | ||
873 | def portal_folders | 878 | def portal_folders |
874 | - (settings[:portal_folders] || []).map{|fid| portal_community.articles.find(:first, :conditions => { :id => fid }) }.compact | 879 | + (settings[:portal_folders] || []).map{|fid| portal_community.articles.where(id: fid).first }.compact |
875 | end | 880 | end |
876 | 881 | ||
877 | def portal_folders=(folders) | 882 | def portal_folders=(folders) |
@@ -958,7 +963,7 @@ class Environment < ActiveRecord::Base | @@ -958,7 +963,7 @@ class Environment < ActiveRecord::Base | ||
958 | end | 963 | end |
959 | 964 | ||
960 | def highlighted_products_with_image(options = {}) | 965 | def highlighted_products_with_image(options = {}) |
961 | - Product.find(:all, {:conditions => {:highlighted => true, :profile_id => self.enterprises.find(:all, :select => :id) }, :joins => :image}.merge(options)) | 966 | + self.products.where(highlighted: true).joins(:image).order('created_at ASC') |
962 | end | 967 | end |
963 | 968 | ||
964 | settings_items :home_cache_in_minutes, :type => :integer, :default => 5 | 969 | settings_items :home_cache_in_minutes, :type => :integer, :default => 5 |
app/models/event.rb
@@ -12,14 +12,14 @@ class Event < Article | @@ -12,14 +12,14 @@ class Event < Article | ||
12 | settings_items :address, :type => :string | 12 | settings_items :address, :type => :string |
13 | 13 | ||
14 | def link=(value) | 14 | def link=(value) |
15 | - self.setting[:link] = maybe_add_http(value) | 15 | + self.setting[:link] = maybe_add_http(URI.escape value.to_s) |
16 | end | 16 | end |
17 | 17 | ||
18 | def link | 18 | def link |
19 | maybe_add_http(self.setting[:link]) | 19 | maybe_add_http(self.setting[:link]) |
20 | end | 20 | end |
21 | 21 | ||
22 | - xss_terminate :only => [ :name, :body, :link, :address ], :with => 'white_list', :on => 'validation' | 22 | + xss_terminate :only => [ :name, :body, :address ], :with => 'white_list', :on => 'validation' |
23 | 23 | ||
24 | def initialize(*args) | 24 | def initialize(*args) |
25 | super(*args) | 25 | super(*args) |
@@ -34,23 +34,21 @@ class Event < Article | @@ -34,23 +34,21 @@ class Event < Article | ||
34 | end | 34 | end |
35 | end | 35 | end |
36 | 36 | ||
37 | - scope :by_day, lambda { |date| | ||
38 | - { :conditions => [' start_date >= :start_date AND start_date <= :end_date AND end_date IS NULL OR (start_date <= :end_date AND end_date >= :start_date)', {:start_date => date.beginning_of_day, :end_date => date.end_of_day}], | ||
39 | - :order => 'start_date ASC' | ||
40 | - } | 37 | + scope :by_day, -> date { |
38 | + where('start_date >= :start_date AND start_date <= :end_date AND end_date IS NULL OR (start_date <= :end_date AND end_date >= :start_date)', | ||
39 | + start_date: date.beginning_of_day, end_date: date.end_of_day). | ||
40 | + order('start_date ASC') | ||
41 | } | 41 | } |
42 | 42 | ||
43 | - scope :next_events_from_month, lambda { |date| | 43 | + scope :next_events_from_month, -> date { |
44 | date_temp = date.strftime("%Y-%m-%d") | 44 | date_temp = date.strftime("%Y-%m-%d") |
45 | - { :conditions => ["start_date >= ?","#{date_temp}"], | ||
46 | - :order => 'start_date ASC' | ||
47 | - } | 45 | + order('start_date ASC') |
46 | + .where("start_date >= ?","#{date_temp}") | ||
48 | } | 47 | } |
49 | 48 | ||
50 | - scope :by_month, lambda { |date| | ||
51 | - { :conditions => ["EXTRACT(YEAR FROM start_date) = ? AND EXTRACT(MONTH FROM start_date) = ?",date.year,date.month], | ||
52 | - :order => 'start_date ASC' | ||
53 | - } | 49 | + scope :by_month, -> date { |
50 | + order('start_date ASC') | ||
51 | + .where("EXTRACT(YEAR FROM start_date) = ? AND EXTRACT(MONTH FROM start_date) = ?", date.year, date.month) | ||
54 | } | 52 | } |
55 | 53 | ||
56 | include WhiteListFilter | 54 | include WhiteListFilter |
@@ -71,12 +69,10 @@ class Event < Article | @@ -71,12 +69,10 @@ class Event < Article | ||
71 | 'event' | 69 | 'event' |
72 | end | 70 | end |
73 | 71 | ||
74 | - scope :by_range, lambda { |range| { | ||
75 | - :conditions => [ | ||
76 | - 'start_date BETWEEN :start_day AND :end_day OR end_date BETWEEN :start_day AND :end_day', | ||
77 | - { :start_day => range.first, :end_day => range.last } | ||
78 | - ] | ||
79 | - }} | 72 | + scope :by_range, -> range { |
73 | + where('start_date BETWEEN :start_day AND :end_day OR end_date BETWEEN :start_day AND :end_day', | ||
74 | + {:start_day => range.first, :end_day => range.last}) | ||
75 | + } | ||
80 | 76 | ||
81 | def self.date_range(year, month) | 77 | def self.date_range(year, month) |
82 | if year.nil? || month.nil? | 78 | if year.nil? || month.nil? |
app/models/external_feed.rb
@@ -5,9 +5,9 @@ class ExternalFeed < ActiveRecord::Base | @@ -5,9 +5,9 @@ class ExternalFeed < ActiveRecord::Base | ||
5 | validates_presence_of :address, :if => lambda {|efeed| efeed.enabled} | 5 | validates_presence_of :address, :if => lambda {|efeed| efeed.enabled} |
6 | validates_uniqueness_of :blog_id | 6 | validates_uniqueness_of :blog_id |
7 | 7 | ||
8 | - scope :enabled, :conditions => { :enabled => true } | ||
9 | - scope :expired, lambda { | ||
10 | - { :conditions => ['(fetched_at is NULL) OR (fetched_at < ?)', Time.now - FeedUpdater.update_interval] } | 8 | + scope :enabled, -> { where enabled: true } |
9 | + scope :expired, -> { | ||
10 | + where '(fetched_at is NULL) OR (fetched_at < ?)', Time.now - FeedUpdater.update_interval | ||
11 | } | 11 | } |
12 | 12 | ||
13 | attr_accessible :address, :enabled, :only_once | 13 | attr_accessible :address, :enabled, :only_once |
app/models/featured_products_block.rb
@@ -11,7 +11,7 @@ class FeaturedProductsBlock < Block | @@ -11,7 +11,7 @@ class FeaturedProductsBlock < Block | ||
11 | if block.owner.kind_of?(Environment) && block.product_ids.blank? | 11 | if block.owner.kind_of?(Environment) && block.product_ids.blank? |
12 | total = block.owner.products.count | 12 | total = block.owner.products.count |
13 | offset = rand([(total - block.groups_of * 3) + 1, 1].max) | 13 | offset = rand([(total - block.groups_of * 3) + 1, 1].max) |
14 | - block.product_ids = block.owner.highlighted_products_with_image(:offset => offset, :limit => block.groups_of * 3).map(&:id) | 14 | + block.product_ids = block.owner.highlighted_products_with_image.offset(offset).limit(block.groups_of * 3).map(&:id) |
15 | end | 15 | end |
16 | block.groups_of = block.groups_of.to_i | 16 | block.groups_of = block.groups_of.to_i |
17 | end | 17 | end |
app/models/feed_reader_block.rb
@@ -27,8 +27,8 @@ class FeedReaderBlock < Block | @@ -27,8 +27,8 @@ class FeedReaderBlock < Block | ||
27 | settings_items :update_errors, :type => :integer, :default => 0 | 27 | settings_items :update_errors, :type => :integer, :default => 0 |
28 | settings_items :error_message, :type => :string | 28 | settings_items :error_message, :type => :string |
29 | 29 | ||
30 | - scope :expired, lambda { | ||
31 | - { :conditions => [ '(fetched_at is NULL) OR (fetched_at < ?)', Time.now - FeedUpdater.update_interval] } | 30 | + scope :expired, -> { |
31 | + where '(fetched_at is NULL) OR (fetched_at < ?)', Time.now - FeedUpdater.update_interval | ||
32 | } | 32 | } |
33 | 33 | ||
34 | before_create do |block| | 34 | before_create do |block| |
app/models/folder.rb
@@ -56,10 +56,11 @@ class Folder < Article | @@ -56,10 +56,11 @@ class Folder < Article | ||
56 | profile.recent_documents(limit, ["articles.type != ? AND articles.highlighted = ? AND articles.parent_id = ?", 'Folder', highlight, id]) | 56 | profile.recent_documents(limit, ["articles.type != ? AND articles.highlighted = ? AND articles.parent_id = ?", 'Folder', highlight, id]) |
57 | end | 57 | end |
58 | 58 | ||
59 | - has_many :images, :class_name => 'Article', | ||
60 | - :foreign_key => 'parent_id', | ||
61 | - :order => 'articles.type, articles.name', | ||
62 | - :conditions => ["articles.type = 'UploadedFile' and articles.content_type in (?) or articles.type in ('Folder','Gallery')", UploadedFile.content_types] | 59 | + has_many :images, -> { |
60 | + order('articles.type, articles.name'). | ||
61 | + where("articles.type = 'UploadedFile' and articles.content_type in (?) or articles.type in ('Folder','Gallery')", UploadedFile.content_types) | ||
62 | + }, class_name: 'Article', foreign_key: 'parent_id' | ||
63 | + | ||
63 | 64 | ||
64 | def accept_uploads? | 65 | def accept_uploads? |
65 | !self.has_posts? || self.gallery? | 66 | !self.has_posts? || self.gallery? |
app/models/image.rb
1 | class Image < ActiveRecord::Base | 1 | class Image < ActiveRecord::Base |
2 | 2 | ||
3 | + attr_accessible :uploaded_data, :label, :remove_image | ||
4 | + attr_accessor :remove_image | ||
5 | + | ||
3 | def self.max_size | 6 | def self.max_size |
4 | Image.attachment_options[:max_size] | 7 | Image.attachment_options[:max_size] |
5 | end | 8 | end |
6 | 9 | ||
7 | sanitize_filename | 10 | sanitize_filename |
8 | 11 | ||
9 | - has_attachment :content_type => :image, | ||
10 | - :storage => :file_system, | 12 | + has_attachment :content_type => :image, |
13 | + :storage => :file_system, | ||
11 | :path_prefix => 'public/image_uploads', | 14 | :path_prefix => 'public/image_uploads', |
12 | :resize_to => '800x600>', | 15 | :resize_to => '800x600>', |
13 | :thumbnails => { :big => '150x150', | 16 | :thumbnails => { :big => '150x150', |
@@ -15,7 +18,8 @@ class Image < ActiveRecord::Base | @@ -15,7 +18,8 @@ class Image < ActiveRecord::Base | ||
15 | :portrait => '64x64', | 18 | :portrait => '64x64', |
16 | :minor => '50x50>', | 19 | :minor => '50x50>', |
17 | :icon => '20x20!' }, | 20 | :icon => '20x20!' }, |
18 | - :max_size => 5.megabytes # remember to update validate message below | 21 | + :max_size => 5.megabytes, # remember to update validate message below |
22 | + processor: 'Rmagick' | ||
19 | 23 | ||
20 | validates_attachment :size => N_("{fn} of uploaded file was larger than the maximum size of 5.0 MB").fix_i18n | 24 | validates_attachment :size => N_("{fn} of uploaded file was larger than the maximum size of 5.0 MB").fix_i18n |
21 | 25 | ||
@@ -23,10 +27,8 @@ class Image < ActiveRecord::Base | @@ -23,10 +27,8 @@ class Image < ActiveRecord::Base | ||
23 | 27 | ||
24 | postgresql_attachment_fu | 28 | postgresql_attachment_fu |
25 | 29 | ||
26 | - attr_accessible :uploaded_data, :label, :remove_image | ||
27 | - attr_accessor :remove_image | ||
28 | - | ||
29 | def current_data | 30 | def current_data |
30 | File.file?(full_filename) ? File.read(full_filename) : nil | 31 | File.file?(full_filename) ? File.read(full_filename) : nil |
31 | end | 32 | end |
33 | + | ||
32 | end | 34 | end |
app/models/input.rb
@@ -13,7 +13,7 @@ class Input < ActiveRecord::Base | @@ -13,7 +13,7 @@ class Input < ActiveRecord::Base | ||
13 | 13 | ||
14 | belongs_to :unit | 14 | belongs_to :unit |
15 | 15 | ||
16 | - scope :relevant_to_price, :conditions => { :relevant_to_price => true } | 16 | + scope :relevant_to_price, -> { where relevant_to_price: true } |
17 | 17 | ||
18 | include FloatHelper | 18 | include FloatHelper |
19 | 19 |
app/models/invite_friend.rb
@@ -45,7 +45,7 @@ class InviteFriend < Invitation | @@ -45,7 +45,7 @@ class InviteFriend < Invitation | ||
45 | private | 45 | private |
46 | def check_for_invitation_existence | 46 | def check_for_invitation_existence |
47 | if friend | 47 | if friend |
48 | - friend.tasks.pending.of("InviteFriend").find(:all, :conditions => {:requestor_id => person.id, :target_id => friend.id}).blank? | 48 | + friend.tasks.pending.of("InviteFriend").where(requestor_id: person.id, target_id: friend.id).blank? |
49 | end | 49 | end |
50 | end | 50 | end |
51 | 51 |
app/models/invite_member.rb
@@ -65,7 +65,7 @@ class InviteMember < Invitation | @@ -65,7 +65,7 @@ class InviteMember < Invitation | ||
65 | private | 65 | private |
66 | def check_for_invitation_existence | 66 | def check_for_invitation_existence |
67 | if friend | 67 | if friend |
68 | - friend.tasks.pending.of("InviteMember").find(:all, :conditions => {:requestor_id => person.id}).select { |t| t.data[:community_id] == community_id }.blank? | 68 | + friend.tasks.pending.of("InviteMember").where(requestor_id: person.id).select{ |t| t.data[:community_id] == community_id }.blank? |
69 | end | 69 | end |
70 | end | 70 | end |
71 | 71 |
app/models/link_list_block.rb
@@ -41,7 +41,7 @@ class LinkListBlock < Block | @@ -41,7 +41,7 @@ class LinkListBlock < Block | ||
41 | [N_('New window'), '_new'], | 41 | [N_('New window'), '_new'], |
42 | ] | 42 | ] |
43 | 43 | ||
44 | - settings_items :links, Array, :default => [] | 44 | + settings_items :links, type: Array, :default => [] |
45 | 45 | ||
46 | before_save do |block| | 46 | before_save do |block| |
47 | block.links = block.links.delete_if {|i| i[:name].blank? and i[:address].blank?} | 47 | block.links = block.links.delete_if {|i| i[:name].blank? and i[:address].blank?} |
app/models/organization.rb
@@ -84,7 +84,7 @@ class Organization < Profile | @@ -84,7 +84,7 @@ class Organization < Profile | ||
84 | end | 84 | end |
85 | 85 | ||
86 | def find_pending_validation(code) | 86 | def find_pending_validation(code) |
87 | - validations.pending.find(:first, :conditions => {:code => code}) | 87 | + validations.pending.where(code: code).first |
88 | end | 88 | end |
89 | 89 | ||
90 | def processed_validations | 90 | def processed_validations |
@@ -92,7 +92,7 @@ class Organization < Profile | @@ -92,7 +92,7 @@ class Organization < Profile | ||
92 | end | 92 | end |
93 | 93 | ||
94 | def find_processed_validation(code) | 94 | def find_processed_validation(code) |
95 | - validations.finished.find(:first, :conditions => {:code => code}) | 95 | + validations.finished.where(code: code).first |
96 | end | 96 | end |
97 | 97 | ||
98 | def is_validation_entity? | 98 | def is_validation_entity? |
@@ -140,7 +140,7 @@ class Organization < Profile | @@ -140,7 +140,7 @@ class Organization < Profile | ||
140 | 140 | ||
141 | settings_items :zip_code, :city, :state, :country | 141 | settings_items :zip_code, :city, :state, :country |
142 | 142 | ||
143 | - validates_format_of :foundation_year, :with => Noosfero::Constants::INTEGER_FORMAT | 143 | + validates_numericality_of :foundation_year, only_integer: true, if: -> o { o.foundation_year.present? } |
144 | validates_format_of :contact_email, :with => Noosfero::Constants::EMAIL_FORMAT, :if => (lambda { |org| !org.contact_email.blank? }) | 144 | validates_format_of :contact_email, :with => Noosfero::Constants::EMAIL_FORMAT, :if => (lambda { |org| !org.contact_email.blank? }) |
145 | validates_as_cnpj :cnpj | 145 | validates_as_cnpj :cnpj |
146 | 146 | ||
@@ -190,7 +190,7 @@ class Organization < Profile | @@ -190,7 +190,7 @@ class Organization < Profile | ||
190 | end | 190 | end |
191 | 191 | ||
192 | def already_request_membership?(person) | 192 | def already_request_membership?(person) |
193 | - self.tasks.pending.find_by_requestor_id(person.id, :conditions => { :type => 'AddMember' }) | 193 | + self.tasks.pending.where(type: 'AddMember', requestor_id: person.id).first |
194 | end | 194 | end |
195 | 195 | ||
196 | def jid(options = {}) | 196 | def jid(options = {}) |
app/models/person.rb
@@ -16,27 +16,26 @@ class Person < Profile | @@ -16,27 +16,26 @@ class Person < Profile | ||
16 | acts_as_trackable :after_add => Proc.new {|p,t| notify_activity(t)} | 16 | acts_as_trackable :after_add => Proc.new {|p,t| notify_activity(t)} |
17 | acts_as_accessor | 17 | acts_as_accessor |
18 | 18 | ||
19 | - scope :members_of, lambda { |resources| | ||
20 | - resources = [resources] if !resources.kind_of?(Array) | 19 | + scope :members_of, -> resources { |
20 | + resources = Array(resources) | ||
21 | conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') | 21 | conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') |
22 | - { :select => 'DISTINCT profiles.*', :joins => :role_assignments, :conditions => [conditions] } | 22 | + select('DISTINCT profiles.*').joins(:role_assignments).where([conditions]) |
23 | } | 23 | } |
24 | 24 | ||
25 | - scope :not_members_of, lambda { |resources| | ||
26 | - resources = [resources] if !resources.kind_of?(Array) | 25 | + scope :not_members_of, -> resources { |
26 | + resources = Array(resources) | ||
27 | conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') | 27 | conditions = resources.map {|resource| "role_assignments.resource_type = '#{resource.class.base_class.name}' AND role_assignments.resource_id = #{resource.id || -1}"}.join(' OR ') |
28 | - { :select => 'DISTINCT profiles.*', :conditions => ['"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions] } | 28 | + select('DISTINCT profiles.*').where('"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "role_assignments" ON "role_assignments"."accessor_id" = "profiles"."id" AND "role_assignments"."accessor_type" = (\'Profile\') WHERE "profiles"."type" IN (\'Person\') AND (%s))' % conditions) |
29 | } | 29 | } |
30 | 30 | ||
31 | - scope :by_role, lambda { |roles| | ||
32 | - roles = [roles] unless roles.kind_of?(Array) | ||
33 | - { :select => 'DISTINCT profiles.*', :joins => :role_assignments, :conditions => ['role_assignments.role_id IN (?)', | ||
34 | -roles] } | 31 | + scope :by_role, -> roles { |
32 | + roles = Array(roles) | ||
33 | + select('DISTINCT profiles.*').joins(:role_assignments).where('role_assignments.role_id IN (?)', roles) | ||
35 | } | 34 | } |
36 | 35 | ||
37 | - scope :not_friends_of, lambda { |resources| | 36 | + scope :not_friends_of, -> resources { |
38 | resources = Array(resources) | 37 | resources = Array(resources) |
39 | - { :select => 'DISTINCT profiles.*', :conditions => ['"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "friendships" ON "friendships"."person_id" = "profiles"."id" WHERE "friendships"."friend_id" IN (%s))' % resources.map(&:id)] } | 38 | + select('DISTINCT profiles.*').where('"profiles"."id" NOT IN (SELECT DISTINCT profiles.id FROM "profiles" INNER JOIN "friendships" ON "friendships"."person_id" = "profiles"."id" WHERE "friendships"."friend_id" IN (%s))' % resources.map(&:id)) |
40 | } | 39 | } |
41 | 40 | ||
42 | scope :visible_for_person, lambda { |person| | 41 | scope :visible_for_person, lambda { |person| |
@@ -68,6 +67,9 @@ roles] } | @@ -68,6 +67,9 @@ roles] } | ||
68 | end | 67 | end |
69 | alias_method_chain :has_permission?, :plugins | 68 | alias_method_chain :has_permission?, :plugins |
70 | 69 | ||
70 | + # for eager loading | ||
71 | + has_many :memberships, through: :role_assignments, source: :resource, source_type: 'Profile' | ||
72 | + | ||
71 | def memberships | 73 | def memberships |
72 | scopes = [] | 74 | scopes = [] |
73 | plugins_scopes = plugins.dispatch_scopes(:person_memberships, self) | 75 | plugins_scopes = plugins.dispatch_scopes(:person_memberships, self) |
@@ -84,7 +86,9 @@ roles] } | @@ -84,7 +86,9 @@ roles] } | ||
84 | has_many :friendships, :dependent => :destroy | 86 | has_many :friendships, :dependent => :destroy |
85 | has_many :friends, :class_name => 'Person', :through => :friendships | 87 | has_many :friends, :class_name => 'Person', :through => :friendships |
86 | 88 | ||
87 | - scope :online, lambda { { :include => :user, :conditions => ["users.chat_status != '' AND users.chat_status_at >= ?", DateTime.now - User.expires_chat_status_every.minutes] } } | 89 | + scope :online, -> { |
90 | + joins(:user).where("users.chat_status != '' AND users.chat_status_at >= ?", DateTime.now - User.expires_chat_status_every.minutes) | ||
91 | + } | ||
88 | 92 | ||
89 | has_many :requested_tasks, :class_name => 'Task', :foreign_key => :requestor_id, :dependent => :destroy | 93 | has_many :requested_tasks, :class_name => 'Task', :foreign_key => :requestor_id, :dependent => :destroy |
90 | 94 | ||
@@ -100,21 +104,31 @@ roles] } | @@ -100,21 +104,31 @@ roles] } | ||
100 | has_and_belongs_to_many :acepted_forums, :class_name => 'Forum', :join_table => 'terms_forum_people' | 104 | has_and_belongs_to_many :acepted_forums, :class_name => 'Forum', :join_table => 'terms_forum_people' |
101 | has_and_belongs_to_many :articles_with_access, :class_name => 'Article', :join_table => 'article_privacy_exceptions' | 105 | has_and_belongs_to_many :articles_with_access, :class_name => 'Article', :join_table => 'article_privacy_exceptions' |
102 | 106 | ||
103 | - has_many :suggested_profiles, :class_name => 'ProfileSuggestion', :foreign_key => :person_id, :order => 'score DESC', :dependent => :destroy | ||
104 | - has_many :suggested_people, :through => :suggested_profiles, :source => :suggestion, :conditions => ['profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Person', true] | ||
105 | - has_many :suggested_communities, :through => :suggested_profiles, :source => :suggestion, :conditions => ['profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Community', true] | 107 | + has_many :suggested_profiles, class_name: 'ProfileSuggestion', foreign_key: :person_id, order: 'score DESC', dependent: :destroy |
108 | + has_many :suggested_people, -> { | ||
109 | + where 'profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Person', true | ||
110 | + }, through: :suggested_profiles, source: :suggestion | ||
111 | + has_many :suggested_communities, -> { | ||
112 | + where 'profile_suggestions.suggestion_type = ? AND profile_suggestions.enabled = ?', 'Community', true | ||
113 | + }, through: :suggested_profiles, source: :suggestion | ||
106 | 114 | ||
107 | - scope :more_popular, :order => 'friends_count DESC' | 115 | + scope :more_popular, -> { order 'friends_count DESC' } |
108 | 116 | ||
109 | - scope :abusers, :joins => :abuse_complaints, :conditions => ['tasks.status = 3'], :select => 'DISTINCT profiles.*' | ||
110 | - scope :non_abusers, :joins => "LEFT JOIN tasks ON profiles.id = tasks.requestor_id AND tasks.type='AbuseComplaint'", :conditions => ["tasks.status != 3 OR tasks.id is NULL"], :select => "DISTINCT profiles.*" | 117 | + scope :abusers, -> { |
118 | + joins(:abuse_complaints).where('tasks.status = 3').select('DISTINCT profiles.*') | ||
119 | + } | ||
120 | + scope :non_abusers, -> { | ||
121 | + select("DISTINCT profiles.*"). | ||
122 | + joins("LEFT JOIN tasks ON profiles.id = tasks.requestor_id AND tasks.type='AbuseComplaint'"). | ||
123 | + where("tasks.status != 3 OR tasks.id is NULL") | ||
124 | + } | ||
111 | 125 | ||
112 | - scope :admins, :joins => [:role_assignments => :role], :conditions => ['roles.key = ?', 'environment_administrator' ] | ||
113 | - scope :activated, :joins => :user, :conditions => ['users.activation_code IS NULL AND users.activated_at IS NOT NULL'] | ||
114 | - scope :deactivated, :joins => :user, :conditions => ['NOT (users.activation_code IS NULL AND users.activated_at IS NOT NULL)'] | 126 | + scope :admins, -> { joins(:role_assignments => :role).where('roles.key = ?', 'environment_administrator') } |
127 | + scope :activated, -> { joins(:user).where('users.activation_code IS NULL AND users.activated_at IS NOT NULL') } | ||
128 | + scope :deactivated, -> { joins(:user).where('NOT (users.activation_code IS NULL AND users.activated_at IS NOT NULL)') } | ||
115 | 129 | ||
116 | after_destroy do |person| | 130 | after_destroy do |person| |
117 | - Friendship.find(:all, :conditions => { :friend_id => person.id}).each { |friendship| friendship.destroy } | 131 | + Friendship.where(friend_id: person.id).each{ |friendship| friendship.destroy } |
118 | end | 132 | end |
119 | 133 | ||
120 | belongs_to :user, :dependent => :delete | 134 | belongs_to :user, :dependent => :delete |
@@ -177,7 +191,7 @@ roles] } | @@ -177,7 +191,7 @@ roles] } | ||
177 | end | 191 | end |
178 | 192 | ||
179 | def remove_friend(friend) | 193 | def remove_friend(friend) |
180 | - Friendship.find(:first, :conditions => {:friend_id => friend, :person_id => id}).destroy | 194 | + Friendship.where(friend_id: friend, person_id: id).first.destroy |
181 | end | 195 | end |
182 | 196 | ||
183 | FIELDS = %w[ | 197 | FIELDS = %w[ |
@@ -288,7 +302,7 @@ roles] } | @@ -288,7 +302,7 @@ roles] } | ||
288 | end | 302 | end |
289 | 303 | ||
290 | validates_each :email, :on => :update do |record,attr,value| | 304 | validates_each :email, :on => :update do |record,attr,value| |
291 | - if User.find(:first, :conditions => ['email = ? and id != ? and environment_id = ?', value, record.user.id, record.environment.id]) | 305 | + if User.where('email = ? and id != ? and environment_id = ?', value, record.user.id, record.environment.id).first |
292 | record.errors.add(attr, _('{fn} is already used by other user').fix_i18n) | 306 | record.errors.add(attr, _('{fn} is already used by other user').fix_i18n) |
293 | end | 307 | end |
294 | end | 308 | end |
@@ -397,7 +411,7 @@ roles] } | @@ -397,7 +411,7 @@ roles] } | ||
397 | def ask_to_join?(community) | 411 | def ask_to_join?(community) |
398 | return false if !community.visible? | 412 | return false if !community.visible? |
399 | return false if memberships.include?(community) | 413 | return false if memberships.include?(community) |
400 | - return false if AddMember.find(:first, :conditions => {:requestor_id => self.id, :target_id => community.id}) | 414 | + return false if AddMember.where(requestor_id: self.id, target_id: community.id).first |
401 | !refused_communities.include?(community) | 415 | !refused_communities.include?(community) |
402 | end | 416 | end |
403 | 417 |
app/models/person_notifier.rb
1 | +# FIXME needed by test/units/application_helper.rb | ||
2 | +require_dependency 'application_helper' | ||
3 | + | ||
1 | class PersonNotifier | 4 | class PersonNotifier |
2 | 5 | ||
3 | def initialize(person) | 6 | def initialize(person) |
@@ -28,7 +31,7 @@ class PersonNotifier | @@ -28,7 +31,7 @@ class PersonNotifier | ||
28 | 31 | ||
29 | def notify | 32 | def notify |
30 | if @person.notification_time && @person.notification_time > 0 | 33 | if @person.notification_time && @person.notification_time > 0 |
31 | - notifications = @person.tracked_notifications.find(:all, :conditions => ["created_at > ?", notify_from]) | 34 | + notifications = @person.tracked_notifications.where("created_at > ?", notify_from) |
32 | tasks = Task.to(@person).without_spam.pending.where("created_at > ?", notify_from).order_by('created_at', 'asc') | 35 | tasks = Task.to(@person).without_spam.pending.where("created_at > ?", notify_from).order_by('created_at', 'asc') |
33 | 36 | ||
34 | Noosfero.with_locale @person.environment.default_language do | 37 | Noosfero.with_locale @person.environment.default_language do |
@@ -74,9 +77,8 @@ class PersonNotifier | @@ -74,9 +77,8 @@ class PersonNotifier | ||
74 | 77 | ||
75 | end | 78 | end |
76 | 79 | ||
77 | - class Mailer < ActionMailer::Base | 80 | + class Mailer < ApplicationMailer |
78 | 81 | ||
79 | - helper ApplicationHelper | ||
80 | helper ActionTrackerHelper | 82 | helper ActionTrackerHelper |
81 | 83 | ||
82 | def session | 84 | def session |
@@ -85,8 +87,8 @@ class PersonNotifier | @@ -85,8 +87,8 @@ class PersonNotifier | ||
85 | 87 | ||
86 | def content_summary(person, notifications, tasks) | 88 | def content_summary(person, notifications, tasks) |
87 | if person.environment | 89 | if person.environment |
88 | - ActionMailer::Base.asset_host = person.environment.top_url | ||
89 | - ActionMailer::Base.default_url_options[:host] = person.environment.default_hostname | 90 | + ApplicationMailer.asset_host = person.environment.top_url |
91 | + ApplicationMailer.default_url_options[:host] = person.environment.default_hostname | ||
90 | end | 92 | end |
91 | 93 | ||
92 | @current_theme = 'default' | 94 | @current_theme = 'default' |
@@ -94,7 +96,7 @@ class PersonNotifier | @@ -94,7 +96,7 @@ class PersonNotifier | ||
94 | @recipient = @profile.nickname || @profile.name | 96 | @recipient = @profile.nickname || @profile.name |
95 | @notifications = notifications | 97 | @notifications = notifications |
96 | @tasks = tasks | 98 | @tasks = tasks |
97 | - @environment = @profile.environment.name | 99 | + @environment = @profile.environment |
98 | @url = @profile.environment.top_url | 100 | @url = @profile.environment.top_url |
99 | mail( | 101 | mail( |
100 | content_type: "text/html", | 102 | content_type: "text/html", |
app/models/product.rb
@@ -52,8 +52,8 @@ class Product < ActiveRecord::Base | @@ -52,8 +52,8 @@ class Product < ActiveRecord::Base | ||
52 | 52 | ||
53 | scope :more_recent, :order => "created_at DESC" | 53 | scope :more_recent, :order => "created_at DESC" |
54 | 54 | ||
55 | - scope :from_category, lambda { |category| | ||
56 | - {:joins => :product_category, :conditions => ['categories.path LIKE ?', "%#{category.slug}%"]} if category | 55 | + scope :from_category, -> category { |
56 | + joins(:product_category).where('categories.path LIKE ?', "%#{category.slug}%") if category | ||
57 | } | 57 | } |
58 | 58 | ||
59 | scope :visible_for_person, lambda { |person| | 59 | scope :visible_for_person, lambda { |person| |
app/models/product_category.rb
@@ -6,19 +6,19 @@ class ProductCategory < Category | @@ -6,19 +6,19 @@ class ProductCategory < Category | ||
6 | attr_accessible :name, :parent, :environment | 6 | attr_accessible :name, :parent, :environment |
7 | 7 | ||
8 | scope :unique, :select => 'DISTINCT ON (path) categories.*' | 8 | scope :unique, :select => 'DISTINCT ON (path) categories.*' |
9 | - scope :by_enterprise, lambda { |enterprise| { | ||
10 | - :joins => :products, | ||
11 | - :conditions => ['products.profile_id = ?', enterprise.id] | ||
12 | - }} | ||
13 | - scope :by_environment, lambda { |environment| { | ||
14 | - :conditions => ['environment_id = ?', environment.id] | ||
15 | - }} | ||
16 | - scope :unique_by_level, lambda { |level| { | ||
17 | - :select => "DISTINCT ON (filtered_category) split_part(path, '/', #{level}) AS filtered_category, categories.*" | ||
18 | - }} | 9 | + scope :by_enterprise, -> enterprise { |
10 | + joins(:products). | ||
11 | + where('products.profile_id = ?', enterprise.id) | ||
12 | + } | ||
13 | + scope :by_environment, -> environment { | ||
14 | + where 'environment_id = ?', environment.id | ||
15 | + } | ||
16 | + scope :unique_by_level, -> level { | ||
17 | + select "DISTINCT ON (filtered_category) split_part(path, '/', #{level}) AS filtered_category, categories.*" | ||
18 | + } | ||
19 | 19 | ||
20 | def all_products | 20 | def all_products |
21 | - Product.find(:all, :conditions => { :product_category_id => (all_children << self).map(&:id) }) | 21 | + Product.where(product_category_id: (all_children << self).map(&:id)) |
22 | end | 22 | end |
23 | 23 | ||
24 | def self.menu_categories(top_category, env) | 24 | def self.menu_categories(top_category, env) |
app/models/products_block.rb
@@ -39,7 +39,7 @@ class ProductsBlock < Block | @@ -39,7 +39,7 @@ class ProductsBlock < Block | ||
39 | link_to(_('View all products'), owner.public_profile_url.merge(:controller => 'catalog', :action => 'index')) | 39 | link_to(_('View all products'), owner.public_profile_url.merge(:controller => 'catalog', :action => 'index')) |
40 | end | 40 | end |
41 | 41 | ||
42 | - settings_items :product_ids, Array | 42 | + settings_items :product_ids, type: Array |
43 | def product_ids=(array) | 43 | def product_ids=(array) |
44 | self.settings[:product_ids] = array | 44 | self.settings[:product_ids] = array |
45 | if self.settings[:product_ids] | 45 | if self.settings[:product_ids] |
app/models/profile.rb
@@ -50,7 +50,7 @@ class Profile < ActiveRecord::Base | @@ -50,7 +50,7 @@ class Profile < ActiveRecord::Base | ||
50 | all_roles(env_id).select{ |r| r.key.match(/^profile_/) unless r.key.blank? || !r.profile_id.nil?} | 50 | all_roles(env_id).select{ |r| r.key.match(/^profile_/) unless r.key.blank? || !r.profile_id.nil?} |
51 | end | 51 | end |
52 | def self.all_roles(env_id) | 52 | def self.all_roles(env_id) |
53 | - Role.all :conditions => { :environment_id => env_id } | 53 | + Role.where(environment_id: env_id) |
54 | end | 54 | end |
55 | def self.method_missing(m, *args, &block) | 55 | def self.method_missing(m, *args, &block) |
56 | role = find_role(m, args[0]) | 56 | role = find_role(m, args[0]) |
@@ -87,20 +87,28 @@ class Profile < ActiveRecord::Base | @@ -87,20 +87,28 @@ class Profile < ActiveRecord::Base | ||
87 | 87 | ||
88 | include Noosfero::Plugin::HotSpot | 88 | include Noosfero::Plugin::HotSpot |
89 | 89 | ||
90 | - scope :memberships_of, lambda { |person| { :select => 'DISTINCT profiles.*', :joins => :role_assignments, :conditions => ['role_assignments.accessor_type = ? AND role_assignments.accessor_id = ?', person.class.base_class.name, person.id ] } } | 90 | + scope :memberships_of, -> person { |
91 | + select('DISTINCT profiles.*'). | ||
92 | + joins(:role_assignments). | ||
93 | + where('role_assignments.accessor_type = ? AND role_assignments.accessor_id = ?', person.class.base_class.name, person.id) | ||
94 | + } | ||
91 | #FIXME: these will work only if the subclass is already loaded | 95 | #FIXME: these will work only if the subclass is already loaded |
92 | - scope :enterprises, lambda { {:conditions => (Enterprise.send(:subclasses).map(&:name) << 'Enterprise').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")} } | ||
93 | - scope :communities, lambda { {:conditions => (Community.send(:subclasses).map(&:name) << 'Community').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")} } | ||
94 | - scope :templates, lambda { |template_id = nil| | ||
95 | - conditions = {:conditions => {:is_template => true}} | ||
96 | - conditions[:conditions].merge!({:id => template_id}) unless template_id.nil? | ||
97 | - conditions | 96 | + scope :enterprises, -> { |
97 | + where((Enterprise.send(:subclasses).map(&:name) << 'Enterprise').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")) | ||
98 | + } | ||
99 | + scope :communities, -> { | ||
100 | + where((Community.send(:subclasses).map(&:name) << 'Community').map { |klass| "profiles.type = '#{klass}'"}.join(" OR ")) | ||
101 | + } | ||
102 | + scope :templates, -> template_id = nil { | ||
103 | + s = where is_template: true | ||
104 | + s = s.where id: template_id if template_id | ||
105 | + s | ||
98 | } | 106 | } |
99 | 107 | ||
100 | - scope :with_templates, lambda { |templates| | ||
101 | - {:conditions => {:template_id => templates}} | 108 | + scope :with_templates, -> templates { |
109 | + where template_id: templates | ||
102 | } | 110 | } |
103 | - scope :no_templates, {:conditions => {:is_template => false}} | 111 | + scope :no_templates, -> { where is_template: false } |
104 | 112 | ||
105 | # Returns a scoped object to select profiles in a given location or in a radius | 113 | # Returns a scoped object to select profiles in a given location or in a radius |
106 | # distance from the given location center. | 114 | # distance from the given location center. |
@@ -177,10 +185,10 @@ class Profile < ActiveRecord::Base | @@ -177,10 +185,10 @@ class Profile < ActiveRecord::Base | ||
177 | Profile.column_names.map{|n| [Profile.table_name, n].join('.')}.join(',') | 185 | Profile.column_names.map{|n| [Profile.table_name, n].join('.')}.join(',') |
178 | end | 186 | end |
179 | 187 | ||
180 | - scope :visible, :conditions => { :visible => true, :secret => false } | ||
181 | - scope :disabled, :conditions => { :visible => false } | ||
182 | - scope :public, :conditions => { :visible => true, :public_profile => true, :secret => false } | ||
183 | - scope :enabled, :conditions => { :enabled => true } | 188 | + scope :visible, -> { where visible: true, secret: false } |
189 | + scope :disabled, -> { where visible: false } | ||
190 | + scope :is_public, -> { where visible: true, public_profile: true, secret: false } | ||
191 | + scope :enabled, -> { where enabled: true } | ||
184 | 192 | ||
185 | # Subclasses must override this method | 193 | # Subclasses must override this method |
186 | scope :more_popular | 194 | scope :more_popular |
@@ -229,7 +237,7 @@ class Profile < ActiveRecord::Base | @@ -229,7 +237,7 @@ class Profile < ActiveRecord::Base | ||
229 | validates_length_of :description, :maximum => 550, :allow_nil => true | 237 | validates_length_of :description, :maximum => 550, :allow_nil => true |
230 | 238 | ||
231 | # Valid identifiers must match this format. | 239 | # Valid identifiers must match this format. |
232 | - IDENTIFIER_FORMAT = /^#{Noosfero.identifier_format}$/ | 240 | + IDENTIFIER_FORMAT = /\A#{Noosfero.identifier_format}\Z/ |
233 | 241 | ||
234 | # These names cannot be used as identifiers for Profiles | 242 | # These names cannot be used as identifiers for Profiles |
235 | RESERVED_IDENTIFIERS = %w[ | 243 | RESERVED_IDENTIFIERS = %w[ |
@@ -281,7 +289,7 @@ class Profile < ActiveRecord::Base | @@ -281,7 +289,7 @@ class Profile < ActiveRecord::Base | ||
281 | end | 289 | end |
282 | end | 290 | end |
283 | 291 | ||
284 | - has_many :profile_categorizations, :conditions => [ 'categories_profiles.virtual = ?', false ] | 292 | + has_many :profile_categorizations, -> { where 'categories_profiles.virtual = ?', false } |
285 | has_many :categories, :through => :profile_categorizations | 293 | has_many :categories, :through => :profile_categorizations |
286 | 294 | ||
287 | has_many :profile_categorizations_including_virtual, :class_name => 'ProfileCategorization' | 295 | has_many :profile_categorizations_including_virtual, :class_name => 'ProfileCategorization' |
@@ -508,14 +516,13 @@ class Profile < ActiveRecord::Base | @@ -508,14 +516,13 @@ class Profile < ActiveRecord::Base | ||
508 | self.articles.recent(limit, options, pagination) | 516 | self.articles.recent(limit, options, pagination) |
509 | end | 517 | end |
510 | 518 | ||
511 | - def last_articles(limit = 10, options = {}) | ||
512 | - options = { :limit => limit, | ||
513 | - :conditions => ["advertise = ? AND published = ? AND | ||
514 | - ((articles.type != ? and articles.type != ? and articles.type != ?) OR | ||
515 | - articles.type is NULL)", | ||
516 | - true, true, 'UploadedFile', 'RssFeed', 'Blog'], | ||
517 | - :order => 'articles.published_at desc, articles.id desc' }.merge(options) | ||
518 | - self.articles.find(:all, options) | 519 | + def last_articles limit = 10 |
520 | + self.articles.limit(limit).where( | ||
521 | + "advertise = ? AND published = ? AND | ||
522 | + ((articles.type != ? and articles.type != ? and articles.type != ?) OR | ||
523 | + articles.type is NULL)", | ||
524 | + true, true, 'UploadedFile', 'RssFeed', 'Blog' | ||
525 | + ).order('articles.published_at desc, articles.id desc') | ||
519 | end | 526 | end |
520 | 527 | ||
521 | class << self | 528 | class << self |
@@ -713,7 +720,7 @@ private :generate_url, :url_options | @@ -713,7 +720,7 @@ private :generate_url, :url_options | ||
713 | num = num + 1 | 720 | num = num + 1 |
714 | new_name = original_article.name + ' ' + num.to_s | 721 | new_name = original_article.name + ' ' + num.to_s |
715 | end | 722 | end |
716 | - original_article.update_attributes!(:name => new_name) | 723 | + original_article.update!(:name => new_name) |
717 | end | 724 | end |
718 | article_copy = article.copy(:profile => self, :parent => parent, :advertise => false) | 725 | article_copy = article.copy(:profile => self, :parent => parent, :advertise => false) |
719 | if article.profile.home_page == article | 726 | if article.profile.home_page == article |
app/models/profile_activity.rb
@@ -25,8 +25,8 @@ class ProfileActivity < ActiveRecord::Base | @@ -25,8 +25,8 @@ class ProfileActivity < ActiveRecord::Base | ||
25 | protected | 25 | protected |
26 | 26 | ||
27 | def copy_timestamps | 27 | def copy_timestamps |
28 | - self.created_at = self.activity.created_at | ||
29 | - self.updated_at = self.activity.updated_at | 28 | + self.created_at = self.activity.created_at if self.activity.created_at |
29 | + self.updated_at = self.activity.updated_at if self.activity.updated_at | ||
30 | end | 30 | end |
31 | 31 | ||
32 | end | 32 | end |
app/models/profile_categorization.rb
1 | class ProfileCategorization < ActiveRecord::Base | 1 | class ProfileCategorization < ActiveRecord::Base |
2 | - set_table_name :categories_profiles | 2 | + self.table_name = :categories_profiles |
3 | belongs_to :profile | 3 | belongs_to :profile |
4 | belongs_to :category | 4 | belongs_to :category |
5 | 5 | ||
@@ -13,7 +13,7 @@ class ProfileCategorization < ActiveRecord::Base | @@ -13,7 +13,7 @@ class ProfileCategorization < ActiveRecord::Base | ||
13 | end | 13 | end |
14 | 14 | ||
15 | def self.remove_region(profile) | 15 | def self.remove_region(profile) |
16 | - region = profile.categories.find(:first, :conditions => { :type => [Region, State, City].map(&:name) }) | 16 | + region = profile.categories.where(type: [Region, State, City].map(&:name)).first |
17 | if region | 17 | if region |
18 | ids = region.hierarchy.map(&:id) | 18 | ids = region.hierarchy.map(&:id) |
19 | self.delete_all(:profile_id => profile.id, :category_id => ids) | 19 | self.delete_all(:profile_id => profile.id, :category_id => ids) |
app/models/profile_list_block.rb
@@ -16,7 +16,7 @@ class ProfileListBlock < Block | @@ -16,7 +16,7 @@ class ProfileListBlock < Block | ||
16 | 16 | ||
17 | def profile_list | 17 | def profile_list |
18 | result = nil | 18 | result = nil |
19 | - public_profiles = profiles.public.includes([:image,:domains,:preferred_domain,:environment]) | 19 | + public_profiles = profiles.is_public.includes([:image,:domains,:preferred_domain,:environment]) |
20 | if !prioritize_profiles_with_image | 20 | if !prioritize_profiles_with_image |
21 | result = public_profiles.all(:limit => get_limit, :order => 'profiles.updated_at DESC').sort_by{ rand } | 21 | result = public_profiles.all(:limit => get_limit, :order => 'profiles.updated_at DESC').sort_by{ rand } |
22 | elsif profiles.visible.with_image.count >= get_limit | 22 | elsif profiles.visible.with_image.count >= get_limit |
@@ -28,7 +28,7 @@ result = public_profiles.all(:limit => get_limit, :order => 'profiles.updated_at | @@ -28,7 +28,7 @@ result = public_profiles.all(:limit => get_limit, :order => 'profiles.updated_at | ||
28 | end | 28 | end |
29 | 29 | ||
30 | def profile_count | 30 | def profile_count |
31 | - profiles.public.length | 31 | + profiles.is_public.length |
32 | end | 32 | end |
33 | 33 | ||
34 | # the title of the block. Probably will be overriden in subclasses. | 34 | # the title of the block. Probably will be overriden in subclasses. |
app/models/profile_suggestion.rb
@@ -26,9 +26,9 @@ class ProfileSuggestion < ActiveRecord::Base | @@ -26,9 +26,9 @@ class ProfileSuggestion < ActiveRecord::Base | ||
26 | end | 26 | end |
27 | 27 | ||
28 | validates_uniqueness_of :suggestion_id, :scope => [ :person_id ] | 28 | validates_uniqueness_of :suggestion_id, :scope => [ :person_id ] |
29 | - scope :of_person, :conditions => { :suggestion_type => 'Person' } | ||
30 | - scope :of_community, :conditions => { :suggestion_type => 'Community' } | ||
31 | - scope :enabled, :conditions => { :enabled => true } | 29 | + scope :of_person, -> { where suggestion_type: 'Person' } |
30 | + scope :of_community, -> { where suggestion_type: 'Community' } | ||
31 | + scope :enabled, -> { where enabled: true } | ||
32 | 32 | ||
33 | # {:category_type => ['category-icon', 'category-label']} | 33 | # {:category_type => ['category-icon', 'category-label']} |
34 | CATEGORIES = { | 34 | CATEGORIES = { |
@@ -55,13 +55,13 @@ class ProfileSuggestion < ActiveRecord::Base | @@ -55,13 +55,13 @@ class ProfileSuggestion < ActiveRecord::Base | ||
55 | :threshold => 2, :weight => 1, :connection => 'Profile' | 55 | :threshold => 2, :weight => 1, :connection => 'Profile' |
56 | }, | 56 | }, |
57 | :people_with_common_tags => { | 57 | :people_with_common_tags => { |
58 | - :threshold => 2, :weight => 1, :connection => 'ActsAsTaggableOn::Tag' | 58 | + :threshold => 2, :weight => 1, :connection => 'Tag' |
59 | }, | 59 | }, |
60 | :communities_with_common_friends => { | 60 | :communities_with_common_friends => { |
61 | :threshold => 2, :weight => 1, :connection => 'Profile' | 61 | :threshold => 2, :weight => 1, :connection => 'Profile' |
62 | }, | 62 | }, |
63 | :communities_with_common_tags => { | 63 | :communities_with_common_tags => { |
64 | - :threshold => 2, :weight => 1, :connection => 'ActsAsTaggableOn::Tag' | 64 | + :threshold => 2, :weight => 1, :connection => 'Tag' |
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
@@ -127,17 +127,15 @@ class ProfileSuggestion < ActiveRecord::Base | @@ -127,17 +127,15 @@ class ProfileSuggestion < ActiveRecord::Base | ||
127 | rescue NoMethodError | 127 | rescue NoMethodError |
128 | next | 128 | next |
129 | end | 129 | end |
130 | - connections = suggested_profile.send("#{rule}_connections") | ||
131 | - if connections.present? | ||
132 | - connections = connections[1..-2].split(',') | ||
133 | - else | ||
134 | - connections = [] | ||
135 | - end | ||
136 | - suggestion.send("#{rule}=", value) | 130 | + |
131 | + connections = suggested_profile.send("#{rule}_connections") || [] | ||
132 | + connections = connections[1..-2] if connections.present? | ||
137 | connections.each do |connection_id| | 133 | connections.each do |connection_id| |
138 | next if SuggestionConnection.where(:suggestion_id => suggestion.id, :connection_id => connection_id, :connection_type => options[:connection]).present? | 134 | next if SuggestionConnection.where(:suggestion_id => suggestion.id, :connection_id => connection_id, :connection_type => options[:connection]).present? |
139 | - SuggestionConnection.create!(:suggestion => suggestion, :connection_id => connection_id, :connection_type => options[:connection]) | 135 | + SuggestionConnection.create!(:suggestion => suggestion, :connection_id => connection_id, :connection_type => options[:connection]) |
140 | end | 136 | end |
137 | + | ||
138 | + suggestion.send("#{rule}=", value) | ||
141 | suggestion.score += value * options[:weight] | 139 | suggestion.score += value * options[:weight] |
142 | end | 140 | end |
143 | suggestion.save! | 141 | suggestion.save! |
app/models/reported_image.rb
@@ -5,6 +5,7 @@ class ReportedImage < ActiveRecord::Base | @@ -5,6 +5,7 @@ class ReportedImage < ActiveRecord::Base | ||
5 | 5 | ||
6 | has_attachment :content_type => :image, | 6 | has_attachment :content_type => :image, |
7 | :storage => :file_system, | 7 | :storage => :file_system, |
8 | - :max_size => 5.megabytes | 8 | + :max_size => 5.megabytes, |
9 | + processor: 'Rmagick' | ||
9 | 10 | ||
10 | end | 11 | end |
app/models/rss_feed.rb
@@ -40,7 +40,7 @@ class RssFeed < Article | @@ -40,7 +40,7 @@ class RssFeed < Article | ||
40 | 40 | ||
41 | # FIXME this should be validates_numericality_of, but Rails 2.0.2 does not | 41 | # FIXME this should be validates_numericality_of, but Rails 2.0.2 does not |
42 | # support validates_numericality_of with virtual attributes | 42 | # support validates_numericality_of with virtual attributes |
43 | - validates_format_of :limit, :with => /^\d+$/, :if => :limit | 43 | + validates_format_of :limit, :with => /\d+/, :if => :limit |
44 | 44 | ||
45 | # determinates what to include in the feed. Possible values are +:all+ | 45 | # determinates what to include in the feed. Possible values are +:all+ |
46 | # (include everything from the profile) and :parent_and_children (include | 46 | # (include everything from the profile) and :parent_and_children (include |
@@ -69,7 +69,7 @@ class RssFeed < Article | @@ -69,7 +69,7 @@ class RssFeed < Article | ||
69 | def fetch_articles | 69 | def fetch_articles |
70 | if parent && parent.has_posts? | 70 | if parent && parent.has_posts? |
71 | language = self.language.blank? ? {} : { :language => self.language } | 71 | language = self.language.blank? ? {} : { :language => self.language } |
72 | - return parent.posts.find(:all, :conditions => { :published => true }.merge(language), :limit => self.limit, :order => 'id desc') | 72 | + return parent.posts.where({published: true}.merge language).limit(self.limit).order('id desc') |
73 | end | 73 | end |
74 | 74 | ||
75 | articles = | 75 | articles = |
app/models/scrap.rb
@@ -18,9 +18,9 @@ class Scrap < ActiveRecord::Base | @@ -18,9 +18,9 @@ class Scrap < ActiveRecord::Base | ||
18 | after_create :create_activity | 18 | after_create :create_activity |
19 | after_update :update_activity | 19 | after_update :update_activity |
20 | 20 | ||
21 | - scope :all_scraps, lambda {|profile| {:conditions => ["receiver_id = ? OR sender_id = ?", profile, profile], :limit => 30}} | 21 | + scope :all_scraps, -> profile { limit(30).where("receiver_id = ? OR sender_id = ?", profile, profile) } |
22 | 22 | ||
23 | - scope :not_replies, :conditions => {:scrap_id => nil} | 23 | + scope :not_replies, -> { where scrap_id: nil } |
24 | 24 | ||
25 | track_actions :leave_scrap, :after_create, :keep_params => ['sender.name', 'content', 'receiver.name', 'receiver.url'], :if => Proc.new{|s| s.sender != s.receiver && s.sender != s.top_root.receiver}, :custom_target => :action_tracker_target, :custom_user => :sender | 25 | track_actions :leave_scrap, :after_create, :keep_params => ['sender.name', 'content', 'receiver.name', 'receiver.url'], :if => Proc.new{|s| s.sender != s.receiver && s.sender != s.top_root.receiver}, :custom_target => :action_tracker_target, :custom_user => :sender |
26 | 26 |
app/models/search_term_occurrence.rb
1 | class SearchTermOccurrence < ActiveRecord::Base | 1 | class SearchTermOccurrence < ActiveRecord::Base |
2 | + | ||
2 | belongs_to :search_term | 3 | belongs_to :search_term |
3 | validates_presence_of :search_term | 4 | validates_presence_of :search_term |
4 | attr_accessible :search_term, :created_at, :total, :indexed | 5 | attr_accessible :search_term, :created_at, :total, :indexed |
5 | 6 | ||
6 | EXPIRATION_TIME = 1.year | 7 | EXPIRATION_TIME = 1.year |
7 | 8 | ||
8 | - scope :valid, :conditions => ["search_term_occurrences.created_at > ?", DateTime.now - EXPIRATION_TIME] | 9 | + scope :valid, -> { where "search_term_occurrences.created_at > ?", DateTime.now - EXPIRATION_TIME } |
10 | + | ||
9 | end | 11 | end |
app/models/slideshow_block.rb
@@ -13,7 +13,7 @@ class SlideshowBlock < Block | @@ -13,7 +13,7 @@ class SlideshowBlock < Block | ||
13 | end | 13 | end |
14 | 14 | ||
15 | def gallery | 15 | def gallery |
16 | - gallery_id ? Gallery.find(:first, :conditions => { :id => gallery_id }) : nil | 16 | + if gallery_id then Gallery.where(id: gallery_id).first else nil end |
17 | end | 17 | end |
18 | 18 | ||
19 | def public_filename_for(image) | 19 | def public_filename_for(image) |
app/models/suggestion_connection.rb
1 | class SuggestionConnection < ActiveRecord::Base | 1 | class SuggestionConnection < ActiveRecord::Base |
2 | - attr_accessible :suggestion, :connection_type, :connection_id | 2 | + attr_accessible :suggestion, :suggestion_id, :connection_type, :connection_id |
3 | 3 | ||
4 | belongs_to :suggestion, :class_name => 'ProfileSuggestion', :foreign_key => 'suggestion_id' | 4 | belongs_to :suggestion, :class_name => 'ProfileSuggestion', :foreign_key => 'suggestion_id' |
5 | belongs_to :connection, :polymorphic => true | 5 | belongs_to :connection, :polymorphic => true |
@@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
1 | +Tag = ActsAsTaggableOn::Tag | ||
2 | +class Tag | ||
3 | + | ||
4 | + attr_accessible :name, :parent_id, :pending | ||
5 | + | ||
6 | + has_many :children, class_name: 'Tag', foreign_key: 'parent_id', dependent: :destroy | ||
7 | + | ||
8 | + @@original_find = self.method(:find) | ||
9 | + # Rename the find method to find_with_pendings that includes all tags in the search regardless if its pending or not | ||
10 | + def self.find_with_pendings(*args) | ||
11 | + @@original_find.call(*args) | ||
12 | + end | ||
13 | + | ||
14 | + # Redefine the find method to exclude the pending tags from the search not allowing to tag something with an unapproved tag | ||
15 | + def self.find(*args) | ||
16 | + self.where(pending: false).find_with_pendings(*args) | ||
17 | + end | ||
18 | + | ||
19 | + # Return all the tags that were suggested but not yet approved | ||
20 | + def self.find_pendings | ||
21 | + self.where(pending: true) | ||
22 | + end | ||
23 | + | ||
24 | + # All the tags that can be a new parent for this tag, that is all but itself and its descendents to avoid loops | ||
25 | + def parent_candidates | ||
26 | + ActsAsTaggableOn::Tag.all - descendents - [self] | ||
27 | + end | ||
28 | + | ||
29 | + # All tags that have this tag as its one of its ancestors | ||
30 | + def descendents | ||
31 | + children.to_a.sum([], &:descendents) + children | ||
32 | + end | ||
33 | + | ||
34 | +end |
app/models/task.rb
@@ -50,7 +50,7 @@ class Task < ActiveRecord::Base | @@ -50,7 +50,7 @@ class Task < ActiveRecord::Base | ||
50 | before_validation(:on => :create) do |task| | 50 | before_validation(:on => :create) do |task| |
51 | if task.code.nil? | 51 | if task.code.nil? |
52 | task.code = Task.generate_code(task.code_length) | 52 | task.code = Task.generate_code(task.code_length) |
53 | - while (Task.find_by_code(task.code)) | 53 | + while Task.from_code(task.code).first |
54 | task.code = Task.generate_code(task.code_length) | 54 | task.code = Task.generate_code(task.code_length) |
55 | end | 55 | end |
56 | end | 56 | end |
@@ -259,27 +259,28 @@ class Task < ActiveRecord::Base | @@ -259,27 +259,28 @@ class Task < ActiveRecord::Base | ||
259 | end | 259 | end |
260 | end | 260 | end |
261 | 261 | ||
262 | - scope :pending, :conditions => { :status => Task::Status::ACTIVE } | ||
263 | - scope :hidden, :conditions => { :status => Task::Status::HIDDEN } | ||
264 | - scope :finished, :conditions => { :status => Task::Status::FINISHED } | ||
265 | - scope :canceled, :conditions => { :status => Task::Status::CANCELLED } | ||
266 | - scope :closed, :conditions => { :status => [Task::Status::CANCELLED, Task::Status::FINISHED] } | ||
267 | - scope :opened, :conditions => { :status => [Task::Status::ACTIVE, Task::Status::HIDDEN] } | ||
268 | - scope :of, lambda { |type| conditions = type ? "type LIKE '#{type}'" : "1=1"; {:conditions => [conditions]} } | ||
269 | - scope :order_by, lambda { |attribute, ord| {:order => "#{attribute} #{ord}"} } | ||
270 | - scope :like, lambda { |field, value| where("LOWER(#{field}) LIKE ?", "%#{value.downcase}%") if value} | ||
271 | - scope :pending_all, lambda { |profile, filter_type, filter_text| | 262 | + scope :pending, -> { where status: Task::Status::ACTIVE } |
263 | + scope :hidden, -> { where status: Task::Status::HIDDEN } | ||
264 | + scope :finished, -> { where status: Task::Status::FINISHED } | ||
265 | + scope :canceled, -> { where status: Task::Status::CANCELLED } | ||
266 | + scope :closed, -> { where status: [Task::Status::CANCELLED, Task::Status::FINISHED] } | ||
267 | + scope :opened, -> { where status: [Task::Status::ACTIVE, Task::Status::HIDDEN] } | ||
268 | + scope :of, -> type { where "type LIKE ?", type if type } | ||
269 | + scope :order_by, -> attribute, ord { order "#{attribute} #{ord}" } | ||
270 | + scope :like, -> field, value { where "LOWER(#{field}) LIKE ?", "%#{value.downcase}%" if value } | ||
271 | + scope :pending_all, -> profile, filter_type, filter_text { | ||
272 | self.to(profile).without_spam.pending.of(filter_type).like('data', filter_text) | 272 | self.to(profile).without_spam.pending.of(filter_type).like('data', filter_text) |
273 | } | 273 | } |
274 | 274 | ||
275 | scope :to, lambda { |profile| | 275 | scope :to, lambda { |profile| |
276 | environment_condition = nil | 276 | environment_condition = nil |
277 | if profile.person? | 277 | if profile.person? |
278 | - envs_ids = Environment.find(:all).select{ |env| profile.is_admin?(env) }.map { |env| "target_id = #{env.id}"}.join(' OR ') | 278 | + envs_ids = Environment.all.select{ |env| profile.is_admin?(env) }.map{ |env| "target_id = #{env.id}"}.join(' OR ') |
279 | environment_condition = envs_ids.blank? ? nil : "(target_type = 'Environment' AND (#{envs_ids}))" | 279 | environment_condition = envs_ids.blank? ? nil : "(target_type = 'Environment' AND (#{envs_ids}))" |
280 | end | 280 | end |
281 | profile_condition = "(target_type = 'Profile' AND target_id = #{profile.id})" | 281 | profile_condition = "(target_type = 'Profile' AND target_id = #{profile.id})" |
282 | - { :conditions => [environment_condition, profile_condition].compact.join(' OR ') } | 282 | + |
283 | + where [environment_condition, profile_condition].compact.join(' OR ') | ||
283 | } | 284 | } |
284 | 285 | ||
285 | def self.pending_types_for(profile) | 286 | def self.pending_types_for(profile) |
@@ -337,6 +338,12 @@ class Task < ActiveRecord::Base | @@ -337,6 +338,12 @@ class Task < ActiveRecord::Base | ||
337 | end | 338 | end |
338 | end | 339 | end |
339 | 340 | ||
341 | + # finds a task by its (generated) code. Only returns a task with the | ||
342 | + # specified code AND with status = Task::Status::ACTIVE. | ||
343 | + # | ||
344 | + # Can be used in subclasses to find only their instances. | ||
345 | + scope :from_code, -> code { where code: code, status: Task::Status::ACTIVE } | ||
346 | + | ||
340 | class << self | 347 | class << self |
341 | 348 | ||
342 | # generates a random code string consisting of length characters (or 36 by | 349 | # generates a random code string consisting of length characters (or 36 by |
@@ -350,14 +357,6 @@ class Task < ActiveRecord::Base | @@ -350,14 +357,6 @@ class Task < ActiveRecord::Base | ||
350 | code | 357 | code |
351 | end | 358 | end |
352 | 359 | ||
353 | - # finds a task by its (generated) code. Only returns a task with the | ||
354 | - # specified code AND with status = Task::Status::ACTIVE. | ||
355 | - # | ||
356 | - # Can be used in subclasses to find only their instances. | ||
357 | - def find_by_code(code) | ||
358 | - self.find(:first, :conditions => { :code => code, :status => Task::Status::ACTIVE }) | ||
359 | - end | ||
360 | - | ||
361 | def per_page | 360 | def per_page |
362 | 15 | 361 | 15 |
363 | end | 362 | end |
app/models/thumbnail.rb
1 | class Thumbnail < ActiveRecord::Base | 1 | class Thumbnail < ActiveRecord::Base |
2 | + | ||
3 | + attr_accessible :uploaded_data | ||
4 | + # mass assigned by attachment_fu | ||
5 | + attr_accessible :content_type, :filename, :thumbnail_resize_options, :thumbnail, :parent_id | ||
6 | + | ||
2 | has_attachment :storage => :file_system, | 7 | has_attachment :storage => :file_system, |
3 | - :content_type => :image, :max_size => 5.megabytes | 8 | + :content_type => :image, :max_size => 5.megabytes, processor: 'Rmagick' |
4 | validates_as_attachment | 9 | validates_as_attachment |
5 | 10 | ||
6 | sanitize_filename | 11 | sanitize_filename |
7 | 12 | ||
8 | postgresql_attachment_fu | 13 | postgresql_attachment_fu |
9 | 14 | ||
10 | - attr_accessible :uploaded_data | ||
11 | end | 15 | end |
app/models/tiny_mce_article.rb
@@ -9,7 +9,7 @@ class TinyMceArticle < TextArticle | @@ -9,7 +9,7 @@ class TinyMceArticle < TextArticle | ||
9 | def self.description | 9 | def self.description |
10 | _('Not accessible for visually impaired users.') | 10 | _('Not accessible for visually impaired users.') |
11 | end | 11 | end |
12 | - | 12 | + |
13 | xss_terminate :only => [ ] | 13 | xss_terminate :only => [ ] |
14 | 14 | ||
15 | xss_terminate :only => [ :name, :abstract, :body ], :with => 'white_list', :on => 'validation' | 15 | xss_terminate :only => [ :name, :abstract, :body ], :with => 'white_list', :on => 'validation' |
app/models/uploaded_file.rb
@@ -63,7 +63,8 @@ class UploadedFile < Article | @@ -63,7 +63,8 @@ class UploadedFile < Article | ||
63 | has_attachment :storage => :file_system, | 63 | has_attachment :storage => :file_system, |
64 | :thumbnails => { :icon => [24,24], :bigicon => [50,50], :thumb => '130x130>', :slideshow => '320x240>', :display => '640X480>' }, | 64 | :thumbnails => { :icon => [24,24], :bigicon => [50,50], :thumb => '130x130>', :slideshow => '320x240>', :display => '640X480>' }, |
65 | :thumbnail_class => Thumbnail, | 65 | :thumbnail_class => Thumbnail, |
66 | - :max_size => self.max_size | 66 | + :max_size => self.max_size, |
67 | + processor: 'Rmagick' | ||
67 | 68 | ||
68 | validates_attachment :size => N_("{fn} of uploaded file was larger than the maximum size of %{size}").sub('%{size}', self.max_size.to_humanreadable).fix_i18n | 69 | validates_attachment :size => N_("{fn} of uploaded file was larger than the maximum size of %{size}").sub('%{size}', self.max_size.to_humanreadable).fix_i18n |
69 | 70 |
app/models/user.rb
@@ -102,7 +102,8 @@ class User < ActiveRecord::Base | @@ -102,7 +102,8 @@ class User < ActiveRecord::Base | ||
102 | end | 102 | end |
103 | end | 103 | end |
104 | 104 | ||
105 | - has_one :person, :dependent => :destroy | 105 | + # set autosave to false as we do manually when needed and Person syncs with us |
106 | + has_one :person, dependent: :destroy, autosave: false | ||
106 | belongs_to :environment | 107 | belongs_to :environment |
107 | 108 | ||
108 | has_many :sessions, dependent: :destroy | 109 | has_many :sessions, dependent: :destroy |
@@ -356,12 +357,12 @@ class User < ActiveRecord::Base | @@ -356,12 +357,12 @@ class User < ActiveRecord::Base | ||
356 | end | 357 | end |
357 | 358 | ||
358 | def name | 359 | def name |
359 | - name = (self[:name] || login) | 360 | + name = (@name || login) |
360 | person.nil? ? name : (person.name || name) | 361 | person.nil? ? name : (person.name || name) |
361 | end | 362 | end |
362 | 363 | ||
363 | def name= name | 364 | def name= name |
364 | - self[:name] = name | 365 | + @name = name |
365 | end | 366 | end |
366 | 367 | ||
367 | def enable_email! | 368 | def enable_email! |
app/views/categories/_category.html.erb
@@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
15 | <div> | 15 | <div> |
16 | <%= link_to _('Add subcategory'), :action => 'new', :parent_id => category %> | 16 | <%= link_to _('Add subcategory'), :action => 'new', :parent_id => category %> |
17 | <%= link_to _('Edit'), :action => 'edit', :id => category %> | 17 | <%= link_to _('Edit'), :action => 'edit', :id => category %> |
18 | - <%= link_to _('Remove'), { :action => 'remove', :id => category, }, :method => 'post', :confirm => (category.children.empty? ? (_('Are you sure you want to remove "%s"?') % category.name) : (_('Are you sure you want to remove "%s" and all its subcategories?') % category.name) ) %> | 18 | + <%= link_to _('Remove'), { action: 'remove', id: category, }, method: 'post', data: {confirm: if category.children.empty? then _('Are you sure you want to remove "%s"?') % category.name else _('Are you sure you want to remove "%s" and all its subcategories?') % category.name end} %> |
19 | </div> | 19 | </div> |
20 | </div> | 20 | </div> |
21 | 21 |
app/views/cms/edit.html.erb
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | 9 | ||
10 | <%= hidden_field_tag('success_back_to', @success_back_to) %> | 10 | <%= hidden_field_tag('success_back_to', @success_back_to) %> |
11 | 11 | ||
12 | - <%= render :partial => partial_for_class(@article.class), :locals => { :f => f } %> | 12 | + <%= render_partial_for_class @article.class, f: f %> |
13 | 13 | ||
14 | <% if environment.is_portal_community?(profile) %> | 14 | <% if environment.is_portal_community?(profile) %> |
15 | <div> | 15 | <div> |
@@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
58 | 58 | ||
59 | <% unless @article.new_record? %> | 59 | <% unless @article.new_record? %> |
60 | <%= button :delete, _('Delete'), {:controller => :cms, :action => :destroy, :id => @article}, | 60 | <%= button :delete, _('Delete'), {:controller => :cms, :action => :destroy, :id => @article}, |
61 | - :method => :post, :confirm => delete_article_message(@article) %> | 61 | + :method => :post, data: {confirm: delete_article_message(@article)} %> |
62 | <% end %> | 62 | <% end %> |
63 | <% end %> | 63 | <% end %> |
64 | <% end %> | 64 | <% end %> |
app/views/comment/_comment_form.html.erb
@@ -55,7 +55,7 @@ function check_captcha(button, confirm_action) { | @@ -55,7 +55,7 @@ function check_captcha(button, confirm_action) { | ||
55 | <div class="post_comment_box <%= ((defined? show_form) && show_form) ? 'opened' : 'closed' %>"> | 55 | <div class="post_comment_box <%= ((defined? show_form) && show_form) ? 'opened' : 'closed' %>"> |
56 | 56 | ||
57 | <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form') if display_link && @comment.reply_of_id.blank? %> | 57 | <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form') if display_link && @comment.reply_of_id.blank? %> |
58 | -<%= remote_form_for(:comment, @comment, :url => {:profile => profile.identifier, :controller => 'comment', :action => (edition_mode ? 'update' : 'create'), :id => (edition_mode ? @comment.id : @page.id)}, :html => { :class => 'comment_form' } ) do |f| %> | 58 | +<%= remote_form_for(@comment, :url => {:profile => profile.identifier, :controller => 'comment', :action => (edition_mode ? 'update' : 'create'), :id => (edition_mode ? @comment.id : @page.id)}, :html => { :class => 'comment_form' } ) do |f| %> |
59 | 59 | ||
60 | <%= required_fields_message %> | 60 | <%= required_fields_message %> |
61 | 61 |
app/views/comment_notifier/mail_to_followers.html.erb
app/views/comment_notifier/notification.text.erb