diff options
author | Go MAEDA <maeda@farend.jp> | 2020-11-25 07:51:58 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2020-11-25 07:51:58 +0000 |
commit | 2f43c315f36a88ca0251ff9d6ab46fa63f84839c (patch) | |
tree | ae824edc5d581391ead2eae068d51784a4820500 /app | |
parent | 00c751a1a6ad5ae67d93b7687b4b1ff9a8c7307e (diff) | |
download | redmine-2f43c315f36a88ca0251ff9d6ab46fa63f84839c.tar.gz redmine-2f43c315f36a88ca0251ff9d6ab46fa63f84839c.zip |
Create tracker by copy (#34258).
Patch by Takenori TAKAKI.
git-svn-id: http://svn.redmine.org/redmine/trunk@20492 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/trackers_controller.rb | 3 | ||||
-rw-r--r-- | app/models/tracker.rb | 10 | ||||
-rw-r--r-- | app/views/trackers/_form.html.erb | 2 | ||||
-rw-r--r-- | app/views/trackers/index.html.erb | 1 |
4 files changed, 15 insertions, 1 deletions
diff --git a/app/controllers/trackers_controller.rb b/app/controllers/trackers_controller.rb index fdb5f0e37..c69721f52 100644 --- a/app/controllers/trackers_controller.rb +++ b/app/controllers/trackers_controller.rb @@ -36,6 +36,9 @@ class TrackersController < ApplicationController def new @tracker ||= Tracker.new(:default_status => IssueStatus.sorted.first) @tracker.safe_attributes = params[:tracker] + if params[:copy].present? && @copy_from = Tracker.find_by_id(params[:copy]) + @tracker.copy_from(@copy_from) + end @trackers = Tracker.sorted.to_a @projects = Project.all end diff --git a/app/models/tracker.rb b/app/models/tracker.rb index 7bd5c9759..49c334af8 100644 --- a/app/models/tracker.rb +++ b/app/models/tracker.rb @@ -76,6 +76,16 @@ class Tracker < ActiveRecord::Base 'project_ids', 'description') + def copy_from(arg, options={}) + return if arg.blank? + + tracker = arg.is_a?(Tracker) ? arg : Tracker.find_by_id(arg.to_s) + self.attributes = tracker.attributes.dup.except("id", "name", "position") + self.custom_field_ids = tracker.custom_field_ids.dup + self.project_ids = tracker.project_ids.dup + self + end + def to_s; name end def <=>(tracker) diff --git a/app/views/trackers/_form.html.erb b/app/views/trackers/_form.html.erb index 27e086e56..2ccd225e6 100644 --- a/app/views/trackers/_form.html.erb +++ b/app/views/trackers/_form.html.erb @@ -39,7 +39,7 @@ <% if @tracker.new_record? && @trackers.any? %> <p><label for="copy_workflow_from"><%= l(:label_copy_workflow_from) %></label> -<%= select_tag(:copy_workflow_from, content_tag("option") + options_from_collection_for_select(@trackers, :id, :name)) %></p> +<%= select_tag(:copy_workflow_from, content_tag("option") + options_from_collection_for_select(@trackers, :id, :name, params[:copy_workflow_from] || @copy_from.try(:id))) %></p> <% end %> <!--[eoform:tracker]--> </div> diff --git a/app/views/trackers/index.html.erb b/app/views/trackers/index.html.erb index 20d09754d..85d3249fc 100644 --- a/app/views/trackers/index.html.erb +++ b/app/views/trackers/index.html.erb @@ -28,6 +28,7 @@ </td> <td class="buttons"> <%= reorder_handle(tracker) %> + <%= link_to l(:button_copy), new_tracker_path(:copy => tracker), :class => 'icon icon-copy' %> <%= delete_link tracker_path(tracker) %> </td> </tr> |