#691 A tooltip for finished workflows

This commit is contained in:
Karel Picman 2017-03-10 14:10:17 +01:00
parent 4c0538c349
commit 7ab6b37263
7 changed files with 34 additions and 22 deletions

View File

@ -28,6 +28,7 @@ class DmsfFileRevision < ActiveRecord::Base
belongs_to :source_revision, :class_name => 'DmsfFileRevision', :foreign_key => 'source_dmsf_file_revision_id'
belongs_to :user
belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id'
belongs_to :dmsf_workflow
has_many :dmsf_file_revision_access, :dependent => :destroy
has_many :dmsf_workflow_step_assignment, :dependent => :destroy
@ -311,4 +312,25 @@ class DmsfFileRevision < ActiveRecord::Base
dmsf_file.propfind_cache_key
end
def workflow_tooltip
tooltip = ''
if self.dmsf_workflow
case workflow
when DmsfWorkflow::STATE_WAITING_FOR_APPROVAL, DmsfWorkflow::STATE_ASSIGNED
assignments = self.dmsf_workflow.next_assignments(self.id)
if assignments
assignments.each_with_index do |assignment, index|
tooltip << ', ' if index > 0
tooltip << assignment.user.name
end
end
when DmsfWorkflow::STATE_APPROVED, DmsfWorkflow::STATE_REJECTED
action = DmsfWorkflowStepAction.joins(:dmsf_workflow_step_assignment).where(
['dmsf_workflow_step_assignments.dmsf_file_revision_id', self.id]).order('dmsf_workflow_step_actions.id').last
tooltip << action.author.name if action
end
end
tooltip
end
end

View File

@ -167,19 +167,6 @@ class DmsfWorkflow < ActiveRecord::Base
results
end
def self.assignments_to_users_str(assignments)
str = ''
if assignments
assignments.each_with_index do |assignment, index|
if index > 0
str << ', '
end
str << assignment.user.name
end
end
str
end
def assign(dmsf_file_revision_id)
dmsf_workflow_steps.each do |ws|
ws.assign(dmsf_file_revision_id)

View File

@ -21,6 +21,7 @@
class DmsfWorkflowStepAction < ActiveRecord::Base
belongs_to :dmsf_workflow_step_assignment
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
validates :dmsf_workflow_step_assignment_id, :presence => true
validates :action, :presence => true

View File

@ -80,7 +80,7 @@
:project_id => project.id,
:id => wf.id,
:dmsf_file_revision_id => file.last_revision.id),
:title => DmsfWorkflow.assignments_to_users_str(wf.next_assignments(file.last_revision.id)),
:title => file.last_revision.workflow_tooltip,
:remote => true) %>
<% else %>
<%= file.last_revision.workflow_str(false) %>

View File

@ -129,7 +129,7 @@
<%= link_to(revision.workflow_str(false),
log_dmsf_workflow_path(:project_id => @project.id,
:id => wf.id, :dmsf_file_revision_id => revision.id),
:title => DmsfWorkflow.assignments_to_users_str(wf.next_assignments(revision.id)),
:title => revision.workflow_tooltip,
:remote => true) %>
</p>
<% end %>

View File

@ -22,18 +22,21 @@ require File.expand_path('../../test_helper', __FILE__)
class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :roles, :members,
:member_roles, :enabled_modules, :enumerations, :dmsf_locks
:member_roles, :enabled_modules, :enumerations, :dmsf_locks, :dmsf_workflows, :dmsf_workflow_steps,
:dmsf_workflow_step_assignments, :dmsf_workflow_step_actions
def setup
@revision1 = DmsfFileRevision.find_by_id 1
@revision2 = DmsfFileRevision.find_by_id 2
@revision5 = DmsfFileRevision.find_by_id 5
@wf1 = DmsfWorkflow.find_by_id 1
end
def test_truth
assert_kind_of DmsfFileRevision, @revision1
assert_kind_of DmsfFileRevision, @revision2
assert_kind_of DmsfFileRevision, @revision5
assert_kind_of DmsfWorkflow, @wf1
end
def test_delete_restore
@ -144,4 +147,9 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
RedmineDmsf::Webdav::Cache.init_nullcache
end
def test_workflow_tooltip
@revision2.set_workflow @wf1.id, 'start'
assert_equal 'John Smith', @revision2.workflow_tooltip
end
end

View File

@ -188,12 +188,6 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
assignments = @wf1.next_assignments(2)
assert_equal assignments.size, 1
assert_equal assignments[0].user_id, 2
end
def test_assignments_to_users_str
assignments = @wf1.next_assignments(2)
str = DmsfWorkflow.assignments_to_users_str(assignments)
assert_equal str, 'John Smith', str
end
def test_assign