| [%# The contents of this file are subject to the Mozilla Public |
| # License Version 1.1 (the "License"); you may not use this file |
| # except in compliance with the License. You may obtain a copy of |
| # the License at http://www.mozilla.org/MPL/ |
| # |
| # Software distributed under the License is distributed on an "AS |
| # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
| # implied. See the License for the specific language governing |
| # rights and limitations under the License. |
| # |
| # The Original Code is the Bugzilla Bug Tracking System. |
| # |
| # The Initial Developer of the Original Code is Netscape Communications |
| # Corporation. Portions created by Netscape are |
| # Copyright (C) 1998 Netscape Communications Corporation. All |
| # Rights Reserved. |
| # |
| # Contributor(s): John Keiser <jkeiser@netscape.com> |
| # Frédéric Buclin <LpSolit@gmail.com> |
| #%] |
| |
| [%# This line is really long for a reason: to get rid of any possible textnodes |
| # between the elements. This is necessary because DOM parent-child-sibling |
| # relations can change and screw up the javascript for restoring, collapsing |
| # and expanding. Do not change without testing all three of those. |
| # Also, the first empty row is required because 'table-layout: fixed' only |
| # considers the first row to determine column widths. If a colspan is found, |
| # it then share the width equally among all columns, which we don't want. |
| #%] |
| <table class="file_table"><thead><tr><td class="num"></td><td></td><td class="num"></td><td></td></tr><tr><td class="file_head" colspan="4"><a href="#" onclick="return twisty_click(this)">[% collapsed ? '(+)' : '(-)' %]</a><input type="checkbox" name="[% file.filename FILTER html %]"[% collapsed ? '' : ' checked' %] style="display: none"> |
| [% IF lxr_prefix && !file.is_add %] |
| <a href="[% lxr_prefix %]">[% file.filename FILTER html %]</a> |
| [% ELSE %] |
| [% file.filename FILTER html %] |
| [% END %] |
| [% IF file.plus_lines %] |
| [% IF file.minus_lines %] |
| (-[% file.minus_lines %] / +[% file.plus_lines %] lines) |
| [% ELSE %] |
| (+[% file.plus_lines %] lines) |
| [% END %] |
| [% ELSE %] |
| [% IF file.minus_lines %] |
| (-[% file.minus_lines %] lines) |
| [% END %] |
| [% END %] |
| </td></tr></thead><tbody class="[% collapsed ? 'file_collapse' : 'file' %]"> |
| <script type="text/javascript"> |
| incremental_restore() |
| </script> |
| |
| [% section_num = 0 %] |
| [% FOREACH section = sections %] |
| [% section_num = section_num + 1 %] |
| <tr><th colspan="4" class="section_head"> |
| <table id="[% file.filename FILTER html %]_sec[% section_num %]" cellpadding="0" cellspacing="0"> |
| <tr><th width="95%" align="left"> |
| [% IF file.is_add %] |
| Added |
| [% ELSIF file.is_remove %] |
| [% IF bonsai_prefix %] |
| <a href="[% bonsai_prefix %]">Removed</a> |
| [% ELSE %] |
| Removed |
| [% END %] |
| [% ELSE %] |
| [% IF bonsai_prefix %] |
| <a href="[% bonsai_prefix %]#[% section.old_start %]"> |
| [% END %] |
| [% IF section.old_lines > 1 %] |
| Lines [% section.old_start %]-[% section.old_start + |
| section.old_lines - 1 %] |
| [% ELSE %] |
| Line [% section.old_start %] |
| [% END %] |
| [% IF bonsai_prefix %] |
| </a> |
| [% END %] |
| [% section.func_info FILTER html IF section.func_info %] |
| [% END %] |
| </th><th> |
| <a href="#[% file.filename FILTER html %]_sec[% section_num %]">Link Here</a> |
| </th></tr></table> |
| </th></tr> |
| [% current_line_old = section.old_start %] |
| [% current_line_new = section.new_start %] |
| [% FOREACH group = section.groups %] |
| [% IF group.context %] |
| [% FOREACH line = group.context %] |
| <tr> |
| <td class="num">[% current_line_old %]</td> |
| <td><pre>[% line FILTER html %]</pre></td> |
| <td class="num">[% current_line_new %]</td> |
| <td><pre>[% line FILTER html %]</pre></td> |
| </tr> |
| [% current_line_old = current_line_old + 1 %] |
| [% current_line_new = current_line_new + 1 %] |
| [% END %] |
| [% END %] |
| [% IF group.plus.size %] |
| [% IF group.minus.size %] |
| [% i = 0 %] |
| [% WHILE (i < group.plus.size || i < group.minus.size) %] |
| [%# WHILE cannot loop more than 1000 times by default, so we break it every 500 times. %] |
| [% currentloop = 0 %] |
| [% WHILE currentloop < 500 && (i < group.plus.size || i < group.minus.size) %] |
| <tr> |
| [% IF i < group.minus.size %] |
| <td class="num">[% current_line_old + i %]</td> |
| <td class="changed"><pre>[% group.minus.$i FILTER html %]</pre></td> |
| [% ELSIF i == group.minus.size %] |
| [% rowspan = group.plus.size - group.minus.size %] |
| <td class="num"[% IF rowspan > 1 %] rowspan="[% rowspan FILTER none %]"[% END %]></td> |
| <td class="changed"[% IF rowspan > 1 %] rowspan="[% rowspan FILTER none %]"[% END %]></td> |
| [% END %] |
| |
| [% IF i < group.plus.size %] |
| <td class="num">[% current_line_new + i %]</td> |
| <td class="changed"><pre>[% group.plus.$i FILTER html %]</pre></td> |
| [% ELSIF i == group.plus.size %] |
| [% rowspan = group.minus.size - group.plus.size %] |
| <td class="num"[% IF rowspan > 1 %] rowspan="[% rowspan FILTER none %]"[% END %]></td> |
| <td class="changed"[% IF rowspan > 1 %] rowspan="[% rowspan FILTER none %]"[% END %]></td> |
| [% END %] |
| </tr> |
| [% currentloop = currentloop + 1 %] |
| [% i = i + 1 %] |
| [% END %] |
| [% END %] |
| [% current_line_old = current_line_old + group.minus.size %] |
| [% current_line_new = current_line_new + group.plus.size %] |
| [% ELSE %] |
| [% FOREACH line = group.plus %] |
| [% IF file.is_add %] |
| <tr> |
| <td class="num">[% current_line_new %]</td> |
| <td class="added" colspan="3"><pre>[% line FILTER html %]</pre></td> |
| </tr> |
| [% ELSE %] |
| <tr> |
| [% IF loop.first %] |
| <td class="num"[% IF group.plus.size > 1 %] rowspan="[% group.plus.size %]"[% END %]></td> |
| <td[% IF group.plus.size > 1 %] rowspan="[% group.plus.size %]"[% END %]></td> |
| [% END %] |
| <td class="num">[% current_line_new %]</td> |
| <td class="added"><pre>[% line FILTER html %]</pre></td> |
| </tr> |
| [% END %] |
| [% current_line_new = current_line_new + 1 %] |
| [% END %] |
| [% END %] |
| [% ELSE %] |
| [% IF group.minus.size %] |
| [% FOREACH line = group.minus %] |
| [% IF file.is_remove %] |
| <tr> |
| <td class="num">[% current_line_old %]</td> |
| <td class="removed" colspan="3"><pre>[% line FILTER html %]</pre></td> |
| </tr> |
| [% ELSE %] |
| <tr> |
| <td class="num">[% current_line_old %]</td> |
| <td class="removed"><pre>[% line FILTER html %]</pre></td> |
| [% IF loop.first %] |
| <td class="num"[% IF group.minus.size > 1 %] rowspan="[% group.minus.size %]"[% END %]></td> |
| <td[% IF group.minus.size > 1 %] rowspan="[% group.minus.size %]"[% END %]></td> |
| [% END %] |
| </tr> |
| [% END %] |
| [% current_line_old = current_line_old + 1 %] |
| [% END %] |
| [% END %] |
| [% END %] |
| [% END %] |
| [% END %] |
| |
| </table> |