Approval workflow copying #326
This commit is contained in:
parent
5eb8a0c462
commit
ef11baad8e
@ -203,19 +203,36 @@ class DmsfWorkflowsController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@dmsf_workflow = DmsfWorkflow.new
|
||||
@dmsf_workflow = DmsfWorkflow.new
|
||||
|
||||
# Reload
|
||||
if params[:dmsf_workflow] && params[:dmsf_workflow][:name].present?
|
||||
@dmsf_workflow.name = params[:dmsf_workflow][:name]
|
||||
elsif params[:dmsf_workflow_id].present?
|
||||
wf = DmsfWorkflow.find_by_id params[:dmsf_workflow_id]
|
||||
@dmsf_workflow.name = "#{wf.name}-#{@project.identifier}" if wf
|
||||
end
|
||||
|
||||
render :layout => !request.xhr?
|
||||
end
|
||||
|
||||
def create
|
||||
@dmsf_workflow = DmsfWorkflow.new(:name => params[:name], :project_id => params[:project_id])
|
||||
if request.post? && @dmsf_workflow.save
|
||||
if params[:dmsf_workflow_id] && params[:dmsf_workflow]
|
||||
wf = DmsfWorkflow.find_by_id params[:dmsf_workflow_id]
|
||||
@dmsf_workflow = wf.copy_to @project, params[:dmsf_workflow][:name]
|
||||
else
|
||||
@dmsf_workflow = DmsfWorkflow.new(:name => params[:name],
|
||||
:project_id => @project.id)
|
||||
@dmsf_workflow.save
|
||||
end
|
||||
if request.post? && @dmsf_workflow.valid?
|
||||
flash[:notice] = l(:notice_successful_create)
|
||||
if @project
|
||||
redirect_to settings_project_path(@project, :tab => 'dmsf_workflow')
|
||||
else
|
||||
redirect_to dmsf_workflows_path
|
||||
end
|
||||
else
|
||||
else
|
||||
render :action => 'new'
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2013 Karel Picman <karel.picman@kontron.com>
|
||||
# Copyright (C) 2011-14 Karel Picman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -48,10 +48,21 @@ module DmsfWorkflowsHelper
|
||||
end
|
||||
|
||||
def dmsf_workflows_for_select(project, dmsf_workflow_id)
|
||||
options = Array.new
|
||||
options = Array.new
|
||||
DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', project.id]).each do |wf|
|
||||
options << [wf.name, wf.id]
|
||||
end
|
||||
end
|
||||
options_for_select(options, :selected => dmsf_workflow_id)
|
||||
end
|
||||
|
||||
def dmsf_all_workflows_for_select(dmsf_workflow_id)
|
||||
options = Array.new
|
||||
options << ['', 0]
|
||||
DmsfWorkflow.where('project_id IS NOT NULL').each do |wf|
|
||||
if User.current.allowed_to?(:manage_workflows, wf.project)
|
||||
options << [wf.name, wf.id]
|
||||
end
|
||||
end
|
||||
options_for_select(options, :selected => dmsf_workflow_id)
|
||||
end
|
||||
|
||||
|
||||
@ -204,14 +204,18 @@ class DmsfWorkflow < ActiveRecord::Base
|
||||
return false
|
||||
end
|
||||
|
||||
def copy_to(project)
|
||||
def copy_to(project, name = nil)
|
||||
new_wf = self.dup
|
||||
new_wf.name = "#{self.name}_#{project.identifier}"
|
||||
if name
|
||||
new_wf.name = name
|
||||
else
|
||||
new_wf.name << "-#{project.identifier}"
|
||||
end
|
||||
new_wf.project_id = project.id
|
||||
if new_wf.save
|
||||
self.dmsf_workflow_steps.each do |step|
|
||||
step.copy_to(new_wf)
|
||||
end
|
||||
end
|
||||
end
|
||||
return new_wf
|
||||
end
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
<%= labelled_form_for @dmsf_workflow do |f| %>
|
||||
<%= error_messages_for 'workflow' %>
|
||||
<div class="box tabular">
|
||||
<p><%= f.label :label_dmsf_workflow_name %><%= text_field_tag :name, @dmsf_workflow.name %><%= submit_tag l(:button_save) %></p>
|
||||
<p><%= f.text_field :name, :value => @dmsf_workflow.name, :required => true %><%= submit_tag l(:button_save) %></p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
<thead><tr>
|
||||
<th><%= l(:label_dmsf_workflow_step) %></th>
|
||||
<th><%= l(:label_dmsf_workflow_approval_plural) %></th>
|
||||
<th><%=l(:button_sort)%></th>
|
||||
<th><%= l(:button_sort)%></th>
|
||||
<th/>
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<%# Redmine plugin for Document Management System "Features"
|
||||
#
|
||||
# Copyright (C) 2013 Karel Pičman <karel.picman@kontron.com>
|
||||
# Copyright (C) 2011-14 Karel Pičman <karel.picman@kontron.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
@ -26,10 +26,22 @@
|
||||
<%= labelled_form_for @dmsf_workflow do |f| %>
|
||||
<%= error_messages_for 'dmsf_workflow' %>
|
||||
<div class="box tabular">
|
||||
<p><%= f.label :label_dmsf_workflow_name %><%= text_field_tag :name %></p>
|
||||
<p>
|
||||
<%= f.text_field :name, :value => @dmsf_workflow.name, :size => 25, :maxlength => 255, :required => true %>
|
||||
</p>
|
||||
<p>
|
||||
<%= label_tag :label_copy_workflow_from, l(:label_copy_workflow_from) %>
|
||||
<%= select_tag('dmsf_workflow_id', dmsf_all_workflows_for_select(params[:dmsf_workflow_id])) %>
|
||||
</p>
|
||||
<% if project %>
|
||||
<p><%= hidden_field_tag :project_id, project.id %></p>
|
||||
<% end %>
|
||||
</div>
|
||||
<%= submit_tag l(:button_create) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('#dmsf_workflow_id').change(function () {
|
||||
$('#content').load("<%= url_for(:action => 'new', :project_id => @project.id) %>", $('#new_dmsf_workflow').serialize());
|
||||
});
|
||||
</script>
|
||||
Loading…
x
Reference in New Issue
Block a user