Support for letters as the major version #793

This commit is contained in:
Karel Picman 2017-10-26 14:52:42 +02:00
parent f7266c2efc
commit ed43639ec0
17 changed files with 98 additions and 29 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -58,19 +58,21 @@
<p>
<%= 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) %><br/>
<%= 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) %><br/>
<%= 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) %><br/>
<%= 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) %>
</p>
</div>

View File

@ -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

View File

@ -117,7 +117,7 @@
<% end %>
<div class="status attribute">
<%= 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' %>
</div>
<div class="status attribute">
<%= content_tag :div, l(:label_size), :class => 'label' %>

View File

@ -24,7 +24,7 @@
<p>
<%= 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 %>
</p>
<% end %>

View File

@ -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 %>

View File

@ -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)) %>

View File

@ -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? %>

View File

@ -59,18 +59,20 @@
<p>
<%= 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) %><br/>
<%= 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) %><br/>
<%= 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) %>

View File

@ -66,7 +66,7 @@
<div class="splitcontentleft">
<p>
<%= 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) %>
</p>
</div>
<div class="splitcontentright">

View File

@ -42,7 +42,6 @@
<%= render(:partial => 'upload_file', :locals => {:upload => upload, :i => i}) %>
<% end %>
<% end %>
<%#= submit_tag l(:submit_commit) %>
<div class="form-actions">
<%= submit_tag l(:submit_commit), :class => 'button-positive' %>
</div>

View File

@ -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'

View File

@ -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

View File

@ -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