OSDN Git Service

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 d82e165..41218fa 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 e982b6e..5094f47 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 7d8cbb3..94db240 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 c3e430c..2accdc7 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 bac50e3..b5ed26a 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 3c6671f..fe9efff 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 8845308..abf1f6e 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 b7ae15e..8345d99 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 e3bb9ab..34e4956 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 c5fb1d8..12a6518 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 b2b338b..566f657 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 c625083..2d0e0a1 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 352dd1a..c19199c 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 007e80c..19c6a0d 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 7dd0474..9b0af1f 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 ebc8de1..b278edc 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 549d3cd..da75aa9 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 cc0b85a..996df52 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 b26675f..a457ca1 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 08108ee..ff0e125 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