| [%# 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 src="[% 'js/status-bubble.js' FILTER mtime %]"></script> |
| <script type="text/javascript"> |
| <!-- |
| window.addEventListener('message', handleStatusBubbleMessage, false); |
| |
| 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 %]" |
| [%# if WEBKIT_CHANGES %] |
| [% IF attachment.ispatch && !attachment.isobsolete %] style="background-color: rgb(255,255,200);" [% END %] |
| [%# endif // WEBKIT_CHANGES %] |
| > |
| <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> |
| [%# if WEBKIT_CHANGES %] |
| [% IF attachment.ispatch && user.id %] |
| <a href="attachment.cgi?id=[% attachment.id %]&action=review">Review Patch</a> | |
| [% END %] |
| [%# endif // WEBKIT_CHANGES %] |
| <a href="attachment.cgi?id=[% attachment.id %]&action=edit">Details</a> |
| [%# if WEBKIT_CHANGES %] |
| [% IF attachment.ispatch %] |
| | <a href="attachment.cgi?id=[% attachment.id %]&action=prettypatch">Formatted Diff</a> |
| [% END %] |
| [%# endif // WEBKIT_CHANGES %] |
| [% IF attachment.ispatch && feature_enabled('patch_viewer') %] |
| | <a href="attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a> |
| [% END %] |
| [% Hook.process("action") %] |
| [%# if WEBKIT_CHANGES %] |
| [% IF attachment.ispatch %] |
| <div class="statusBubble"> |
| <iframe src="https://webkit-queues.webkit.org/status-bubble/[% attachment.id %]" |
| style="width: 0px; height: 20px; border: none;" scrolling="no" onload="handleStatusBubbleLoad(this)"> |
| </iframe> |
| <iframe src="https://ews.webkit.org/status-bubble/[% attachment.id %]/" |
| style="width: 0px; height: 20px; border: none;" scrolling="no" onload="handleStatusBubbleLoadNewEWS(this)"> |
| </iframe> |
| </div> |
| [% END %] |
| [%# endif // WEBKIT_CHANGES %] |
| </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> |