diff --git a/app/controllers/public/account_controller.rb b/app/controllers/public/account_controller.rb index ce5cad1..b4b80a9 100644 --- a/app/controllers/public/account_controller.rb +++ b/app/controllers/public/account_controller.rb @@ -438,7 +438,7 @@ class AccountController < ApplicationController end def go_to_signup_initial_page - check_redirection_options(user, user.environment.redirection_after_signup, user.url) + check_redirection_options user, user.environment.redirection_after_signup, user.url, signup: true end def redirect_if_logged_in @@ -458,8 +458,11 @@ class AccountController < ApplicationController protected - def check_redirection_options(user, condition, default) - case condition + def check_redirection_options user, condition, default, options={} + if options[:signup] and target = session.delete(:after_signup_redirect_to) + redirect_to target + else + case condition when 'keep_on_same_page' redirect_back_or_default(user.admin_url) when 'site_homepage' @@ -472,8 +475,11 @@ class AccountController < ApplicationController redirect_to user.admin_url when 'welcome_page' redirect_to :controller => :home, :action => :welcome, :template_id => (user.template && user.template.id) - else - redirect_back_or_default(default) + when 'custom_url' + if (url = user.custom_url_redirection).present? then redirect_to url else redirect_back_or_default default end + else + redirect_back_or_default(default) + end end end diff --git a/app/models/environment.rb b/app/models/environment.rb index 1a1d9d8..e5d8109 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -168,7 +168,8 @@ class Environment < ActiveRecord::Base 'site_homepage' => _('Redirects the user to the environment homepage.'), 'user_profile_page' => _('Redirects the user to his profile page.'), 'user_homepage' => _('Redirects the user to his homepage.'), - 'user_control_panel' => _('Redirects the user to his control panel.') + 'user_control_panel' => _('Redirects the user to his control panel.'), + 'custom_url' => _('Specify the URL to redirect to:'), } end validates_inclusion_of :redirection_after_login, :in => Environment.login_redirection_options.keys, :allow_nil => true diff --git a/app/models/profile.rb b/app/models/profile.rb index 7c5a0e9..bef9208 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -3,7 +3,9 @@ # which by default is the one returned by Environment:default. class Profile < ActiveRecord::Base - attr_accessible :name, :identifier, :public_profile, :nickname, :custom_footer, :custom_header, :address, :zip_code, :contact_phone, :image_builder, :description, :closed, :template_id, :environment, :lat, :lng, :is_template, :fields_privacy, :preferred_domain_id, :category_ids, :country, :city, :state, :national_region_code, :email, :contact_email, :redirect_l10n, :notification_time, :redirection_after_login, :email_suggestions, :allow_members_to_invite, :invite_friends_only, :secret + attr_accessible :name, :identifier, :public_profile, :nickname, :custom_footer, :custom_header, :address, :zip_code, :contact_phone, :image_builder, :description, :closed, :template_id, :environment, :lat, :lng, :is_template, :fields_privacy, :preferred_domain_id, :category_ids, :country, :city, :state, :national_region_code, :email, :contact_email, :redirect_l10n, :notification_time, + :redirection_after_login, :custom_url_redirection, + :email_suggestions, :allow_members_to_invite, :invite_friends_only, :secret # use for internationalizable human type names in search facets # reimplement on subclasses @@ -1023,6 +1025,7 @@ private :generate_url, :url_options def preferred_login_redirection redirection_after_login.blank? ? environment.redirection_after_login : redirection_after_login end + settings_items :custom_url_redirection, type: String, default: nil def remove_from_suggestion_list(person) suggestion = person.suggested_profiles.find_by_suggestion_id self.id diff --git a/app/views/profile_editor/_redirection_after_login.html.erb b/app/views/profile_editor/_redirection_after_login.html.erb new file mode 100644 index 0000000..5e63dc4 --- /dev/null +++ b/app/views/profile_editor/_redirection_after_login.html.erb @@ -0,0 +1,9 @@ +<% content_for :head do %> + <%= javascript_include_tag 'redirection_after_login' %> +<% end %> + +