@@ -17,13 +17,27 | |||
|
17 | 17 | |
|
18 | 18 | require 'coderay' |
|
19 | 19 | require 'coderay/helpers/file_type' |
|
20 | require 'iconv' | |
|
20 | 21 | |
|
21 | 22 | module RepositoriesHelper |
|
22 | 23 | def syntax_highlight(name, content) |
|
23 | 24 | type = CodeRay::FileType[name] |
|
24 | 25 | type ? CodeRay.scan(content, type).html : h(content) |
|
25 | 26 | end |
|
26 |
|
|
|
27 | ||
|
28 | def to_utf8(str) | |
|
29 | return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii | |
|
30 | @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) | |
|
31 | @encodings.each do |encoding| | |
|
32 | begin | |
|
33 | return Iconv.conv('UTF-8', encoding, str) | |
|
34 | rescue Iconv::Failure | |
|
35 | # do nothing here and try the next encoding | |
|
36 | end | |
|
37 | end | |
|
38 | str | |
|
39 | end | |
|
40 | ||
|
27 | 41 | def repository_field_tags(form, repository) |
|
28 | 42 | method = repository.class.name.demodulize.underscore + "_field_tags" |
|
29 | 43 | send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) |
@@ -34,13 +34,13 | |||
|
34 | 34 | <%= table_file[key].nb_line_left %> |
|
35 | 35 | </th> |
|
36 | 36 | <td class="line-code <%= table_file[key].type_diff_left %>"> |
|
37 | <pre><%= table_file[key].line_left %></pre> | |
|
37 | <pre><%=to_utf8 table_file[key].line_left %></pre> | |
|
38 | 38 | </td> |
|
39 | 39 | <th class="line-num"> |
|
40 | 40 | <%= table_file[key].nb_line_right %> |
|
41 | 41 | </th> |
|
42 | 42 | <td class="line-code <%= table_file[key].type_diff_right %>"> |
|
43 | <pre><%= table_file[key].line_right %></pre> | |
|
43 | <pre><%=to_utf8 table_file[key].line_right %></pre> | |
|
44 | 44 | </td> |
|
45 | 45 | </tr> |
|
46 | 46 | <% end %> |
@@ -72,11 +72,11 | |||
|
72 | 72 | </th> |
|
73 | 73 | <% if table_file[key].line_left.empty? %> |
|
74 | 74 | <td class="line-code <%= table_file[key].type_diff_right %>"> |
|
75 | <pre><%= table_file[key].line_right %></pre> | |
|
75 | <pre><%=to_utf8 table_file[key].line_right %></pre> | |
|
76 | 76 | </td> |
|
77 | 77 | <% else %> |
|
78 | 78 | <td class="line-code <%= table_file[key].type_diff_left %>"> |
|
79 | <pre><%= table_file[key].line_left %></pre> | |
|
79 | <pre><%=to_utf8 table_file[key].line_left %></pre> | |
|
80 | 80 | </td> |
|
81 | 81 | <% end %> |
|
82 | 82 | </tr> |
@@ -9,7 +9,7 | |||
|
9 | 9 | </thead> |
|
10 | 10 | <tbody> |
|
11 | 11 | <% line_num = 1 %> |
|
12 | <% syntax_highlight(@path, @content).each_line do |line| %> | |
|
12 | <% syntax_highlight(@path, to_utf8(@content)).each_line do |line| %> | |
|
13 | 13 | <tr> |
|
14 | 14 | <th class="line-num"><%= line_num %></th> |
|
15 | 15 | <td class="line-code"><pre><%= line %></pre></td> |
@@ -48,6 +48,9 | |||
|
48 | 48 | |
|
49 | 49 | <p><label><%= l(:setting_sys_api_enabled) %></label> |
|
50 | 50 | <%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p> |
|
51 | ||
|
52 | <p><label><%= l(:setting_repositories_encodings) %></label> | |
|
53 | <%= text_field_tag 'settings[repositories_encodings]', Setting.repositories_encodings, :size => 60 %><br /><em><%= l(:text_comma_separated) %></em></p> | |
|
51 | 54 | </div> |
|
52 | 55 | |
|
53 | 56 | <fieldset class="box"><legend><%= l(:setting_issue_list_default_columns) %></legend> |
@@ -88,4 +88,8 issue_list_default_columns: | |||
|
88 | 88 | - subject |
|
89 | 89 | - assigned_to |
|
90 | 90 | - updated_on |
|
91 | # encodings used to convert repository files content to UTF-8 | |
|
92 | # multiple values accepted, comma separated | |
|
93 | repositories_encodings: | |
|
94 | default: '' | |
|
91 | 95 | No newline at end of file |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
@@ -182,6 +182,7 setting_autologin: Autologin | |||
|
182 | 182 | setting_date_format: Date format |
|
183 | 183 | setting_cross_project_issue_relations: Allow cross-project issue relations |
|
184 | 184 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
185 | setting_repositories_encodings: Repositories encodings | |
|
185 | 186 | |
|
186 | 187 | label_user: User |
|
187 | 188 | label_user_plural: Users |
@@ -517,3 +517,4 button_reset: Reset | |||
|
517 | 517 | label_added_time_by: Added by %s %s ago |
|
518 | 518 | field_estimated_hours: Estimated time |
|
519 | 519 | label_changeset_plural: Changesets |
|
520 | setting_repositories_encodings: Repositories encodings |
@@ -182,6 +182,7 setting_autologin: Autologin | |||
|
182 | 182 | setting_date_format: Format de date |
|
183 | 183 | setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets |
|
184 | 184 | setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes |
|
185 | setting_repositories_encodings: Encodages des dépôts | |
|
185 | 186 | |
|
186 | 187 | label_user: Utilisateur |
|
187 | 188 | label_user_plural: Utilisateurs |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
@@ -515,3 +515,4 label_changeset_plural: Changesets | |||
|
515 | 515 | field_column_names: Columns |
|
516 | 516 | label_default_columns: Default columns |
|
517 | 517 | setting_issue_list_default_columns: 問題の一覧で表示する項目 |
|
518 | setting_repositories_encodings: Repositories encodings |
@@ -515,3 +515,4 label_changeset_plural: Changesets | |||
|
515 | 515 | field_column_names: Columns |
|
516 | 516 | label_default_columns: Default columns |
|
517 | 517 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
518 | setting_repositories_encodings: Repositories encodings |
@@ -514,3 +514,4 label_changeset_plural: Zestawienia zmian | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||
|
514 | 514 | field_column_names: Columns |
|
515 | 515 | label_default_columns: Default columns |
|
516 | 516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_repositories_encodings: Repositories encodings |
General Comments 0
You need to be logged in to leave comments.
Login now