diff options
author | Eric Davis <edavis@littlestreamsoftware.com> | 2010-02-16 22:41:59 +0000 |
---|---|---|
committer | Eric Davis <edavis@littlestreamsoftware.com> | 2010-02-16 22:41:59 +0000 |
commit | 9e22faa640c0d1707da4c2203a6e3f936683b4c9 (patch) | |
tree | 81b68a05472ae9559545d7b97c504e6d521a39fe | |
parent | b3330d399543878c2e49df16ed4b73add9afd560 (diff) | |
download | redmine-9e22faa640c0d1707da4c2203a6e3f936683b4c9.tar.gz redmine-9e22faa640c0d1707da4c2203a6e3f936683b4c9.zip |
Converted the REDMINE_SUPPORTED_SCM constant to a class
Now SCMs can be added or removed using a simple API, instead of being
hardcoded:
Redmine::Scm::Base.add('ScmName')
Redmine::Scm::Base.delete('ScmName')
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3440 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/application_controller.rb | 2 | ||||
-rw-r--r-- | app/helpers/repositories_helper.rb | 2 | ||||
-rw-r--r-- | app/views/settings/_repositories.rhtml | 2 | ||||
-rw-r--r-- | lib/redmine.rb | 9 | ||||
-rw-r--r-- | lib/redmine/scm/base.rb | 23 |
5 files changed, 34 insertions, 4 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 74f4aef27..4cc671396 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -46,7 +46,7 @@ class ApplicationController < ActionController::Base include Redmine::MenuManager::MenuController helper Redmine::MenuManager::MenuHelper - REDMINE_SUPPORTED_SCM.each do |scm| + Redmine::Scm::Base.all.each do |scm| require_dependency "repository/#{scm.underscore}" end diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index 0e0f94c79..0c2a44809 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -126,7 +126,7 @@ module RepositoriesHelper def scm_select_tag(repository) scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] - REDMINE_SUPPORTED_SCM.each do |scm| + Redmine::Scm::Base.all.each do |scm| scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm) end diff --git a/app/views/settings/_repositories.rhtml b/app/views/settings/_repositories.rhtml index 581ebf5fd..198b83289 100644 --- a/app/views/settings/_repositories.rhtml +++ b/app/views/settings/_repositories.rhtml @@ -13,7 +13,7 @@ <%= link_to_function l(:label_generate_key), "if ($('settings_sys_api_key').disabled == false) { $('settings_sys_api_key').value = randomKey(20) }" %> </p> -<p><%= setting_multiselect(:enabled_scm, REDMINE_SUPPORTED_SCM) %></p> +<p><%= setting_multiselect(:enabled_scm, Redmine::Scm::Base.all) %></p> <p><%= setting_text_field :repositories_encodings, :size => 60 %><br /> <em><%= l(:text_comma_separated) %></em></p> diff --git a/lib/redmine.rb b/lib/redmine.rb index 573692ff1..d9a1f4063 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -7,6 +7,7 @@ require 'redmine/themes' require 'redmine/hook' require 'redmine/plugin' require 'redmine/wiki_formatting' +require 'redmine/scm/base' begin require_library_or_gem 'RMagick' unless Object.const_defined?(:Magick) @@ -21,7 +22,13 @@ else FCSV = CSV end -REDMINE_SUPPORTED_SCM = %w( Subversion Darcs Mercurial Cvs Bazaar Git Filesystem ) +Redmine::Scm::Base.add "Subversion" +Redmine::Scm::Base.add "Darcs" +Redmine::Scm::Base.add "Mercurial" +Redmine::Scm::Base.add "Cvs" +Redmine::Scm::Base.add "Bazaar" +Redmine::Scm::Base.add "Git" +Redmine::Scm::Base.add "Filesystem" # Permissions Redmine::AccessControl.map do |map| diff --git a/lib/redmine/scm/base.rb b/lib/redmine/scm/base.rb new file mode 100644 index 000000000..43e8a1877 --- /dev/null +++ b/lib/redmine/scm/base.rb @@ -0,0 +1,23 @@ +module Redmine + module Scm + class Base + class << self + + def all + @scms + end + + # Add a new SCM adapter and repository + def add(scm_name) + @scms ||= [] + @scms << scm_name + end + + # Remove a SCM adapter from Redmine's list of supported scms + def delete(scm_name) + @scms.delete(scm_name) + end + end + end + end +end |