diff --git a/app/controllers/admin/field_groups_controller.rb b/app/controllers/admin/field_groups_controller.rb index 35634f2da0..a61ce2c837 100644 --- a/app/controllers/admin/field_groups_controller.rb +++ b/app/controllers/admin/field_groups_controller.rb @@ -22,8 +22,6 @@ def new def edit @field_group = FieldGroup.find(params[:id]) - @previous = FieldGroup.find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ - respond_with(@field_group) end diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb index 7692650356..4297556a8c 100644 --- a/app/controllers/admin/tags_controller.rb +++ b/app/controllers/admin/tags_controller.rb @@ -28,7 +28,7 @@ def new # GET /admin/tags/1/edit AJAX #---------------------------------------------------------------------------- def edit - @previous = Tag.find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Tag.find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id end # POST /admin/tags diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index af48c1e1da..a6a14bd50d 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -35,7 +35,7 @@ def new # GET /admin/users/1/edit AJAX #---------------------------------------------------------------------------- def edit - @previous = User.find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = User.find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@user) end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index a6255ff384..a8f587f983 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -269,5 +269,14 @@ def find_class(asset) end end + # In a number of places, we pass ?previous=(id) or ?previous=crm.find_form... + # This method centralises all of the places we can pass in a previous param + # and extracts an int ID, or nil + def detect_previous_id + return unless params[:previous] + return if params[:previous].start_with?("crm") + + params[:previous].to_i + end ActiveSupport.run_load_hooks(:fat_free_crm_application_controller, self) end diff --git a/app/controllers/entities/accounts_controller.rb b/app/controllers/entities/accounts_controller.rb index 40b5b721d1..6a1dc1270c 100644 --- a/app/controllers/entities/accounts_controller.rb +++ b/app/controllers/entities/accounts_controller.rb @@ -45,7 +45,7 @@ def new # GET /accounts/1/edit AJAX #---------------------------------------------------------------------------- def edit - @previous = Account.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Account.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@account) end diff --git a/app/controllers/entities/campaigns_controller.rb b/app/controllers/entities/campaigns_controller.rb index f27baef0a7..38ac458e04 100644 --- a/app/controllers/entities/campaigns_controller.rb +++ b/app/controllers/entities/campaigns_controller.rb @@ -84,7 +84,7 @@ def new # GET /campaigns/1/edit AJAX #---------------------------------------------------------------------------- def edit - @previous = Campaign.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Campaign.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@campaign) end diff --git a/app/controllers/entities/contacts_controller.rb b/app/controllers/entities/contacts_controller.rb index d90b976017..205e68877c 100644 --- a/app/controllers/entities/contacts_controller.rb +++ b/app/controllers/entities/contacts_controller.rb @@ -51,7 +51,7 @@ def new #---------------------------------------------------------------------------- def edit @account = @contact.account || Account.new(user: current_user) - @previous = Contact.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Contact.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@contact) end diff --git a/app/controllers/entities/leads_controller.rb b/app/controllers/entities/leads_controller.rb index 7bcd72392e..2c1f54434b 100644 --- a/app/controllers/entities/leads_controller.rb +++ b/app/controllers/entities/leads_controller.rb @@ -52,7 +52,7 @@ def new def edit get_campaigns - @previous = Lead.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Lead.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@lead) end @@ -108,7 +108,7 @@ def convert @accounts = Account.my(current_user).order('name') @opportunity = Opportunity.new(user: current_user, access: "Lead", stage: "prospecting", campaign: @lead.campaign, source: @lead.source) - @previous = Lead.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Lead.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@lead) end diff --git a/app/controllers/entities/opportunities_controller.rb b/app/controllers/entities/opportunities_controller.rb index 99821178ad..bef9da9c7a 100644 --- a/app/controllers/entities/opportunities_controller.rb +++ b/app/controllers/entities/opportunities_controller.rb @@ -57,7 +57,7 @@ def edit @account = @opportunity.account || Account.new(user: current_user) @accounts = Account.my(current_user).order('name') - @previous = Opportunity.my(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Opportunity.my(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@opportunity) end diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 918da165af..b8a82c7cad 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -58,7 +58,7 @@ def edit @category = Setting.unroll(:task_category) @asset = @task.asset if @task.asset_id? - @previous = Task.tracked_by(current_user).find_by_id(Regexp.last_match[1]) || Regexp.last_match[1].to_i if params[:previous].to_s =~ /(\d+)\z/ + @previous = Task.tracked_by(current_user).find_by_id(detect_previous_id) || detect_previous_id if detect_previous_id respond_with(@task) end