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
c4b39497
Commit
c4b39497
authored
Feb 01, 2005
by
travis%sedsystems.ca
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 81642 : "Split bug / Clone bug": Enter new bug with prefilled fields
Patch by Shane H. W. Travis <travis@sedsystems.ca> r=jouni a=justdave
parent
f2152e3a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
132 additions
and
35 deletions
+132
-35
enter_bug.cgi
enter_bug.cgi
+121
-34
create.html.tmpl
template/en/default/bug/create/create.html.tmpl
+7
-1
knob.html.tmpl
template/en/default/bug/knob.html.tmpl
+2
-0
filterexceptions.pl
template/en/default/filterexceptions.pl
+1
-0
choose-product.html.tmpl
template/en/default/global/choose-product.html.tmpl
+1
-0
No files found.
enter_bug.cgi
View file @
c4b39497
...
...
@@ -21,6 +21,7 @@
# Dave Miller <justdave@syndicomm.com>
# Joe Robins <jmrobins@tgix.com>
# Gervase Markham <gerv@gerv.net>
# Shane H. W. Travis <travis@sedsystems.ca>
##############################################################################
#
...
...
@@ -38,6 +39,7 @@ use lib qw(.);
use
Bugzilla
;
use
Bugzilla::
Constants
;
use
Bugzilla::
Bug
;
require
"CGI.pl"
;
use
vars
qw(
...
...
@@ -60,6 +62,9 @@ use vars qw(
# user is right from the start.
Bugzilla
->
login
(
LOGIN_REQUIRED
)
if
AnyEntryGroups
();
my
$cloned_bug
;
my
$cloned_bug_id
;
my
$cgi
=
Bugzilla
->
cgi
;
my
$product
=
$cgi
->
param
(
'product'
);
...
...
@@ -133,6 +138,8 @@ if (!defined $product) {
$vars
->
{
'target'
}
=
"enter_bug.cgi"
;
$vars
->
{
'format'
}
=
$cgi
->
param
(
'format'
);
$vars
->
{
'cloned_bug_id'
}
=
$cgi
->
param
(
'cloned_bug_id'
);
print
$cgi
->
header
();
$template
->
process
(
"global/choose-product.html.tmpl"
,
$vars
)
...
...
@@ -271,6 +278,16 @@ sub pickos {
Bugzilla
->
login
(
LOGIN_REQUIRED
)
if
(
!
(
AnyEntryGroups
()));
# If a user is trying to clone a bug
# Check that the user has authorization to view the parent bug
# Create an instance of Bug that holds the info from the parent
$cloned_bug_id
=
$cgi
->
param
(
'cloned_bug_id'
);
if
(
$cloned_bug_id
)
{
ValidateBugID
(
$cloned_bug_id
);
$cloned_bug
=
new
Bugzilla::
Bug
(
$cloned_bug_id
,
$userid
);
}
# We need to check and make sure
# that the user has permission to enter a bug against this product.
if
(
!
CanEnterProduct
(
$product
))
...
...
@@ -313,46 +330,106 @@ while (MoreSQLData()) {
my
%
default
;
$vars
->
{
'component_'
}
=
\
@components
;
$default
{
'component_'
}
=
formvalue
(
'component'
);
$vars
->
{
'product'
}
=
$product
;
$vars
->
{
'component_'
}
=
\
@components
;
$vars
->
{
'priority'
}
=
\
@legal_priority
;
$vars
->
{
'bug_severity'
}
=
\
@legal_severity
;
$vars
->
{
'rep_platform'
}
=
\
@legal_platform
;
$vars
->
{
'op_sys'
}
=
\
@legal_opsys
;
$vars
->
{
'use_keywords'
}
=
1
if
(
@::legal_keywords
);
$vars
->
{
'assigned_to'
}
=
formvalue
(
'assigned_to'
);
$vars
->
{
'assigned_to_disabled'
}
=
!
UserInGroup
(
'editbugs'
);
$vars
->
{
'assigned_to'
}
=
formvalue
(
'assigned_to'
);
$vars
->
{
'assigned_to_disabled'
}
=
!
UserInGroup
(
'editbugs'
);
$vars
->
{
'cc_disabled'
}
=
0
;
$vars
->
{
'cc'
}
=
formvalue
(
'cc'
);
$vars
->
{
'cc_disabled'
}
=
0
;
$vars
->
{
'cloned_bug_id'
}
=
$cloned_bug_id
;
$vars
->
{
'product'
}
=
$product
;
$vars
->
{
'bug_file_loc'
}
=
formvalue
(
'bug_file_loc'
,
"http://"
);
$vars
->
{
'short_desc'
}
=
formvalue
(
'short_desc'
);
$vars
->
{
'comment'
}
=
formvalue
(
'comment'
);
if
(
$cloned_bug_id
)
{
$vars
->
{
'priority'
}
=
\
@legal_priority
;
$default
{
'priority'
}
=
formvalue
(
'priority'
,
Param
(
'defaultpriority'
));
$default
{
'component_'
}
=
$cloned_bug
->
{
'component'
};
$default
{
'priority'
}
=
$cloned_bug
->
{
'priority'
};
$default
{
'bug_severity'
}
=
$cloned_bug
->
{
'bug_severity'
};
$default
{
'rep_platform'
}
=
$cloned_bug
->
{
'rep_platform'
};
$default
{
'op_sys'
}
=
$cloned_bug
->
{
'op_sys'
};
$vars
->
{
'bug_severity'
}
=
\
@legal_severity
;
$default
{
'bug_severity'
}
=
formvalue
(
'bug_severity'
,
Param
(
'defaultseverity'
));
$vars
->
{
'short_desc'
}
=
$cloned_bug
->
{
'short_desc'
};
$vars
->
{
'bug_file_loc'
}
=
$cloned_bug
->
{
'bug_file_loc'
};
$vars
->
{
'keywords'
}
=
$cloned_bug
->
{
'keywords'
};
$vars
->
{
'dependson'
}
=
$cloned_bug_id
;
$vars
->
{
'blocked'
}
=
""
;
$vars
->
{
'rep_platform'
}
=
\
@legal_platform
;
$default
{
'rep_platform'
}
=
pickplatform
();
if
(
exists
$cloned_bug
->
{
'cc'
})
{
$vars
->
{
'cc'
}
=
join
(
" "
,
@
{
$cloned_bug
->
{
'cc'
}});
}
else
{
$vars
->
{
'cc'
}
=
formvalue
(
'cc'
);
}
# We need to ensure that we respect the 'insider' status of
# the first comment, if it has one. Either way, make a note
# that this bug was cloned from another bug.
$cloned_bug
->
longdescs
();
my
$isprivate
=
$cloned_bug
->
{
'longdescs'
}
->
[
0
]
->
{
'isprivate'
};
$vars
->
{
'comment'
}
=
""
;
$vars
->
{
'commentprivacy'
}
=
0
;
if
(
!
(
$isprivate
)
||
(
(
Param
(
"insidergroup"
)
)
&&
(
UserInGroup
(
Param
(
"insidergroup"
))
)
)
)
{
$vars
->
{
'comment'
}
=
$cloned_bug
->
{
'longdescs'
}
->
[
0
]
->
{
'body'
};
$vars
->
{
'commentprivacy'
}
=
$isprivate
;
}
$vars
->
{
'op_sys'
}
=
\
@legal_opsys
;
$default
{
'op_sys'
}
=
picko
s
();
# Ensure that the groupset information is set up for later use.
$cloned_bug
->
group
s
();
$vars
->
{
'keywords'
}
=
formvalue
(
'keywords'
);
$vars
->
{
'dependson'
}
=
formvalue
(
'dependson'
);
$vars
->
{
'blocked'
}
=
formvalue
(
'blocked'
);
}
# end of cloned bug entry form
$vars
->
{
'commentprivacy'
}
=
formvalue
(
'commentprivacy'
);
else
{
# Use the version specified in the URL, if one is supplied. If not,
# then use the cookie-specified value. (Posting a bug sets a cookie
# for the current version.) If no URL or cookie version, the default
# version is the last one in the list (hopefully the latest one).
$default
{
'component_'
}
=
formvalue
(
'component'
);
$default
{
'priority'
}
=
formvalue
(
'priority'
,
Param
(
'defaultpriority'
));
$default
{
'bug_severity'
}
=
formvalue
(
'bug_severity'
,
Param
(
'defaultseverity'
));
$default
{
'rep_platform'
}
=
pickplatform
();
$default
{
'op_sys'
}
=
pickos
();
$vars
->
{
'short_desc'
}
=
formvalue
(
'short_desc'
);
$vars
->
{
'bug_file_loc'
}
=
formvalue
(
'bug_file_loc'
,
"http://"
);
$vars
->
{
'keywords'
}
=
formvalue
(
'keywords'
);
$vars
->
{
'dependson'
}
=
formvalue
(
'dependson'
);
$vars
->
{
'blocked'
}
=
formvalue
(
'blocked'
);
$vars
->
{
'cc'
}
=
formvalue
(
'cc'
);
$vars
->
{
'comment'
}
=
formvalue
(
'comment'
);
$vars
->
{
'commentprivacy'
}
=
formvalue
(
'commentprivacy'
);
}
# end of normal/bookmarked entry form
# IF this is a cloned bug,
# AND the clone's product is the same as the parent's
# THEN use the version from the parent bug
# ELSE IF a version is supplied in the URL
# THEN use it
# ELSE IF there is a version in the cookie
# THEN use it (Posting a bug sets a cookie for the current version.)
# ELSE
# The default version is the last one in the list (which, it is
# hoped, will be the most recent one).
#
# Eventually maybe each product should have a "current version"
# parameter.
$vars
->
{
'version'
}
=
$::versions
{
$product
}
||
[]
;
if
(
formvalue
(
'version'
))
{
if
(
(
$cloned_bug_id
)
&&
(
"$product"
eq
"$cloned_bug->{'product'}"
)
)
{
$default
{
'version'
}
=
$cloned_bug
->
{
'version'
};
}
elsif
(
formvalue
(
'version'
))
{
$default
{
'version'
}
=
formvalue
(
'version'
);
}
elsif
(
defined
$cgi
->
cookie
(
"VERSION-$product"
)
&&
lsearch
(
$vars
->
{
'version'
},
$cgi
->
cookie
(
"VERSION-$product"
))
!=
-
1
)
{
...
...
@@ -414,11 +491,23 @@ while (MoreSQLData()) {
);
my
$check
;
# If this is the group for this product, make it checked.
if
(
formvalue
(
"maketemplate"
)
ne
""
)
{
# If this is a bookmarked template, then we only want to set the
# bit for those bits set in the template.
# If this is a cloned bug,
# AND the product for this bug is the same as for the original
# THEN set a group's checkbox if the original also had it on
# ELSE IF this is a bookmarked template
# THEN set a group's checkbox if was set in the bookmark
# ELSE
# set a groups's checkbox based on the group control map
#
if
(
(
$cloned_bug_id
)
&&
(
"$product"
eq
"$cloned_bug->{'product'}"
)
)
{
foreach
my
$i
(
0
..
(
@
{
$cloned_bug
->
{
'groups'
}}
-
1
)
)
{
if
(
$cloned_bug
->
{
'groups'
}
->
[
$i
]
->
{
'bit'
}
==
$id
)
{
$check
=
$cloned_bug
->
{
'groups'
}
->
[
$i
]
->
{
'ison'
};
}
}
}
elsif
(
formvalue
(
"maketemplate"
)
ne
""
)
{
$check
=
formvalue
(
"bit-$id"
,
0
);
}
else
{
...
...
@@ -442,8 +531,6 @@ $vars->{'group'} = \@groups;
$vars
->
{
'default'
}
=
\%
default
;
$vars
->
{
'use_keywords'
}
=
1
if
(
@::legal_keywords
);
my
$format
=
GetFormat
(
"bug/create/create"
,
scalar
$cgi
->
param
(
'format'
),
scalar
$cgi
->
param
(
'ctype'
));
...
...
template/en/default/bug/create/create.html.tmpl
View file @
c4b39497
...
...
@@ -252,7 +252,13 @@ function set_assign_to() {
<tr><td align="right" valign="top"><strong>Description:</strong></td>
<td colspan="3">
<textarea wrap="hard" name="comment" rows="10" cols="80">
[% comment FILTER html %]</textarea>
[% IF cloned_bug_id %]
+++ This [% terms.bug %] was initially created as a clone of [% terms.Bug %] #[% cloned_bug_id %] +++
[% END %]
[% comment FILTER html %]
</textarea>
<br>
</td>
</tr>
...
...
template/en/default/bug/knob.html.tmpl
View file @
c4b39497
...
...
@@ -169,6 +169,8 @@
<a href="show_activity.cgi?id=[% bug.bug_id %]">View [% terms.Bug %] Activity</a>
|
<a href="show_bug.cgi?format=multiple&id=[% bug.bug_id %]">Format For Printing</a>
|
<a href="enter_bug.cgi?cloned_bug_id=[% bug.bug_id %]">Clone This [% terms.Bug %]</a>
</b>
</font>
...
...
template/en/default/filterexceptions.pl
View file @
c4b39497
...
...
@@ -418,6 +418,7 @@
'g.description'
,
'sel.name'
,
'sel.description'
,
'cloned_bug_id'
],
'bug/create/create-guided.html.tmpl'
=>
[
...
...
template/en/default/global/choose-product.html.tmpl
View file @
c4b39497
...
...
@@ -43,6 +43,7 @@
<tr>
<th align="right" valign="top">
<a href="[% target %]?product=[% p FILTER url_quote %]
[% IF cloned_bug_id %]&cloned_bug_id=[% cloned_bug_id FILTER url_quote %][% END %]
[% IF format %]&format=[% format FILTER url_quote %][% END %]">
[% p FILTER html %]</a>:
</th>
...
...
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