@@ -17,13 +17,27 | |||||
17 |
|
17 | |||
18 | require 'coderay' |
|
18 | require 'coderay' | |
19 | require 'coderay/helpers/file_type' |
|
19 | require 'coderay/helpers/file_type' | |
|
20 | require 'iconv' | |||
20 |
|
21 | |||
21 | module RepositoriesHelper |
|
22 | module RepositoriesHelper | |
22 | def syntax_highlight(name, content) |
|
23 | def syntax_highlight(name, content) | |
23 | type = CodeRay::FileType[name] |
|
24 | type = CodeRay::FileType[name] | |
24 | type ? CodeRay.scan(content, type).html : h(content) |
|
25 | type ? CodeRay.scan(content, type).html : h(content) | |
25 | end |
|
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 | def repository_field_tags(form, repository) |
|
41 | def repository_field_tags(form, repository) | |
28 | method = repository.class.name.demodulize.underscore + "_field_tags" |
|
42 | method = repository.class.name.demodulize.underscore + "_field_tags" | |
29 | send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) |
|
43 | send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) |
@@ -34,13 +34,13 | |||||
34 | <%= table_file[key].nb_line_left %> |
|
34 | <%= table_file[key].nb_line_left %> | |
35 | </th> |
|
35 | </th> | |
36 | <td class="line-code <%= table_file[key].type_diff_left %>"> |
|
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 | </td> |
|
38 | </td> | |
39 | <th class="line-num"> |
|
39 | <th class="line-num"> | |
40 | <%= table_file[key].nb_line_right %> |
|
40 | <%= table_file[key].nb_line_right %> | |
41 | </th> |
|
41 | </th> | |
42 | <td class="line-code <%= table_file[key].type_diff_right %>"> |
|
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 | </td> |
|
44 | </td> | |
45 | </tr> |
|
45 | </tr> | |
46 | <% end %> |
|
46 | <% end %> | |
@@ -72,11 +72,11 | |||||
72 | </th> |
|
72 | </th> | |
73 | <% if table_file[key].line_left.empty? %> |
|
73 | <% if table_file[key].line_left.empty? %> | |
74 | <td class="line-code <%= table_file[key].type_diff_right %>"> |
|
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 | </td> |
|
76 | </td> | |
77 | <% else %> |
|
77 | <% else %> | |
78 | <td class="line-code <%= table_file[key].type_diff_left %>"> |
|
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 | </td> |
|
80 | </td> | |
81 | <% end %> |
|
81 | <% end %> | |
82 | </tr> |
|
82 | </tr> |
@@ -9,7 +9,7 | |||||
9 | </thead> |
|
9 | </thead> | |
10 | <tbody> |
|
10 | <tbody> | |
11 | <% line_num = 1 %> |
|
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 | <tr> |
|
13 | <tr> | |
14 | <th class="line-num"><%= line_num %></th> |
|
14 | <th class="line-num"><%= line_num %></th> | |
15 | <td class="line-code"><pre><%= line %></pre></td> |
|
15 | <td class="line-code"><pre><%= line %></pre></td> |
@@ -48,6 +48,9 | |||||
48 |
|
48 | |||
49 | <p><label><%= l(:setting_sys_api_enabled) %></label> |
|
49 | <p><label><%= l(:setting_sys_api_enabled) %></label> | |
50 | <%= check_box_tag 'settings[sys_api_enabled]', 1, Setting.sys_api_enabled? %><%= hidden_field_tag 'settings[sys_api_enabled]', 0 %></p> |
|
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 | </div> |
|
54 | </div> | |
52 |
|
55 | |||
53 | <fieldset class="box"><legend><%= l(:setting_issue_list_default_columns) %></legend> |
|
56 | <fieldset class="box"><legend><%= l(:setting_issue_list_default_columns) %></legend> |
@@ -88,4 +88,8 issue_list_default_columns: | |||||
88 | - subject |
|
88 | - subject | |
89 | - assigned_to |
|
89 | - assigned_to | |
90 | - updated_on |
|
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 | No newline at end of file |
|
95 |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||||
514 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | setting_date_format: Date format |
|
182 | setting_date_format: Date format | |
183 | setting_cross_project_issue_relations: Allow cross-project issue relations |
|
183 | setting_cross_project_issue_relations: Allow cross-project issue relations | |
184 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
184 | setting_issue_list_default_columns: Default columns displayed on the issue list | |
|
185 | setting_repositories_encodings: Repositories encodings | |||
185 |
|
186 | |||
186 | label_user: User |
|
187 | label_user: User | |
187 | label_user_plural: Users |
|
188 | label_user_plural: Users |
@@ -517,3 +517,4 button_reset: Reset | |||||
517 | label_added_time_by: Added by %s %s ago |
|
517 | label_added_time_by: Added by %s %s ago | |
518 | field_estimated_hours: Estimated time |
|
518 | field_estimated_hours: Estimated time | |
519 | label_changeset_plural: Changesets |
|
519 | label_changeset_plural: Changesets | |
|
520 | setting_repositories_encodings: Repositories encodings |
@@ -182,6 +182,7 setting_autologin: Autologin | |||||
182 | setting_date_format: Format de date |
|
182 | setting_date_format: Format de date | |
183 | setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets |
|
183 | setting_cross_project_issue_relations: Autoriser les relations entre demandes de différents projets | |
184 | setting_issue_list_default_columns: Colonnes affichées par défaut sur la liste des demandes |
|
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 | label_user: Utilisateur |
|
187 | label_user: Utilisateur | |
187 | label_user_plural: Utilisateurs |
|
188 | label_user_plural: Utilisateurs |
@@ -514,3 +514,4 label_changeset_plural: Changesets | |||||
514 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
515 | field_column_names: Columns | |
516 | label_default_columns: Default columns |
|
516 | label_default_columns: Default columns | |
517 | setting_issue_list_default_columns: 問題の一覧で表示する項目 |
|
517 | setting_issue_list_default_columns: 問題の一覧で表示する項目 | |
|
518 | setting_repositories_encodings: Repositories encodings |
@@ -515,3 +515,4 label_changeset_plural: Changesets | |||||
515 | field_column_names: Columns |
|
515 | field_column_names: Columns | |
516 | label_default_columns: Default columns |
|
516 | label_default_columns: Default columns | |
517 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
514 | field_column_names: Columns | |
515 | label_default_columns: Default columns |
|
515 | label_default_columns: Default columns | |
516 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
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 | field_column_names: Columns |
|
515 | field_column_names: Columns | |
516 | label_default_columns: Default columns |
|
516 | label_default_columns: Default columns | |
517 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
517 | setting_issue_list_default_columns: Default columns displayed on the issue list | |
|
518 | setting_repositories_encodings: Repositories encodings |
@@ -517,3 +517,4 label_changeset_plural: Changesets | |||||
517 | field_column_names: Columns |
|
517 | field_column_names: Columns | |
518 | label_default_columns: Default columns |
|
518 | label_default_columns: Default columns | |
519 | setting_issue_list_default_columns: Default columns displayed on the issue list |
|
519 | setting_issue_list_default_columns: Default columns displayed on the issue list | |
|
520 | setting_repositories_encodings: Repositories encodings |
General Comments 0
You need to be logged in to leave comments.
Login now