]> source.dussan.org Git - redmine.git/commitdiff
Repository Identifier should be frozen (#11109).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 26 Jul 2012 17:41:47 +0000 (17:41 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 26 Jul 2012 17:41:47 +0000 (17:41 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10081 e93f8b46-1217-0410-a6f0-8f06a7374b81

50 files changed:
app/models/repository.rb
app/views/repositories/_form.html.erb
config/locales/ar.yml
config/locales/bg.yml
config/locales/bs.yml
config/locales/ca.yml
config/locales/cs.yml
config/locales/da.yml
config/locales/de.yml
config/locales/el.yml
config/locales/en-GB.yml
config/locales/en.yml
config/locales/es.yml
config/locales/et.yml
config/locales/eu.yml
config/locales/fa.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/gl.yml
config/locales/he.yml
config/locales/hr.yml
config/locales/hu.yml
config/locales/id.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/lt.yml
config/locales/lv.yml
config/locales/mk.yml
config/locales/mn.yml
config/locales/nl.yml
config/locales/no.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/pt.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sk.yml
config/locales/sl.yml
config/locales/sq.yml
config/locales/sr-YU.yml
config/locales/sr.yml
config/locales/sv.yml
config/locales/th.yml
config/locales/tr.yml
config/locales/uk.yml
config/locales/vi.yml
config/locales/zh-TW.yml
config/locales/zh.yml
test/unit/repository_test.rb

index c81979a26284f88debc4c9dbd077dd96880c5076..9a6891a90ef94abeea31b6022b13ac77be602dd9 100644 (file)
@@ -20,6 +20,9 @@ class ScmFetchError < Exception; end
 class Repository < ActiveRecord::Base
   include Redmine::Ciphering
   include Redmine::SafeAttributes
+  
+  # Maximum length for repository identifiers
+  IDENTIFIER_MAX_LENGTH = 255
 
   belongs_to :project
   has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"
@@ -34,7 +37,7 @@ class Repository < ActiveRecord::Base
   before_destroy :clear_changesets
 
   validates_length_of :password, :maximum => 255, :allow_nil => true
-  validates_length_of :identifier, :maximum => 255, :allow_blank => true
+  validates_length_of :identifier, :maximum => IDENTIFIER_MAX_LENGTH, :allow_blank => true
   validates_presence_of :identifier, :unless => Proc.new { |r| r.is_default? || r.set_as_default? }
   validates_uniqueness_of :identifier, :scope => :project_id, :allow_blank => true
   validates_exclusion_of :identifier, :in => %w(show entry raw changes annotate diff show stats graph)
@@ -114,6 +117,14 @@ class Repository < ActiveRecord::Base
     end
   end
 
+  def identifier=(identifier)
+    super unless identifier_frozen?
+  end
+
+  def identifier_frozen?
+    errors[:identifier].blank? && !(new_record? || identifier.blank?)
+  end
+
   def identifier_param
     if is_default?
       nil
index 91a19ca43f4209aff6c1133438d4ea31be4824d2..1554eb56f972cb5ccee0022d3f56aa5e59a26de2 100644 (file)
@@ -9,7 +9,10 @@
 </p>
 
 <p><%= f.check_box :is_default, :label => :field_repository_is_default %></p>
-<p><%= f.text_field :identifier %></p>
+<p><%= f.text_field :identifier, :disabled => @repository.identifier_frozen?  %>
+<% unless @repository.identifier_frozen? %>
+  <em class="info"><%= l(:text_length_between, :min => 1, :max => Repository::IDENTIFIER_MAX_LENGTH) %> <%= l(:text_repository_identifier_info).html_safe %></em>
+<% end %></p>
 
 <% button_disabled = true %>
 <% if @repository %>
index f0acf6d132027b1bb2093c173592c8bc33c29fc3..095a3d8e7ed81c39f3b848bbfea4158ddadfe66d 100644 (file)
@@ -1056,3 +1056,4 @@ ar:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 374c501c9e4ad636ee442cc5f889d47d1e359da9..79c1d99ac448dab47a5e4ca68c3c05c83546c96b 100644 (file)
@@ -1054,3 +1054,4 @@ bg:
   description_date_range_interval: Изберете диапазон чрез задаване на начална и крайна дати
   description_date_from: Въведете начална дата
   description_date_to: Въведете крайна дата
+  text_repository_identifier_info: 'Позволени са малки букви (a-z), цифри, тирета и _.<br />Промяна след създаването му не е възможна.'
index 87e4d42a295b0c70a106d2c6c5924c7d182700f5..32a00411f5db2442cf9fd5b19925d2b7a17d1833 100644 (file)
@@ -1070,3 +1070,4 @@ bs:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 2bdd4728943604bd96369f0306f1dfb7ccaf4650..fee68f70ac7a81f22d42c81ab2263162ed09793b 100644 (file)
@@ -1058,3 +1058,4 @@ ca:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 1c0edf0f8109130757243fad5851b91650d810ce..b408bf90ade08dec0fa45dd0a55ebedf521e5463 100644 (file)
@@ -1059,3 +1059,4 @@ cs:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index bbee44a288516b41613e16a5293a18c9779d782c..dcbb8c06c652be496e179678f9f3799f3d8dd689 100644 (file)
@@ -1073,3 +1073,4 @@ da:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index f3eb9a7c9f8dbf810fc6920e3aaa5dd2d7111f1f..8bb8a4ae4d09b25e5d7f4d2ef54c5c36648fe698 100644 (file)
@@ -1074,3 +1074,4 @@ de:
   label_fields_permissions: Fields permissions
   label_readonly: Nur-Lese-Zugriff
   label_required: Erforderlich
+  text_repository_identifier_info: 'Kleinbuchstaben (a-z), Ziffern, Binde- und Unterstriche erlaubt.<br />Einmal gespeichert, kann die Kennung nicht mehr geändert werden.'
index d2cb46e0f6f1b7aef69474b13daec28626a4f793..ef9e44c2c92c93bcc49e8c0b8db5aa386d3c62e7 100644 (file)
@@ -1056,3 +1056,4 @@ el:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index f9d795f64846ff0e0fd8b57eb779134edb934651..f61fbfc852b1ed180bfd011cafb9932d83e4fdcc 100644 (file)
@@ -1058,3 +1058,4 @@ en-GB:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.'
index a381713923b7c9526dc856f15d0cfc6199828326..a6bbfa1fdf44ed547cc26d03117048e5dc764ad8 100644 (file)
@@ -1053,3 +1053,4 @@ en:
   description_date_range_interval: Choose range by selecting start and end date
   description_date_from: Enter start date
   description_date_to: Enter end date
+  text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.'
index bdb25a9f7351a6059d088c0b40621eb4c63bea52..ceff24a219e72b25e88ddde12d91229f283b54b6 100644 (file)
@@ -1093,3 +1093,4 @@ es:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index c233604dec7691ab0557ea3ab378a1714d01b3b8..b5595eadd54e129699b71ba94ab8521a690b542e 100644 (file)
@@ -1069,3 +1069,4 @@ et:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: "Lubatud on ainult väikesed tähed (a-z), numbrid ja kriipsud.<br />Peale salvestamist ei saa tunnust enam muuta."
index 14e3ba76cf81e8d406fccc1fbd918f23f8ea77c4..f89b190a4be38686a4d30237bf5912c666e27fa9 100644 (file)
@@ -1059,3 +1059,4 @@ eu:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 55b99aa4448450532b02798712f04da2b43b65d3..abc6a55abf7d977e95e9ed4836dddf2edc67cc62 100644 (file)
@@ -1058,3 +1058,4 @@ fa:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 37f35c4c3d57b275a4746551af857f9ed9e86269..549cdb2f5e0227ae48f062ffb0888ff1c3ce8e07 100644 (file)
@@ -1077,3 +1077,4 @@ fi:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index f8f0aa0a32d6a97d18c5a1de7943f724a1b10dce..007aecc7cd7bad5d558a717e5d2d49dd1361a935 100644 (file)
@@ -1070,3 +1070,4 @@ fr:
   error_scm_annotate_big_text_file: Cette entrée ne peut pas être annotée car elle excède la taille maximale.
   setting_repositories_encodings: Encodages des fichiers et des dépôts
   label_search_for_watchers: Rechercher des observateurs
+  text_repository_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et underscore sont autorisés.<br />Un fois sauvegardé, l''identifiant ne pourra plus être modifié.'
index d528ee2ec7a0e90d69215c68f1f775955df4faff..b4b557a03c660ce18460e656090f65c1d7f4b0e2 100644 (file)
@@ -1067,3 +1067,4 @@ gl:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index ef24f0988fe3f46fccf5fda0debe2dc3cf072342..665599113486928b05e15c39298fd3df8d0dab70 100644 (file)
@@ -1061,3 +1061,4 @@ he:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index e7f9eb673b1ef251982c82ac738efe65e452f6cb..e8805aae3823908da7211cae36d32ae5952e74a3 100644 (file)
@@ -1059,3 +1059,4 @@ hr:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index fc99e475282e3052cc556fffd989ebd35adfd067..a42a3c80cafccc3d9a0e3e5f49db626352faf952 100644 (file)
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index c50fe27b4b3b0115f4abac083abce9ada8cb2036..52ff79a89bb591956ea0663fe5eecd674d4343ac 100644 (file)
@@ -1062,3 +1062,4 @@ id:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 73c57b05d774b37961875ee46b222a2299d0f645..7ec4982323295053a3a7c156b1ccf89969268d8b 100644 (file)
@@ -1057,3 +1057,4 @@ it:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index cd59b3430c3254e03430433dcfccb44fadcc3285..5ef74b368be36df43d8bfb17af1c888bbfab9850 100644 (file)
@@ -1086,3 +1086,4 @@ ja:
   label_fields_permissions: フィールドに対する権限
   label_readonly: 読み取り専用
   label_required: 必須
+  text_repository_identifier_info: アルファベット小文字(a-z)・数字・ハイフン・アンダースコアが使えます。<br />識別子は後で変更することはできません。
index 805491044f96873bc23766288635a9f21f80eded..a48c7741e2485b3a4d175db14a3034a83de55252 100644 (file)
@@ -1106,3 +1106,4 @@ ko:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: "소문자(a-z),숫자,대쉬(-)와 밑줄(_)만 가능합니다.<br />식별자는 저장후에는 수정할 수 없습니다."
index 2784e4f4226a34ef5f91f75cd2509202ad44ec0e..a2fcce9ed9bf30c34f97724a6688f7a0efb4f36f 100644 (file)
@@ -1116,3 +1116,4 @@ lt:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 6d7dacbb63b37d0e0d9d538c490997a4dce12130..e9d7e5f76b0ccb97313a229ff3ff016dee32b180 100644 (file)
@@ -1050,3 +1050,4 @@ lv:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 6831dd694c4f2041630c2bacc6ee06b7f4289b75..3d7f7e89f2c364780bfc4032fff246ffa0b4665c 100644 (file)
@@ -1056,3 +1056,4 @@ mk:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index dd73bb7557a0ab6b98349faedea779f9609f4d43..af046320d615b72c2370617234e304dfac0704bd 100644 (file)
@@ -1058,3 +1058,4 @@ mn:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 35b43ef0f3dbf560c2259f16ae569edbfbd35da6..b4e0c8d35061c0b7f6b7b22408d42387c97de135 100644 (file)
@@ -1038,3 +1038,4 @@ nl:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: 'Alleen kleine letter (a-z), cijfers, streepjes en liggende streepjes zijn toegestaan.<br />Eenmaal opgeslagen kan de identifier niet worden gewijzigd.'
index b87062482bd0a9796343f8849b6691c4d3f23e31..b32df7494927e5dee0616a9d8e772ea5bead942e 100644 (file)
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index d4f31c6124b0a41034a90692a0c3c485b5edd1fe..0dc4a916ac10efd4c08163c42d6e5d5d7b02b949 100644 (file)
@@ -1073,3 +1073,4 @@ pl:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index fc86bad5b30144597eaa1b0b6e5f7de6114f4241..4c95f35b3ab10460f420c70eff6ef33a1420bdf5 100644 (file)
@@ -1078,3 +1078,4 @@ pt-BR:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 6b3f0ce92aec86fbbbb9a8826773f5932e00edff..04b3c45f73665d67d096e02718781440cc111d78 100644 (file)
@@ -1061,3 +1061,4 @@ pt:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index b84d6070b1114e7d588e64f2a3a3a8dcda6531f5..8c8488371ddfeb2215298f32b6b0fa0a0c9efc73 100644 (file)
@@ -1053,3 +1053,4 @@ ro:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 17173f162020fd34252dcbf2289ae3347b06dee4..479be8ce2a0f62fda5969181eed26d97e641cdd5 100644 (file)
@@ -1169,3 +1169,4 @@ ru:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Допускаются только строчные латинские буквы (a-z), цифры, тире и подчеркивания.<br />После сохранения идентификатор изменить нельзя.
index 438294e94823b362244990ee95b29e2679e7ff96..8db88bb7dbc4f12f9c555b71b19178a1ad1c0353 100644 (file)
@@ -1056,3 +1056,4 @@ sk:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 7709648d957e0bbf830896454a29e583a29dd6dd..8d317d1ca2b1be1a90c5e7b80e71667a200b95a3 100644 (file)
@@ -1056,3 +1056,4 @@ sl:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index be98bdf439c2c4d31d6f25f83893e63ffeb99052..5b3d979709d423a5daa361dabe9111d13917423b 100644 (file)
@@ -1052,3 +1052,4 @@ sq:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.'
index e94b12d15b31cdb128a3f65892c69a118b1fd244..b738d6b4360607773d9a42d8b8bdee650073227a 100644 (file)
@@ -1058,3 +1058,4 @@ sr-YU:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index cd65cddcd8cf9841c2408e1b6d4af8d0bc211de6..7ffbaddd537374890397ced11974e4043e880561 100644 (file)
@@ -1057,3 +1057,4 @@ sr:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 784a7130c4ac248b5939edbfa4d2964a64e28122..4904b1b23d8f0ff50424ea8fc3e06587364c6a8d 100644 (file)
@@ -1094,3 +1094,4 @@ sv:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Ändast gemener (a-z), siffror, streck och understreck är tillåtna.<br />När identifieraren sparats kan den inte ändras.
index 6dc8c36099d0b5bad2ed133ed1cd80facc4d0d1b..bd58ca534ea668806fdf9d4244155cdddaa234f6 100644 (file)
@@ -1053,3 +1053,4 @@ th:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 8cd8490099a88ae4e37597cd1826a2c77884acc1..14893aefaf075fdd1a22dc23969e959841588ef1 100644 (file)
@@ -1075,3 +1075,4 @@ tr:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 14c1ea637686839d3f2045a0fbe8fc10129513ce..88b6432c818ce89239c3b794c2240046c273d00a 100644 (file)
@@ -1051,3 +1051,4 @@ uk:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index cbd8081142f8e591785ed96eab13e4575c1c5ff3..d074750c0ff384cbd6b1b57ac82e708ac797e692 100644 (file)
@@ -1107,3 +1107,4 @@ vi:
   label_fields_permissions: Fields permissions
   label_readonly: Read-only
   label_required: Required
+  text_repository_identifier_info: Only lower case letters (a-z), numbers, dashes and underscores are allowed.<br />Once saved, the identifier cannot be changed.
index 99b49b87a09af82bba4aa918e9a1e06df07de1f2..c53c0bda3777914083a1f2b94adccd3f93db5ab8 100644 (file)
   description_date_range_interval: 選擇起始與結束日期以設定範圍區間
   description_date_from: 輸入起始日期
   description_date_to: 輸入結束日期
+  text_repository_identifier_info: '僅允許使用小寫英文字母 (a-z), 阿拉伯數字, 虛線與底線。<br />一旦儲存之後, 代碼便無法再次被更改。'
index 5cd58456299264d57594df4580633e9e1e71cdc6..64cdd7fe761a0dc5898ee02fdf2eda15a6556684 100644 (file)
@@ -1060,3 +1060,4 @@ zh:
   label_fields_permissions: 字段权限
   label_readonly: 只读
   label_required: 必填
+  text_repository_identifier_info: 仅小写字母(a-z)、数字、破折号(-)和下划线(_)可以使用。<br />一旦保存,标识无法修改。
index f99711623acebf9ac2e7f23b70923f0d7ce9b7bb..56663c165ec729aa7fb40e2c25a1f7d619a1870e 100644 (file)
@@ -105,6 +105,38 @@ class RepositoryTest < ActiveSupport::TestCase
     )
     assert r.save
   end
+  
+  def test_identifier_should_not_be_frozen_for_a_new_repository
+    assert_equal false, Repository.new.identifier_frozen?
+  end
+
+  def test_identifier_should_not_be_frozen_for_a_saved_repository_with_blank_identifier
+    Repository.update_all(["identifier = ''"], "id = 10")
+
+    assert_equal false, Repository.find(10).identifier_frozen?
+  end
+
+  def test_identifier_should_be_frozen_for_a_saved_repository_with_valid_identifier
+    Repository.update_all(["identifier = 'abc123'"], "id = 10")
+
+    assert_equal true, Repository.find(10).identifier_frozen?
+  end
+
+  def test_identifier_should_not_accept_change_if_frozen
+    r = Repository.new(:identifier => 'foo')
+    r.stubs(:identifier_frozen?).returns(true)
+
+    r.identifier = 'bar'
+    assert_equal 'foo', r.identifier
+  end
+
+  def test_identifier_should_accept_change_if_not_frozen
+    r = Repository.new(:identifier => 'foo')
+    r.stubs(:identifier_frozen?).returns(false)
+
+    r.identifier = 'bar'
+    assert_equal 'bar', r.identifier
+  end
 
   def test_destroy
     repository = Repository.find(10)