diff --git a/app/controllers/dmsf_workflows_controller.rb b/app/controllers/dmsf_workflows_controller.rb index 15b41adf..ad851093 100644 --- a/app/controllers/dmsf_workflows_controller.rb +++ b/app/controllers/dmsf_workflows_controller.rb @@ -52,7 +52,7 @@ class DmsfWorkflowsController < ApplicationController if revision.workflow == DmsfWorkflow::STATE_APPROVED # Just approved DmsfMailer.workflow_notification( - revision.project.members.collect{ |member| member.user.mail}, + revision.file.project.members.collect{ |member| member.user.mail}, @workflow, revision, "Approval workflow #{@workflow.name} approved", @@ -71,9 +71,8 @@ class DmsfWorkflowsController < ApplicationController end else if action.action == DmsfWorkflowStepAction::ACTION_DELEGATE - # Delegation - # TODO: Find the real delegate - delegate = User.current + # Delegation + delegate = User.find_by_id params[:step_action].to_i / 10 DmsfMailer.workflow_notification( delegate.mail, @workflow, diff --git a/app/helpers/dmsf_workflows_helper.rb b/app/helpers/dmsf_workflows_helper.rb index 7181c5fb..d6ba3121 100644 --- a/app/helpers/dmsf_workflows_helper.rb +++ b/app/helpers/dmsf_workflows_helper.rb @@ -48,8 +48,7 @@ module DmsfWorkflowsHelper end def dmsf_workflows_for_select(project, dmsf_workflow_id) - options = Array.new - #options << [l(:option_workflow_none), nil] + options = Array.new DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', project.id]).each do |wf| options << [wf.name, wf.id] end diff --git a/app/models/dmsf_mailer.rb b/app/models/dmsf_mailer.rb index 502aae56..e29727ed 100644 --- a/app/models/dmsf_mailer.rb +++ b/app/models/dmsf_mailer.rb @@ -63,9 +63,9 @@ class DmsfMailer < Mailer @revision = revision @text1 = "The approval workflow '#{@workflow.name}' assigned to '#{@revision.file.name}' document has just #{text1}." unless @revision.folder - url = url_for(:controller => 'dmsf', :action => 'edit_root', :id => @revision.project, :only_path => false) + url = url_for(:controller => 'dmsf', :action => 'edit_root', :id => @revision.file.project, :only_path => false) else - url = url_for(:controller => 'dmsf', :action => 'edit', :id => @project, :folder_id => @revision.folder, :only_path => false) + url = url_for(:controller => 'dmsf', :action => 'edit', :id => @revision.file.project, :folder_id => @revision.folder, :only_path => false) end @text2 = "#{text2} #{url}." mail :to => to, :subject => subject diff --git a/test/fixtures/dmsf_file_revisions.yml b/test/fixtures/dmsf_file_revisions.yml index f8fe1540..9f132b23 100644 --- a/test/fixtures/dmsf_file_revisions.yml +++ b/test/fixtures/dmsf_file_revisions.yml @@ -17,6 +17,7 @@ dmsf_file_revisions_001: deleted: 0 deleted_by_user_id: NULL user_id: 1 + dmsf_workflow_assigned_by: 1 #revision for file on non-enabled project dmsf_file_revisions_002: @@ -37,6 +38,7 @@ dmsf_file_revisions_002: deleted: 0 deleted_by_user_id: NULL user_id: 1 + dmsf_workflow_assigned_by: 1 #revision for deleted file on dmsf-enabled project dmsf_file_revisions_003: diff --git a/test/functional/dmsf_workflow_controller_test.rb b/test/functional/dmsf_workflow_controller_test.rb index 8311cc16..2bd0df13 100644 --- a/test/functional/dmsf_workflow_controller_test.rb +++ b/test/functional/dmsf_workflow_controller_test.rb @@ -4,7 +4,8 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase include Redmine::I18n fixtures :users, :dmsf_workflows, :dmsf_workflow_steps, :projects, :roles, - :members, :member_roles, :dmsf_workflow_step_assignments + :members, :member_roles, :dmsf_workflow_step_assignments, :dmsf_file_revisions, + :dmsf_files def setup @user_admin = User.find_by_id 1 # Redmine admin @@ -220,7 +221,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase # :action => DmsfWorkflowStepAction::ACTION_REJECT).first # end # - def test_action + def test_action xhr( :get, :action, @@ -234,7 +235,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase assert_template 'action' end - def test_new_action_delegate + def test_new_action_delegate @request.env['HTTP_REFERER'] = 'http://test.host/projects/2/dmsf' post( :new_action, @@ -242,15 +243,14 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase :id => @wf1.id, :dmsf_workflow_step_assignment_id => @wfsa2.id, :dmsf_file_revision_id => @revision2.id, - :step_action => DmsfWorkflowStepAction::ACTION_DELEGATE, - :user_id => @user_admin.id, + :step_action => @user_admin.id * 10, :note => 'Delegated because...') assert_response :redirect assert DmsfWorkflowStepAction.where( :dmsf_workflow_step_assignment_id => @wfsa2.id, :action => DmsfWorkflowStepAction::ACTION_DELEGATE).first @wfsa2.reload - assert_equal @wfsa2.user_id, @user_admin.id + assert_equal @wfsa2.user_id, @user_admin.id end def test_assign