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
57f2b020
Commit
57f2b020
authored
Apr 05, 2002
by
gerv%gerv.net
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 124920 - Templatise post_bug.cgi. Patch by gerv, r=myk, bbaetz.
parent
6b54434e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
187 additions
and
110 deletions
+187
-110
post_bug.cgi
post_bug.cgi
+107
-110
create-template.html.tmpl
template/default/entry/create-template.html.tmpl
+33
-0
post-bug.html.tmpl
template/default/entry/post-bug.html.tmpl
+47
-0
No files found.
post_bug.cgi
View file @
57f2b020
...
...
@@ -21,17 +21,16 @@
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Dan Mosedale <dmose@mozilla.org>
# Joe Robins <jmrobins@tgix.com>
# Gervase Markham <gerv@gerv.net>
use
diagnostics
;
use
strict
;
use
lib
qw(.)
;
require
"CGI.pl"
;
# Shut up misguided -w warnings about "used only once".
For some reason,
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
sub
sillyness
{
my
$zz
;
$zz
=
$::buffer
;
...
...
@@ -47,60 +46,70 @@ sub sillyness {
$zz
=
%::
target_milestone
;
}
# Use global template variables.
use
vars
qw($vars $template)
;
confirm_login
();
ValidateComment
(
$::FORM
{
'comment'
});
my
$cookiepath
=
Param
(
"cookiepath"
);
print
"Set-Cookie: PLATFORM=$::FORM{'product'} ; path=$cookiepath ; expires=Sun, 30-Jun-2029 00:00:00 GMT\n"
if
(
exists
$::FORM
{
'product'
}
);
print
"Set-Cookie: VERSION-$::FORM{'product'}=$::FORM{'version'} ; path=$cookiepath ; expires=Sun, 30-Jun-2029 00:00:00 GMT\n"
if
(
exists
$::FORM
{
'product'
}
&&
exists
$::FORM
{
'version'
}
);
my
$product
=
$::FORM
{
'product'
};
print
"Content-type: text/html\n\n"
;
# Set cookies
my
$cookiepath
=
Param
(
"cookiepath"
);
if
(
exists
$::FORM
{
'product'
})
{
print
"Set-Cookie: PLATFORM=$product ; path=$cookiepath ; \
expires=Sun, 30-Jun-2029 00:00:00 GMT\n"
;
if
(
exists
$::FORM
{
'version'
})
{
print
"Set-Cookie: VERSION-$product=$::FORM{'version'} ; \
path=$cookiepath ; expires=Sun, 30-Jun-2029 00:00:00 GMT\n"
;
}
}
if
(
defined
$::FORM
{
'maketemplate'
})
{
print
"<TITLE>Bookmarks are your friend.</TITLE>\n"
;
print
"<H1>Template constructed.</H1>\n"
;
$vars
->
{
'url'
}
=
$::buffer
;
my
$url
=
"enter_bug.cgi?$::buffer"
;
print
"If you put a bookmark <a href=\"$url\">to this link</a>, it will\n"
;
print
"bring up the submit-a-new-bug page with the fields initialized\n"
;
print
"as you've requested.\n"
;
PutFooter
();
print
"Content-type: text/html\n\n"
;
$template
->
process
(
"entry/create-template.html.tmpl"
,
$vars
)
||
DisplayError
(
"Template process failed: "
.
$template
->
error
());
exit
;
}
PutHeader
(
"Posting Bug -- Please wait"
,
"Posting Bug"
,
"One moment please..."
);
umask
0
;
ConnectToDatabase
();
my
$product
=
$::FORM
{
'product'
};
# Some sanity checking
if
(
Param
(
"usebuggroupsentry"
)
&&
GroupExists
(
$product
))
{
if
(
!
UserInGroup
(
$product
))
{
print
"<H1>Permission denied.</H1>\n"
;
print
"Sorry; you do not have the permissions necessary to enter\n"
;
print
"a bug against this product.\n"
;
print
"<P>\n"
;
PutFooter
();
exit
;
}
if
(
!
UserInGroup
(
$product
))
{
DisplayError
(
"Sorry; you do not have the permissions necessary to enter
a bug against this product."
,
"Permission Denied"
);
exit
;
}
}
if
(
!
defined
$::FORM
{
'component'
}
||
$::FORM
{
'component'
}
eq
""
)
{
PuntTryAgain
(
"You must choose a component that corresponds to this bug. "
.
"If necessary, just guess."
);
if
(
!
$::FORM
{
'component'
})
{
DisplayError
(
"You must choose a component that corresponds to this bug.
If necessary, just guess."
);
exit
;
}
if
(
!
defined
$::FORM
{
'short_desc'
}
||
trim
(
$::FORM
{
'short_desc'
})
eq
""
)
{
PuntTryAgain
(
"You must enter a summary for this bug."
);
DisplayError
(
"You must enter a summary for this bug."
);
exit
;
}
# If bug_file_loc is "http://", the default, strip it out and use an empty
# value.
$::FORM
{
'bug_file_loc'
}
=
""
if
$::FORM
{
'bug_file_loc'
}
eq
'http://'
;
my
$sql_product
=
SqlQuote
(
$::FORM
{
'product'
});
my
$sql_component
=
SqlQuote
(
$::FORM
{
'component'
});
# Default assignee is the component owner.
if
(
$::FORM
{
'assigned_to'
}
eq
""
)
{
SendSQL
(
"select initialowner from components where program="
.
SqlQuote
(
$::FORM
{
'product'
})
.
" and value="
.
SqlQuote
(
$::FORM
{
'component'
}));
SendSQL
(
"SELECT initialowner FROM components "
.
"WHERE program=$sql_product AND value=$sql_component"
);
$::FORM
{
'assigned_to'
}
=
FetchOneColumn
();
}
else
{
$::FORM
{
'assigned_to'
}
=
DBNameToIdAndCheck
(
$::FORM
{
'assigned_to'
});
...
...
@@ -112,12 +121,11 @@ my @bug_fields = ("product", "version", "rep_platform",
"target_milestone"
);
if
(
Param
(
"useqacontact"
))
{
SendSQL
(
"select initialqacontact from components where program="
.
SqlQuote
(
$::FORM
{
'product'
})
.
" and value="
.
SqlQuote
(
$::FORM
{
'component'
}));
my
$qacontact
=
FetchOneColumn
();
if
(
defined
$qacontact
&&
$qacontact
!=
0
)
{
$::FORM
{
'qa_contact'
}
=
$qacontact
;
SendSQL
(
"SELECT initialqacontact FROM components "
.
"WHERE program=$sql_product AND value=$sql_component"
);
my
$qa_contact
=
FetchOneColumn
();
if
(
defined
$qa_contact
&&
$qa_contact
!=
0
)
{
$::FORM
{
'qa_contact'
}
=
$qa_contact
;
push
(
@bug_fields
,
"qa_contact"
);
}
}
...
...
@@ -135,16 +143,14 @@ if (exists $::FORM{'bug_status'}) {
if
(
!
exists
$::FORM
{
'bug_status'
})
{
$::FORM
{
'bug_status'
}
=
$::unconfirmedstate
;
SendSQL
(
"SELECT votestoconfirm FROM products WHERE product = "
.
SqlQuote
(
$::FORM
{
'product'
}));
SendSQL
(
"SELECT votestoconfirm FROM products WHERE product=$sql_product"
);
if
(
!
FetchOneColumn
())
{
$::FORM
{
'bug_status'
}
=
"NEW"
;
}
}
if
(
!
exists
$::FORM
{
'target_milestone'
})
{
SendSQL
(
"SELECT defaultmilestone FROM products "
.
"WHERE product = "
.
SqlQuote
(
$::FORM
{
'product'
}));
SendSQL
(
"SELECT defaultmilestone FROM products WHERE product=$sql_product"
);
$::FORM
{
'target_milestone'
}
=
FetchOneColumn
();
}
...
...
@@ -153,65 +159,54 @@ if (!Param('letsubmitterchoosepriority')) {
}
GetVersionTable
();
CheckFormField
(
\%::
FORM
,
'product'
,
\
@::legal_product
);
CheckFormField
(
\%::
FORM
,
'version'
,
\
@
{
$::versions
{
$::FORM
{
'product'
}}});
CheckFormField
(
\%::
FORM
,
'target_milestone'
,
\
@
{
$::target_milestone
{
$::FORM
{
'product'
}}});
# Some more sanity checking
CheckFormField
(
\%::
FORM
,
'product'
,
\
@::legal_product
);
CheckFormField
(
\%::
FORM
,
'rep_platform'
,
\
@::legal_platform
);
CheckFormField
(
\%::
FORM
,
'bug_severity'
,
\
@::legal_severity
);
CheckFormField
(
\%::
FORM
,
'priority'
,
\
@::legal_priority
);
CheckFormField
(
\%::
FORM
,
'op_sys'
,
\
@::legal_opsys
);
CheckFormField
(
\%::
FORM
,
'priority'
,
\
@::legal_priority
);
CheckFormField
(
\%::
FORM
,
'op_sys'
,
\
@::legal_opsys
);
CheckFormField
(
\%::
FORM
,
'bug_status'
,
[
$::unconfirmedstate
,
'NEW'
]);
CheckFormField
(
\%::
FORM
,
'version'
,
$::versions
{
$product
});
CheckFormField
(
\%::
FORM
,
'component'
,
$::components
{
$product
});
CheckFormField
(
\%::
FORM
,
'target_milestone'
,
$::target_milestone
{
$product
});
CheckFormFieldDefined
(
\%::
FORM
,
'assigned_to'
);
CheckFormField
(
\%::
FORM
,
'bug_status'
,
[
$::unconfirmedstate
,
'NEW'
]);
CheckFormFieldDefined
(
\%::
FORM
,
'bug_file_loc'
);
CheckFormField
(
\%::
FORM
,
'component'
,
\
@
{
$::components
{
$::FORM
{
'product'
}}});
CheckFormFieldDefined
(
\%::
FORM
,
'comment'
);
my
@used_fields
;
foreach
my
$f
(
@bug_fields
)
{
if
(
exists
$::FORM
{
$f
})
{
push
(
@used_fields
,
$f
);
foreach
my
$f
ield
(
@bug_fields
)
{
if
(
exists
$::FORM
{
$f
ield
})
{
push
(
@used_fields
,
$f
ield
);
}
}
if
(
exists
$::FORM
{
'bug_status'
}
&&
$::FORM
{
'bug_status'
}
ne
$::unconfirmedstate
)
{
if
(
exists
$::FORM
{
'bug_status'
}
&&
$::FORM
{
'bug_status'
}
ne
$::unconfirmedstate
)
{
push
(
@used_fields
,
"everconfirmed"
);
$::FORM
{
'everconfirmed'
}
=
1
;
}
my
$query
=
"INSERT INTO bugs (\n"
.
join
(
",\n"
,
@used_fields
)
.
",
reporter, creation_ts, groupset)
VALUES (
"
;
# Build up SQL string to add bug.
my
$sql
=
"INSERT INTO bugs "
.
"("
.
join
(
","
,
@used_fields
)
.
", reporter, creation_ts, groupset) "
.
"VALUES (
"
;
foreach
my
$field
(
@used_fields
)
{
# fix for 42609. if there is a http:// only in bug_file_loc, strip
# it out and send an empty value.
if
(
$field
eq
'bug_file_loc'
)
{
if
(
$::FORM
{
$field
}
eq
'http://'
)
{
$::FORM
{
$field
}
=
""
;
$query
.=
SqlQuote
(
$::FORM
{
$field
})
.
",\n"
;
next
;
}
else
{
$query
.=
SqlQuote
(
$::FORM
{
$field
})
.
",\n"
;
}
}
else
{
$query
.=
SqlQuote
(
$::FORM
{
$field
})
.
",\n"
;
}
$sql
.=
SqlQuote
(
$::FORM
{
$field
})
.
","
;
}
my
$comment
=
$::FORM
{
'comment'
};
$comment
=~
s/\r\n/\n/g
;
# Get rid of windows-style line endings.
$comment
=~
s/\r/\n/g
;
# Get rid of mac-style line endings.
$comment
=~
s/\r\n?/\n/g
;
# Get rid of \r.
$comment
=
trim
(
$comment
);
# If comment is all whitespace, it'll be null at this point.
That's
# If comment is all whitespace, it'll be null at this point. That's
# OK except for the fact that it causes e-mail to be suppressed.
$comment
=
$comment
?
$comment
:
" "
;
$
query
.=
"$::userid, now(), (0"
;
$
sql
.=
"$::userid, now(), (0"
;
# Groups
foreach
my
$b
(
grep
(
/^bit-\d*$/
,
keys
%::
FORM
))
{
if
(
$::FORM
{
$b
})
{
my
$v
=
substr
(
$b
,
4
);
...
...
@@ -223,53 +218,55 @@ foreach my $b (grep(/^bit-\d*$/, keys %::FORM)) {
# hacked the "enter bug" form since otherwise the UI
# for adding the bug to the group won't appear on that form.
PuntTryAgain
(
"You can't add this bug to the inactive group "
.
"identified by the bit '$v'. This shouldn't happen, "
.
"identified by the bit '$v'. This shouldn't happen, "
.
"so it may indicate a bug in Bugzilla."
);
}
$
query
.=
" + $v"
;
# Carefully written so that the math is
# done by MySQL, which can handle 64-bit math,
# and not by Perl, which I *think* can not.
$
sql
.=
" + $v"
;
# Carefully written so that the math is
# done by MySQL, which can handle 64-bit math,
# and not by Perl, which I *think* can not.
}
}
$sql
.=
") & $::usergroupset)\n"
;
# Add the bug report to the DB.
SendSQL
(
$sql
);
$query
.=
") & $::usergroupset)\n"
;
# Get the bug ID back.
SendSQL
(
"select LAST_INSERT_ID()"
);
my
$id
=
FetchOneColumn
();
# Add the comment
SendSQL
(
"INSERT INTO longdescs (bug_id, who, bug_when, thetext)
VALUES ($id, $::userid, now(), "
.
SqlQuote
(
$comment
)
.
")"
);
my
%
ccids
;
my
$ccid
;
# Add the CC list
if
(
defined
$::FORM
{
'cc'
})
{
foreach
my
$person
(
split
(
/[ ,]/
,
$::FORM
{
'cc'
}))
{
if
(
$person
ne
""
)
{
$ccids
{
DBNameToIdAndCheck
(
$person
)}
=
1
;
$ccid
=
DBNameToIdAndCheck
(
$person
);
if
(
$ccid
&&
!
$ccids
{
$ccid
})
{
SendSQL
(
"INSERT INTO cc (bug_id, who) VALUES ($id, $ccid)"
);
$ccids
{
$ccid
}
=
1
;
}
}
}
}
# Send mail to let people know the bug has been created.
# See attachment.cgi for explanation of why it's done this way.
my
$mailresults
=
''
;
open
(
PMAIL
,
"-|"
)
or
exec
(
'./processmail'
,
$id
,
$::COOKIE
{
'Bugzilla_login'
});
$mailresults
.=
$_
while
<
PMAIL
>
;
close
(
PMAIL
);
# print "<PRE>$query</PRE>\n";
# Tell the user all about it
$vars
->
{
'bug_id'
}
=
$id
;
$vars
->
{
'mailresults'
}
=
$mailresults
;
SendSQL
(
$query
);
SendSQL
(
"select LAST_INSERT_ID()"
);
my
$id
=
FetchOneColumn
();
SendSQL
(
"INSERT INTO longdescs (bug_id, who, bug_when, thetext) VALUES "
.
"($id, $::userid, now(), "
.
SqlQuote
(
$comment
)
.
")"
);
foreach
my
$person
(
keys
%
ccids
)
{
SendSQL
(
"insert into cc (bug_id, who) values ($id, $person)"
);
}
print
"<TABLE BORDER=1><TD><H2>Bug $id posted</H2>\n"
;
system
(
"./processmail"
,
$id
,
$::COOKIE
{
'Bugzilla_login'
});
print
"<TD><A HREF=\"show_bug.cgi?id=$id\">Back To BUG# $id</A></TABLE>\n"
;
print
"<BR><A HREF=\"attachment.cgi?bugid=$id&action=enter\">Attach a file to this bug</a>\n"
;
navigation_header
();
PutFooter
();
exit
;
print
"Content-type: text/html\n\n"
;
$template
->
process
(
"entry/post-bug.html.tmpl"
,
$vars
)
||
DisplayError
(
"Template process failed: "
.
$template
->
error
());
template/default/entry/create-template.html.tmpl
0 → 100644
View file @
57f2b020
<!-- 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): Gervase Markham <gerv@gerv.net>
#%]
[% INCLUDE global/header
title = "Bookmarks are your friend"
h1 = "Template constructed"
%]
<p>
If you bookmark <a href="enter_bug.cgi?[% url %]">this link</a>,
going to the bookmark will bring up the enter bug page with the fields
initialized as you've requested.
</p>
[% INCLUDE global/footer %]
template/default/entry/post-bug.html.tmpl
0 → 100644
View file @
57f2b020
<!-- 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): Gervase Markham <gerv@gerv.net>
#%]
[% INCLUDE global/header
title = "Bug $bug_id Submitted"
%]
<table border="1">
<tr>
<td>
<h2>Bug [% bug_id %] has been added to the database.</h2>
[% mailresults %]
</td>
<td>
<a href="show_bug.cgi?id=[% bug_id %]">Back To Bug# [% bug_id %]</a>
</td>
</tr>
</table>
<p>
<a href="attachment.cgi?bugid=[% bug_id %]&action=enter">
Attach a file to this bug</a>.
</p>
[% INCLUDE show/navigate.html.tmpl %]
[% INCLUDE global/footer %]
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