]> source.dussan.org Git - redmine.git/commitdiff
Default encodings for repository files can now be set in application settings (Admin...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 7 Oct 2007 15:21:40 +0000 (15:21 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 7 Oct 2007 15:21:40 +0000 (15:21 +0000)
These encodings are used to convert files content and diff to UTF-8 so that they're properly displayed.
Multiple values are allowed (comma separated).

git-svn-id: http://redmine.rubyforge.org/svn/trunk@814 e93f8b46-1217-0410-a6f0-8f06a7374b81

20 files changed:
app/helpers/repositories_helper.rb
app/views/repositories/diff.rhtml
app/views/repositories/entry.rhtml
app/views/settings/edit.rhtml
config/settings.yml
lang/bg.yml
lang/cs.yml
lang/de.yml
lang/en.yml
lang/es.yml
lang/fr.yml
lang/it.yml
lang/ja.yml
lang/nl.yml
lang/pl.yml
lang/pt-br.yml
lang/pt.yml
lang/ro.yml
lang/sv.yml
lang/zh.yml

index d82e16561dad4fc984d00b23fe007d162cfc06e8..41218fa796b912184cf6b030c744ae60d7f31d53 100644 (file)
 
 require 'coderay'
 require 'coderay/helpers/file_type'
+require 'iconv'
 
 module RepositoriesHelper
   def syntax_highlight(name, content)
     type = CodeRay::FileType[name]
     type ? CodeRay.scan(content, type).html : h(content)
   end
-    
+  
+  def to_utf8(str)
+    return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+    @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip)
+    @encodings.each do |encoding|
+      begin
+        return Iconv.conv('UTF-8', encoding, str)
+      rescue Iconv::Failure
+        # do nothing here and try the next encoding
+      end
+    end
+    str
+  end
+  
   def repository_field_tags(form, repository)    
     method = repository.class.name.demodulize.underscore + "_field_tags"
     send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method)
index e982b6e130e9d9911d83ab146244a0132e2c4cc0..5094f4713744d721868092a66ab563e2a072765d 100644 (file)
               <%= table_file[key].nb_line_left %>
             </th>
             <td class="line-code <%= table_file[key].type_diff_left %>">
-              <pre><%= table_file[key].line_left %></pre>
+              <pre><%=to_utf8 table_file[key].line_left %></pre>
             </td>
             <th class="line-num">
               <%= table_file[key].nb_line_right %>
             </th>
             <td class="line-code <%= table_file[key].type_diff_right %>">
-              <pre><%= table_file[key].line_right %></pre>
+              <pre><%=to_utf8 table_file[key].line_right %></pre>
             </td>
           </tr>
         <% end %>
             </th>
             <% if table_file[key].line_left.empty? %>
               <td class="line-code <%= table_file[key].type_diff_right %>">
-                <pre><%= table_file[key].line_right %></pre>
+                <pre><%=to_utf8 table_file[key].line_right %></pre>
               </td>
             <% else %>
               <td class="line-code <%= table_file[key].type_diff_left %>">
-                <pre><%= table_file[key].line_left %></pre>
+                <pre><%=to_utf8 table_file[key].line_left %></pre>
               </td>
             <% end %>
           </tr>
index 7d8cbb3180145203ec268f2a0508f1ca92433dae..94db240abc48febff91b2d0a271139bd069e4c4e 100644 (file)
@@ -9,7 +9,7 @@
   </thead>
   <tbody>
     <% line_num = 1 %>
-    <% syntax_highlight(@path, @content).each_line do |line| %>
+    <% syntax_highlight(@path, to_utf8(@content)).each_line do |line| %>
     <tr>
       <th class="line-num"><%= line_num %></th>
       <td class="line-code"><pre><%= line %></pre></td>
index c3e430c9b7f9fd17ae29fe212e784681dd8a2f66..2accdc715166c045f1b46290df6b7ad38cd71e46 100644 (file)
@@ -48,6 +48,9 @@
 
 <p><label><%= l(:setting_sys_api_enabled) %></label>
 <%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p>
+
+<p><label><%= l(:setting_repositories_encodings) %></label>
+<%= text_field_tag 'settings[repositories_encodings]', Setting.repositories_encodings, :size => 60 %><br /><em><%= l(:text_comma_separated) %></em></p>
 </div>
 
 <fieldset class="box"><legend><%= l(:setting_issue_list_default_columns) %></legend>
index bac50e3d56e41f28fa83d14c41974a84a5f7204d..b5ed26a1faaa14bb86d17cd5c34d5c49d02833a3 100644 (file)
@@ -88,4 +88,8 @@ issue_list_default_columns:
   - subject
   - assigned_to
   - updated_on
+# encodings used to convert repository files content to UTF-8
+# multiple values accepted, comma separated
+repositories_encodings:
+  default: ''
   
\ No newline at end of file
index 3c6671f1eb5783144659f548edb636d0e021210b..fe9efff0982c4d4b7b52f7982d263951916aeb20 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index 88453083494931397494f941878f3b7885c5aa97..abf1f6e5a078a306896e521d348f18402cd2d700 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index b7ae15e68fa9a9bd576e6009ea763adc96d63fe9..8345d99d4b74c83fdb6407b9432bb54b993ecf0b 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index e3bb9abb8301f2c85a33d9bc004cac17a9ca16e3..34e49565fd9676237691cb70a74838c5d9f2c085 100644 (file)
@@ -182,6 +182,7 @@ setting_autologin: Autologin
 setting_date_format: Date format
 setting_cross_project_issue_relations: Allow cross-project issue relations
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
 
 label_user: User
 label_user_plural: Users
index c5fb1d89a846b53dde45842bda84078d557296b9..12a6518a21cba3eb020496367f8343e78802a32f 100644 (file)
@@ -517,3 +517,4 @@ button_reset: Reset
 label_added_time_by: Added by %s %s ago
 field_estimated_hours: Estimated time
 label_changeset_plural: Changesets
+setting_repositories_encodings: Repositories encodings
index b2b338b5125f6c6d6bb38f23ee03d3df409b9abf..566f6573a34c31893508aed3060164786c2b9d32 100644 (file)
@@ -182,6 +182,7 @@ setting_autologin: Autologin
 setting_date_format: Format de date
 setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets
 setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes
+setting_repositories_encodings: Encodages des dépôts
 
 label_user: Utilisateur
 label_user_plural: Utilisateurs
index c6250837f146f475e8fe44b181a9d217216fb6c5..2d0e0a1d04e1b2b4c631d07bc8e6fce75fb44042 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index 352dd1a6623fddebdd492bbd3f51146d1d191371..c19199c4b82feaa95d001194c244f424fc4df283 100644 (file)
@@ -515,3 +515,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: 問題の一覧で表示する項目
+setting_repositories_encodings: Repositories encodings
index 007e80c94e50513282ac9f02c85f3251201bcba2..19c6a0de00b7ddaa430a1d91788a2ef84e4eacc2 100644 (file)
@@ -515,3 +515,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index 7dd04741c91608af2b2c6148928a500f238d916e..9b0af1fda08f48b29cdf6eddb3de9d00c526b8d8 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Zestawienia zmian
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index ebc8de173b7b443c0aa04816b4ab59913fd12838..b278edc58dcfb053b06fb7becf3a8e35ef3244cc 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns\r
 label_default_columns: Default columns\r
 setting_issue_list_default_columns: Default columns displayed on the issue list\r
+setting_repositories_encodings: Repositories encodings\r
index 549d3cd3ac53917c36e813421b0cdfeabb2f1498..da75aa99cea20096521f42017cf18f436fe5aca4 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index cc0b85a7dfc831c88836fa11af34310fa01669d7..996df529d3309e44b7ac9130fe08e2362e3c8532 100644 (file)
@@ -514,3 +514,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index b26675f798594f871eba01e4b432a3dd429b9d72..a457ca11a30c6684d3af5605e63a6c9b7acc6d85 100644 (file)
@@ -515,3 +515,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings
index 08108ee429f83378cd0b539fcb77b1d1c81494e6..ff0e12529f92d863c103118be2d6fa93768c8c31 100644 (file)
@@ -517,3 +517,4 @@ label_changeset_plural: Changesets
 field_column_names: Columns
 label_default_columns: Default columns
 setting_issue_list_default_columns: Default columns displayed on the issue list
+setting_repositories_encodings: Repositories encodings