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
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
12b3b674
Commit
12b3b674
authored
Jul 14, 2006
by
lpsolit%gmail.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 94534: Customised resolutions - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=myk
parent
8eadcd8a
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
268 additions
and
130 deletions
+268
-130
collectstats.pl
collectstats.pl
+134
-61
editvalues.cgi
editvalues.cgi
+46
-22
reports.cgi
reports.cgi
+3
-3
008filter.t
t/008filter.t
+1
-1
confirm-delete.html.tmpl
...ate/en/default/admin/fieldvalues/confirm-delete.html.tmpl
+2
-2
edit.html.tmpl
template/en/default/admin/fieldvalues/edit.html.tmpl
+9
-2
list.html.tmpl
template/en/default/admin/fieldvalues/list.html.tmpl
+30
-9
table.html.tmpl
template/en/default/bug/activity/table.html.tmpl
+2
-2
edit.html.tmpl
template/en/default/bug/edit.html.tmpl
+1
-1
knob.html.tmpl
template/en/default/bug/knob.html.tmpl
+2
-2
show-multiple.html.tmpl
template/en/default/bug/show-multiple.html.tmpl
+1
-1
whine.txt.tmpl
template/en/default/email/whine.txt.tmpl
+1
-1
field-descs.none.tmpl
template/en/default/global/field-descs.none.tmpl
+2
-0
user-error.html.tmpl
template/en/default/global/user-error.html.tmpl
+10
-0
edit-multiple.html.tmpl
template/en/default/list/edit-multiple.html.tmpl
+2
-2
table.html.tmpl
template/en/default/list/table.html.tmpl
+1
-1
fields.html.tmpl
template/en/default/pages/fields.html.tmpl
+6
-6
report-bar.png.tmpl
template/en/default/reports/report-bar.png.tmpl
+2
-2
report-line.png.tmpl
template/en/default/reports/report-line.png.tmpl
+2
-2
report-pie.png.tmpl
template/en/default/reports/report-pie.png.tmpl
+1
-1
report-table.csv.tmpl
template/en/default/reports/report-table.csv.tmpl
+2
-2
report-table.html.tmpl
template/en/default/reports/report-table.html.tmpl
+2
-2
form.html.tmpl
template/en/default/search/form.html.tmpl
+4
-3
mail.html.tmpl
template/en/default/whine/mail.html.tmpl
+1
-1
mail.txt.tmpl
template/en/default/whine/mail.txt.tmpl
+1
-1
No files found.
collectstats.pl
View file @
12b3b674
...
...
@@ -23,6 +23,7 @@
# Gervase Markham <gerv@gerv.net>
# Richard Walters <rwalters@qualcomm.com>
# Jean-Sebastien Guay <jean_seb@hybride.com>
# Frédéric Buclin <LpSolit@gmail.com>
# Run me out of cron at midnight to collect Bugzilla statistics.
#
...
...
@@ -41,6 +42,7 @@ use Bugzilla::Util;
use
Bugzilla::
Search
;
use
Bugzilla::
User
;
use
Bugzilla::
Product
;
use
Bugzilla::
Field
;
# Turn off output buffering (probably needed when displaying output feedback
# in the regenerate mode.)
...
...
@@ -55,7 +57,7 @@ if (chdir("graphs")) {
# Let Throw*Error() work correctly outside a web browser.
Bugzilla
->
batch
(
1
);
Bugzilla
->
switch_to_shadow_db
();
my
$dbh
=
Bugzilla
->
switch_to_shadow_db
();
# To recreate the daily statistics, run "collectstats.pl --regenerate" .
my
$regenerate
=
0
;
...
...
@@ -69,6 +71,39 @@ my $datadir = bz_locations()->{'datadir'};
my
@myproducts
=
map
{
$_
->
name
}
Bugzilla::Product::
get_all_products
();
unshift
(
@myproducts
,
"-All-"
);
# As we can now customize the list of resolutions, looking at the actual list
# of available resolutions only is not enough as some now removed resolutions
# may have existed in the past, or have been renamed. We want them all.
my
@resolutions
=
@
{
get_legal_field_values
(
'resolution'
)};
my
$old_resolutions
=
$dbh
->
selectcol_arrayref
(
'SELECT bugs_activity.added
FROM bugs_activity
INNER JOIN fielddefs
ON fielddefs.fieldid = bugs_activity.fieldid
LEFT JOIN resolution
ON resolution.value = bugs_activity.added
WHERE fielddefs.name = ?
AND resolution.id IS NULL
UNION
SELECT bugs_activity.removed
FROM bugs_activity
INNER JOIN fielddefs
ON fielddefs.fieldid = bugs_activity.fieldid
LEFT JOIN resolution
ON resolution.value = bugs_activity.removed
WHERE fielddefs.name = ?
AND resolution.id IS NULL'
,
undef
,
(
'resolution'
,
'resolution'
));
push
(
@resolutions
,
@$old_resolutions
);
# Exclude "" from the resolution list.
@resolutions
=
grep
{
$_
}
@resolutions
;
# Actually, the list of statuses is predefined. This will change in the near future.
my
@statuses
=
qw(NEW ASSIGNED REOPENED UNCONFIRMED RESOLVED VERIFIED CLOSED)
;
my
$tstart
=
time
;
foreach
(
@myproducts
)
{
my
$dir
=
"$datadir/mining"
;
...
...
@@ -143,56 +178,108 @@ sub collect_stats {
my
$file
=
join
'/'
,
$dir
,
$file_product
;
my
$exists
=
-
f
$file
;
if
(
open
DATA
,
">>$file"
)
{
push
(
my
@row
,
&
today
);
my
$status_sql
=
q{SELECT COUNT(*)
FROM bugs
WHERE bug_status = ?}
;
my
$reso_sql
=
q{SELECT COUNT(*)
FROM bugs
WHERE resolution = ?}
;
if
(
$product
ne
'-All-'
)
{
$status_sql
.=
q{ AND product_id = ?}
;
$reso_sql
.=
q{ AND product_id = ?}
;
}
my
$sth_status
=
$dbh
->
prepare
(
$status_sql
);
my
$sth_reso
=
$dbh
->
prepare
(
$reso_sql
);
my
@values
;
foreach
my
$status
(
'NEW'
,
'ASSIGNED'
,
'REOPENED'
,
'UNCONFIRMED'
,
'RESOLVED'
,
'VERIFIED'
,
'CLOSED'
)
{
@values
=
(
$status
);
push
(
@values
,
$product_id
)
if
(
$product
ne
'-All-'
);
my
$count
=
$dbh
->
selectrow_array
(
$sth_status
,
undef
,
@values
);
push
(
@row
,
$count
);
}
foreach
my
$resolution
(
'FIXED'
,
'INVALID'
,
'WONTFIX'
,
'LATER'
,
'REMIND'
,
'DUPLICATE'
,
'WORKSFORME'
,
'MOVED'
)
{
@values
=
(
$resolution
);
push
(
@values
,
$product_id
)
if
(
$product
ne
'-All-'
);
my
$count
=
$dbh
->
selectrow_array
(
$sth_reso
,
undef
,
@values
);
push
(
@row
,
$count
);
}
# if the file exists, get the old status and resolution list for that product.
my
@data
;
@data
=
get_old_data
(
$file
)
if
$exists
;
# If @data is not empty, then we have to recreate the data file.
if
(
scalar
(
@data
))
{
open
(
DATA
,
'>'
,
$file
)
||
ThrowCodeError
(
'chart_file_open_fail'
,
{
'filename'
=>
$file
});
}
else
{
open
(
DATA
,
'>>'
,
$file
)
||
ThrowCodeError
(
'chart_file_open_fail'
,
{
'filename'
=>
$file
});
}
# Now collect current data.
my
@row
=
(
today
());
my
$status_sql
=
q{SELECT COUNT(*) FROM bugs WHERE bug_status = ?}
;
my
$reso_sql
=
q{SELECT COUNT(*) FROM bugs WHERE resolution = ?}
;
if
(
$product
ne
'-All-'
)
{
$status_sql
.=
q{ AND product_id = ?}
;
$reso_sql
.=
q{ AND product_id = ?}
;
}
my
$sth_status
=
$dbh
->
prepare
(
$status_sql
);
my
$sth_reso
=
$dbh
->
prepare
(
$reso_sql
);
my
@values
;
foreach
my
$status
(
@statuses
)
{
@values
=
(
$status
);
push
(
@values
,
$product_id
)
if
(
$product
ne
'-All-'
);
my
$count
=
$dbh
->
selectrow_array
(
$sth_status
,
undef
,
@values
);
push
(
@row
,
$count
);
}
foreach
my
$resolution
(
@resolutions
)
{
@values
=
(
$resolution
);
push
(
@values
,
$product_id
)
if
(
$product
ne
'-All-'
);
my
$count
=
$dbh
->
selectrow_array
(
$sth_reso
,
undef
,
@values
);
push
(
@row
,
$count
);
}
if
(
!
$exists
)
{
print
DATA
<<FIN;
if
(
!
$exists
||
scalar
(
@data
))
{
my
$fields
=
join
(
'|'
,
(
'DATE'
,
@statuses
,
@resolutions
));
print
DATA
<<FIN;
# Bugzilla Daily Bug Stats
#
# Do not edit me! This file is generated.
#
# fields:
DATE|NEW|ASSIGNED|REOPENED|UNCONFIRMED|RESOLVED|VERIFIED|CLOSED|FIXED|INVALID|WONTFIX|LATER|REMIND|DUPLICATE|WORKSFORME|MOVED
# fields:
$fields
# Product: $product
# Created: $when
FIN
}
}
print
DATA
(
join
'|'
,
@row
)
.
"\n"
;
close
DATA
;
chmod
0644
,
$file
;
}
else
{
print
"$0: $file, $!"
;
# Add existing data, if needed. Note that no count is not treated
# the same way as a count with 0 bug.
foreach
my
$data
(
@data
)
{
print
DATA
join
(
'|'
,
map
{
defined
$data
->
{
$_
}
?
$data
->
{
$_
}
:
''
}
(
'DATE'
,
@statuses
,
@resolutions
))
.
"\n"
;
}
print
DATA
(
join
'|'
,
@row
)
.
"\n"
;
close
DATA
;
chmod
0644
,
$file
;
}
sub
get_old_data
{
my
$file
=
shift
;
open
(
DATA
,
'<'
,
$file
)
||
ThrowCodeError
(
'chart_file_open_fail'
,
{
'filename'
=>
$file
});
my
@data
;
my
@columns
;
my
$recreate
=
0
;
while
(
<
DATA
>
)
{
chomp
;
next
unless
$_
;
if
(
/^# fields?:\s*(.+)\s*$/
)
{
@columns
=
split
(
/\|/
,
$1
);
# Compare this list with @statuses and @resolutions.
# If they are identical, then we can safely append new data
# to the end of the file; else we have to recreate it.
$recreate
=
1
;
my
@new_cols
=
(
$columns
[
0
],
@statuses
,
@resolutions
);
if
(
scalar
(
@columns
)
==
scalar
(
@new_cols
))
{
my
(
$removed
,
$added
)
=
diff_arrays
(
\
@columns
,
\
@new_cols
);
last
if
(
!
scalar
(
@$removed
)
&&
!
scalar
(
@$added
));
}
}
next
unless
$recreate
;
next
if
(
/^#/
);
# Ignore comments.
# If we have to recreate the file, we have to load all existing
# data first.
my
@line
=
split
/\|/
;
my
%
data
;
foreach
my
$column
(
@columns
)
{
$data
{
$column
}
=
shift
@line
;
}
push
(
@data
,
\%
data
);
}
close
(
DATA
);
return
@data
;
}
sub
calculate_dupes
{
...
...
@@ -317,12 +404,13 @@ sub regenerate_stats {
if
(
open
DATA
,
">$file"
)
{
DATA
->
autoflush
(
1
);
my
$fields
=
join
(
'|'
,
(
'DATE'
,
@statuses
,
@resolutions
));
print
DATA
<<FIN;
# Bugzilla Daily Bug Stats
#
# Do not edit me! This file is generated.
#
# fields:
DATE|NEW|ASSIGNED|REOPENED|UNCONFIRMED|RESOLVED|VERIFIED|CLOSED|FIXED|INVALID|WONTFIX|LATER|REMIND|DUPLICATE|WORKSFORME|MOVED
# fields:
$fields
# Product: $product
# Created: $when
FIN
...
...
@@ -355,17 +443,8 @@ FIN
# the bugs_activity table for that bug made on or after that
# day.
my
%
bugcount
;
my
@logstates
=
qw(NEW ASSIGNED REOPENED UNCONFIRMED RESOLVED
VERIFIED CLOSED)
;
my
@logresolutions
=
qw(FIXED INVALID WONTFIX LATER REMIND
DUPLICATE WORKSFORME MOVED)
;
foreach
(
@logstates
)
{
$bugcount
{
$_
}
=
0
;
}
foreach
(
@logresolutions
)
{
$bugcount
{
$_
}
=
0
;
}
foreach
(
@statuses
)
{
$bugcount
{
$_
}
=
0
;
}
foreach
(
@resolutions
)
{
$bugcount
{
$_
}
=
0
;
}
# Get information on bug states and resolutions.
$query
=
qq{SELECT bugs_activity.removed
FROM bugs_activity
...
...
@@ -412,14 +491,8 @@ FIN
# of bugs in each state.
my
$date
=
sqlday
(
$day
,
$base
);
print
DATA
"$date"
;
foreach
(
@logstates
)
{
print
DATA
"|$bugcount{$_}"
;
}
foreach
(
@logresolutions
)
{
print
DATA
"|$bugcount{$_}"
;
}
foreach
(
@statuses
)
{
print
DATA
"|$bugcount{$_}"
;
}
foreach
(
@resolutions
)
{
print
DATA
"|$bugcount{$_}"
;
}
print
DATA
"\n"
;
}
...
...
editvalues.cgi
View file @
12b3b674
...
...
@@ -31,9 +31,9 @@ use Bugzilla::Config qw(:admin);
# (the old "enums.") Keep them in alphabetical order by their
# English name from field-descs.html.tmpl.
# Format: Array of valid field names.
# Admins may add
resolution and bug_status to this list, but they
# do so at their own risk.
our
@valid_fields
=
(
'op_sys'
,
'rep_platform'
,
'priority'
,
'bug_severity'
,
);
# Admins may add
bug_status to this list, but they do so at their own risk.
our
@valid_fields
=
(
'op_sys'
,
'rep_platform'
,
'priority'
,
'bug_severity'
,
'resolution'
);
######################################################################
# Subroutines
...
...
@@ -124,6 +124,11 @@ $defaults{'rep_platform'} = 'defaultplatform';
$defaults
{
'priority'
}
=
'defaultpriority'
;
$defaults
{
'bug_severity'
}
=
'defaultseverity'
;
# Alternatively, a list of non-editable values can be specified.
# In this case, only the sortkey can be altered.
my
%
static
;
$static
{
'resolution'
}
=
[
''
,
'FIXED'
,
'MOVED'
,
'DUPLICATE'
];
#
# field = '' -> Show nice list of fields
#
...
...
@@ -156,9 +161,9 @@ unless ($action) {
{
Slice
=>
{}});
$vars
->
{
'field'
}
=
$field
;
$vars
->
{
'values'
}
=
$fieldvalues
;
$vars
->
{
'default'
}
=
Bugzilla
->
params
->
{
$defaults
{
$field
}};
$
template
->
process
(
"admin/fieldvalues/list.html.tmpl"
,
$vars
)
$vars
->
{
'default'
}
=
Bugzilla
->
params
->
{
$defaults
{
$field
}}
if
defined
$defaults
{
$field
}
;
$
vars
->
{
'static'
}
=
$static
{
$field
}
if
exists
$static
{
$field
};
$template
->
process
(
"admin/fieldvalues/list.html.tmpl"
,
$vars
)
||
ThrowTemplateError
(
$template
->
error
());
exit
;
...
...
@@ -245,6 +250,12 @@ if ($action eq 'del') {
$vars
->
{
'value'
}
=
$value
;
$vars
->
{
'field'
}
=
$field
;
$vars
->
{
'param_name'
}
=
$defaults
{
$field
};
# If the value cannot be deleted, throw an error.
if
(
lsearch
(
$static
{
$field
},
$value
)
>=
0
)
{
ThrowUserError
(
'fieldvalue_not_deletable'
,
$vars
);
}
$template
->
process
(
"admin/fieldvalues/confirm-delete.html.tmpl"
,
$vars
)
||
ThrowTemplateError
(
$template
->
error
());
...
...
@@ -258,11 +269,21 @@ if ($action eq 'del') {
#
if
(
$action
eq
'delete'
)
{
ValueMustExist
(
$field
,
$value
);
if
(
$value
eq
Bugzilla
->
params
->
{
$defaults
{
$field
}})
{
ThrowUserError
(
'fieldvalue_is_default'
,
{
field
=>
$field
,
value
=>
$value
,
param_name
=>
$defaults
{
$field
}})
$vars
->
{
'value'
}
=
$value
;
$vars
->
{
'field'
}
=
$field
;
$vars
->
{
'param_name'
}
=
$defaults
{
$field
};
if
(
defined
$defaults
{
$field
}
&&
(
$value
eq
Bugzilla
->
params
->
{
$defaults
{
$field
}}))
{
ThrowUserError
(
'fieldvalue_is_default'
,
$vars
);
}
# If the value cannot be deleted, throw an error.
if
(
lsearch
(
$static
{
$field
},
$value
)
>=
0
)
{
ThrowUserError
(
'fieldvalue_not_deletable'
,
$vars
);
}
trick_taint
(
$field
);
trick_taint
(
$value
);
...
...
@@ -284,8 +305,6 @@ if ($action eq 'delete') {
$dbh
->
bz_unlock_tables
();
$vars
->
{
'value'
}
=
$value
;
$vars
->
{
'field'
}
=
$field
;
$template
->
process
(
"admin/fieldvalues/deleted.html.tmpl"
,
$vars
)
||
ThrowTemplateError
(
$template
->
error
());
...
...
@@ -307,9 +326,9 @@ if ($action eq 'edit') {
$vars
->
{
'value'
}
=
$value
;
$vars
->
{
'field'
}
=
$field
;
$vars
->
{
'is_static'
}
=
(
lsearch
(
$static
{
$field
},
$value
)
>=
0
)
?
1
:
0
;
$template
->
process
(
"admin/fieldvalues/edit.html.tmpl"
,
$vars
)
$template
->
process
(
"admin/fieldvalues/edit.html.tmpl"
,
$vars
)
||
ThrowTemplateError
(
$template
->
error
());
exit
;
...
...
@@ -327,9 +346,17 @@ if ($action eq 'update') {
trick_taint
(
$field
);
trick_taint
(
$valueold
);
$vars
->
{
'value'
}
=
$value
;
$vars
->
{
'field'
}
=
$field
;
# If the value cannot be renamed, throw an error.
if
(
lsearch
(
$static
{
$field
},
$valueold
)
>=
0
&&
$value
ne
$valueold
)
{
$vars
->
{
'old_value'
}
=
$valueold
;
ThrowUserError
(
'fieldvalue_not_editable'
,
$vars
);
}
if
(
length
(
$value
)
>
60
)
{
ThrowUserError
(
'fieldvalue_name_too_long'
,
{
'value'
=>
$value
});
ThrowUserError
(
'fieldvalue_name_too_long'
,
$vars
);
}
$dbh
->
bz_lock_tables
(
'bugs WRITE'
,
"$field WRITE"
);
...
...
@@ -359,9 +386,7 @@ if ($action eq 'update') {
ThrowUserError
(
'fieldvalue_undefined'
);
}
if
(
ValueExists
(
$field
,
$value
))
{
ThrowUserError
(
'fieldvalue_already_exists'
,
{
'value'
=>
$value
,
'field'
=>
$field
});
ThrowUserError
(
'fieldvalue_already_exists'
,
$vars
);
}
trick_taint
(
$value
);
...
...
@@ -380,7 +405,8 @@ if ($action eq 'update') {
# update data/params accordingly.
# This update is done while tables are unlocked due to the
# annoying calls in Bugzilla/Config/Common.pm.
if
(
$value
ne
$valueold
if
(
defined
$defaults
{
$field
}
&&
$value
ne
$valueold
&&
$valueold
eq
Bugzilla
->
params
->
{
$defaults
{
$field
}})
{
SetParam
(
$defaults
{
$field
},
$value
);
...
...
@@ -388,8 +414,6 @@ if ($action eq 'update') {
$vars
->
{
'default_value_updated'
}
=
1
;
}
$vars
->
{
'value'
}
=
$value
;
$vars
->
{
'field'
}
=
$field
;
$template
->
process
(
"admin/fieldvalues/updated.html.tmpl"
,
$vars
)
||
ThrowTemplateError
(
$template
->
error
());
...
...
reports.cgi
View file @
12b3b674
...
...
@@ -228,10 +228,10 @@ sub chart_image_name {
# is that we have to check the safety of doing this. We can't just require
# that the fields exist, because what stats were collected could change
# over time (eg by changing the resolutions available)
# Instead, just require that each field name consists only of letters
#
and number
# Instead, just require that each field name consists only of letters
,
#
numbers, underscores and hyphens.
if
(
$datasets
!~
m/^[A-Za-z0-9:]+$/
)
{
if
(
$datasets
!~
m/^[A-Za-z0-9:
_-
]+$/
)
{
$vars
->
{
'datasets'
}
=
$datasets
;
ThrowUserError
(
'invalid_datasets'
,
$vars
);
}
...
...
t/008filter.t
View file @
12b3b674
...
...
@@ -176,7 +176,7 @@ sub directive_ok {
return
1
if
$directive
=~
/^
(
IF
|
END
|
UNLESS
|
FOREACH
|
PROCESS
|
INCLUDE
|
BLOCK
|
USE
|
ELSE
|
NEXT
|
LAST
|
DEFAULT
|
FLUSH
|
ELSIF
|
SET
|
SWITCH
|
CASE
|
WHILE
|
RETURN
|
STOP
|
TRY
|
CATCH
|
FINAL
|
THROW
|
CLEAR
)
/
x
;
TRY
|
CATCH
|
FINAL
|
THROW
|
CLEAR
|
MACRO
)
/
x
;
# ? :
if
(
$directive
=~
/.+\?(.+):(.+)/
)
{
...
...
template/en/default/admin/fieldvalues/confirm-delete.html.tmpl
View file @
12b3b674
...
...
@@ -61,13 +61,13 @@
<h2>Confirmation</h2>
[% IF (Param(param_name) == value) || bug_count || (value_count == 1) %]
[% IF (
param_name.defined &&
Param(param_name) == value) || bug_count || (value_count == 1) %]
<p>Sorry, but the '[% value FILTER html %]' value cannot be deleted
from the '[% field FILTER html %]' field for the following reason(s):</p>
<ul class="warningmessages">
[% IF Param(param_name) == value %]
[% IF
param_name.defined &&
Param(param_name) == value %]
<li>'[% value FILTER html %]' is the default value for
the '[% field FILTER html %]' field.
[% IF user.groups.tweakparams %]
...
...
template/en/default/admin/fieldvalues/edit.html.tmpl
View file @
12b3b674
...
...
@@ -33,8 +33,15 @@
<tr>
<th valign="top"><label for="value">Field Value:</label></th>
<td><input id="value" size="20" maxlength="60" name="value" value="
[%- value FILTER html %]"></td>
<td>
[% IF is_static %]
<input type="hidden" name="value" value="[% value FILTER html %]">
[% value FILTER html %]
[% ELSE %]
<input id="value" size="20" maxlength="60" name="value" value="
[%- value FILTER html %]">
[% END %]
</td>
</tr>
<tr>
<th align="right"><label for="sortkey">Sortkey:</label></th>
...
...
template/en/default/admin/fieldvalues/list.html.tmpl
View file @
12b3b674
...
...
@@ -21,6 +21,7 @@
# displayed to the user in a list.
#
# field: string; the name of the field we are editing values for.
# static: array; list of values which cannot be renamed nor deleted.
#%]
[% USE Bugzilla %]
...
...
@@ -58,15 +59,35 @@
} ]
%]
[% overrides.action = [ {
match_value => "$default"
match_field => 'name'
override_content => 1
content => "(Default value)"
override_contentlink => 1
contentlink => undef
} ]
%]
[% IF default.defined %]
[% overrides.action = [ {
match_value => "$default"
match_field => 'name'
override_content => 1
content => "(Default value)"
override_contentlink => 1
contentlink => undef
} ]
%]
[% END %]
[% IF static.size %]
[% UNLESS overrides.action.size %]
[% overrides.action = [] %]
[% END %]
[% FOREACH static_value = static %]
[% overrides.action.push({
match_value => "$static_value"
match_field => 'name'
override_content => 1
content => "(Non deletable value)"
override_contentlink => 1
contentlink => undef
})
%]
[% END %]
[% END %]
[% PROCESS admin/table.html.tmpl
columns = columns
...
...
template/en/default/bug/activity/table.html.tmpl
View file @
12b3b674
...
...
@@ -85,7 +85,7 @@
[% ELSIF change.fieldname == 'bug_status' %]
[% status_descs.${change.removed} FILTER html %]
[% ELSIF change.fieldname == 'resolution' %]
[%
resolution_descs.${change.removed}
FILTER html %]
[%
get_resolution(change.removed)
FILTER html %]
[% ELSIF change.fieldname == 'blocked' ||
change.fieldname == 'dependson' %]
[% change.removed FILTER bug_list_link FILTER none %]
...
...
@@ -105,7 +105,7 @@
[% ELSIF change.fieldname == 'bug_status' %]
[% status_descs.${change.added} FILTER html %]
[% ELSIF change.fieldname == 'resolution' %]
[%
resolution_descs.${change.added}
FILTER html %]
[%
get_resolution(change.added)
FILTER html %]
[% ELSIF change.fieldname == 'blocked' ||
change.fieldname == 'dependson' %]
[% change.added FILTER bug_list_link FILTER none %]
...
...
template/en/default/bug/edit.html.tmpl
View file @
12b3b674
...
...
@@ -198,7 +198,7 @@
</b>
</td>
<td>
[%
resolution_descs.${bug.resolution}
FILTER html %]
[%
get_resolution(bug.resolution)
FILTER html %]
[% IF bug.resolution == "DUPLICATE" %]
of [% terms.bug %] [%+ "${bug.dup_id}" FILTER bug_link(bug.dup_id) %]
[% END %]
...
...
template/en/default/bug/knob.html.tmpl
View file @
12b3b674
...
...
@@ -28,7 +28,7 @@
<input type="radio" id="knob-leave" name="knob" value="none" checked="checked">
<label for="knob-leave">
Leave as <b>[% status_descs.${bug.bug_status} FILTER html %]
[%
resolution_descs.${bug.resolution}
FILTER html %]</b>
[%
get_resolution(bug.resolution)
FILTER html %]</b>
</label>
<br>
...
...
@@ -185,7 +185,7 @@
<select name="resolution"
onchange="document.changeform.knob[[% knum %]].checked=true">
[% FOREACH r = bug.choices.resolution %]
<option value="[% r FILTER html %]">[%
resolution_descs.${r}
FILTER html %]</option>
<option value="[% r FILTER html %]">[%
get_resolution(r)
FILTER html %]</option>
[% END %]
</select>
<br>
...
...
template/en/default/bug/show-multiple.html.tmpl
View file @
12b3b674
...
...
@@ -117,7 +117,7 @@
<th>[% field_descs.bug_status FILTER html %]:</th>
<td>
[% status_descs.${bug.bug_status} FILTER html %]
[%+
resolution_descs.${bug.resolution}
FILTER html %]
[%+
get_resolution(bug.resolution)
FILTER html %]
</td>
[% PROCESS rightcell %]
...
...
template/en/default/email/whine.txt.tmpl
View file @
12b3b674
...
...
@@ -37,7 +37,7 @@ You need to take a look at them, and decide on an initial action.
Generally, this means one of three things:
(1) You decide this [% terms.bug %] is really quick to deal with (like, it's [%
resolution_descs.INVALID
%]),
(1) You decide this [% terms.bug %] is really quick to deal with (like, it's [%
get_resolution("INVALID")
%]),
and so you get rid of it immediately.
(2) You decide the [% terms.bug %] doesn't belong to you, and you reassign it to
someone else. (Hint: if you don't know who to reassign it to, make
...
...
template/en/default/global/field-descs.none.tmpl
View file @
12b3b674
...
...
@@ -88,4 +88,6 @@
"---" => "---",
" " => " " } %]
[% MACRO get_resolution(res) GET resolution_descs.$res || res %]
[% Hook.process("end") %]
template/en/default/global/user-error.html.tmpl
View file @
12b3b674
...
...
@@ -396,6 +396,16 @@
The value of a field is limited to 60 characters.
'[% value FILTER html %]' is too long ([% value.length %] characters).
[% ELSIF error == "fieldvalue_not_editable" %]
[% title = "Field Value Not Editable" %]
The value '[% old_value FILTER html %]' cannot be renamed because
it plays some special role for the '[% field FILTER html %]' field.
[% ELSIF error == "fieldvalue_not_deletable" %]
[% title = "Field Value Not Deletable" %]
The value '[% value FILTER html %]' cannot be removed because
it plays some special role for the '[% field FILTER html %]' field.
[% ELSIF error == "fieldvalue_not_specified" %]
[% title = "Field Value Not Specified" %]
No field value specified when trying to edit a field value.
...
...
template/en/default/list/edit-multiple.html.tmpl
View file @
12b3b674
...
...
@@ -300,8 +300,8 @@
<select name="resolution" onchange="document.forms.changeform.knob[[% knum %]].checked=true">
[% FOREACH resolution = resolutions %]
[% NEXT IF !resolution %]
<option value="[% resolution FILTER html %]"
[% 'selected="selected"' IF resolution == "FIXED" %]
>
[%
resolution_descs.$resolution
FILTER html %]
<option value="[% resolution FILTER html %]">
[%
get_resolution(resolution)
FILTER html %]
</option>
[% END %]
</select><br>
...
...
template/en/default/list/table.html.tmpl
View file @
12b3b674
...
...
@@ -193,7 +193,7 @@
[% ELSIF column == 'bug_status' %]
[%- status_descs.${bug.$column}.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html %]
[% ELSIF column == 'resolution' %]
[%-
resolution_descs.${bug.$column}
.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html %]
[%-
get_resolution(bug.$column)
.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html %]
[% ELSE %]
[%- bug.$column.truncate(abbrev.$column.maxlength, abbrev.$column.ellipsis) FILTER html -%]
[% END %]
...
...
template/en/default/pages/fields.html.tmpl
View file @
12b3b674
...
...
@@ -148,7 +148,7 @@ cycle of [% terms.abug %].
<td>
<dl>
<dt>
<b>[%
resolution_descs.FIXED
FILTER html %]</b>
<b>[%
get_resolution("FIXED")
FILTER html %]</b>
</dt>
<dd>
A fix for this [% terms.bug %] is checked into the tree and
...
...
@@ -156,14 +156,14 @@ cycle of [% terms.abug %].
</dd>
<dt>
<b>[%
resolution_descs.INVALID
FILTER html %]</b>
<b>[%
get_resolution("INVALID")
FILTER html %]</b>
</dt>
<dd>
The problem described is not [% terms.abug %].
</dd>
<dt>
<b>[%
resolution_descs.WONTFIX
FILTER html %]</b>
<b>[%
get_resolution("WONTFIX")
FILTER html %]</b>
</dt>
<dd>
The problem described is [% terms.abug %] which will never be
...
...
@@ -171,7 +171,7 @@ cycle of [% terms.abug %].
</dd>
<dt>
<b>[%
resolution_descs.DUPLICATE
FILTER html %]</b>
<b>[%
get_resolution("DUPLICATE")
FILTER html %]</b>
</dt>
<dd>
The problem is a duplicate of an existing [% terms.bug %].
...
...
@@ -181,7 +181,7 @@ cycle of [% terms.abug %].
</dd>
<dt>
<b>[%
resolution_descs.WORKSFORME
FILTER html %]</b>
<b>[%
get_resolution("WORKSFORME")
FILTER html %]</b>
</dt>
<dd>
All attempts at reproducing this [% terms.bug %] were futile,
...
...
@@ -191,7 +191,7 @@ cycle of [% terms.abug %].
</dd>
<dt>
<b>[%
resolution_descs.MOVED
FILTER html %]</b>
<b>[%
get_resolution("MOVED")
FILTER html %]</b>
</dt>
<dd>
The problem was specific to a related product
...
...
template/en/default/reports/report-bar.png.tmpl
View file @
12b3b674
...
...
@@ -35,7 +35,7 @@
[% IF col_field == 'resolution' %]
[% FOR i IN [ 0 .. data.0.0.max ] %]
[% data.0.0.$i =
resolution_descs.${data.0.0.$i}
%]
[% data.0.0.$i =
get_resolution(data.0.0.$i)
%]
[% END %]
[% END %]
...
...
@@ -47,7 +47,7 @@
[% IF row_field == 'resolution' %]
[% FOR i IN [ 0 .. row_names.max ] %]
[% row_names.$i =
resolution_descs.${row_names.$i}
%]
[% row_names.$i =
get_resolution(row_names.$i)
%]
[% END %]
[% END %]
...
...
template/en/default/reports/report-line.png.tmpl
View file @
12b3b674
...
...
@@ -35,7 +35,7 @@
[% IF col_field == 'resolution' %]
[% FOR i IN [ 0 .. data.0.0.max ] %]
[% data.0.0.$i =
resolution_descs.${data.0.0.$i}
%]
[% data.0.0.$i =
get_resolution(data.0.0.$i)
%]
[% END %]
[% END %]
...
...
@@ -47,7 +47,7 @@
[% IF row_field == 'resolution' %]
[% FOR i IN [ 0 .. row_names.max ] %]
[% row_names.$i =
resolution_descs.${row_names.$i}
%]
[% row_names.$i =
get_resolution(row_names.$i)
%]
[% END %]
[% END %]
...
...
template/en/default/reports/report-pie.png.tmpl
View file @
12b3b674
...
...
@@ -31,7 +31,7 @@
[% IF col_field == 'resolution' %]
[% FOR i IN [ 0 .. data.0.0.max ] %]
[% data.0.0.$i =
resolution_descs.${data.0.0.$i}
%]
[% data.0.0.$i =
get_resolution(data.0.0.$i)
%]
[% END %]
[% END %]
...
...
template/en/default/reports/report-table.csv.tmpl
View file @
12b3b674
...
...
@@ -44,7 +44,7 @@
[% IF col_field == 'bug_status' %]
[% status_descs.$col FILTER csv -%]
[% ELSIF col_field == 'resolution' %]
[%
resolution_descs.$col
FILTER csv -%]
[%
get_resolution(col)
FILTER csv -%]
[% ELSE %]
[% col FILTER csv -%]
[% END %]
...
...
@@ -57,7 +57,7 @@
[% IF row_field == 'bug_status' %]
[% status_descs.$row FILTER csv -%]
[% ELSIF row_field == 'resolution' %]
[%
resolution_descs.$row
FILTER csv -%]
[%
get_resolution(row)
FILTER csv -%]
[% ELSE %]
[% row FILTER csv -%]
[% END %]
...
...
template/en/default/reports/report-table.html.tmpl
View file @
12b3b674
...
...
@@ -88,7 +88,7 @@
[% IF col_field == 'bug_status' %]
[% status_descs.$col FILTER html FILTER replace('^ $',' ') %]
[% ELSIF col_field == 'resolution' %]
[%
resolution_descs.$col
FILTER html FILTER replace('^ $',' ') %]
[%
get_resolution(col)
FILTER html FILTER replace('^ $',' ') %]
[% ELSE %]
[% col FILTER html FILTER replace('^ $',' ') %]
[% END %]
...
...
@@ -109,7 +109,7 @@
[% IF row_field == 'bug_status' %]
[% status_descs.$row FILTER html FILTER replace('^ $',' ') %]
[% ELSIF row_field == 'resolution' %]
[%
resolution_descs.$row
FILTER html FILTER replace('^ $',' ') %]
[%
get_resolution(row)
FILTER html FILTER replace('^ $',' ') %]
[% ELSE %]
[% row FILTER html FILTER replace('^ $',' ') %]
[% END %]
...
...
template/en/default/search/form.html.tmpl
View file @
12b3b674
...
...
@@ -628,12 +628,13 @@ function doOnSelectProduct(selectmode) {
<option value="[% name FILTER html %]"
[% " selected" IF lsearch(default.${sel.name}, name) != -1 %]>
[% IF sel.name == "bug_status" %]
[% status_descs.${name} FILTER html %]
</option>
[% status_descs.${name} FILTER html %]
[% ELSIF sel.name == "resolution" %]
[%
resolution_descs.${name} FILTER html %]</option>
[%
get_resolution(name) FILTER html %]
[% ELSE %]
[% name FILTER html %]
</option>
[% name FILTER html %]
[% END %]
</option>
[% END %]
</select>
</td>
...
...
template/en/default/whine/mail.html.tmpl
View file @
12b3b674
...
...
@@ -84,7 +84,7 @@
<td
align=
"left"
>
[% bug.rep_platform FILTER html %]
</td>
<td
align=
"left"
>
[% bug.$assignee_login_string FILTER html %]
</td>
<td
align=
"left"
>
[% status_descs.${bug.bug_status} FILTER html %]
</td>
<td
align=
"left"
>
[%
resolution_descs.${bug.resolution}
FILTER html %]
</td>
<td
align=
"left"
>
[%
get_resolution(bug.resolution)
FILTER html %]
</td>
<td
align=
"left"
>
[% bug.short_desc FILTER html %]
</td>
</tr>
[% END %]
...
...
template/en/default/whine/mail.txt.tmpl
View file @
12b3b674
...
...
@@ -59,7 +59,7 @@
Platform: [%+ bug.rep_platform %]
Assignee: [%+ bug.$assignee_login_string %]
Status: [%+ status_descs.${bug.bug_status} %]
[%- IF bug.resolution -%] Resolution: [%
resolution_descs.${bug.resolution}
-%]
[%- IF bug.resolution -%] Resolution: [%
get_resolution(bug.resolution)
-%]
[%- END %]
Summary: [% bug.short_desc %]
...
...
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