Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ivan Ivlev
bugzilla
Commits
2df35fc7
Commit
2df35fc7
authored
Mar 02, 2010
by
Guy Pyrzak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
101770
parent
8d0710ac
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
301 additions
and
167 deletions
+301
-167
attachment.js
js/attachment.js
+17
-5
attachment.css
skins/standard/attachment.css
+103
-6
create.html.tmpl
template/en/default/attachment/create.html.tmpl
+1
-1
diff-header.html.tmpl
template/en/default/attachment/diff-header.html.tmpl
+2
-2
edit.html.tmpl
template/en/default/attachment/edit.html.tmpl
+176
-151
show-multiple.html.tmpl
template/en/default/attachment/show-multiple.html.tmpl
+1
-1
create.html.tmpl
template/en/default/bug/create/create.html.tmpl
+1
-1
No files found.
js/attachment.js
View file @
2df35fc7
...
...
@@ -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'
);
}
}
skins/standard/
create_
attachment.css
→
skins/standard/attachment.css
View file @
2df35fc7
...
...
@@ -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
template/en/default/attachment/create.html.tmpl
View file @
2df35fc7
...
...
@@ -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"
%]
...
...
template/en/default/attachment/diff-header.html.tmpl
View file @
2df35fc7
...
...
@@ -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 %]"
>
...
...
template/en/default/attachment/edit.html.tmpl
View file @
2df35fc7
...
...
@@ -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>
[% 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 %]
...
[% 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 %]
...
[% 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 %]
template/en/default/attachment/show-multiple.html.tmpl
View file @
2df35fc7
...
...
@@ -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>
...
...
template/en/default/bug/create/create.html.tmpl
View file @
2df35fc7
...
...
@@ -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",
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment