From ed43639ec0fe0101743723ad3b3eeb1140d53e36 Mon Sep 17 00:00:00 2001 From: Karel Picman Date: Thu, 26 Oct 2017 14:52:42 +0200 Subject: [PATCH] Support for letters as the major version #793 --- README.md | 2 +- app/controllers/dmsf_files_controller.rb | 4 +- app/helpers/dmsf_upload_helper.rb | 54 ++++++++++++++++++- app/models/dmsf_file_revision.rb | 10 ++-- .../dmsf_files/_file_new_revision.html.erb | 16 +++--- app/views/dmsf_files/show.api.rsb | 2 +- app/views/dmsf_files/show.html.erb | 2 +- app/views/dmsf_mailer/files_deleted.html.erb | 2 +- app/views/dmsf_mailer/files_deleted.text.erb | 2 +- app/views/dmsf_mailer/files_updated.html.erb | 2 +- app/views/dmsf_mailer/files_updated.text.erb | 2 +- app/views/dmsf_upload/_upload_file.html.erb | 10 ++-- .../dmsf_upload/_upload_file_locked.html.erb | 2 +- app/views/dmsf_upload/upload_files.html.erb | 1 - init.rb | 2 +- .../rest_api/dmsf_file_api_test.rb | 2 +- test/unit/dmsf_file_revision_test.rb | 12 +++++ 17 files changed, 98 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 1779a2ea..b6d5ae36 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Redmine DMSF Plugin =================== -The current version of Redmine DMSF is **1.6.0** [![Build Status](https://api.travis-ci.org/danmunn/redmine_dmsf.png)](https://travis-ci.org/danmunn/redmine_dmsf) +The current version of Redmine DMSF is **1.6.1 devel** [![Build Status](https://api.travis-ci.org/danmunn/redmine_dmsf.png)](https://travis-ci.org/danmunn/redmine_dmsf) Redmine DMSF is Document Management System Features plugin for Redmine issue tracking system; It is aimed to replace current Redmine's Documents module. diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 67122f04..2c31a203 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -114,8 +114,8 @@ class DmsfFilesController < ApplicationController revision.minor_version = last_revision.minor_version version = params[:version].to_i if version == 3 - revision.major_version = params[:custom_version_major].to_i - revision.minor_version = params[:custom_version_minor].to_i + revision.major_version = DmsfUploadHelper::db_version(params[:custom_version_major]) + revision.minor_version = DmsfUploadHelper::db_version(params[:custom_version_minor]) else revision.increase_version(version) end diff --git a/app/helpers/dmsf_upload_helper.rb b/app/helpers/dmsf_upload_helper.rb index 7639cd97..f8fab061 100644 --- a/app/helpers/dmsf_upload_helper.rb +++ b/app/helpers/dmsf_upload_helper.rb @@ -72,8 +72,8 @@ module DmsfUploadHelper version = 1 end if version == 3 - new_revision.major_version = commited_file[:custom_version_major].to_i - new_revision.minor_version = commited_file[:custom_version_minor].to_i + new_revision.major_version = DmsfUploadHelper::db_version(commited_file[:custom_version_major]) + new_revision.minor_version = DmsfUploadHelper::db_version(commited_file[:custom_version_minor]) else new_revision.increase_version(version) end @@ -162,4 +162,54 @@ module DmsfUploadHelper [files, failed_uploads] end + # 0..99, A..Z except O + def self.major_version_select_options + (0..99).to_a + ('A'..'Y').to_a - ['O'] + end + + # 0..99, ' ' + def self.minor_version_select_options + (0..99).to_a + [' '] + end + + # 1 -> 2, -1 -> -2, A -> B + def self.increase_version(version, number) + return number if ((version == ' ') || ((-version) == ' '.ord)) + if Integer(version) + if version >= 0 + if (version + number) < 100 + version + number + else + version + end + else + if -(version - number) < 'Z'.ord + version - number + else + version + end + end + end + rescue + if (version.ord + number) < 'Z'.ord + (version.ord + number).chr + else + version + end + end + + # 1 -> 1, -65 -> A + def self.gui_version(version) + return version if version >= 0 + (-version).chr + end + + # 1 -> 1, A -> -65 + def self.db_version(version) + version.to_i if Integer(version) + rescue + version = ' ' if version.blank? + -(version.ord) + end + end diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index 8c609624..55439ebf 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -131,7 +131,11 @@ class DmsfFileRevision < ActiveRecord::Base end def version - "#{self.major_version}.#{self.minor_version}" + ver = DmsfUploadHelper::gui_version(self.major_version).to_s + if -self.minor_version != ' '.ord + ver << ".#{DmsfUploadHelper::gui_version(self.minor_version)}" + end + ver end def storage_base_path @@ -233,7 +237,7 @@ class DmsfFileRevision < ActiveRecord::Base def increase_version(version_to_increase) self.minor_version = case version_to_increase when 1 - self.minor_version + 1 + DmsfUploadHelper.increase_version(self.minor_version, 1) when 2 0 else @@ -241,7 +245,7 @@ class DmsfFileRevision < ActiveRecord::Base end self.major_version = case version_to_increase when 2 - self.major_version + 1 + DmsfUploadHelper::increase_version(self.major_version, 1) else major_version end diff --git a/app/views/dmsf_files/_file_new_revision.html.erb b/app/views/dmsf_files/_file_new_revision.html.erb index b1a44be8..7c8f1ebf 100644 --- a/app/views/dmsf_files/_file_new_revision.html.erb +++ b/app/views/dmsf_files/_file_new_revision.html.erb @@ -58,19 +58,21 @@

<%= label_tag('version_0', l(:label_dmsf_version)) %> <%= radio_button_tag('version', 0, @revision.version == @file.last_revision.version) %> - <%= @file.last_revision.major_version %>.<%= @file.last_revision.minor_version %> + <%= @file.last_revision.version %> <%= l(:option_version_same) %>
<%= radio_button_tag('version', 1, @revision.major_version == @file.last_revision.major_version && @revision.minor_version != @file.last_revision.minor_version) %> - <%= @file.last_revision.major_version %>.<%= @file.last_revision.minor_version + 1 %> + <%= DmsfUploadHelper::gui_version(@file.last_revision.major_version) %>.<%= DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(@file.last_revision.minor_version, 1)) %> <%= l(:option_version_minor) %>
<%= radio_button_tag('version', 2, @revision.major_version != @file.last_revision.major_version) %> - <%= @file.last_revision.major_version + 1 %>.0 + <%= DmsfUploadHelper.gui_version(DmsfUploadHelper::increase_version(@file.last_revision.major_version, 1)) %>.0 <%= l(:option_version_major) %>
<%= radio_button_tag('version', 3) %> - <%= select_tag 'custom_version_major', options_for_select(0..99, @file.last_revision.major_version + 2), - :onchange => '$("#version_3").prop("checked", true)', :class => 'dmsf_select_version' %>. - <%= select_tag 'custom_version_minor', options_for_select(0..99, @file.last_revision.minor_version + 1), - :onchange => '$("#version_3").prop("checked", true)', :class => 'dmsf_select_version' %> + <%= select_tag 'custom_version_major', options_for_select(DmsfUploadHelper::major_version_select_options, + DmsfUploadHelper::gui_version(DmsfUploadHelper::increase_version(@file.last_revision.major_version, 2))), + :onchange => '$("#version_3").prop("checked", true)', :class => 'dmsf_select_version' %>. + <%= select_tag 'custom_version_minor', options_for_select(DmsfUploadHelper::minor_version_select_options, + DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(@file.last_revision.minor_version, 1))), + :onchange => '$("#version_3").prop("checked", true)', :class => 'dmsf_select_version' %> <%= l(:option_version_custom) %>

diff --git a/app/views/dmsf_files/show.api.rsb b/app/views/dmsf_files/show.api.rsb index 8f2243b5..99760e9a 100644 --- a/app/views/dmsf_files/show.api.rsb +++ b/app/views/dmsf_files/show.api.rsb @@ -4,7 +4,7 @@ api.dmsf_file do api.project_id @file.project_id api.dmsf_folder_id @file.dmsf_folder_id if @file.dmsf_folder_id if @file.last_revision - api.version "#{@file.last_revision.major_version}.#{@file.last_revision.minor_version}" + api.version "#{@file.last_revision.version}" api.mime_type @file.last_revision.mime_type api.digest @file.last_revision.digest api.size @file.last_revision.size diff --git a/app/views/dmsf_files/show.html.erb b/app/views/dmsf_files/show.html.erb index 9dd32195..4007fe73 100644 --- a/app/views/dmsf_files/show.html.erb +++ b/app/views/dmsf_files/show.html.erb @@ -117,7 +117,7 @@ <% end %>
<%= content_tag :div, l(:label_dmsf_version), :class => 'label' %> - <%= content_tag :div, "#{revision.major_version}.#{revision.minor_version}", :class => 'value' %> + <%= content_tag :div, "#{revision.version}", :class => 'value' %>
<%= content_tag :div, l(:label_size), :class => 'label' %> diff --git a/app/views/dmsf_mailer/files_deleted.html.erb b/app/views/dmsf_mailer/files_deleted.html.erb index 99a10951..b16d2ea9 100644 --- a/app/views/dmsf_mailer/files_deleted.html.erb +++ b/app/views/dmsf_mailer/files_deleted.html.erb @@ -24,7 +24,7 @@

<%= h(file.dmsf_path_str) %> (<%= file.name %>) <% if file.last_revision %> - , <%= number_to_human_size(file.last_revision.size) %>, <%= l(:label_dmsf_version) %> <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %> + , <%= number_to_human_size(file.last_revision.size) %>, <%= l(:label_dmsf_version) %> <%= file.last_revision.version %> <% end %>

<% end %> \ No newline at end of file diff --git a/app/views/dmsf_mailer/files_deleted.text.erb b/app/views/dmsf_mailer/files_deleted.text.erb index 5a6fd884..04365cd0 100644 --- a/app/views/dmsf_mailer/files_deleted.text.erb +++ b/app/views/dmsf_mailer/files_deleted.text.erb @@ -25,6 +25,6 @@ <% @files.each do |file| %> <%= h(file.dmsf_path_str) %> (<%= file.name %>) <% if file.last_revision %> - , <%= number_to_human_size(file.last_revision.size) %>, <%= l(:label_dmsf_version) %> <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %> + , <%= number_to_human_size(file.last_revision.size) %>, <%= l(:label_dmsf_version) %> <%= file.last_revision.version %> <% end %> <% end %> \ No newline at end of file diff --git a/app/views/dmsf_mailer/files_updated.html.erb b/app/views/dmsf_mailer/files_updated.html.erb index 05b2020a..eeb99d7e 100644 --- a/app/views/dmsf_mailer/files_updated.html.erb +++ b/app/views/dmsf_mailer/files_updated.html.erb @@ -26,7 +26,7 @@ dmsf_file_url(file, :download => '')) %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, - <%= l(:label_dmsf_version) %> <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>, + <%= l(:label_dmsf_version) %> <%= file.last_revision.version %>, <%= "#{file.last_revision.workflow_str(true)}," if file.last_revision.workflow_str(true) != l(:title_none) %> <%= link_to(l(:link_details, :title => h(file.title)), dmsf_file_url(file)) %> diff --git a/app/views/dmsf_mailer/files_updated.text.erb b/app/views/dmsf_mailer/files_updated.text.erb index de0d8d9f..da8a7082 100644 --- a/app/views/dmsf_mailer/files_updated.text.erb +++ b/app/views/dmsf_mailer/files_updated.text.erb @@ -23,7 +23,7 @@ <% @files.each do |file| %> <%= h(file.dmsf_path_str) %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, - <%= l(:label_dmsf_version) %> <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %>, + <%= l(:label_dmsf_version) %> <%= file.last_revision.version %>, <%= "#{file.last_revision.workflow_str(true)}," if file.last_revision.workflow_str(true) != l(:title_none) %> <%= dmsf_file_url(file) %> <% if file.last_revision.comment.present? %> diff --git a/app/views/dmsf_upload/_upload_file.html.erb b/app/views/dmsf_upload/_upload_file.html.erb index 2311378f..b6a7b3cc 100644 --- a/app/views/dmsf_upload/_upload_file.html.erb +++ b/app/views/dmsf_upload/_upload_file.html.erb @@ -59,18 +59,20 @@

<%= label_tag("commited_files[#{i}][version]_minor", l(:label_dmsf_version)) %> <%= radio_button_tag("commited_files[#{i}][version]", 1, true) %> - <%= upload.major_version %>.<%= upload.minor_version + 1 %> + <%= DmsfUploadHelper::gui_version(upload.major_version) %>.<%= DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(upload.minor_version, 1)) %> <%= l(:option_version_minor) %>
<%= radio_button_tag("commited_files[#{i}][version]", 2) %> - <%= upload.major_version + 1 %>.0 + <%= DmsfUploadHelper::gui_version(DmsfUploadHelper::increase_version(upload.major_version, 1)) %>.0 <%= l(:option_version_major) %>
<%= radio_button_tag("commited_files[#{i}][version]", 3) %> <%= select_tag "commited_files[#{i}][custom_version_major]", - options_for_select(0..99, upload.major_version + 2), + options_for_select(DmsfUploadHelper::major_version_select_options, + DmsfUploadHelper::gui_version(DmsfUploadHelper::increase_version(upload.major_version, 2))), :onchange => "$('#commited_files_#{i}_version_3').prop('checked', true)", :class => 'dmsf_select_version'%>. <%= select_tag "commited_files[#{i}][custom_version_minor]", - options_for_select(0..99, upload.minor_version + 1), + options_for_select(DmsfUploadHelper::minor_version_select_options, + DmsfUploadHelper::gui_version(DmsfUploadHelper.increase_version(upload.minor_version, 1))), :onchange => "$('#commited_files_#{i}_version_3').prop('checked', true)", :class => 'dmsf_select_version' %> <%= l(:option_version_custom) %> diff --git a/app/views/dmsf_upload/_upload_file_locked.html.erb b/app/views/dmsf_upload/_upload_file_locked.html.erb index 61a533c1..65da7655 100644 --- a/app/views/dmsf_upload/_upload_file_locked.html.erb +++ b/app/views/dmsf_upload/_upload_file_locked.html.erb @@ -66,7 +66,7 @@

<%= label_tag('', l(:label_dmsf_version)) %> - <%= text_field_tag(:name, "#{upload.major_version}.#{upload.minor_version}", :readonly => true) %> + <%= text_field_tag(:name, "#{DmsfUploadHelper::gui_version(upload.major_version)}.#{DmsfUploadHelper::gui_version(upload.minor_version)}", :readonly => true) %>

diff --git a/app/views/dmsf_upload/upload_files.html.erb b/app/views/dmsf_upload/upload_files.html.erb index 580070f5..1c8fe5ad 100644 --- a/app/views/dmsf_upload/upload_files.html.erb +++ b/app/views/dmsf_upload/upload_files.html.erb @@ -42,7 +42,6 @@ <%= render(:partial => 'upload_file', :locals => {:upload => upload, :i => i}) %> <% end %> <% end %> - <%#= submit_tag l(:submit_commit) %>
<%= submit_tag l(:submit_commit), :class => 'button-positive' %>
diff --git a/init.rb b/init.rb index 3fb93f93..f311d0f2 100644 --- a/init.rb +++ b/init.rb @@ -32,7 +32,7 @@ Redmine::Plugin.register :redmine_dmsf do end author 'Vít Jonáš / Daniel Munn / Karel Pičman' description 'Document Management System Features' - version '1.6.0' + version '1.6.1 devel' requires_redmine :version_or_higher => '3.4.0' diff --git a/test/integration/rest_api/dmsf_file_api_test.rb b/test/integration/rest_api/dmsf_file_api_test.rb index d14b96aa..da21152d 100644 --- a/test/integration/rest_api/dmsf_file_api_test.rb +++ b/test/integration/rest_api/dmsf_file_api_test.rb @@ -62,7 +62,7 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest assert_select 'dmsf_file > id', :text => @file1.id.to_s assert_select 'dmsf_file > name', :text => @file1.name assert_select 'dmsf_file > project_id', :text => @file1.project_id.to_s - assert_select 'dmsf_file > version', :text => "#{@file1.last_revision.major_version}.#{@file1.last_revision.minor_version}" + assert_select 'dmsf_file > version', :text => "#{@file1.last_revision.version}" assert_select 'dmsf_file > mime_type', :text => @file1.last_revision.mime_type assert_select 'dmsf_file > digest', :text => @file1.last_revision.digest assert_select 'dmsf_file > size', :text => @file1.last_revision.size.to_s diff --git a/test/unit/dmsf_file_revision_test.rb b/test/unit/dmsf_file_revision_test.rb index 9231ba3a..50fbebac 100644 --- a/test/unit/dmsf_file_revision_test.rb +++ b/test/unit/dmsf_file_revision_test.rb @@ -146,4 +146,16 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest assert_equal 'John Smith', @revision2.workflow_tooltip end + def test_version + @revision1.major_version = 1 + @revision1.minor_version = 0 + assert_equal '1.0', @revision1.version + @revision1.major_version = -('A'.ord) + @revision1.minor_version = -(' '.ord) + assert_equal 'A', @revision1.version + @revision1.major_version = -('A'.ord) + @revision1.minor_version = 0 + assert_equal 'A.0', @revision1.version + end + end \ No newline at end of file