⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edit.html.tmpl

📁 bugzilla 项目缺陷管理工具源码
💻 TMPL
字号:
[%# 1.0@bugzilla.org %][%# 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): Myk Melez <myk@mozilla.org>  #                 Frédéric Buclin <LpSolit@gmail.com>  #%][% PROCESS global/variables.none.tmpl %][%# Define strings that will serve as the title and header of this page %][% title = BLOCK %]  Attachment [% attachment.id %] Details for [% terms.Bug %] [%+ attachment.bug_id %][% END %][% h1 = BLOCK %]  Attachment [% attachment.id %] Details for  [%+ GetBugLink(attachment.bug_id, "$terms.Bug ${attachment.bug_id}") %][% END %][% h2 = BLOCK %][% bugsummary FILTER html %][% END %][% PROCESS global/header.html.tmpl  title = title  h1 = h1  h2 = h2  style = "    table.attachment_info th { text-align: right; vertical-align: top; }    table.attachment_info td { text-align: left; vertical-align: top; }    #noview { text-align: left; vertical-align: middle; }    table#flags th, table#flags td { font-size: small; vertical-align: baseline; text-align: left; }  "%]<script type="text/javascript">  <!--  var prev_mode = 'raw';  var current_mode = 'raw';  var has_edited = 0;  var has_viewed_as_diff = 0;  function editAsComment()    {      // Get the content of the document as a string.      var viewFrame = document.getElementById('viewFrame');      var aSerializer = new XMLSerializer();      var contentDocument = viewFrame.contentDocument;      var theContent = aSerializer.serializeToString(contentDocument);      // If this is a plaintext document, remove cruft that Mozilla adds      // because it treats it as an HTML document with a big PRE section.      // http://bugzilla.mozilla.org/show_bug.cgi?id=86012      var contentType = '[% attachment.contenttype FILTER js %]';      if ( contentType == 'text/plain' )        {          theContent = theContent.replace( /^<html><head\/?><body><pre>/i , "" );          theContent = theContent.replace( /<\/pre><\/body><\/html>$/i , "" );          theContent = theContent.replace( /&lt;/gi , "<" );          theContent = theContent.replace( /&gt;/gi , ">" );          theContent = theContent.replace( /&amp;/gi , "&" );        }      // Add mail-style quote indicators (>) to the beginning of each line.      // ".*\n" matches lines that end with a newline, while ".+" matches      // the rare situation in which the last line of a file does not end      // with a newline.      theContent = theContent.replace( /(.*\n|.+)/g , ">$1" );      switchToMode('edit');      // Copy the contents of the diff into the textarea      var editFrame = document.getElementById('editFrame');      editFrame.value = theContent;      editFrame.value += "\n\n";      has_edited = 1;    }  function undoEditAsComment()    {      switchToMode(prev_mode);    }  function redoEditAsComment()    {      switchToMode('edit');    }[% IF patchviewerinstalled %]  function viewDiff()    {      switchToMode('diff');      // If we have not viewed as diff before, set the view diff frame URL      if (!has_viewed_as_diff) {        var viewDiffFrame = document.getElementById('viewDiffFrame');        viewDiffFrame.src =            'attachment.cgi?id=[% attachment.id %]&action=diff&headers=0';        has_viewed_as_diff = 1;      }    }[% END %]  function viewRaw()    {      switchToMode('raw');    }  function switchToMode(mode)    {      if (mode == current_mode) {        alert('switched to same mode!  This should not happen.');        return;      }      // Switch out of current mode      if (current_mode == 'edit') {        hideElementById('editFrame');        hideElementById('undoEditButton');      } else if (current_mode == 'raw') {        hideElementById('viewFrame');[% IF patchviewerinstalled %]        hideElementById('viewDiffButton');[% END %]        hideElementById(has_edited ? 'redoEditButton' : 'editButton');        hideElementById('smallCommentFrame');      } else if (current_mode == 'diff') {[% IF patchviewerinstalled %]        hideElementById('viewDiffFrame');[% END %]        hideElementById('viewRawButton');        hideElementById(has_edited ? 'redoEditButton' : 'editButton');        hideElementById('smallCommentFrame');      }      // Switch into new mode      if (mode == 'edit') {        showElementById('editFrame');        showElementById('undoEditButton');      } else if (mode == 'raw') {        showElementById('viewFrame');[% IF patchviewerinstalled %]        showElementById('viewDiffButton');[% END %]        showElementById(has_edited ? 'redoEditButton' : 'editButton');        showElementById('smallCommentFrame');      } else if (mode == 'diff') {[% IF patchviewerinstalled %]        showElementById('viewDiffFrame');[% END %]        showElementById('viewRawButton');        showElementById(has_edited ? 'redoEditButton' : 'editButton');        showElementById('smallCommentFrame');      }      prev_mode = current_mode;      current_mode = mode;    }  function hideElementById(id)  {    var elm = document.getElementById(id);    if (elm) {      elm.style.display = 'none';    }  }  function showElementById(id, val)  {    var elm = document.getElementById(id);    if (elm) {      if (!val) val = 'inline';      elm.style.display = val;    }  }  function normalizeComments()  {    // Remove the unused comment field from the document so its contents    // do not get transmitted back to the server.    var small = document.getElementById('smallCommentFrame');    var big = document.getElementById('editFrame');    if ( (small) && (small.style.display == 'none') )    {      small.parentNode.removeChild(small);    }    if ( (big) && (big.style.display == 'none') )    {      big.parentNode.removeChild(big);    }  }  //--></script><form method="post" action="attachment.cgi" onsubmit="normalizeComments();">  <input type="hidden" name="id" value="[% attachment.id %]">  <input type="hidden" name="action" value="update">  <input type="hidden" name="contenttypemethod" value="manual">  <table class="attachment_info" width="100%">    <tr>      <td width="25%">        <small>        <b>Description:</b><br>          <textarea rows="3" cols="25" name="description" wrap="soft">            [%- attachment.description FILTER html %]</textarea><br>        [% IF attachment.isurl %]            <input type="hidden" name="filename"                   value="[% attachment.filename FILTER html %]"><br>            <input type="hidden" name="contenttypeentry"                   value="[% attachment.contenttype FILTER html %]"><br>        [% ELSE %]          <b>Filename:</b><br>            <input type="text" size="20" name="filename"                   value="[% attachment.filename FILTER html %]"><br>          <b>Size: </b>[% attachment.datasize FILTER unitconvert %]<br>          <b>MIME Type:</b><br>            <input type="text" size="20" name="contenttypeentry"                   value="[% attachment.contenttype FILTER html %]"><br>          <input type="checkbox" id="ispatch" name="ispatch" value="1"                 [% 'checked="checked"' IF attachment.ispatch %]>          <label for="ispatch">patch</label>        [% END %]          <input type="checkbox" id="isobsolete" name="isobsolete" value="1"                 [% 'checked="checked"' IF attachment.isobsolete %]>          <label for="isobsolete">obsolete</label><br>          [% IF (Param("insidergroup") && UserInGroup(Param("insidergroup"))) %]            <input type="checkbox" name="isprivate" value="1"                   [% " checked" IF attachment.isprivate %]> private<br><br>          [% ELSE %]<br>          [% END %]        [% IF flag_types.size > 0 %]          [% PROCESS "flag/list.html.tmpl" bug_id = attachment.bug_id                                           attach_id = attachment.id %]<br>        [% END %]        <div id="smallCommentFrame">          <b>Comment (on the [% terms.bug %]):</b><br>            <textarea name="comment" rows="5" cols="25" wrap="soft"></textarea><br>        </div>        <input type="submit" value="Submit"><br><br>        <strong>Actions:</strong>        <a href="attachment.cgi?id=[% attachment.id %]">View</a>        [% IF attachment.ispatch && patchviewerinstalled %]         | <a href="attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a>        [% END %]        </small>      </td>      [% IF isviewable %]        <td width="75%">          <textarea id="editFrame" name="comment" wrap="soft" cols="80"                    style="height: 400px; width: 100%; display: none;"></textarea>          <iframe id="viewFrame" src="attachment.cgi?id=[% attachment.id %]" style="height: 400px; width: 100%;">            <b>You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.            <a href="attachment.cgi?id=[% attachment.id %]">View the attachment on a separate page</a>.</b>          </iframe>          <script type="text/javascript">            <!--            if (typeof document.getElementById == "function") {[% IF patchviewerinstalled %]              document.write('<iframe id="viewDiffFrame" style="height: 400px; width: 100%; display: none;"></iframe>');[% END %]              document.write('<button type="button" id="editButton" onclick="editAsComment();">Edit Attachment As Comment</button>');              document.write('<button type="button" id="undoEditButton" onclick="undoEditAsComment();" style="display: none;">Undo Edit As Comment</button>');              document.write('<button type="button" id="redoEditButton" onclick="redoEditAsComment();" style="display: none;">Redo Edit As Comment</button>');[% IF patchviewerinstalled %]              document.write('<button type="button" id="viewDiffButton" onclick="viewDiff();">View Attachment As Diff</button>');[% END %]              document.write('<button type="button" id="viewRawButton" onclick="viewRaw();" style="display: none;">View Attachment As Raw</button>');            }            //-->          </script>        </td>      [% ELSIF attachment.isurl %]        <td width="75%">          <a href="[% attachment.data FILTER html %]">            [% IF attachment.datasize < 120 %]              [% attachment.data FILTER html %]            [% ELSE %]              [% attachment.data FILTER truncate(80) FILTER html %]              &nbsp;...              [% attachment.data.match(".*(.{20})$").0 FILTER html %]            [% END %]          </a>        </td>      [% ELSE %]        <td id="noview" width="50%">          <p><b>            Attachment is not viewable in your browser because its MIME type             ([% attachment.contenttype FILTER html %]) is not one that your browser is             able to display.          </b></p>          <p><b>            <a href="attachment.cgi?id=[% attachment.id %]">Download the attachment</a>.          </b></p>        </td>      [% END %]    </tr>  </table>  Attachments on this [% terms.Bug %]:  [% FOREACH a = attachments %]    [% IF a == attachment.id %]      [% a %]    [% ELSE %]      <a href="attachment.cgi?id=[% a %]&amp;action=edit">[% a %]</a>    [% END %]    [% " |" UNLESS loop.last() %]  [% END %]</form><br>[% PROCESS global/footer.html.tmpl %]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -