summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-08-31 12:59:57 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-08-31 12:59:57 +0000
commitdbad26c87db8247c0d635c993981d4277e165978 (patch)
tree331b8029e1f6c02c5812033b7080281a6a0fbc60
parent25b4139028696d4f4fb057f598a771aca52b7afe (diff)
downloadredmine-dbad26c87db8247c0d635c993981d4277e165978.tar.gz
redmine-dbad26c87db8247c0d635c993981d4277e165978.zip
Adds an option to generate sequential project identifiers.
Disabled by default, it can be enabled on the 'Projects' tab in application settings. git-svn-id: http://redmine.rubyforge.org/svn/trunk@1777 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/projects_controller.rb1
-rw-r--r--app/helpers/settings_helper.rb1
-rw-r--r--app/models/project.rb6
-rw-r--r--app/views/settings/_general.rhtml3
-rw-r--r--app/views/settings/_projects.rhtml12
-rw-r--r--config/settings.yml2
-rw-r--r--lang/bg.yml1
-rw-r--r--lang/cs.yml1
-rw-r--r--lang/da.yml1
-rw-r--r--lang/de.yml1
-rw-r--r--lang/en.yml1
-rw-r--r--lang/es.yml1
-rw-r--r--lang/fi.yml1
-rw-r--r--lang/fr.yml1
-rw-r--r--lang/he.yml1
-rw-r--r--lang/hu.yml1
-rw-r--r--lang/it.yml1
-rw-r--r--lang/ja.yml1
-rw-r--r--lang/ko.yml1
-rw-r--r--lang/lt.yml1
-rw-r--r--lang/nl.yml1
-rw-r--r--lang/no.yml1
-rw-r--r--lang/pl.yml1
-rw-r--r--lang/pt-br.yml1
-rw-r--r--lang/pt.yml1
-rw-r--r--lang/ro.yml1
-rw-r--r--lang/ru.yml1
-rw-r--r--lang/sr.yml1
-rw-r--r--lang/sv.yml1
-rw-r--r--lang/th.yml1
-rw-r--r--lang/uk.yml1
-rw-r--r--lang/zh-tw.yml1
-rw-r--r--lang/zh.yml1
-rw-r--r--test/unit/project_test.rb11
34 files changed, 60 insertions, 3 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 43d35cf4f..0d83d81b3 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -69,6 +69,7 @@ class ProjectsController < ApplicationController
:order => 'name')
@project = Project.new(params[:project])
if request.get?
+ @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers?
@project.trackers = Tracker.all
@project.is_public = Setting.default_projects_public?
@project.enabled_module_names = Redmine::AccessControl.available_project_modules
diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb
index d88269f7d..47e691334 100644
--- a/app/helpers/settings_helper.rb
+++ b/app/helpers/settings_helper.rb
@@ -19,6 +19,7 @@ module SettingsHelper
def administration_settings_tabs
tabs = [{:name => 'general', :partial => 'settings/general', :label => :label_general},
{:name => 'authentication', :partial => 'settings/authentication', :label => :label_authentication},
+ {:name => 'projects', :partial => 'settings/projects', :label => :label_project_plural},
{:name => 'issues', :partial => 'settings/issues', :label => :label_issue_tracking},
{:name => 'notifications', :partial => 'settings/notifications', :label => l(:field_mail_notification)},
{:name => 'mail_handler', :partial => 'settings/mail_handler', :label => l(:label_incoming_emails)},
diff --git a/app/models/project.rb b/app/models/project.rb
index 9e4bd6971..adc70c644 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -238,6 +238,12 @@ class Project < ActiveRecord::Base
enabled_modules << EnabledModule.new(:name => name.to_s)
end
end
+
+ # Returns an auto-generated project identifier based on the last identifier used
+ def self.next_identifier
+ p = Project.find(:first, :order => 'created_on DESC')
+ p.nil? ? nil : p.identifier.to_s.succ
+ end
protected
def validate
diff --git a/app/views/settings/_general.rhtml b/app/views/settings/_general.rhtml
index 1d17a003e..bb56c43db 100644
--- a/app/views/settings/_general.rhtml
+++ b/app/views/settings/_general.rhtml
@@ -46,9 +46,6 @@
<p><label><%= l(:setting_feeds_limit) %></label>
<%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %></p>
-
-<p><label><%= l(:setting_default_projects_public) %></label>
-<%= check_box_tag 'settings[default_projects_public]', 1, Setting.default_projects_public? %><%= hidden_field_tag 'settings[default_projects_public]', 0 %></p>
</div>
<%= submit_tag l(:button_save) %>
diff --git a/app/views/settings/_projects.rhtml b/app/views/settings/_projects.rhtml
new file mode 100644
index 000000000..1cd4f6e9b
--- /dev/null
+++ b/app/views/settings/_projects.rhtml
@@ -0,0 +1,12 @@
+<% form_tag({:action => 'edit', :tab => 'projects'}) do %>
+
+<div class="box tabular settings">
+<p><label><%= l(:setting_default_projects_public) %></label>
+<%= check_box_tag 'settings[default_projects_public]', 1, Setting.default_projects_public? %><%= hidden_field_tag 'settings[default_projects_public]', 0 %></p>
+
+<p><label><%= l(:setting_sequential_project_identifiers) %></label>
+<%= check_box_tag 'settings[sequential_project_identifiers]', 1, Setting.sequential_project_identifiers? %><%= hidden_field_tag 'settings[sequential_project_identifiers]', 0 %></p>
+</div>
+
+<%= submit_tag l(:button_save) %>
+<% end %>
diff --git a/config/settings.yml b/config/settings.yml
index ac79edb8d..e1ad341de 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -118,6 +118,8 @@ display_subprojects_issues:
default: 1
default_projects_public:
default: 1
+sequential_project_identifiers:
+ default: 0
# encodings used to convert repository files content to UTF-8
# multiple values accepted, comma separated
repositories_encodings:
diff --git a/lang/bg.yml b/lang/bg.yml
index 1f174e29f..ddc3368ef 100644
--- a/lang/bg.yml
+++ b/lang/bg.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/cs.yml b/lang/cs.yml
index 609e95478..767fcdbde 100644
--- a/lang/cs.yml
+++ b/lang/cs.yml
@@ -641,3 +641,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/da.yml b/lang/da.yml
index a76e7ea5c..8f8905f32 100644
--- a/lang/da.yml
+++ b/lang/da.yml
@@ -638,3 +638,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/de.yml b/lang/de.yml
index e309dfb57..1f6c6291d 100644
--- a/lang/de.yml
+++ b/lang/de.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/en.yml b/lang/en.yml
index 5f552774c..c9dddf9cc 100644
--- a/lang/en.yml
+++ b/lang/en.yml
@@ -219,6 +219,7 @@ setting_display_subprojects_issues: Display subprojects issues on main projects
setting_enabled_scm: Enabled SCM
setting_mail_handler_api_enabled: Enable WS for incoming emails
setting_mail_handler_api_key: API key
+setting_sequential_project_identifiers: Generate sequential project identifiers
project_module_issue_tracking: Issue tracking
project_module_time_tracking: Time tracking
diff --git a/lang/es.yml b/lang/es.yml
index fc9540a02..e4b4f0668 100644
--- a/lang/es.yml
+++ b/lang/es.yml
@@ -639,3 +639,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/fi.yml b/lang/fi.yml
index 6eb16bfac..3ec7a6b50 100644
--- a/lang/fi.yml
+++ b/lang/fi.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/fr.yml b/lang/fr.yml
index 81e44949f..f40a3f3d1 100644
--- a/lang/fr.yml
+++ b/lang/fr.yml
@@ -220,6 +220,7 @@ setting_display_subprojects_issues: Afficher par défaut les demandes des sous-p
setting_enabled_scm: SCM activés
setting_mail_handler_api_enabled: "Activer le WS pour la réception d'emails"
setting_mail_handler_api_key: Clé de protection de l'API
+setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels
project_module_issue_tracking: Suivi des demandes
project_module_time_tracking: Suivi du temps passé
diff --git a/lang/he.yml b/lang/he.yml
index 77fe32e53..e89e65c61 100644
--- a/lang/he.yml
+++ b/lang/he.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/hu.yml b/lang/hu.yml
index 208b6fe1e..f8bfb93e8 100644
--- a/lang/hu.yml
+++ b/lang/hu.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/it.yml b/lang/it.yml
index d123e913a..e1ef6f8fe 100644
--- a/lang/it.yml
+++ b/lang/it.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/ja.yml b/lang/ja.yml
index 5a728fb02..dda73dc26 100644
--- a/lang/ja.yml
+++ b/lang/ja.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/ko.yml b/lang/ko.yml
index 16bd65364..be7eab1fb 100644
--- a/lang/ko.yml
+++ b/lang/ko.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/lt.yml b/lang/lt.yml
index 2a75a95ea..da581d678 100644
--- a/lang/lt.yml
+++ b/lang/lt.yml
@@ -639,3 +639,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/nl.yml b/lang/nl.yml
index f79e78994..b1c5756be 100644
--- a/lang/nl.yml
+++ b/lang/nl.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/no.yml b/lang/no.yml
index 6643f9c86..7113b416a 100644
--- a/lang/no.yml
+++ b/lang/no.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/pl.yml b/lang/pl.yml
index 2df921b71..e9ffcda2c 100644
--- a/lang/pl.yml
+++ b/lang/pl.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/pt-br.yml b/lang/pt-br.yml
index 8cd171b72..b4064bf58 100644
--- a/lang/pt-br.yml
+++ b/lang/pt-br.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/pt.yml b/lang/pt.yml
index 5562ca4ac..1d4d043f5 100644
--- a/lang/pt.yml
+++ b/lang/pt.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/ro.yml b/lang/ro.yml
index 5bb49ecec..acb5ff8ec 100644
--- a/lang/ro.yml
+++ b/lang/ro.yml
@@ -636,3 +636,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/ru.yml b/lang/ru.yml
index 01cdcd478..b0e137aa9 100644
--- a/lang/ru.yml
+++ b/lang/ru.yml
@@ -640,3 +640,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/sr.yml b/lang/sr.yml
index 566a46d9f..4e262369e 100644
--- a/lang/sr.yml
+++ b/lang/sr.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/sv.yml b/lang/sv.yml
index 4cb1f073b..3bb337e3d 100644
--- a/lang/sv.yml
+++ b/lang/sv.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/th.yml b/lang/th.yml
index 2c3977de2..a9708716e 100644
--- a/lang/th.yml
+++ b/lang/th.yml
@@ -639,3 +639,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/uk.yml b/lang/uk.yml
index 7ba152413..cb4e17383 100644
--- a/lang/uk.yml
+++ b/lang/uk.yml
@@ -638,3 +638,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/zh-tw.yml b/lang/zh-tw.yml
index 6a1441364..b91bef8f9 100644
--- a/lang/zh-tw.yml
+++ b/lang/zh-tw.yml
@@ -637,3 +637,4 @@ field_parent_title: Parent page
label_issue_watchers: Watchers
setting_commit_logs_encoding: Commit messages encoding
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/lang/zh.yml b/lang/zh.yml
index bfe551093..dbc531119 100644
--- a/lang/zh.yml
+++ b/lang/zh.yml
@@ -637,3 +637,4 @@ enumeration_issue_priorities: 问题优先级
enumeration_doc_categories: 文档类别
enumeration_activities: 活动(时间跟踪)
button_quote: Quote
+setting_sequential_project_identifiers: Generate sequential project identifiers
diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb
index 91fab8208..6e32c02e7 100644
--- a/test/unit/project_test.rb
+++ b/test/unit/project_test.rb
@@ -130,4 +130,15 @@ class ProjectTest < Test::Unit::TestCase
assert_equal [1, 2, 3], parent.rolled_up_trackers.collect(&:id)
assert_equal [2, 3], child.rolled_up_trackers.collect(&:id)
end
+
+ def test_next_identifier
+ ProjectCustomField.delete_all
+ Project.create!(:name => 'last', :identifier => 'p2008040')
+ assert_equal 'p2008041', Project.next_identifier
+ end
+
+ def test_next_identifier_first_project
+ Project.delete_all
+ assert_nil Project.next_identifier
+ end
end