[%# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. #%] [% RETURN UNLESS attachments.size || Param("maxattachmentsize") || Param("maxlocalattachment") %] <script type="text/javascript"> <!-- function toggle_display(link) { var table = document.getElementById("attachment_table"); var view_all = document.getElementById("view_all"); var hide_obsolete_url_parameter = "&hide_obsolete=1"; // Store current height for scrolling later var originalHeight = table.offsetHeight; var rows = YAHOO.util.Dom.getElementsByClassName( 'bz_tr_obsolete', 'tr', table); for (var i = 0; i < rows.length; i++) { bz_toggleClass(rows[i], 'bz_default_hidden'); } if (YAHOO.util.Dom.hasClass(rows[0], 'bz_default_hidden')) { link.innerHTML = "Show Obsolete"; view_all.href = view_all.href + hide_obsolete_url_parameter } else { link.innerHTML = "Hide Obsolete"; view_all.href = view_all.href.replace(hide_obsolete_url_parameter,""); } var newHeight = table.offsetHeight; // This scrolling makes the window appear to not move at all. window.scrollBy(0, newHeight - originalHeight); return false; } //--> </script> <br> <table id="attachment_table"> <tr id="a0"> <th colspan="[% show_attachment_flags ? 3 : 2 %]" class="left"> Attachments </th> </tr> [% count = 0 %] [% obsolete_attachments = 0 %] [% user_cache = template_cache.users %] [% FOREACH attachment = attachments %] [% count = count + 1 %] [% IF !attachment.isprivate || user.is_insider || attachment.attacher.id == user.id %] [% IF attachment.isobsolete %] [% obsolete_attachments = obsolete_attachments + 1 %] [% END %] <tr id="a[% count %]" class="[% "bz_contenttype_" _ attachment.contenttype FILTER css_class_quote %] [% " bz_patch" IF attachment.ispatch %] [% " bz_private" IF attachment.isprivate %] [% " bz_tr_obsolete bz_default_hidden" IF attachment.isobsolete %]"> <td> [% IF attachment.datasize %] <a href="attachment.cgi?id=[% attachment.id %]" title="View the content of the attachment"> [% END %] <b>[% attachment.description FILTER html FILTER obsolete(attachment.isobsolete) %]</b> [% "</a>" IF attachment.datasize %] <span class="bz_attach_extra_info"> [% IF attachment.datasize %] ([% attachment.datasize FILTER unitconvert %], [% IF attachment.ispatch %] patch) [% ELSE %] [%+ attachment.contenttype FILTER html %]) [% END %] [% ELSE %] (<em>deleted</em>) [% END %] <br> <a href="#attach_[% attachment.id %]" title="Go to the comment associated with the attachment"> [%- attachment.attached FILTER time("%Y-%m-%d %H:%M %Z") %]</a>, [%# No need to recreate the exact same template if we already have it. %] [% attacher_id = attachment.attacher.id %] [% UNLESS user_cache.$attacher_id %] [% user_cache.$attacher_id = BLOCK %] [% INCLUDE global/user.html.tmpl who = attachment.attacher %] [% END %] [% END %] [% user_cache.$attacher_id FILTER none %] </span> </td> [% IF show_attachment_flags %] <td class="bz_attach_flags"> [% IF attachment.flags.size == 0 %] <i>no flags</i> [% ELSE %] [% FOREACH flag = attachment.flags %] [% IF user.id %] <span title="[% flag.setter.identity FILTER html %]">[% flag.setter.nick FILTER html %]</span>: [% ELSIF flag.setter.name %] <span title="[% flag.setter.name FILTER html %]">[% flag.setter.nick FILTER html %]</span>: [% ELSE %] [% flag.setter.nick FILTER html %]: [% END %] [%+ flag.type.name FILTER html %][% flag.status %] [%+ IF flag.status == "?" && flag.requestee %] [% IF user.id %] (<span title="[% flag.requestee.identity FILTER html %]">[% flag.requestee.nick FILTER html %]</span>) [% ELSIF flag.requestee.name %] (<span title="[% flag.requestee.name FILTER html %]">[% flag.requestee.nick FILTER html %]</span>) [% ELSE %] ([% flag.requestee.nick FILTER html %]) [% END %] [% END %]<br> [% END %] [% END %] </td> [% END %] <td> <a href="attachment.cgi?id=[% attachment.id %]&action=edit">Details</a> [% IF attachment.ispatch && feature_enabled('patch_viewer') %] | <a href="attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a> [% END %] [% Hook.process("action") %] </td> </tr> [% END %] [% END %] <tr class="bz_attach_footer"> <td colspan="[% show_attachment_flags ? 3 : 2 %]"> [% IF attachments.size %] <span class="bz_attach_view_hide"> [% IF obsolete_attachments %] <a href="#a0" onclick="return toggle_display(this);">Show Obsolete</a> ([% obsolete_attachments %]) [% END %] [% IF Param("allow_attachment_display") %] <a id="view_all" href="attachment.cgi?bugid= [%- bugid %]&action=viewall [%- "&hide_obsolete=1" IF obsolete_attachments %]">View All</a> [% END %] </span> [% END %] [% IF Param("maxattachmentsize") || Param("maxlocalattachment") %] <a href="attachment.cgi?bugid=[% bugid %]&action=enter">Add an attachment</a> (proposed patch, testcase, etc.) [% END %] </td> </tr> </table> <br>