Commit 2df35fc7 authored by Guy Pyrzak's avatar Guy Pyrzak

101770

parent 8d0710ac
......@@ -19,6 +19,7 @@
* Joel Peshkin <bugreport@peshkin.net>
* Erik Stambaugh <erik@dasbistro.com>
* Marc Schumann <wurblzap@gmail.com>
* Guy Pyrzak <guy.pyrzak@gmail.com>
*/
function validateAttachmentForm(theform) {
......@@ -307,7 +308,7 @@ function hideElementById(id)
{
var elm = document.getElementById(id);
if (elm) {
elm.style.display = 'none';
YAHOO.util.Dom.addClass(elm, 'bz_default_hidden');
}
}
......@@ -315,8 +316,7 @@ function showElementById(id, val)
{
var elm = document.getElementById(id);
if (elm) {
if (!val) val = 'inline';
elm.style.display = val;
YAHOO.util.Dom.removeClass(elm, 'bz_default_hidden');
}
}
......@@ -327,12 +327,24 @@ function normalizeComments()
var small = document.getElementById('smallCommentFrame');
var big = document.getElementById('editFrame');
if ( (small) && (small.style.display == 'none') )
if ( (small) && YAHOO.util.Dom.hasClass(small, 'bz_default_hidden') )
{
small.parentNode.removeChild(small);
}
if ( (big) && (big.style.display == 'none') )
if ( (big) && YAHOO.util.Dom.hasClass(big, 'bz_default_hidden') )
{
big.parentNode.removeChild(big);
}
}
function toggle_attachment_details_visibility ( )
{
// show hide classes
var container = document.getElementById('attachment_info');
if( YAHOO.util.Dom.hasClass(container, 'read') ){
YAHOO.util.Dom.replaceClass(container, 'read', 'edit');
}else{
YAHOO.util.Dom.replaceClass(container, 'edit', 'read');
}
}
......@@ -14,6 +14,7 @@
* Joel Peshkin <bugreport@peshkin.net>
* Erik Stambaugh <erik@dasbistro.com>
* Marc Schumann <wurblzap@gmail.com>
* Guy Pyrzak <guy.pyrzak@gmail.com>
*/
table.attachment_entry th {
......@@ -121,10 +122,6 @@ table.attachment_info td {
vertical-align: middle;
}
#attachment_attributes {
width: 25%;
}
#attachment_attributes div {
padding-bottom: 0.4em;
}
......@@ -140,6 +137,105 @@ table.attachment_info td {
display: block;
}
#attachment_attributes table#flags {
padding-top: 1em;
#smallCommentFrame, #attachment_flags {
float: left;
}
#smallCommentFrame {
margin-right: 1.5em;
}
#attachment_comments_and_flags, #attachment_actions {
clear: both;
margin-bottom: 1ex;
}
#attachment_information_read_only .title {
font-weight: bold;
font-size: 1.5em;
padding: 0;
margin: 0;
}
#attachment_information_read_only .title #bz_edit {
font-size: 0.7em;
}
#attachment_information_read_only .details {
font-family: monospace;
}
#attachment_info.read #attachment_information_edit {
display: none;
}
#attachment_info.edit #attachment_information_read_only {
display: none;
}
#attachment_info.edit #attachment_view_window {
float: left;
width: 80%;
}
#attachment_info.edit #attachment_information_edit {
width: 20%;
}
#attachment_info.edit #attachment_information_edit input.text,
#attachment_info.edit #attachment_information_edit textarea {
width: 90%;
}
#attachment_isobsolete {
padding-right: 1em;
}
#attachment_information_edit {
float: left;
}
#smallCommentFrame textarea {
display: block;
}
textarea.bz_private {
border: 1px solid #F8C8BA;
}
#update {
clear: both;
padding: 1.5em 0;
display: block;
}
textarea {
font-family: monospace;
}
div#update_container {
clear: both;
}
#attachment_flags {
margin-bottom: 1em;
}
#attachment_flags p {
padding-bottom: 0;
margin-bottom: 0;
}
#editFrame, #viewDiffFrame, #viewFrame {
height: 400px;
width: 100%;
}
.details span.bz_private{
border-left: 1px solid darkred;
padding-left: 0.5em;
}
.no_javascript .bz_hide, .no_javascript .bz_edit {
display: none;
}
\ No newline at end of file
......@@ -33,7 +33,7 @@
title = title
header = header
subheader = subheader
style_urls = [ 'skins/standard/create_attachment.css' ]
style_urls = [ 'skins/standard/attachment.css' ]
javascript_urls = [ "js/attachment.js", "js/util.js" ]
doc_section = "attachments.html"
%]
......
......@@ -53,11 +53,11 @@ Interdiff of #[% oldid %] and #[% newid %] for [% terms.bug %] #[% bugid %]
[% END %]
[% PROCESS global/header.html.tmpl doc_section = "attachments.html#patchviewer"
javascript_urls = "js/attachment.js"
style_urls = ['skins/standard/create_attachment.css'] %]
style_urls = ['skins/standard/attachment.css'] %]
[% ELSE %]
<html>
<head>
<link href="skins/standard/create_attachment.css" rel="stylesheet" type="text/css">
<link href="skins/standard/attachment.css" rel="stylesheet" type="text/css">
<script src="js/attachment.js" type="text/javascript"></script>
</head>
<body onload="[% onload FILTER html %]">
......
......@@ -17,6 +17,7 @@
#
# Contributor(s): Myk Melez <myk@mozilla.org>
# Frédéric Buclin <LpSolit@gmail.com>
# Guy Pyrzak <guy.pyrzak@gmail.com>
#%]
[% PROCESS global/variables.none.tmpl %]
......@@ -37,7 +38,8 @@
subheader = subheader
doc_section = "attachments.html"
javascript_urls = ['js/attachment.js']
style_urls = ['skins/standard/create_attachment.css']
style_urls = ['skins/standard/attachment.css']
bodyclasses = "no_javascript"
%]
[%# No need to display the Diff button and iframe if the attachment is not a patch. %]
......@@ -54,12 +56,38 @@
<input type="hidden" name="token" value="[% issue_hash_token([attachment.id, attachment.modification_time]) FILTER html %]">
[% END %]
<table class="attachment_info" width="100%">
<tr>
<td id="attachment_attributes">
<div id="attachment_info" class="attachment_info [% IF can_edit %] edit[% ELSE %] read[% END%]">
<div id="attachment_attributes">
<div id="attachment_information_read_only" class="[% "bz_private" IF attachment.isprivate %]">
<div class="title">
[% "[patch]" IF attachment.ispatch%]
<span class="[% "bz_obsolete" IF attachment.isobsolete %]" title="[% "obsolete" IF attachment.isobsolete %]">
[% attachment.description FILTER html %]
</span>
[% IF can_edit %]
<span class="bz_edit">(<a href="javascript:toggle_attachment_details_visibility()">edit</a>)</span>
[% END %]
</div>
[% IF NOT attachment.isurl %]
<div class="details">
[% attachment.filename FILTER html %] ([% attachment.contenttype FILTER html %])
[% IF attachment.datasize %]
[%+ attachment.datasize FILTER unitconvert %]
[% ELSE %]
<em>deleted</em>
[% END %], created by [%+ INCLUDE global/user.html.tmpl who = attachment.attacher %]
[% IF attachment.isprivate %]
<span class="bz_private">Only visible to <strong>[% Param('insidergroup') FILTER html %]</strong></span>
[% END %]
</div>
[% END %]
</div>
<div id="attachment_information_edit">
<span class="bz_hide">
(<a href="javascript:toggle_attachment_details_visibility();">hide</a>)
</span>
<div id="attachment_description">
<label for="description">Description:</label>
<label for="description">Description:</label>&nbsp;
[% INCLUDE global/textarea.html.tmpl
id = 'description'
name = 'description'
......@@ -68,38 +96,34 @@
wrap = 'soft'
classes = 'block' _ editable_or_hide
defaultcontent = attachment.description
%]
[% IF !can_edit %]
[%+ attachment.description FILTER wrap_comment(25) FILTER html %]
[% END %]
%]
</div>
[% IF attachment.isurl %]
<input type="hidden" name="filename"
value="[% attachment.filename FILTER html %]">
<input type="hidden" name="contenttypeentry"
value="[% attachment.contenttype FILTER html %]">
<input type="hidden" name="filename"
value="[% attachment.filename FILTER html %]">
<input type="hidden" name="contenttypeentry"
value="[% attachment.contenttype FILTER html %]">
[% ELSE %]
<div id="attachment_filename">
<label for="filename">Filename:</label>
<input type="text" size="20" class="block[% editable_or_hide %]"
<input type="text" size="20" class="text block[% editable_or_hide %]"
id="filename" name="filename"
value="[% attachment.filename FILTER html %]">
[% IF !can_edit %]
[%+ attachment.filename FILTER truncate(25) FILTER html %]
[% END %]
value="[% attachment.filename FILTER html %]">
</div>
<div id="attachment_mimetype">
<label for="contenttypeentry">MIME Type:</label>
<input type="text" size="20" class="block[% editable_or_hide %]"
<input type="text" size="20" class="text block[% editable_or_hide %]"
id="contenttypeentry" name="contenttypeentry"
value="[% attachment.contenttype FILTER html %]">
[% IF !can_edit %]
[%+ attachment.contenttype FILTER truncate(25) FILTER html %]
[% END %]
value="[% attachment.contenttype FILTER html %]">
</div>
<div id="attachment_creator">
<span class="label">Creator:</span>
[%+ INCLUDE global/user.html.tmpl who = attachment.attacher %]
</div>
<div id="attachment_size">
<span class="label">Size:</span>
[% IF attachment.datasize %]
......@@ -109,154 +133,148 @@
[% END %]
</div>
<div id="attachment_creator">
<span class="label">Creator:</span>
[%+ INCLUDE global/user.html.tmpl who = attachment.attacher %]
</div>
<div id="attachment_ispatch">
<input type="checkbox" id="ispatch" name="ispatch" value="1"
[%+ IF !can_edit %]class="bz_hidden_option"[% END %]
[%+ 'checked="checked"' IF attachment.ispatch %]>
[% IF can_edit %]
<label for="ispatch">patch</label>
[% ELSE %]
<span class="label">Is Patch:</span>
[%+ attachment.ispatch ? "yes" : "no" %]
[% END %]
<label for="ispatch">patch</label>
</div>
[% END %]
<div class="readonly">
<div class="checkboxes">
<div id="attachment_isobsolete">
<input type="checkbox" id="isobsolete" name="isobsolete" value="1"
[%+ 'checked="checked"' IF attachment.isobsolete %]>
<label for="isobsolete">obsolete</label>
</div>
<div id="attachment_isobsolete">
<input type="checkbox" id="isobsolete" name="isobsolete" value="1"
[%+ IF !can_edit %]class="bz_hidden_option"[% END %]
[%+ 'checked="checked"' IF attachment.isobsolete %]>
[% IF can_edit %]
<label for="isobsolete">obsolete</label>
[% ELSE %]
<span class="label">Is Obsolete:</span>
[%+ attachment.isobsolete ? "yes" : "no" %]
[% END %]
</div>
[% IF user.is_insider %]
<div id="attachment_isprivate">
<input type="checkbox" id="isprivate" name="isprivate" value="1"
[%+ IF !can_edit %]class="bz_hidden_option"[% END %]
[%+ 'checked="checked"' IF attachment.isprivate %]>
[% IF can_edit %]
<label for="isprivate">private (only visible to
<strong>[% Param('insidergroup') FILTER html %]</strong>)
</label>
[% ELSE %]
<span class="label">Is Private:</span>
[%+ attachment.isprivate ? "yes" : "no" %]
[% IF user.is_insider %]
<div id="attachment_isprivate">
<input type="checkbox" id="isprivate" name="isprivate" value="1"
[%+ 'checked="checked"' IF attachment.isprivate %]>
[% IF can_edit %]
<label for="isprivate">private (only visible to
<strong>[% Param('insidergroup') FILTER html %]</strong>)
</label>
[% ELSE %]
<span class="label">Is Private:</span>
[%+ attachment.isprivate ? "yes" : "no" %]
[% END %]
</div>
[% END %]
</div>
[% END %]
</div>
</div>
[% IF attachment.flag_types.size > 0 %]
<div id="attachment_flags">
[% PROCESS "flag/list.html.tmpl" bug_id = attachment.bug_id
attach_id = attachment.id
flag_types = attachment.flag_types
read_only_flags = !can_edit
%]
<div id="attachment_view_window">
[% IF !attachment.datasize %]
<div><b>The content of this attachment has been deleted.</b></div>
[% ELSIF attachment.isurl %]
<div>
<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>
</div>
[% END %]
[% IF user.id %]
<div id="smallCommentFrame">
<label for="comment">Comment (on the [% terms.bug %]):</label>
[% ELSIF !Param("allow_attachment_display") %]
<div id="view_disabled" >
<p><b>
The attachment is not viewable in your browser due to security
restrictions enabled by your [% terms.Bugzilla %] administrator.
</b></p>
<p><b>
In order to view the attachment, you first have to
<a href="attachment.cgi?id=[% attachment.id %]">download it</a>.
</b></p>
</div>
[% ELSIF attachment.is_viewable %]
<div >
[% INCLUDE global/textarea.html.tmpl
id = 'comment'
id = 'editFrame'
name = 'comment'
minrows = 5
cols = 25
classes = 'bz_default_hidden'
minrows = 10
cols = 80
wrap = 'soft'
classes = 'block'
defaultcontent = (attachment.contenttype.match('^text\/')) ?
attachment.data.replace('(.*\n|.+)', '>$1') : undef
%]
<iframe id="viewFrame" src="attachment.cgi?id=[% attachment.id %]">
<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">
<!--
var patchviewerinstalled = 0;
var attachment_id = [% attachment.id %];
if (typeof document.getElementById == "function") {
[% IF use_patchviewer %]
var patchviewerinstalled = 1;
document.write('<iframe id="viewDiffFrame" class="bz_default_hidden"><\/iframe>');
[% END %]
[% IF user.id %]
document.write('<button type="button" id="editButton" onclick="editAsComment(patchviewerinstalled);">Edit Attachment As Comment<\/button>');
document.write('<button type="button" id="undoEditButton" onclick="undoEditAsComment(patchviewerinstalled);" class="bz_default_hidden">Undo Edit As Comment<\/button>');
document.write('<button type="button" id="redoEditButton" onclick="redoEditAsComment(patchviewerinstalled);" class="bz_default_hidden">Redo Edit As Comment<\/button>');
[% END %]
[% IF use_patchviewer %]
document.write('<button type="button" id="viewDiffButton" onclick="viewDiff(attachment_id, patchviewerinstalled);">View Attachment As Diff<\/button>');
[% END %]
document.write('<button type="button" id="viewRawButton" onclick="viewRaw(patchviewerinstalled);" class="bz_default_hidden">View Attachment As Raw<\/button>');
}
//-->
</script>
</div>
[% ELSE %]
<div id="noview">
<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>
</div>
<input type="submit" value="Submit" id="update"><br><br>
[% END %]
</td>
[% IF !attachment.datasize %]
<td width="75%"><b>The content of this attachment has been deleted.</b></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>
[% ELSIF !Param("allow_attachment_display") %]
<td id="view_disabled" width="50%">
<p><b>
The attachment is not viewable in your browser due to security
restrictions enabled by [% terms.Bugzilla %].
</b></p>
<p><b>
In order to view the attachment, you first have to
<a href="attachment.cgi?id=[% attachment.id %]">download it</a>.
</b></p>
</td>
[% ELSIF attachment.is_viewable %]
<td width="75%">
</div>
<div id="attachment_comments_and_flags">
[% IF user.id %]
<div id="smallCommentFrame" >
<label for="comment">Comment (on the [% terms.bug %]):</label>
[% classNames = 'block' %]
[% classNames = "$classes bz_private" IF attachment.isprivate %]
[% INCLUDE global/textarea.html.tmpl
id = 'editFrame'
id = 'comment'
name = 'comment'
style = 'height: 400px; width: 100%; display: none'
minrows = 10
cols = 80
wrap = 'soft'
defaultcontent = (attachment.contenttype.match('^text\/')) ?
attachment.data.replace('(.*\n|.+)', '>$1') : undef
classes = classNames
%]
<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">
<!--
var patchviewerinstalled = 0;
var attachment_id = [% attachment.id %];
if (typeof document.getElementById == "function") {
[% IF use_patchviewer %]
var patchviewerinstalled = 1;
document.write('<iframe id="viewDiffFrame" style="height: 400px; width: 100%; display: none;"><\/iframe>');
[% END %]
document.write('<button type="button" id="editButton" onclick="editAsComment(patchviewerinstalled);">Edit Attachment As Comment<\/button>');
document.write('<button type="button" id="undoEditButton" onclick="undoEditAsComment(patchviewerinstalled);" style="display: none;">Undo Edit As Comment<\/button>');
document.write('<button type="button" id="redoEditButton" onclick="redoEditAsComment(patchviewerinstalled);" style="display: none;">Redo Edit As Comment<\/button>');
[% IF use_patchviewer %]
document.write('<button type="button" id="viewDiffButton" onclick="viewDiff(attachment_id, patchviewerinstalled);">View Attachment As Diff<\/button>');
[% END %]
document.write('<button type="button" id="viewRawButton" onclick="viewRaw(patchviewerinstalled);" style="display: none;">View Attachment As Raw<\/button>');
}
//-->
</script>
</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>
</div>
[% END %]
[% IF attachment.flag_types.size > 0 %]
<div id="attachment_flags">
[% PROCESS "flag/list.html.tmpl" bug_id = attachment.bug_id
attach_id = attachment.id
flag_types = attachment.flag_types
read_only_flags = !can_edit
%]
</div>
[% END %]
</tr>
</table>
[% IF user.id %]
<div id="update_container">
<input type="submit" value="Submit" id="update">
</div>
[% END %]
</div>
</div>
</div>
</form>
<div id="attachment_actions">
......@@ -283,7 +301,14 @@
[% " |" UNLESS loop.last() %]
[% END %]
</div>
[% IF can_edit %]
<script type="text/javascript">
<!--
YAHOO.util.Dom.removeClass( document.body, "no_javascript" );
toggle_attachment_details_visibility( );
-->
</script>
[% END %]
[% Hook.process('end') %]
[% PROCESS global/footer.html.tmpl %]
......@@ -31,7 +31,7 @@
title = title
header = header
subheader = filtered_summary
style_urls = ['skins/standard/create_attachment.css']
style_urls = ['skins/standard/attachment.css']
%]
<br>
......
......@@ -31,7 +31,7 @@
[% PROCESS global/header.html.tmpl
title = title
style_urls = [ 'skins/standard/yui/autocomplete.css',
'skins/standard/create_attachment.css',
'skins/standard/attachment.css',
'skins/standard/yui/calendar.css' ]
javascript_urls = [ "js/yui/bz_autocomplete_bundle.js",
"js/attachment.js", "js/util.js", "js/yui/calendar.js",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment