Version of revision in wiki #1390

This commit is contained in:
Karel Pičman 2022-08-09 14:11:14 +02:00
parent e9a2bb000b
commit b05a438bea
4 changed files with 25 additions and 9 deletions

View File

@ -32,11 +32,14 @@ module RedmineDmsf
macro :dmsf do |obj, args|
raise ArgumentError if args.length < 1 # Requires file id
file = DmsfFile.visible.find args[0]
unless User.current&.allowed_to?(:view_dmsf_files, file.project, { id: file.id })
raise l(:notice_not_authorized)
end
if args[2].blank?
revision = file.last_revision
else
revision = DmsfFileRevision.find args[2]
if revision.dmsf_file != file
revision = DmsfFileRevision.find_by(id: args[2], dmsf_file_id: args[0])
unless revision
raise ActiveRecord::RecordNotFound
end
end
@ -110,16 +113,23 @@ module RedmineDmsf
# dmsfversion - text referring to the document's version
desc "Text referring to DMSF document version:\n\n" +
"{{dmsfversion(document_id)}}\n\n" +
"{{dmsfversion(document_id [, revision_id])}}\n\n" +
"_document_id_ can be found in the document's details."
macro :dmsfversion do |obj, args|
raise ArgumentError if args.length < 1 # Requires file id
file = DmsfFile.visible.find args[0]
if User.current&.allowed_to?(:view_dmsf_files, file.project)
textilizable file.version
else
unless User.current&.allowed_to?(:view_dmsf_files, file.project, { id: file.id })
raise l(:notice_not_authorized)
end
if args[1].blank?
revision = file.last_revision
else
revision = DmsfFileRevision.find_by(id: args[1], dmsf_file_id: args[0])
unless revision
raise ActiveRecord::RecordNotFound
end
end
textilizable revision.version
end
# dmsflastupdate - text referring to the document's last update date

View File

@ -97,7 +97,7 @@ dmsf_file_revisions_005:
title: 'Test File'
description: NULL
workflow: 1 # DmsfWorkflow::STATE_WAITING_FOR_APPROVAL
minor_version: 0
minor_version: 1
major_version: 1
comment: 'Wrong mime type in order to have Edit content menu item'
deleted: 0

View File

@ -355,7 +355,7 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
headers: @jsmith.merge!({ content_type: :text })
assert_response :created
end
assert_equal '1.1', @file1.last_revision.version
assert_equal '1.2', @file1.last_revision.version
end
end

View File

@ -163,12 +163,18 @@ class DmsfMacrosTest < RedmineDmsf::Test::HelperTest
assert_not_equal "<p><p>#{@file1.description}</p></p>", text
end
# {{dmsfversion(document_id)}}
# {{dmsfversion(document_id [, revision_id])}}
def test_macro_dmsfdversion
text = textilizable("{{dmsfversion(#{@file1.id})}}")
assert_equal "<p><p>#{@file1.version}</p></p>", text
end
def test_macro_dmsfdversion
revision5 = DmsfFileRevision.find_by(id: 5)
text = textilizable("{{dmsfversion(#{@file1.id}, #{revision5.id})}}")
assert_equal "<p><p>#{revision5.version}</p></p>", text
end
def test_macro_dmsfdversion_no_permissions
@manager_role.remove_permission! :view_dmsf_files
text = textilizable("{{dmsfversion(#{@file1.id})}}")