From e0532a81b26340b2d6e9a756ff9839d78d40e457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Wed, 18 Sep 2024 11:00:48 +0200 Subject: [PATCH] #1548 Issue attachments --- app/models/dmsf_upload.rb | 24 ++- app/views/dmsf_upload/_form.html.erb | 6 +- app/views/dmsf_upload/_upload_file.html.erb | 17 +- app/views/dmsf_upload/upload_files.html.erb | 2 +- assets/javascripts/attachments_dmsf.js | 59 ++++-- assets/stylesheets/redmine_dmsf.css | 171 +++++++++--------- config/locales/cs.yml | 2 + config/locales/de.yml | 2 + config/locales/en.yml | 2 + config/locales/es.yml | 2 + config/locales/fa.yml | 2 + config/locales/fr.yml | 2 + config/locales/hu.yml | 2 + config/locales/it.yml | 2 + config/locales/ja.yml | 2 + config/locales/ko.yml | 2 + config/locales/nl.yml | 2 + config/locales/pl.yml | 2 + config/locales/pt-BR.yml | 2 + config/locales/sl.yml | 2 + config/locales/uk.yml | 2 + config/locales/zh-TW.yml | 2 + config/locales/zh.yml | 2 + .../controllers/issues_controller_hooks.rb | 10 +- .../hooks/views/issue_view_hooks.rb | 5 +- .../easy_crm_cases_controller_patch.rb | 7 +- 26 files changed, 220 insertions(+), 115 deletions(-) diff --git a/app/models/dmsf_upload.rb b/app/models/dmsf_upload.rb index 92eb54f6..d7abd1fb 100644 --- a/app/models/dmsf_upload.rb +++ b/app/models/dmsf_upload.rb @@ -47,7 +47,29 @@ def self.create_from_uploaded_attachment(project, folder, uploaded_file) end end - def initialize(project, folder, uploaded) + def initialize(project, folder = nil, uploaded = nil) + unless uploaded + @name = '' + @disk_filename = '' + @mime_type = '' + @size = 0 + @tempfile_path = '' + @token = '' + @digest = '' + if Setting.plugin_redmine_dmsf['empty_minor_version_by_default'] + @major_version = 1 + @minor_version = nil + else + @major_version = 0 + @minor_version = 0 + end + @patch_version = nil + @workflow = nil + revision = DmsfFileRevision.new + @custom_values = revision.custom_field_values + return + end + @name = uploaded[:original_filename] file = DmsfFile.find_file_by_name(project, folder, @name) diff --git a/app/views/dmsf_upload/_form.html.erb b/app/views/dmsf_upload/_form.html.erb index a11e2dc0..b019bab1 100644 --- a/app/views/dmsf_upload/_form.html.erb +++ b/app/views/dmsf_upload/_form.html.erb @@ -81,8 +81,10 @@ upload_path: dmsf_uploads_path(format: 'js'), description_placeholder: l(:label_optional_description), project: @project ? "#{@project.identifier}" : '', - description: description, - awf: awf + awf: awf, + dmsf_file_details_form: container ? controller.send( :render_to_string, + { partial: 'dmsf_upload/upload_file', + locals: { upload: DmsfUpload.new(container.project, nil, nil), i: 0 } }) : nil } %> <% if defined?(container) && container %> diff --git a/app/views/dmsf_upload/_upload_file.html.erb b/app/views/dmsf_upload/_upload_file.html.erb index 49e5cebc..752be596 100644 --- a/app/views/dmsf_upload/_upload_file.html.erb +++ b/app/views/dmsf_upload/_upload_file.html.erb @@ -21,21 +21,18 @@
<%= hidden_field_tag "committed_files[#{i}][disk_filename]", upload.disk_filename %> <%= hidden_field_tag "committed_files[#{i}][token]", upload.token %> - <%= hidden_field_tag "committed_files[#{i}][size]", upload.size %> - <%= hidden_field_tag "committed_files[#{i}][mime_type]", upload.mime_type %> <%= hidden_field_tag "committed_files[#{i}][digest]", upload.digest %>

<%= label_tag "committed_files[#{i}][title]", l(:label_title) %> - <%= text_field_tag "committed_files[#{i}][title]", upload.title, required:true %> + <%= text_field_tag "committed_files[#{i}][title]", upload.title, required: true %>

- <%= label_tag '', l(:label_filename) %> - <%= text_field_tag :name, h(upload.name), readonly: true %> - <%= hidden_field_tag "committed_files[#{i}][name]", upload.name %> + <%= label_tag "committed_files[#{i}][name]", l(:label_filename) %> + <%= text_field_tag "committed_files[#{i}][name]", upload.name, readonly: true %>

@@ -55,12 +52,12 @@ revision_or_upload: upload } %>

- <%= label_tag '', l(:label_mime) %> - <%= text_field_tag :name, h(upload.mime_type), readonly: true %> + <%= label_tag "committed_files[#{i}][mime_type]", l(:label_mime) %> + <%= text_field_tag "committed_files[#{i}][mime_type]", h(upload.mime_type), readonly: true %>

- <%= label_tag '', l(:label_size) %> - <%= text_field_tag :name, number_to_human_size(upload.size), readonly: true %> + <%= label_tag "committed_files[#{i}][size]", l(:label_size) %> + <%= text_field_tag "committed_files[#{i}][size]", number_to_human_size(upload.size), readonly: true %>

diff --git a/app/views/dmsf_upload/upload_files.html.erb b/app/views/dmsf_upload/upload_files.html.erb index 781f17b3..fb7bc0f9 100644 --- a/app/views/dmsf_upload/upload_files.html.erb +++ b/app/views/dmsf_upload/upload_files.html.erb @@ -41,7 +41,7 @@ <% end %> <% end %>
- <%= submit_tag l(:label_upload), + <%= submit_tag l(:label_dmsf_commit), data: { cy: 'button__submit__upload-file--project' }, class: 'button-positive', onclick: "$('#ajax-indicator').show();" %> diff --git a/assets/javascripts/attachments_dmsf.js b/assets/javascripts/attachments_dmsf.js index 334de853..1739b2f5 100644 --- a/assets/javascripts/attachments_dmsf.js +++ b/assets/javascripts/attachments_dmsf.js @@ -45,6 +45,21 @@ function dmsfAddLink(linksSpan, linkId, linkName, title, project, awf) { dmsfAddLink.nextLinkId = 1000; +/* Remove the extension and replace underscores with spaces, 'after_init.rb' -> 'after init' */ +function filenameToTitle(filename) { + return filename.replace(/\.[^/.]+$/, "").replace(/_+/g, " "); +} + +/* File size to human readable file size, 1024 -> 1.00 KB */ +function humanFileSize(bytes) { + var u = 0, s= 1024; + while (bytes >= s || -bytes >= s) { + bytes /= s; + u++; + } + return (u ? bytes.toFixed(2) + ' ' : bytes) + ' KMGTPEZY'[u] + 'B'; +} + function dmsfAddFile(inputEl, file, eagerUpload) { let attachments = $('#dmsf_attachments_fields'); @@ -62,16 +77,6 @@ function dmsfAddFile(inputEl, file, eagerUpload) { if($(inputEl).attr('multiple') == 'multiple') { - if($(inputEl).data('description')) { - - let description = $('', {type: 'text', 'class': 'description', - name: 'dmsf_attachments[' + attachmentId + '][description]', maxlength: 255, - placeholder: $(inputEl).data('description-placeholder') - }).toggle(!eagerUpload); - - fileSpan.append(description); - } - fileSpan.append(iconDel.click(dmsfRemoveFileLbl)); if($(inputEl).data('awf')) { @@ -83,13 +88,45 @@ function dmsfAddFile(inputEl, file, eagerUpload) { fileSpan.append(iconWf); } - attachments.append(fileSpan); + // Details + let detailsForm = $(inputEl).data('dmsf-file-details-form'); + if(detailsForm) { + let detailsDiv = $('
').attr({id: 'dmsf_attachments_details_' + attachmentId}); + let detailsArrow = $(''); + detailsArrow.attr({href: '#', 'class': 'icon-only icon-sorted-asc', title: 'Details'}); + detailsArrow.attr( + { + onclick: "$('#dmsf_attachments_details_" + attachmentId + "').toggle();" + + "$(this).toggleClass('icon-sorted-asc');$(this).toggleClass('icon-sorted-desc');" + + "return false;" + }); + detailsForm = detailsForm.replace(/\[0\]/g, '[' + attachmentId + ']'); + detailsForm = detailsForm.replace(/_0/g, '_' + attachmentId); + detailsForm = detailsForm.replace('id="committed_files_' + attachmentId + '_name" value=""', + 'id="committed_files_' + attachmentId + '_name" value="' + file.name + '"'); + detailsForm = detailsForm.replace('id="committed_files_' + attachmentId + '_title"', + 'id="committed_files_' + attachmentId + '_title" value = "' + filenameToTitle(file.name) + '"'); + detailsForm = detailsForm.replace('id="committed_files_' + attachmentId + '_size"', + 'id="committed_files_' + attachmentId + '_size" value = "' + humanFileSize(file.size) + '"'); + detailsForm = detailsForm.replace('id="committed_files_' + attachmentId + '_mime_type"', + 'id="committed_files_' + attachmentId + '_mime_type" value = "' + file.type + '"'); + detailsDiv.append(detailsForm); + detailsDiv.hide(); + + fileSpan.append(detailsArrow) + attachments.append(fileSpan); + attachments.append(detailsDiv); + } + else { + attachments.append(fileSpan); + } } else{ fileSpan.append(iconDel.click(dmsfRemoveFileLbl)); attachments.append(fileSpan); $('#dmsf_file_revision_name').val(file.name); } + attachments.append('
'); if(eagerUpload) { dmsfAjaxUpload(file, attachmentId, fileSpan, inputEl); diff --git a/assets/stylesheets/redmine_dmsf.css b/assets/stylesheets/redmine_dmsf.css index 131b4333..005da899 100644 --- a/assets/stylesheets/redmine_dmsf.css +++ b/assets/stylesheets/redmine_dmsf.css @@ -77,7 +77,7 @@ div[id^="step-index-"] { } .dmsf-revision-box { - background-color:#f6f6f6; + background-color: #f6f6f6; } .dmsf-revision-inner-box { @@ -108,7 +108,7 @@ div.dmsf-id-box { } .dmsf-log-header-box{ - padding:6px; + padding: 6px; margin-bottom: 10px; } .dmsf-log-header-left { @@ -150,8 +150,8 @@ div[id*="revision_access_"] { } /* Command icons */ -.dmsf-icon-link { background-image: url(../../../images/link.png); } -.icon-approvalworkflows { background-image: url(../../../images/ticket_go.png); } +.dmsf-icon-link { background-image: url("../../../images/link.png"); } +.icon-approvalworkflows { background-image: url("../../../images/ticket_go.png"); } /* File types */ .dmsf-icon-file{ @@ -159,55 +159,57 @@ div[id*="revision_access_"] { height: 16px; } -.dmsf-gray .icon-folder { background-image: url(../images/folder_gray.png); } -.dmsf-system .icon-folder { background-image: url(../images/folder_system.png); } - -.icon-file.filetype-doc, .icon-file.filetype-docx { background-image: url(../images/filetypes/doc.png); } -.icon-file.filetype-xls, .icon-file.filetype-xlsx, .icon-file.filetype-xlsm { background-image: url(../images/filetypes/xls.png); } -.icon-file.filetype-ppt, .icon-file.filetype-pptx { background-image: url(../images/filetypes/ppt.png); } -.icon-file.filetype-vsd, .icon-file.filetype-vsdx { background-image: url(../images/filetypes/vsd.png); } -.icon-file.filetype-mpp { background-image: url(../images/filetypes/mpp.png); } -.icon-file.filetype-odt { background-image: url(../images/filetypes/odt.png); } -.icon-file.filetype-ods { background-image: url(../images/filetypes/ods.png); } -.icon-file.filetype-ott { background-image: url(../images/filetypes/ott.png); } -.icon-file.filetype-odp { background-image: url(../images/filetypes/odp.png); } -.icon-file.filetype-odg { background-image: url(../images/filetypes/odg.png); } - -.dmsf-gray .icon-file.filetype-doc { background-image: url(../images/filetypes/doc_gray.png); } -.dmsf-gray .icon-file.filetype-docx { background-image: url(../images/filetypes/doc_gray.png); } -.dmsf-gray .icon-file.filetype-xls { background-image: url(../images/filetypes/xls_gray.png); } -.dmsf-gray .icon-file.filetype-xlsx { background-image: url(../images/filetypes/xls_gray.png); } -.dmsf-gray .icon-file.filetype-xlsm { background-image: url(../images/filetypes/xls_gray.png); } -.dmsf-gray .icon-file.filetype-ppt { background-image: url(../images/filetypes/ppt_gray.png); } -.dmsf-gray .icon-file.filetype-pptx { background-image: url(../images/filetypes/ppt_gray.png); } -.dmsf-gray .icon-file.filetype-vsd { background-image: url(../images/filetypes/vsd_gray.png); } -.dmsf-gray .icon-file.filetype-vsdx { background-image: url(../images/filetypes/vsd_gray.png); } -.dmsf-gray .icon-file.filetype-mpp { background-image: url(../images/filetypes/mpp_gray.png); } -.dmsf-gray .icon-file.filetype-odt { background-image: url(../images/filetypes/odt_gray.png); } -.dmsf-gray .icon-file.filetype-ott { background-image: url(../images/filetypes/ott_gray.png); } -.dmsf-gray .icon-file.filetype-ods { background-image: url(../images/filetypes/ods_gray.png); } -.dmsf-gray .icon-file.filetype-odp { background-image: url(../images/filetypes/odp_gray.png); } -.dmsf-gray .icon-file.filetype-odg { background-image: url(../images/filetypes/odg_gray.png); } - -.dmsf-gray .icon-file.text-x-c { background-image: url(../images/filetypes/c_gray.png); } -.dmsf-gray .icon-file.text-x-csharp { background-image: url(../images/filetypes/csharp_gray.png); } -.dmsf-gray .icon-file.text-x-java { background-image: url(../images/filetypes/java_gray.png); } -.dmsf-gray .icon-file.text-x-javascript { background-image: url(../images/filetypes/js_gray.png); } -.dmsf-gray .icon-file.text-x-php { background-image: url(../images/filetypes/php_gray.png); } -.dmsf-gray .icon-file.text-x-ruby { background-image: url(../images/filetypes/ruby_gray.png); } -.dmsf-gray .icon-file.text-xml { background-image: url(../images/filetypes/xml_gray.png); } -.dmsf-gray .icon-file.text-css { background-image: url(../images/filetypes/css_gray.png); } -.dmsf-gray .icon-file.text-html { background-image: url(../images/filetypes/html_gray.png); } -.dmsf-gray .icon-file.image-gif { background-image: url(../images/filetypes/image_gray.png); } -.dmsf-gray .icon-file.image-jpeg { background-image: url(../images/filetypes/image_gray.png); } -.dmsf-gray .icon-file.image-png { background-image: url(../images/filetypes/image_gray.png); } -.dmsf-gray .icon-file.image-tiff { background-image: url(../images/filetypes/image_gray.png); } -.dmsf-gray .icon-file.application-pdf { background-image: url(../images/filetypes/pdf_gray.png); } -.dmsf-gray .icon-file.application-zip { background-image: url(../images/filetypes/zip_gray.png); } -.dmsf-gray .icon-file.application-x-gzip { background-image: url(../images/filetypes/zip_gray.png); } +.dmsf-gray .icon-folder { background-image: url("../images/folder_gray.png"); } +.dmsf-system .icon-folder { background-image: url("../images/folder_system.png"); } + +.icon-file.filetype-doc, .icon-file.filetype-docx { background-image: url("../images/filetypes/doc.png"); } +.icon-file.filetype-xls, +.icon-file.filetype-xlsx, +.icon-file.filetype-xlsm { background-image: url("../images/filetypes/xls.png"); } +.icon-file.filetype-ppt, .icon-file.filetype-pptx { background-image: url("../images/filetypes/ppt.png"); } +.icon-file.filetype-vsd, .icon-file.filetype-vsdx { background-image: url("../images/filetypes/vsd.png"); } +.icon-file.filetype-mpp { background-image: url("../images/filetypes/mpp.png"); } +.icon-file.filetype-odt { background-image: url("../images/filetypes/odt.png"); } +.icon-file.filetype-ods { background-image: url("../images/filetypes/ods.png"); } +.icon-file.filetype-ott { background-image: url("../images/filetypes/ott.png"); } +.icon-file.filetype-odp { background-image: url("../images/filetypes/odp.png"); } +.icon-file.filetype-odg { background-image: url("../images/filetypes/odg.png"); } + +.dmsf-gray .icon-file.filetype-doc { background-image: url("../images/filetypes/doc_gray.png"); } +.dmsf-gray .icon-file.filetype-docx { background-image: url("../images/filetypes/doc_gray.png"); } +.dmsf-gray .icon-file.filetype-xls { background-image: url("../images/filetypes/xls_gray.png"); } +.dmsf-gray .icon-file.filetype-xlsx { background-image: url("../images/filetypes/xls_gray.png"); } +.dmsf-gray .icon-file.filetype-xlsm { background-image: url("../images/filetypes/xls_gray.png"); } +.dmsf-gray .icon-file.filetype-ppt { background-image: url("../images/filetypes/ppt_gray.png"); } +.dmsf-gray .icon-file.filetype-pptx { background-image: url("../images/filetypes/ppt_gray.png"); } +.dmsf-gray .icon-file.filetype-vsd { background-image: url("../images/filetypes/vsd_gray.png"); } +.dmsf-gray .icon-file.filetype-vsdx { background-image: url("../images/filetypes/vsd_gray.png"); } +.dmsf-gray .icon-file.filetype-mpp { background-image: url("../images/filetypes/mpp_gray.png"); } +.dmsf-gray .icon-file.filetype-odt { background-image: url("../images/filetypes/odt_gray.png"); } +.dmsf-gray .icon-file.filetype-ott { background-image: url("../images/filetypes/ott_gray.png"); } +.dmsf-gray .icon-file.filetype-ods { background-image: url("../images/filetypes/ods_gray.png"); } +.dmsf-gray .icon-file.filetype-odp { background-image: url("../images/filetypes/odp_gray.png"); } +.dmsf-gray .icon-file.filetype-odg { background-image: url("../images/filetypes/odg_gray.png"); } + +.dmsf-gray .icon-file.text-x-c { background-image: url("../images/filetypes/c_gray.png"); } +.dmsf-gray .icon-file.text-x-csharp { background-image: url("../images/filetypes/csharp_gray.png"); } +.dmsf-gray .icon-file.text-x-java { background-image: url("../images/filetypes/java_gray.png"); } +.dmsf-gray .icon-file.text-x-javascript { background-image: url("../images/filetypes/js_gray.png"); } +.dmsf-gray .icon-file.text-x-php { background-image: url("../images/filetypes/php_gray.png"); } +.dmsf-gray .icon-file.text-x-ruby { background-image: url("../images/filetypes/ruby_gray.png"); } +.dmsf-gray .icon-file.text-xml { background-image: url("../images/filetypes/xml_gray.png"); } +.dmsf-gray .icon-file.text-css { background-image: url("../images/filetypes/css_gray.png"); } +.dmsf-gray .icon-file.text-html { background-image: url("../images/filetypes/html_gray.png"); } +.dmsf-gray .icon-file.image-gif { background-image: url("../images/filetypes/image_gray.png"); } +.dmsf-gray .icon-file.image-jpeg { background-image: url("../images/filetypes/image_gray.png"); } +.dmsf-gray .icon-file.image-png { background-image: url("../images/filetypes/image_gray.png"); } +.dmsf-gray .icon-file.image-tiff { background-image: url("../images/filetypes/image_gray.png"); } +.dmsf-gray .icon-file.application-pdf { background-image: url("../images/filetypes/pdf_gray.png"); } +.dmsf-gray .icon-file.application-zip { background-image: url("../images/filetypes/zip_gray.png"); } +.dmsf-gray .icon-file.application-x-gzip { background-image: url("../images/filetypes/zip_gray.png"); } /* Activities */ -.icon-dmsf-file-revision { background-image: url(../../../images/document.png); } +.icon-dmsf-file-revision { background-image: url("../../../images/document.png"); } /* Links */ .dmsf-gray { color: #AAA } @@ -222,18 +224,18 @@ div[id*="revision_access_"] { } /* Search results */ -.icon-dmsf-file { background-image: url(../../../images/document.png); } +.icon-dmsf-file { background-image: url("../../../images/document.png"); } /* DMSF tree view */ -.dmsf-hidden { display:none; } +.dmsf-hidden { display: none; } .dmsf-tree:not(.dmsf-child) span.dmsf-expander { cursor: pointer; } .dmsf-tree.dmsf-expanded span.dmsf-expander { - background: url(../../../images/arrow_down.png) no-repeat 0 50%; + background: url("../../../images/arrow_down.png") no-repeat 0 50%; padding-left: 16px; } .dmsf-tree.dmsf-child span.dmsf-expander { padding-left: 16px; } .dmsf-tree.dmsf-collapsed span.dmsf-expander { - background: url(../../../images/arrow_right.png) no-repeat 0 50%; + background: url("../../../images/arrow_right.png") no-repeat 0 50%; padding-left: 16px; } .dmsf-tree.idnt-1 td.dmsf-title { padding-left: 1.5em; } @@ -270,11 +272,11 @@ span.fileover { } .dmsf-uploader { - padding:10px; + padding: 10px; margin-bottom: 20px; - background-color:#f6f6f6; - color:#505050; - line-height:1.5em; + background-color: #f6f6f6; + color: #505050; + line-height: 1.5em; border: 1px solid #e4e4e4; word-wrap: break-word; border-radius: 3px; @@ -291,52 +293,51 @@ span.fileover { } #dmsf_attachments_fields input.description { - margin-left:4px; - width:340px; + margin-left: 4px; + width: 340px; } #dmsf_attachments_fields span { - display:block; - white-space:nowrap; + white-space: nowrap; } #dmsf_attachments_fields input.filename { - border:0; - height:1.8em; - width:250px; - color:#555; - background-color:inherit; - background:url(../../../images/attachment.png) no-repeat 1px 50%; + border: 0; + height: 1.8em; + width: 250px; + color: #555; + background-color: inherit; + background: url("../../../images/attachment.png") no-repeat 1px 50%; padding-left: 18px; } #dmsf_attachments_fields .ajax-waiting input.filename { - background:url(../../../images/hourglass.png) no-repeat 0 50%; + background: url("../../../images/hourglass.png") no-repeat 0 50%; } #dmsf_attachments_fields .ajax-loading input.filename { - background:url(../../../images/loading.gif) no-repeat 0 50%; + background: url("../../../images/loading.gif") no-repeat 0 50%; } #dmsf_attachments_fields div.ui-progressbar { width: 100px; - height:14px; + height: 14px; margin: 2px 0 -5px 8px; display: inline-block; } #dmsf_links_attachments_fields span { - display:block; - white-space:nowrap; + display: block; + white-space: nowrap; } #dmsf_links_attachments_fields input.filename { - border:0; - height:1.8em; - width:250px; - color:#555; - background-color:inherit; - background:url(../../../images/link.png) no-repeat 1px 50%; + border: 0; + height: 1.8em; + width: 250px; + color: #555; + background-color: inherit; + background: url("../../../images/link.png") no-repeat 1px 50%; padding-left: 18px; } @@ -345,7 +346,7 @@ span.fileover { } a.dmsf-scroll-down { - background: url(../../../images/arrow_down.png) no-repeat 5px 50%; + background: url("../../../images/arrow_down.png") no-repeat 5px 50%; background-color: #759FCF; text-decoration: none; color: #FFFFFF; @@ -370,15 +371,15 @@ div.dmsf-scroll { } /* New link form */ -#dmsf_link_target_file_id, #dmsf_link_target_folder_id, #dmsf_link_target_project_id, #dmsf_link_name{ +#dmsf_link_target_file_id, #dmsf_link_target_folder_id, #dmsf_link_target_project_id, #dmsf_link_name { min-width: 40%; } -#dmsf_link_external{ +#dmsf_link_external { display: none; } -.dmsf_attachments_label{ +.dmsf_attachments_label { vertical-align: middle; } @@ -394,5 +395,5 @@ div.dmsf-scroll { /* Wiki toolbar */ .jstb_dmsf { - background-image: url('../images/jstoolbar/bt_dmsf.png'); + background-image: url("../images/jstoolbar/bt_dmsf.png"); } \ No newline at end of file diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 026c4b30..3bdefb11 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -489,6 +489,8 @@ cs: text_dmsf_webdav_digest_reset: Je vyžadováno vaše heslo pro vygenerování nového DMSF WebDAV digestu. notice_webdav_digest_reset: Váš DMSF WebDAV digest byl resetován. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/de.yml b/config/locales/de.yml index 84b582b5..fc34ef0a 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -484,6 +484,8 @@ de: text_dmsf_webdav_digest_reset: Bitte geben Sie Ihr Passwort ein, um einen neuen DMS WebDAV Digest zu generieren. notice_webdav_digest_reset: Ihr DMS WebDAV Digest wurde zurückgesetzt. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: Von mir gesperrte Dokumente diff --git a/config/locales/en.yml b/config/locales/en.yml index bef456ae..c7765888 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -488,6 +488,8 @@ en: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/es.yml b/config/locales/es.yml index 8e731554..a0510788 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -488,6 +488,8 @@ es: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/fa.yml b/config/locales/fa.yml index ac881b20..b62abbdb 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -467,6 +467,8 @@ fa: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: اسناد قفل شده‌ی من diff --git a/config/locales/fr.yml b/config/locales/fr.yml index e577fd95..0f501cc5 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -489,6 +489,8 @@ fr: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 2ace9837..7d0cef95 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -489,6 +489,8 @@ hu: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/it.yml b/config/locales/it.yml index e77222d7..73cd0483 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -488,6 +488,8 @@ it: # Italian strings thx 2 Matteo Arceci! text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 02393188..f722dbca 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -490,6 +490,8 @@ ja: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: 自分がロック中の文書 diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 563ad1e6..b0296d85 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -488,6 +488,8 @@ ko: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: 내 잠긴 파일 diff --git a/config/locales/nl.yml b/config/locales/nl.yml index f3982192..6982893a 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -488,6 +488,8 @@ nl: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/pl.yml b/config/locales/pl.yml index a761742e..e9f9e7d0 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -487,6 +487,8 @@ pl: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 102fb839..9a3be391 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -488,6 +488,8 @@ pt-BR: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 6cf4b548..b1f0d24d 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -489,6 +489,8 @@ sl: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 183dba02..0b814d1f 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -490,6 +490,8 @@ uk: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: Мої заблоковані документи diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 1a3b1f63..9fd2a587 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -487,6 +487,8 @@ zh-TW: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 47d0f78a..120b30ad 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -489,6 +489,8 @@ zh: text_dmsf_webdav_digest_reset: You are supposed to enter your password to generate a new DMSF WebDAV digest. notice_webdav_digest_reset: Your DMSF WebDAV digest was reset. + label_dmsf_commit: Commit + easy_pages: modules: dmsf_locked_documents: My locked documents diff --git a/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb b/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb index 027a39c8..b2372a2c 100644 --- a/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb +++ b/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb @@ -157,7 +157,8 @@ def controller_issues_after_save(context, edit: false) end # Attach DMS documents uploaded_files = params[:dmsf_attachments] - if uploaded_files + details = params[:committed_files] + if uploaded_files && details system_folder = issue.system_folder(create: true) uploaded_files.each do |key, uploaded_file| upload = DmsfUpload.create_from_uploaded_attachment(issue.project, system_folder, uploaded_file) @@ -166,7 +167,11 @@ def controller_issues_after_save(context, edit: false) uploaded_file[:disk_filename] = upload.disk_filename uploaded_file[:name] = upload.name uploaded_file[:title] = upload.title - uploaded_file[:version] = 1 + uploaded_file[:description] = details[key][:description] + uploaded_file[:comment] = details[key][:comment] + uploaded_file[:version_major] = details[key][:version_major] + uploaded_file[:version_minor] = details[key][:version_minor] + uploaded_file[:version_patch] = details[key][:version_patch] uploaded_file[:size] = upload.size uploaded_file[:mime_type] = upload.mime_type uploaded_file[:tempfile_path] = upload.tempfile_path @@ -174,6 +179,7 @@ def controller_issues_after_save(context, edit: false) if params[:dmsf_attachments_wfs].present? && params[:dmsf_attachments_wfs][key].present? uploaded_file[:workflow_id] = params[:dmsf_attachments_wfs][key].to_i end + uploaded_file[:custom_field_values] = details[key][:custom_field_values] end DmsfUploadHelper.commit_files_internal uploaded_files, issue.project, system_folder, context[:controller], issue, new_object: @new_object diff --git a/lib/redmine_dmsf/hooks/views/issue_view_hooks.rb b/lib/redmine_dmsf/hooks/views/issue_view_hooks.rb index 17f9dc26..a01c1ea2 100644 --- a/lib/redmine_dmsf/hooks/views/issue_view_hooks.rb +++ b/lib/redmine_dmsf/hooks/views/issue_view_hooks.rb @@ -163,8 +163,9 @@ def attach_documents_form(context, label: true, description: true) html = description ? +'' + html << ' style="display: none;"' end + html << '>' if label html << "" html << '' @@ -176,7 +177,7 @@ def attach_documents_form(context, label: true, description: true) locals: { container: container, multiple: true, description: description, - awf: true } }) + awf: false } }) html << '' html << (description ? '

' : '
') html diff --git a/lib/redmine_dmsf/patches/easy_crm_cases_controller_patch.rb b/lib/redmine_dmsf/patches/easy_crm_cases_controller_patch.rb index 613d20cf..fb14ff2f 100644 --- a/lib/redmine_dmsf/patches/easy_crm_cases_controller_patch.rb +++ b/lib/redmine_dmsf/patches/easy_crm_cases_controller_patch.rb @@ -41,7 +41,11 @@ def easy_crm_after_save uploaded_file[:disk_filename] = upload.disk_filename uploaded_file[:name] = upload.name uploaded_file[:title] = upload.title - uploaded_file[:version] = 1 + uploaded_file[:description] = details[key][:description] + uploaded_file[:comment] = details[key][:comment] + uploaded_file[:version_major] = details[key][:version_major] + uploaded_file[:version_minor] = details[key][:version_minor] + uploaded_file[:version_patch] = details[key][:version_patch] uploaded_file[:size] = upload.size uploaded_file[:mime_type] = upload.mime_type uploaded_file[:tempfile_path] = upload.tempfile_path @@ -49,6 +53,7 @@ def easy_crm_after_save if params[:dmsf_attachments_wfs].present? && params[:dmsf_attachments_wfs][key].present? uploaded_file[:workflow_id] = params[:dmsf_attachments_wfs][key].to_i end + uploaded_file[:custom_field_values] = details[key][:custom_field_values] end DmsfUploadHelper.commit_files_internal uploaded_files, easy_crm_case.project, system_folder, self, easy_crm_case, new_object: false