##// END OF EJS Templates
diff2way: fixed unicode problem on non-ascii files.
marcink -
r348:cf59a3cf default
parent child Browse files
Show More
@@ -1,225 +1,225 b''
1 1 ## -*- coding: utf-8 -*-
2 2
3 3 <%inherit file="/base/base.html"/>
4 4 <%namespace name="diff_block" file="/changeset/diff_block.html"/>
5 5
6 6 <%def name="js_extra()">
7 7 <script type="text/javascript" src="${h.url('/js/mergerly.js')}"></script>
8 8 </%def>
9 9
10 10 <%def name="css_extra()">
11 11 <link rel="stylesheet" type="text/css" href="${h.url('/css/mergerly.css')}"/>
12 12 </%def>
13 13
14 14 <%def name="title()">
15 15 ${_('%s File side-by-side diff') % c.repo_name}
16 16 %if c.rhodecode_name:
17 17 &middot; ${h.branding(c.rhodecode_name)}
18 18 %endif
19 19 </%def>
20 20
21 21 <%def name="breadcrumbs_links()">
22 22 r${c.commit_1.revision}:${h.short_id(c.commit_1.raw_id)} ... r${c.commit_2.revision}:${h.short_id(c.commit_2.raw_id)}
23 23 </%def>
24 24
25 25 <%def name="menu_bar_nav()">
26 26 ${self.menu_items(active='repositories')}
27 27 </%def>
28 28
29 29 <%def name="menu_bar_subnav()">
30 30 ${self.repo_menu(active='changelog')}
31 31 </%def>
32 32
33 33 <%def name="main()">
34 34 <div class="box">
35 35 <div class="title">
36 36 ${self.repo_page_title(c.rhodecode_db_repo)}
37 37 </div>
38 38
39 39 <div class="breadcrumbs">
40 40 ${_('Side-by-side Diff')} r${c.commit_1.revision}:${h.short_id(c.commit_1.raw_id)} ... r${c.commit_2.revision}:${h.short_id(c.commit_2.raw_id)}
41 41 </div>
42 42 <div class="cs_files">
43 43 <table class="compare_view_files commit_diff">
44 44 <tr class="cs_${c.diff_data['operation']} collapse_file" fid="${c.FID}">
45 45 <td class="cs_icon_td">
46 46 <span class="collapse_file_icon" fid="${c.FID}"></span>
47 47 </td>
48 48 <td class="cs_icon_td">
49 49 <div class="flag_status not_reviewed hidden"></div>
50 50 </td>
51 51 <td class="cs_${c.diff_data['operation']}" id="a_${c.FID}">
52 52 <div class="node">
53 53 <a href="#a_${c.FID}">
54 54 <i class="icon-file-${c.diff_data['operation'].lower()}"></i>
55 55 ${h.safe_unicode(c.node1.path)}
56 56 </a>
57 57 </div>
58 58 </td>
59 59 <td>
60 60 <div class="changes pull-right">${h.fancy_file_stats(c.diff_data['stats'])}</div>
61 <div class="comment-bubble pull-right" data-path="${c.node1.path}">
61 <div class="comment-bubble pull-right" data-path="${h.safe_unicode(c.node1.path)}">
62 62 <i class="icon-comment"></i>
63 63 </div>
64 64 </td>
65 65 </tr>
66 66 <tr fid="${c.FID}" id="diff_${c.FID}" class="diff_links">
67 67 <td></td>
68 68 <td></td>
69 69 <td class="cs_${c.diff_data['operation']}">
70 70 ${diff_block.diff_menu(c.repo_name, h.safe_unicode(c.node1.path), c.commit_1.raw_id, c.commit_2.raw_id, c.diff_data['operation'])}
71 71 </td>
72 72 <td class="td-actions rc-form">
73 73 <div id="ignorews" class="btn-link show-inline-comments">
74 74 <span data-enabled=false class="toggle">${_('Ignore whitespace')}</span>
75 75 <span data-enabled=true class="toggle" style="display: none">${_('Show whitespace')}</span>
76 76 </div> |
77 77
78 78 <div id="edit_mode" class="btn-link show-inline-comments">
79 79 <span data-enabled=true class="toggle">${_('Enable editor mode')}</span>
80 80 <span data-enabled=false class="toggle" style="display: none">${_('Disable editor mode')}</span>
81 81 </div> |
82 82
83 83 <div class="btn-link show-inline-comments">
84 84 <span id="prev_change" title="${_('Previous change')}"><i class="icon-left"></i></span>
85 85 <span id="next_change" title="${_('Next change')}"><i class="icon-right"></i></span>
86 86 </div>
87 87
88 88 </td>
89 89 </tr>
90 90 <tr id="tr_${c.FID}">
91 91 <td></td>
92 92 <td></td>
93 93 <td class="injected_diff" colspan="2">
94 94 <div class="diff-container" id="${'diff-container-%s' % (id(c.diff_data['operation']))}">
95 95 <div id="${c.FID}" class="diffblock margined comm">
96 96 <div class="diff-container" >
97 97 <div class="diffblock comm sidebyside">
98 98 <div class="code-header">
99 99 <div class="changeset_header">
100 100 ${_('mode')}: <span id="selected_mode">plain</span> |
101 101 </div>
102 102 </div>
103 103 <div id="compare"></div>
104 104 </div>
105 105 </div>
106 106 </div>
107 107 </div>
108 108 </td>
109 109 </tr>
110 110 </table>
111 111 </div>
112 112
113 113
114 114 <script>
115 115 var orig1_url = '${h.url('files_raw_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node1.path),revision=c.commit_1.raw_id)}';
116 116 var orig2_url = '${h.url('files_raw_home',repo_name=c.repo_name,f_path=h.safe_unicode(c.node2.path),revision=c.commit_2.raw_id)}';
117 117 $(document).ready(function () {
118 118
119 119
120 120 var editor = $('#compare');
121 121 editor.mergely({
122 122 autoupdate: true,
123 123 width: 'auto',
124 124 height: '600',
125 125 fgcolor: {a: '#ddffdd', c: '#cccccc', d: '#ffdddd'},
126 126 bgcolor: '#fff',
127 127 viewport: false,
128 128 cmsettings: {
129 129 mode: 'text/plain',
130 130 readOnly: true,
131 131 lineWrapping: false,
132 132 lineNumbers: true
133 133 }
134 134 });
135 135
136 136
137 137 var lhs = function(deferred) {
138 138 if ("${c.node1.is_binary}" == "True") {
139 139 deferred.resolve('Binary file');
140 140 }
141 141 else if ("${c.node1.commit.__class__.__name__}" == "EmptyCommit") {
142 142 deferred.resolve('');
143 143 }
144 144 else {
145 145 editor.mergely('lhs', 'loading diff...');
146 146 $.ajax(orig1_url, {
147 147 dataType: 'text',
148 148 success: function(data) {
149 149 // call the complete function to let CodeMirror know
150 150 deferred.resolve(data);
151 151 }
152 152 });
153 153 }
154 154 };
155 155
156 156 var rhs = function(deferred) {
157 157 if ("${c.node2.is_binary}" == "True") {
158 158 deferred.resolve('Binary file');
159 159 }
160 160 else if ("${c.node2.commit.__class__.__name__}" == "EmptyCommit") {
161 161 deferred.resolve('');
162 162 }
163 163 else {
164 164 editor.mergely('rhs', 'loading diff...');
165 165 $.ajax(orig2_url, {
166 166 dataType: 'text',
167 167 success: function(data) {
168 168 // call the complete function to let CodeMirror know
169 169 deferred.resolve(data);
170 170 }
171 171 });
172 172 }
173 173 };
174 174
175 175 var deferred_lhs = $.Deferred();
176 176 var deferred_rhs = $.Deferred();
177 177 $.when(
178 178 deferred_lhs, deferred_rhs
179 179 ).done(function(lhs_response, rhs_response) {
180 180 editor.mergely('lhs', lhs_response);
181 181 editor.mergely('rhs', rhs_response);
182 182
183 183 var detected_mode = detectCodeMirrorModeFromExt(
184 184 '${h.safe_unicode(c.node1.path.split("/")[-1])}', true);
185 185 if (detected_mode) {
186 186 setCodeMirrorMode(editor.mergely('cm', 'lhs'), detected_mode);
187 187 setCodeMirrorMode(editor.mergely('cm', 'rhs'), detected_mode);
188 188 $('#selected_mode').html(detected_mode);
189 189 }
190 190 });
191 191 // load via ajax, and use deferred signals to notify when finished.
192 192 lhs(deferred_lhs);
193 193 rhs(deferred_rhs);
194 194
195 195 $("#ignorews").click(function() {
196 196 $("#ignorews .toggle").toggle();
197 197 var val = $('#ignorews .toggle:visible').data()['enabled'];
198 198 editor.mergely('options', {ignorews: val});
199 199 editor.mergely('update');
200 200 });
201 201
202 202 $("#edit_mode").click(function() {
203 203 $("#edit_mode .toggle").toggle();
204 204 var val = $('#edit_mode .toggle:visible').data()['enabled'];
205 205 editor.mergely('cm', 'lhs').setOption('readOnly', val);
206 206 editor.mergely('cm', 'rhs').setOption('readOnly', val);
207 207 editor.mergely('update');
208 208 });
209 209
210 210 $('#prev_change').on('click', function() {
211 211 editor.mergely('scrollToDiff', 'prev');
212 212 });
213 213 $('#next_change').on('click', function() {
214 214 editor.mergely('scrollToDiff', 'next');
215 215 });
216 216
217 217 // extend content dynamically on this component for readability
218 218 $('#content').css({'max-width': '2000px'});
219 219 editor.mergely('resize');
220 220
221 221 });
222 222 </script>
223 223
224 224 </div>
225 225 </%def>
General Comments 0
You need to be logged in to leave comments. Login now