# Use the site's URL as the default Canonical URL
$config->{canonical_urlbase} //= $config->{urlbase};
+ # Get the absolute path of the URLBase value
+ $config->{basepath} = do {
+ my $path = $config->{urlbase};
+ $path =~ s/^https?:\/\/.*?\//\//;
+ $path;
+ };
+
return $config;
}
$link_text =~ s/ \[details\]$//;
$link_text =~ s/ \[diff\]$//;
- state $urlbase = Bugzilla->localconfig->{urlbase};
- my $linkval = "${urlbase}attachment.cgi?id=$attachid";
+ state $basepath = Bugzilla->localconfig->{basepath};
+ my $linkval = "${basepath}attachment.cgi?id=$attachid";
# If the attachment is a patch and patch_viewer feature is
# enabled, add link to the diff.
sub version_filter {
my ($file_url) = @_;
- return "static/v" . Bugzilla->VERSION . "/$file_url";
+ return Bugzilla->localconfig->{basepath} . "static/v" . Bugzilla->VERSION . "/$file_url";
}
# Set up the skin CSS cascade:
# Allow templates to access the "corect" URLBase value
'urlbase' => sub { return Bugzilla->localconfig->{urlbase}; },
+ # Allow templates to get the absolute path of the URLBase value
+ 'basepath' => sub { return Bugzilla->localconfig->{basepath}; },
+
# Allow templates to access docs url with users' preferred language
'docs_urlbase' => sub {
my $language = Bugzilla->current_language;
[% IF user.in_group('can_configure_antispam') %]
<dt id="antispam">AntiSpam</dt>
<dd>
- <a href="page.cgi?id=edit_table.html&table=antispam_domain_blocklist">Domain Blocklist</a><br>
- <a href="page.cgi?id=edit_table.html&table=antispam_comment_blocklist">Comment Blocklist</a><br>
- <a href="page.cgi?id=edit_table.html&table=antispam_ip_blocklist">IP Address Blocklist</a><br>
+ <a href="[% basepath FILTER none %]page.cgi?id=edit_table.html&table=antispam_domain_blocklist">Domain Blocklist</a><br>
+ <a href="[% basepath FILTER none %]page.cgi?id=edit_table.html&table=antispam_comment_blocklist">Comment Blocklist</a><br>
+ <a href="[% basepath FILTER none %]page.cgi?id=edit_table.html&table=antispam_ip_blocklist">IP Address Blocklist</a><br>
</dd>
[% END %]
and Communications Terms of Use</a> for more information.
</li>
<li>
- You understand that your conduct on this site is subject to both <a href="page.cgi?id=etiquette.html">[% terms.Bugzilla %] Etiquette</a>,
+ You understand that your conduct on this site is subject to both <a href="[% basepath FILTER none %]page.cgi?id=etiquette.html">[% terms.Bugzilla %] Etiquette</a>,
and the <a href="https://www.mozilla.org/about/governance/policies/participation/">Mozilla Community Participation Guidelines</a>.
By creating an account, you agree to abide by them.
</li>
<h2 class="column-header">Create an account</h2>
- <form method="post" action="createaccount.cgi" onsubmit="return onSubmit()">
+ <form method="post" action="[% basepath FILTER none %]createaccount.cgi" onsubmit="return onSubmit()">
<table id="create-account-form">
<tr>
<td class="label">Email Address:</td>
<td colspan="2">
<input type="checkbox" id="etiquette" value="agreed">
<label for="etiquette">
- I have read <a href="page.cgi?id=etiquette.html">[% terms.Bugzilla %] Etiquette</a>
+ I have read <a href="[% basepath FILTER none %]page.cgi?id=etiquette.html">[% terms.Bugzilla %] Etiquette</a>
and the <a href="https://www.mozilla.org/about/governance/policies/participation/">Mozilla Community Participation Guidelines</a>
and agree to abide by them.
</label>
<tr>
<td valign="top">
<a href="[% url FILTER none %]"><img
- src="extensions/BMO/web/producticons/[% icon FILTER uri %].png"
+ src="[% basepath FILTER none %]extensions/BMO/web/producticons/[% icon FILTER uri %].png"
border="0" width="64" height="64"></a>
</td>
<td valign="top">
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
-<form id="automative_form" method="post" action="post_bug.cgi"
+<form id="automative_form" method="post" action="[% basepath FILTER none %]post_bug.cgi"
enctype="multipart/form-data" onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="automative">
<input type="hidden" name="product" value="Testing">
<h1>Client [% terms.Bug %] Bounty Form</h1>
-<form id="client_bounty_form" method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form id="client_bounty_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="product" value="Firefox">
<input type="hidden" name="component" value="Security">
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
-<form id="newsletter_form" method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form id="newsletter_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="comm-newsletter">
<input type="hidden" name="product" value="Marketing">
costume will be sent, and details about the actual costumes.
</p>
-<form method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="costume">
<input type="hidden" name="product" value="Marketing">
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
-<form id="creative_form" method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form id="creative_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="creative">
<input type="hidden" name="product" value="Marketing">
<input type="hidden" name="status_whiteboard" id="status_whiteboard" value="">
<input type="hidden" name="token" value="[% token FILTER html %]">
-<img title="Creative Initiation Form" src="extensions/BMO/web/images/creative.png">
+<img title="Creative Initiation Form" src="[% basepath FILTER none %]extensions/BMO/web/images/creative.png">
<div class="head_desc">
Have a new project or campaign that requires copy, design, video or other awesomeness
<p>Tell us more and then join our weekly meeting for next steps (we’ll send you
the invite details once you submit the [% terms.bug %]):</p>
- <form method="post" action="post_bug.cgi" id="crmForm">
+ <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="crmForm">
<input type="hidden" id="short_desc" name="short_desc" value="CRM/Email Marketing Request">
<input type="hidden" name="product" value="Marketing">
<input type="hidden" name="component" value="Email">
<h2>Data Compliance Form</h2>
-<form method="post" action="post_bug.cgi" id="data_comp_form"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="data_comp_form"
class="enter_bug_form" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="data-compliance">
<h2>Developer Events Request Form</h2>
-<form method="post" action="post_bug.cgi" id="dev_form"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="dev_form"
class="enter_bug_form" enctype="multipart/form-data">
<input type="hidden" name="format" value="dev-engagement-event">
<input type="hidden" name="product" value="Developer Engagement">
[ <span class="required_star">*</span> <span class="required_explanation">Required Fields</span> ]
</p>
-<form method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="doc">
<input type="hidden" name="product" value="Developer Documentation">
<p>All fields are mandatory</p>
-<form method="post" action="post_bug.cgi" id="bug_form" class="enter_bug_form"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="bug_form" class="enter_bug_form"
enctype="multipart/form-data" onsubmit="return onSubmit();">
<input type="hidden" name="format" value="finance">
<input type="hidden" name="product" value="Finance">
<span class="required_star">*</span> - <span class="required_explanation">Required Fields</span>
</p>
-<form method="post" action="post_bug.cgi" id="fsa_form" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="fsa_form" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="fsa-budget">
<input type="hidden" name="product" value="FSA">
team, business need, budget, and location support.
</p>
- <form method="post" action="post_bug.cgi" id="internForm">
+ <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="internForm">
<input type="hidden" id="short_desc" name="short_desc" value="">
<input type="hidden" name="product" value="Recruiting">
<input type="hidden" name="component" value="Intern">
<h1>Internet Public Policy Issue</h1>
-<form method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="ipp">
<input type="hidden" name="product" value="Internet Public Policy">
[ <span class="required_star">*</span> <span class="required_explanation">Required Field</span> ]
<div id="standard_link">
- <a href="enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
- <img src="extensions/BMO/web/images/advanced.png" width="16" height="16" border="0"></a>
- <a href="enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/advanced.png" width="16" height="16" border="0"></a>
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
Switch to the standard [% terms.bug %] entry form</a>
</div>
serviceNowText;
compdesc['Mailing List'] = 'Mailing list requests should be filed ' +
- '<a href="enter_bug.cgi?product=mozilla.org&format=mozlist">here</a> instead.';
+ '<a href="[% basepath FILTER none %]enter_bug.cgi?product=mozilla.org&format=mozlist">here</a> instead.';
function setcompdesc(theRadio) {
if (theRadio.id == 'component_service_desk') {
[% USE Bugzilla %]
<p><strong>Please use this form for IT requests only!</strong></p>
-<p>If you have a [% terms.bug %] to file, go <a href="enter_bug.cgi">here</a>.</p>
+<p>If you have a [% terms.bug %] to file, go <a href="[% basepath FILTER none %]enter_bug.cgi">here</a>.</p>
-<form method="post" action="post_bug.cgi" id="itRequestForm" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="itRequestForm" enctype="multipart/form-data"
onsubmit="return on_submit()">
<input type="hidden" id="product" name="product" value="Infrastructure & Operations">
<input type="hidden" name="rep_platform" value="All">
<p>[ <span class="required_star">*</span> Required Field ]</p>
-<form method="post" action="post_bug.cgi" id="legalRequestForm" enctype="multipart/form-data">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="legalRequestForm" enctype="multipart/form-data">
<input type="hidden" name="product" value="Legal">
<input type="hidden" name="rep_platform" value="All">
<input type="hidden" name="op_sys" value="Other">
javascript_urls = [ 'extensions/BMO/web/js/form_validate.js' ]
%]
-<iframe id="yui-history-iframe" src="extensions/BMO/web/yui-history-iframe.txt"></iframe>
+<iframe id="yui-history-iframe" src="[% basepath FILTER none %]extensions/BMO/web/yui-history-iframe.txt"></iframe>
<input id="yui-history-field" type="hidden">
<h1>MDN Web Docs Feedback</h1>
-<form method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return mdn.validateAndSubmit();">
<input type="hidden" name="format" value="mdn">
<input type="hidden" name="product" value="developer.mozilla.org">
</form>
<div id="standard">
- <a href="enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
- <img src="extensions/BMO/web/images/advanced.png" width="16" height="16" border="0"></a>
- <a href="enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/advanced.png" width="16" height="16" border="0"></a>
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
Switch to the standard [% terms.bug %] entry form</a>
</div>
<h1>[% title FILTER none %]</h1>
-<form method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="mobile-compat">
<input type="hidden" name="product" value="Tech Evangelism">
[ <span class="required_star">*</span> <span class="required_explanation">Required Field</span> ]
<div id="standard_link">
- <a href="enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
- <img src="extensions/BMO/web/images/advanced.png" width="16" height="16" border="0"></a>
- <a href="enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/advanced.png" width="16" height="16" border="0"></a>
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__standard__&product=[% product.name FILTER uri %]">
Switch to the standard [% terms.bug %] entry form</a>
</div>
</div>
<br>
-<form method="post" action="post_bug.cgi" id="mozListRequestForm"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="mozListRequestForm"
enctype="multipart/form-data" onSubmit="return trySubmit();">
<input type="hidden" id="format" name="format" value="mozlist">
<input type="hidden" id="product" name="product" value="mozilla.org">
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
-<form id="pr_form" name="pr_form" method="post" action="post_bug.cgi"
+<form id="pr_form" name="pr_form" method="post" action="[% basepath FILTER none %]post_bug.cgi"
enctype="multipart/form-data" onSubmit="return validate_form()">
<input type="hidden" name="format" value="mozpr">
<input type="hidden" name="product" value="Mozilla PR">
<p>[ <span class="required_star">*</span> <span class="required_explanation">Required Field</span> ]</p>
-<form method="post" action="post_bug.cgi" id="nameForm">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="nameForm">
<input type="hidden" id="short_desc" name="short_desc" value="New Name Clearance Request">
<input type="hidden" name="product" value="Legal">
<input type="hidden" name="component" value="Name Clearance (Trademark Search)">
privilege and confidentiality, legal [% terms.bugs %] are only visible to the reporter,
the legal team, and the cc list.</p>
-<form method="post" action="post_bug.cgi" id="ndaForm">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="ndaForm">
<input type="hidden" id="short_desc" name="short_desc" value="New NDA Request">
<input type="hidden" name="product" value="Legal">
<input type="hidden" name="component" value="NDA">
<li>The asset tag number is located on a sticker typically on the bottom of the device.</li>
</ul>
-<form method="post" action="post_bug.cgi" id="recoveryKeyForm" enctype="multipart/form-data">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="recoveryKeyForm" enctype="multipart/form-data">
<input type="hidden" name="product" value="mozilla.org">
<input type="hidden" name="component" value="Server Operations: Desktop Issues">
<input type="hidden" name="rep_platform" value="All">
communication about existing open requisitions in Greenhouse.
</p>
- <form method="post" action="post_bug.cgi" id="recruitingForm" enctype="multipart/form-data">
+ <form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="recruitingForm" enctype="multipart/form-data">
<input type="hidden" name="product" value="Recruiting">
<input type="hidden" name="component" value="General">
<input type="hidden" name="rep_platform" value="All">
whitelist requests
</div>
-<form id="whitelist_form" method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form id="whitelist_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="screen-share-whitelist">
<input type="hidden" name="product" value="Firefox">
[ <span class="required_star">*</span> <span class="required_explanation">Required Field</span> ]
</p>
-<form method="post" action="post_bug.cgi" id="shieldStudies" class="enter_bug_form" enctype="multipart/form-data">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="shieldStudies" class="enter_bug_form" enctype="multipart/form-data">
<input type="hidden" name="format" id="format" value="shield-studies">
<input type="hidden" name="product" id="product" value="Shield">
<input type="hidden" name="component" id="component" value="Shield Study">
target="_blank" rel="noopener noreferrer">their existing process</a>.
</p>
-<form method="post" action="post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="swag">
<input type="hidden" name="product" value="Marketing">
<p><strong>Please use this form for trademark requests only!</strong></p>
-<form method="post" action="post_bug.cgi" id="tmRequestForm">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="tmRequestForm">
<input type="hidden" name="product" value="Marketing">
<input type="hidden" name="component" value="Trademark Permissions">
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
-<form id="engagement_form" method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form id="engagement_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="user-engagement">
<input type="hidden" name="product" value="Marketing">
<input type="hidden" name="bug_severity" id="bug_severity" value="normal">
<input type="hidden" name="token" value="[% token FILTER html %]">
-<img title="User Engagement Form" src="extensions/BMO/web/images/user-engagement.png">
+<img title="User Engagement Form" src="[% basepath FILTER none %]extensions/BMO/web/images/user-engagement.png">
<div class="head_desc">
Have something that you think our users should know about? Is there a campaign that you
<h1>Web Bounty Form</h1>
-<form id="web_bounty_form" method="post" action="post_bug.cgi" enctype="multipart/form-data"
+<form id="web_bounty_form" method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="product" value="Websites">
<input type="hidden" name="component" value="Other">
</p>
<p style="font-size: x-small">
- Reference: <a href="show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
+ Reference: <a href="[% basepath FILTER none %]show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
</p>
[% PROCESS global/footer.html.tmpl %]
</p>
<p style="font-size: x-small">
- Reference: <a href="show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
+ Reference: <a href="[% basepath FILTER none %]show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
</p>
[% PROCESS global/footer.html.tmpl %]
],
"mozilla.org" => [
{
- link => "form.moz.project.review",
+ link => basepath _ "form.moz.project.review",
title => "Mozilla Project Review",
group => "mozilla-employee-confidential",
},
{
- link => "form.trademark",
+ link => basepath _ "form.trademark",
title => "Trademark Usage Requests",
},
{
- link => "form.gear",
+ link => basepath _ "form.gear",
title => "Mozilla Gear Request",
group => "mozilla-employee-confidential",
},
{
- link => "form.mozlist",
+ link => basepath _ "form.mozlist",
title => "Mozilla Discussion Forum Requests",
group => "mozilla-employee-confidential",
},
],
"Marketing" => [
{
- link => "form.user.engagement",
+ link => basepath _ "form.user.engagement",
title => "User Engagement Initiation Form",
group => "mozilla-employee-confidential",
},
{
- link => "form.gear",
+ link => basepath _ "form.gear",
title => "Mozilla Gear Request",
group => "mozilla-employee-confidential",
},
{
- link => "form.creative",
+ link => basepath _ "form.creative",
title => "Brand Engagement Initiation Form",
group => "mozilla-employee-confidential",
},
{
- link => "form.comm.newsletter",
+ link => basepath _ "form.comm.newsletter",
title => "Mozilla Communities Newsletter",
},
{
- link => "form.costume",
+ link => basepath _ "form.costume",
title => "Firefox Costume Requests",
},
],
"Finance" => [
{
- link => "form.finance",
+ link => basepath _ "form.finance",
title => "Finance Request",
group => "mozilla-employee-confidential",
},
],
"Mozilla PR" => [
{
- link => "form.mozpr",
+ link => basepath _ "form.mozpr",
title => "PR Project Form",
group => "pr-private",
},
],
"Infrastructure & Operations" => [
{
- link => "form.itrequest",
+ link => basepath _ "form.itrequest",
title => "IT Request Form",
group => "mozilla-employee-confidential",
},
{
- link => "form.mozlist",
+ link => basepath _ "form.mozlist",
title => "Mozilla Discussion Forum Requests",
group => "mozilla-employee-confidential",
},
],
"Tech Evangelism" => [
{
- link => "form.mobile.compat",
+ link => basepath _ "form.mobile.compat",
title => "Mobile Web Compatibility Problem",
},
],
],
"Websites" => [
{
- link => "form.web.bounty",
+ link => basepath _ "form.web.bounty",
title => "Web Bounty Form",
},
],
"Firefox" => [
{
- link => "form.screen.share.whitelist",
+ link => basepath _ "form.screen.share.whitelist",
title => "Firefox Screen Sharing Whitelist Submission",
hide => 1,
}
],
"Testing" => [
{
- link => "form.automative",
+ link => basepath _ "form.automative",
title => "Automation Request Form",
},
],
"Developer Engagement" => [
{
- link => "form.dev.engagement.event",
+ link => basepath _ "form.dev.engagement.event",
title => "Developer Events Request Form",
},
],
"developer.mozilla.org" => [
{
- link => "form.mdn",
+ link => basepath _ "form.mdn",
title => "MDN Web Docs Feedback",
},
],
"Internet Public Policy" => [
{
- link => "form.ipp",
+ link => basepath _ "form.ipp",
title => "Internet Public Policy Issue",
},
],
"Data Compliance" => [
{
- link => "form.data.compliance",
+ link => basepath _ "form.data.compliance",
title => "Data Compliance Form",
},
],
"Recruiting" => [
{
- link => "form.recruiting",
+ link => basepath _ "form.recruiting",
title => "Recruiting Requests",
},
{
- link => "form.intern",
+ link => basepath _ "form.intern",
title => "Intern Requests",
},
]
"Legal" => [
{
title => 'Mozilla Foundation Vendor Request',
- link => 'enter_bug.cgi?product=Mozilla%20Foundation%20Operations',
+ link => basepath _ 'enter_bug.cgi?product=Mozilla%20Foundation%20Operations',
},
{
title => 'Mozilla Corporation Vendor Request',
- link => 'form.moz.project.review'
+ link => basepath _ 'form.moz.project.review'
},
{
title => 'Commercial (Partner) Agreement',
- link => 'form.moz.project.review'
+ link => basepath _ 'form.moz.project.review'
},
{
title => 'Independent Contractor Request',
- link => 'form.moz.project.review'
+ link => basepath _ 'form.moz.project.review'
},
{
title => "NDA Request",
- link => "form.nda",
+ link => basepath _ "form.nda",
},
{
title => "Name Clearance Request",
- link => "form.name.clearance",
+ link => basepath _ "form.name.clearance",
}
],
}
<p>
[% UNLESS cloned_bug_id || no_guided_bug_link %]
Consider using the
- <a href="enter_bug.cgi?product=[% product.name FILTER html %]&format=guided"
- ><img src="extensions/BMO/web/images/guided.png" width="16" height="16" align="absmiddle" border="0">
+ <a href="[% basepath FILTER none %]enter_bug.cgi?product=[% product.name FILTER html %]&format=guided"
+ ><img src="[% basepath FILTER none %]extensions/BMO/web/images/guided.png" width="16" height="16" align="absmiddle" border="0">
[%+ terms.Bugzilla %] Helper</a> instead of this form.
[% END +%]
[% UNLESS no_bug_guidelines %]
%]
<div id="custom_form_list">
- <img src="extensions/BMO/web/images/notice.png" width="48" height="48" id="custom_form_list_image">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/notice.png" width="48" height="48" id="custom_form_list_image">
<div id="custom_form_list_text">
This product has task-specific [% terms.bug %] forms that should be used if
appropriate:
%]
<section class="product other">
<h3>
- <a href="[% target FILTER uri %]?full=1
+ <a href="[% basepath FILTER none %][% target FILTER uri %]?full=1
[%- IF cloned_bug_id %]&cloned_bug_id=[% cloned_bug_id FILTER uri %][% END -%]
[%- IF classification %]&classification=[% classification FILTER uri %][% END -%]
[%- IF format %]&format=[% format FILTER uri %][% END %]">
- <img src="extensions/BMO/web/producticons/other.png" height="64" width="64" alt="">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/producticons/other.png" height="64" width="64" alt="">
<span>Other Products</span>
</a>
</h3>
[%- IF has_entry_groups %] title="This product requires one or more group memberships in order to enter [% terms.bugs %] in it. You have them, but be aware not everyone else does."[% END %]>
<th align="right" valign="top">
[% IF p.name == "Mozilla PR" AND target == "enter_bug.cgi" AND NOT format AND NOT cgi.param("debug") %]
- <a href="[% target FILTER uri %]?product=[% p.name FILTER uri -%]
+ <a href="[% basepath FILTER none %][% target FILTER uri %]?product=[% p.name FILTER uri -%]
[%- IF cloned_bug_id %]&cloned_bug_id=[% cloned_bug_id FILTER uri %][% END %]&format=mozpr">
[% p.name FILTER html FILTER no_break %]</a>:
[% ELSE %]
- <a href="[% target FILTER uri %]?product=[% p.name FILTER uri -%]
+ <a href="[% basepath FILTER none %][% target FILTER uri %]?product=[% p.name FILTER uri -%]
[%- IF cloned_bug_id %]&cloned_bug_id=[% cloned_bug_id FILTER uri %][% END -%]
[%- IF format %]&format=[% format FILTER uri %][% END %]">
[% p.name FILTER html FILTER no_break %]</a>:
<br>
[% IF target == "enter_bug.cgi" AND user.settings.product_chooser.value != 'full_product_chooser' %]
<p>You can choose to get this screen by default when you click "New [% terms.Bug %]"
- by changing your <a href="userprefs.cgi?tab=settings">preferences</a>.</p>
+ by changing your <a href="[% basepath FILTER none %]userprefs.cgi?tab=settings">preferences</a>.</p>
[% END %]
[% END %]
[% IF NOT is_describe %]
<div id="guided">
- <a href="enter_bug.cgi?format=guided">
- <img src="extensions/BMO/web/images/guided.png" width="16" height="16">
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=guided">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/guided.png" width="16" height="16">
Switch to the [% terms.Bugzilla %] Helper</a> |
- <a href="page.cgi?id=custom_forms.html">Custom [% terms.bug %] entry forms</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=custom_forms.html">Custom [% terms.bug %] entry forms</a>
</div>
[% END %]
[% IF p.name == name %]
<section class="product major">
<h3>
- <a href="[% target FILTER uri %]?product=[% p.name FILTER uri %]
+ <a href="[% basepath FILTER none %][% target FILTER uri %]?product=[% p.name FILTER uri %]
[%- IF cloned_bug_id %]&cloned_bug_id=[% cloned_bug_id FILTER uri %][% END -%]
[%- IF format %]&format=[% format FILTER uri %][% END %]">
- <img src="extensions/BMO/web/producticons/[% icon FILTER uri %]" height="64" width="64" alt="">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/producticons/[% icon FILTER uri %]" height="64" width="64" alt="">
<span>[% caption || name FILTER html %]</span>
</a>
</h3>
[% IF !attachment.ispatch && attachment.can_review %]
  |
- <a href="attachment.cgi?id=[% attachment.id FILTER none %]">Review</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id FILTER none %]">Review</a>
[% END %]
[% IF bug.is_unassigned %]
<tr class="bz_attach_footer">
<td colspan="[% show_attachment_flags ? 3 : 2 %]" class="attachment-warning">
- <img src="extensions/BMO/web/images/sign_warning.png" width="16" height="16">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/sign_warning.png" width="16" height="16">
Unassigned [% terms.bug %] with patches attached
</td>
</tr>
[% IF bug.missing_sec_approval %]
<tr class="bz_attach_footer">
<td colspan="[% show_attachment_flags ? 3 : 2 %]" id="sec-approval-warning" class="attachment-warning">
- <img src="extensions/BMO/web/images/sign_warning.png" width="16" height="16">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/sign_warning.png" width="16" height="16">
<a href="https://wiki.mozilla.org/Security/Bug_Approval_Process" target="_blank" rel="noopener noreferrer">
sec-approval required on patches before landing
</a>
<div id="bug_create_warning">
<div id="bug_create_warning_image">
- <img src="extensions/BMO/web/images/sign_warning.png" width="32" height="32">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/sign_warning.png" width="32" height="32">
</div>
<div id="bug_create_warning_text">
<b>Mozilla employees</b><br>
<li>Changes to the values of existing fields (versions, milestones, etc)</li>
</ul>
Instead, please file such changes under
- <a href="enter_bug.cgi?product=bugzilla.mozilla.org;component=Administration">
+ <a href="[% basepath FILTER none %]enter_bug.cgi?product=bugzilla.mozilla.org;component=Administration">
<b>
the Administration component in the bugzilla.mozilla.org
</b>
[% END %]
</td>
<td class="attach-actions">
- <a href="page.cgi?id=attachment_bounty_form.html&bug_id=[% bug.id FILTER none %]">
+ <a href="[% basepath FILTER none %]page.cgi?id=attachment_bounty_form.html&bug_id=[% bug.id FILTER none %]">
Edit Bounty
</a>
</td>
[% IF bug.is_unassigned %]
<div class="attachment-warning">
- <img src="extensions/BMO/web/images/sign_warning.png" width="16" height="16">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/sign_warning.png" width="16" height="16">
Unassigned [% terms.bug %] with patches attached
</div>
[% END %]
[% IF bug.missing_sec_approval %]
<div id="sec-approval-warning" class="attachment-warning">
- <img src="extensions/BMO/web/images/sign_warning.png" width="16" height="16">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/images/sign_warning.png" width="16" height="16">
<a href="https://wiki.mozilla.org/Security/Bug_Approval_Process" target="_blank" rel="noopener noreferrer">
sec-approval required on patches before landing
</a>
END;
END;
%]
-| <a href="page.cgi?id=attachment_bounty_form.html&bug_id=[% bug.id FILTER none %]">
+| <a href="[% basepath FILTER none %]page.cgi?id=attachment_bounty_form.html&bug_id=[% bug.id FILTER none %]">
[% has_bounty_attachment ? "Edit" : "Add" %] Bounty Tracking Attachment
</a>
# Reed Loden <reed@reedloden.com>
#%]
-<link rel="shortcut icon" href="extensions/BMO/web/images/favicon.ico">
+<link rel="shortcut icon" href="[% basepath FILTER none %]extensions/BMO/web/images/favicon.ico">
[% IF bug %]
<link rel="canonical" href="[% Bugzilla.localconfig.canonical_urlbase FILTER none %]show_bug.cgi?id=[% bug.bug_id FILTER uri %]">
<link rel="shorturl" href="[% Bugzilla.localconfig.canonical_urlbase FILTER none %][% bug.bug_id FILTER uri %]">
[% IF my_search %]
[% SET last_bug_list = my_search.bug_list %]
[% SET this_bug_idx = lsearch(last_bug_list, bug.id) %]
- <link rel="Up" href="buglist.cgi?regetlastlist=
+ <link rel="Up" href="[% basepath FILTER none %]buglist.cgi?regetlastlist=
[%- my_search.id FILTER uri %]">
- <link rel="First" href="show_bug.cgi?id=
+ <link rel="First" href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.first FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">
- <link rel="Last" href="show_bug.cgi?id=
+ <link rel="Last" href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.last FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">
[% IF this_bug_idx > 0 %]
[% prev_bug = this_bug_idx - 1 %]
- <link rel="Prev" href="show_bug.cgi?id=
+ <link rel="Prev" href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.$prev_bug FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">
[% END %]
[% IF this_bug_idx + 1 < last_bug_list.size %]
[% next_bug = this_bug_idx + 1 %]
- <link rel="Next" href="show_bug.cgi?id=
+ <link rel="Next" href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.$next_bug FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">
[% END %]
[% IF error == 'illegal_change' || error == 'illegal_change_deps' %]
<p>
If you are attempting to confirm an unconfirmed [% terms.bug %] or edit the
- fields of a [% terms.bug %], <a href="page.cgi?id=get_permissions.html">find
+ fields of a [% terms.bug %], <a href="[% basepath FILTER none %]page.cgi?id=get_permissions.html">find
out how to get the necessary permissions</a>.
</p>
[% END %]
[% IF (group == "canconfirm" OR group == "editbugs") AND !reason %]
<p>
If you are attempting to confirm an unconfirmed [% terms.bug %] or edit the fields of a [% terms.bug %],
- <a href="page.cgi?id=get_permissions.html">find
+ <a href="[% basepath FILTER none %]page.cgi?id=get_permissions.html">find
out how to get the necessary permissions</a>.
</p>
[% END %]
# defined by the Mozilla Public License, v. 2.0.
#%]
-<a href="rest/bug?include_fields=id,summary,status&
+<a href="[% basepath FILTER none %]rest/bug?include_fields=id,summary,status&
[%- cgi.new(urlquerypart).canonicalise_query('list_id','query_format') FILTER html %]"
title="Query as a REST API request">REST</a> |
<ul>
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=triage_reports.html">Unconfirmed Report</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=triage_reports.html">Unconfirmed Report</a>
</strong> - Report on UNCONFIRMED [% terms.bugs %] to assist triage.
</li>
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=triage_owners.html">Triage Owners</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=triage_owners.html">Triage Owners</a>
</strong> - Report on triage owners per product and component.
</li>
</ul>
<ul>
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=user_activity.html">User Changes</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=user_activity.html">User Changes</a>
</strong> - Show changes made by an individual user.
</li>
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=release_tracking_report.html">Release Tracking Report</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=release_tracking_report.html">Release Tracking Report</a>
</strong> - For triaging release-train flag information.
</li>
[% IF user.in_group('editbugs') %]
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=group_admins.html">Group Admins</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=group_admins.html">Group Admins</a>
</strong> - Lists the administrators of each group.
</li>
[% END %]
[% IF user.in_group('editusers') || user.in_group('infrasec') %]
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=group_membership.html">Group Membership Report</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=group_membership.html">Group Membership Report</a>
</strong> - Lists the groups a user is a member of.
</li>
[% END %]
[% IF user.in_group('editbugs') %]
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=group_members.html">Group Members Report</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=group_members.html">Group Members Report</a>
</strong> - Lists the users of groups.
</li>
[% END %]
[% IF user.in_group('admin') || user.in_group('infrasec') %]
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=product_security_report.html">Product Security Report</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=product_security_report.html">Product Security Report</a>
</strong> - Show each product's default security group and visibility.
</li>
[% END %]
[% IF user.in_group('admin') || user.in_group('infra') %]
<li>
<strong>
- <a href="[% urlbase FILTER none %]view_job_queue.cgi">Email Queue</a>
+ <a href="[% basepath FILTER none %]view_job_queue.cgi">Email Queue</a>
</strong> - TheSchwartz queue
</li>
[% END %]
[% IF user.in_group('hr') %]
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=recruiting_dashboard.html">Recruiting Dashboard</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=recruiting_dashboard.html">Recruiting Dashboard</a>
</strong> - Dashboard for open requested requisitions.
</li>
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=internship_dashboard.html">Internship Dashboard</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=internship_dashboard.html">Internship Dashboard</a>
</strong> - Dashboard for open intern requisitions.
</li>
</head>
<body>
<div style="margin-top: 15%; text-align: center;">
- <center><img src="extensions/BMO/web/images/mozchomp.gif" alt=""
+ <center><img src="[% basepath FILTER none %]extensions/BMO/web/images/mozchomp.gif" alt=""
width="160" height="87"></center>
<h1>Please wait while your [% terms.bugs %] are retrieved.</h1>
</div>
[% USE Bugzilla %]
[% cgi = Bugzilla.cgi %]
-<form id="bounty_form" method="post" action="page.cgi"
+<form id="bounty_form" method="post" action="[% basepath FILTER none %]page.cgi"
enctype="multipart/form-data" onSubmit="return validateAndSubmit();">
<input type="hidden" name="bug_id" value="[% bug.id FILTER html %]">
<p>
If you cannot tag comments (which requires
- <a href="page.cgi?id=get_permissions.html"><code>editbugs</code> privileges</a>,)
+ <a href="[% basepath FILTER none %]page.cgi?id=get_permissions.html"><code>editbugs</code> privileges</a>,)
or if you need to contact a [% terms.Bugzilla %] community administrator urgently:
</p>
<p>
If you want <kbd>canconfirm</kbd>, you can add it yourself using
- the <a href="page.cgi?id=triage_request.html">triage request form</a>.
+ the <a href="[% basepath FILTER none %]page.cgi?id=triage_request.html">triage request form</a>.
</p>
[% editbugs = "enter_bug.cgi?assigned_to=nobody%40mozilla.org&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cf_fx_iteration=---&cf_fx_points=---&component=Editbugs%20Requests&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&defined_groups=1&flag_type-4=X&flag_type-607=X&flag_type-791=X&flag_type-800=X&flag_type-803=X&flag_type-916=X&form_name=enter_bug&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Unspecified&priority=--&product=bugzilla.mozilla.org&rep_platform=Unspecified&target_milestone=---&version=Production" %]
style_urls = [ "extensions/BMO/web/styles/reports.css" ]
%]
-<form method="GET" action="page.cgi">
+<form method="GET" action="[% basepath FILTER none %]page.cgi">
<input type="hidden" name="id" value="group_members.html">
<table id="parameters">
[% ELSE %]
via
[% IF privileged %]
- <a href="page.cgi?id=group_members.html&group=[% type.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]page.cgi?id=group_members.html&group=[% type.name FILTER uri %]">
[% type.name FILTER html %]
</a>
[% ELSE %]
<tr>
<td width="100%">
[% IF privileged %]
- <a href="editusers.cgi?action=edit&userid=[% member.id FILTER none %]"
+ <a href="[% basepath FILTER none %]editusers.cgi?action=edit&userid=[% member.id FILTER none %]"
target="_blank">
[% ELSE %]
- <a href="user_profile?user_id=[% member.id FILTER none %]"
+ <a href="[% basepath FILTER none %]user_profile?user_id=[% member.id FILTER none %]"
target="_blank">
[% END %]
<span [% 'class="bz_inactive"' UNLESS member.is_enabled %]>
[% END %]
</table>
- <a href="page.cgi?id=group_members.json&group=[% group.name FILTER uri %]
+ <a href="[% basepath FILTER none %]page.cgi?id=group_members.json&group=[% group.name FILTER uri %]
[% IF include_disabled %]&include_disabled=1[% END %]">JSON</a>
[% ELSE %]
<p>
javascript_urls = [ "js/field.js" ]
%]
-<form method="GET" action="page.cgi">
+<form method="GET" action="[% basepath FILTER none %]page.cgi">
<input type="hidden" name="id" id="id" value="group_membership.html">
<table id="parameters">
[% count = count + 1 %]
<tr class="report_item [% count % 2 == 1 ? "report_row_odd" : "report_row_even" %]">
<td>
- <a href="editproducts.cgi?action=editgroupcontrols&product=[% product.name FILTER uri %]" target="_blank">
+ <a href="[% basepath FILTER none %]editproducts.cgi?action=editgroupcontrols&product=[% product.name FILTER uri %]" target="_blank">
[% product.name FILTER html %]
</a>
</td>
style_urls = [ "extensions/BMO/web/styles/reports.css" ]
%]
-<form method="post" action="page.cgi">
+<form method="post" action="[% basepath FILTER none %]page.cgi">
<input type="hidden" name="id" value="query_database.html">
<textarea cols="80" rows="10" name="query">[% query FILTER html %]</textarea><br>
<input type="checkbox" id="csv" name="csv" value="1"><label for="csv">Ouput as CSV</label><br><br>
var default_query = '[% default_query FILTER js %]';
</script>
-<form action="page.cgi" method="get" onSubmit="return onFormSubmit()">
+<form action="[% basepath FILTER none %]page.cgi" method="get" onSubmit="return onFormSubmit()">
<input type="hidden" name="id" value="release_tracking_report.html">
<input type="hidden" name="q" id="q" value="">
<table>
</span>
<span id="custom_range" style="display:none;">
<input class="date_field" name="from" id="from" onChange="serialiseForm()">
- <img class="date_field-img" id="from-img" src="extensions/BugModal/web/calendar.png" width="16" height="16">
+ <img class="date_field-img" id="from-img" src="[% basepath FILTER none %]extensions/BugModal/web/calendar.png" width="16" height="16">
and
<input class="date_field" name="to" id="to" onChange="serialiseForm()">
- <img class="date_field-img" id="to-img" src="extensions/BugModal/web/calendar.png" width="16" height="16">
+ <img class="date_field-img" id="to-img" src="[% basepath FILTER none %]extensions/BugModal/web/calendar.png" width="16" height="16">
</span>
<input type="checkbox" id="is_custom" onchange="selectRangeType()" [% "checked" IF is_custom %]>
<label for="is_custom">Custom</label>
[% PROCESS "global/field-descs.none.tmpl" %]
-<form id="triageOwners" name="triageOwners" action="page.cgi" method="GET">
+<form id="triageOwners" name="triageOwners" action="[% basepath FILTER none %]page.cgi" method="GET">
<input type="hidden" name="id" value="triage_owners.html">
<input type="hidden" name="json_data" id="json_data" data-json_data="[% json_data FILTER html %]">
</td>
<td>
[% IF r.buglist_url %]
- <a href="[% urlbase FILTER none %]buglist.cgi?product=[% r.product FILTER uri %]&component=[% r.component FILTER uri %]&[% r.buglist_url FILTER none %]">
+ <a href="[% basepath FILTER none %]buglist.cgi?product=[% r.product FILTER uri %]&component=[% r.component FILTER uri %]&[% r.buglist_url FILTER none %]">
[% r.bug_count FILTER html +%] [%+ terms.bugs %] found.
</a>
[% ELSE %]
[% PROCESS "global/field-descs.none.tmpl" %]
-<form id="activity_form" name="activity_form" action="page.cgi" method="get"
+<form id="activity_form" name="activity_form" action="[% basepath FILTER none %]page.cgi" method="get"
onSubmit="return onGenerateReport()">
<input type="hidden" name="id" value="triage_reports.html">
<input type="hidden" name="action" value="run">
</table>
<p>
- <a href="buglist.cgi?bug_id=
+ <a href="[% basepath FILTER none %]buglist.cgi?bug_id=
[%- FOREACH bug = bugs %][% bug.id FILTER uri %],[% END -%]
">Show as a [% terms.Bug %] List</a>
</p>
Would you like to add "canconfirm" permissions to your account?
</p>
- <form method="post" action="page.cgi">
+ <form method="post" action="[% basepath FILTER none %]page.cgi">
<input type="hidden" name="id" value="triage_request.html">
<input type="hidden" name="update" value="1">
<input type="submit" value="Yes, I want to help">
<p><b>Last Updated:</b> [% date.format(template.modtime, "%d-%b-%Y %H:%M %Z") %]</p>
<p>On Friday, July 9, 2010, at 11:40pm PDT (0640 UTC), bugzilla.mozilla.org was
- <a href="show_bug.cgi?id=558044">upgraded</a> to Bugzilla 3.6.1+. Please
- <a href="enter_bug.cgi?product=mozilla.org&component=Bugzilla:+Other+b.m.o+Issues&blocked=bmo-regressions">file
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=558044">upgraded</a> to Bugzilla 3.6.1+. Please
+ <a href="[% basepath FILTER none %]enter_bug.cgi?product=mozilla.org&component=Bugzilla:+Other+b.m.o+Issues&blocked=bmo-regressions">file
any regressions</a> for tracking purposes.</p>
<h3>Known Issues</h3>
[%+ terms.Bugzilla %] and in the header/footer of every page
is now simplified and made more powerful. There is a
<kbd>[?]</kbd> link next to the box that will take you to
- the simplified <a href="page.cgi?id=quicksearch.html">Quicksearch Help</a>,
+ the simplified <a href="[% basepath FILTER none %]page.cgi?id=quicksearch.html">Quicksearch Help</a>,
which describes every single feature of the system in a simple layout,
including new features such as the ability to use partial field names
when searching.</p>
[% PROCESS "global/field-descs.none.tmpl" %]
[% PROCESS bug/time.html.tmpl %]
-<form id="activity_form" name="activity_form" action="page.cgi" method="get">
+<form id="activity_form" name="activity_form" action="[% basepath FILTER none %]page.cgi" method="get">
<input type="hidden" name="id" value="user_activity.html">
<input type="hidden" name="action" value="run">
<table id="parameters">
[% END %]
<td>
[% IF change.attachid %]
- <a href="attachment.cgi?id=[% change.attachid FILTER uri %]"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% change.attachid FILTER uri %]"
title="[% change.attach.description FILTER html %]
[%- %] - [% change.attach.filename FILTER html %]"
>Attachment #[% change.attachid FILTER html %]</a>
[% END %]
</table>
<p>
- <a href="buglist.cgi?bug_id=[% bug_ids.join(',') FILTER uri %]">
+ <a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% bug_ids.join(',') FILTER uri %]">
Show as a [% terms.Bug %] List</a>
</p>
[% INCLUDE global/footer.html.tmpl %]
[% BLOCK group_when_link %]
- <a href="page.cgi?id=user_activity.html&action=run&
+ <a href="[% basepath FILTER none %]page.cgi?id=user_activity.html&action=run&
[%~%]who=[% who FILTER uri %]&
[%~%]from=[% from FILTER uri %]&
[%~%]to=[% to FILTER uri %]&
[% END %]
[% BLOCK group_bug_link %]
- <a href="page.cgi?id=user_activity.html&action=run&
+ <a href="[% basepath FILTER none %]page.cgi?id=user_activity.html&action=run&
[%~%]who=[% who FILTER uri %]&
[%~%]from=[% from FILTER uri %]&
[%~%]to=[% to FILTER uri %]&
var existing = document.getElementById('bounty_attachment');
var td = nodes[0];
var a = document.createElement('a');
- a.href = 'page.cgi?id=attachment_bounty_form.html&bug_id=' + bug_id;
+ a.href = `${BUGZILLA.config.basepath}page.cgi?id=attachment_bounty_form.html&bug_id=${bug_id}`;
a.appendChild(document.createTextNode(existing
? 'Edit bounty tracking attachment'
: 'Add bounty tracking attachment'));
* defined by the Mozilla Public License, v. 2.0. */
function show_clone_menu(el, bug_id, product, component) {
- var base_url = 'enter_bug.cgi?format=__default__&cloned_bug_id=' + bug_id;
+ var base_url = `${BUGZILLA.config.basepath}enter_bug.cgi?format=__default__&cloned_bug_id=${bug_id}`;
var items = {
curr_prod : {
name: 'Clone to the current product',
{
name: "Profile",
callback: function () {
- var href = "user_profile?user_id=" + id;
+ var href = `${BUGZILLA.config.basepath}user_profile?user_id=${id}`;
window.open(href, "_blank");
}
},
{
name: "Activity",
callback: function () {
- var href = "page.cgi?id=user_activity.html&action=run&from=-14d&who=" + encodeURIComponent(email);
+ var href = `${BUGZILLA.config.basepath}page.cgi?` +
+ `id=user_activity.html&action=run&from=-14d&who=${encodeURIComponent(email)}`;
window.open(href, "_blank");
}
},
items.push({
name: "Edit",
callback: function () {
- var href = "editusers.cgi?action=edit&userid=" + id;
+ var href = `${BUGZILLA.config.basepath}editusers.cgi?action=edit&userid=${id}`;
window.open(href, "_blank");
}
});
params.append('component', component);
return {
- href: `/enter_bug.cgi?${params.toString()}`,
+ href: `${BUGZILLA.config.basepath}enter_bug.cgi?${params.toString()}`,
text: `${product} :: ${component}`,
};
});
return new Promise((resolve, reject) => {
bugzilla_ajax({
- url: `/rest/bug?${params.toString()}`
+ url: `${BUGZILLA.config.basepath}rest/bug?${params.toString()}`
}, response => {
if (!response.bugs) {
reject(new Error('Your frequent components could not be retrieved.'));
$('#q').val(q);
var is_custom = $('#is_custom').is(':checked') ? 1 : 0;
- $('#bookmark').attr('href', 'page.cgi?id=release_tracking_report.html&is_custom=' +
- is_custom + '&q=' + encodeURIComponent(q));
+ $('#bookmark').attr('href', `${BUGZILLA.config.basepath}page.cgi?id=release_tracking_report.html&is_custom=` +
+ `${is_custom}&q=${encodeURIComponent(q)}`);
}
function deserialiseForm(q) {
}
$('#bitly-url').val('');
- var request = 'rest/bitly/' + type +
- '?url=' + encodeURIComponent($('#bitly-shorten').data('url')) +
- '&Bugzilla_api_token=' + encodeURIComponent(BUGZILLA.api_token);
+ var request = `${BUGZILLA.config.basepath}rest/bitly/${type}?` +
+ `url=${encodeURIComponent($('#bitly-shorten').data('url'))}&` +
+ `Bugzilla_api_token=${encodeURIComponent(BUGZILLA.api_token)}`;
$.ajax(request)
.done(function(data) {
urls[type] = data.url;
<tr id="cr-[% comment.count FILTER none %]" [%= IF comment.collapsed %]style="display:none"[% END %]>
<td colspan="2">
<h3 class="change-name">
- <a href="show_bug.cgi?id=[% bug.bug_id FILTER none %]#c[% comment.count FILTER none %]">
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id FILTER none %]#c[% comment.count FILTER none %]">
[% comment.count == 0 ? "Description" : "Comment " _ comment.count ~%]
</a>
</h3>
<tr id="ar-[% id FILTER none %]">
<td colspan="2">
<h3 class="change-name">
- <a href="show_bug.cgi?id=[% bug.bug_id FILTER none %]#[% id FILTER none %]">Updated</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id FILTER none %]#[% id FILTER none %]">Updated</a>
</h3>
•
<div class="change-time">
[% IF comment.collapsed +%] style="display:none"[% END ~%]
>[% FILTER collapse %]
[% IF comment.is_about_attachment && comment.attachment.is_image ~%]
- <a href="attachment.cgi?id=[% comment.attachment.id FILTER none %]"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% comment.attachment.id FILTER none %]"
title="[% comment.attachment.description FILTER html %]"
- class="lightbox"><img src="extensions/BugModal/web/image.png" width="16" height="16"></a>
+ class="lightbox"><img src="[% basepath FILTER none %]extensions/BugModal/web/image.png" width="16" height="16"></a>
[% END %]
[% END %]
[%~ comment.body_full FILTER quoteUrls(bug, comment) ~%]</pre>
IF change.attachid;
%]
- <a href="attachment.cgi?id=[% change.attachid FILTER none %]&action=edit"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% change.attachid FILTER none %]&action=edit"
title="[% change.attach.description FILTER html %]"
class="[% "bz_obsolete" IF change.attach.isobsoletee %]"
>Attachment #[% change.attachid FILTER none %]</a> -
<td class="attach-desc-td">
<div class="attach-desc">
[% IF attachment.is_image %]
- <a href="attachment.cgi?id=[% attachment.id FILTER none %]"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id FILTER none %]"
title="[% attachment.description FILTER html %]"
class="lightbox">
- <img src="extensions/BugModal/web/image.png" width="16" height="16">
+ <img src="[% basepath FILTER none %]extensions/BugModal/web/image.png" width="16" height="16">
[%~ attachment.description FILTER html %]
</a>
[% ELSE %]
- <a href="attachment.cgi?id=[% attachment.id FILTER none %]">
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id FILTER none %]">
[%~ attachment.description FILTER html %]</a>
[% END %]
</div>
[% END %]
</td>
<td class="attach-actions">
- <a href="attachment.cgi?id=[% attachment.id FILTER none %]&action=edit">Details</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id FILTER none %]&action=edit">Details</a>
[% IF attachment.ispatch %]
- | <a href="attachment.cgi?id=[% attachment.id FILTER none %]&action=diff">Diff</a>
+ | <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id FILTER none %]&action=diff">Diff</a>
[% END %]
[% Hook.process("action", "attachment/list.html.tmpl") %]
</tr>
%]
[% IF user.id %]
- <form name="changeform" id="changeform" method="post" action="process_bug.cgi"[% IF bug.groups_in.size %] autocomplete="nope"[% END %]>
+ <form name="changeform" id="changeform" method="post" action="[% basepath FILTER none %]process_bug.cgi"[% IF bug.groups_in.size %] autocomplete="nope"[% END %]>
<input type="hidden" name="delta_ts" value="[% bug.delta_ts FILTER html %]">
<input type="hidden" name="longdesclength" value="[% bug.comments.size FILTER html %]">
<input type="hidden" name="id" id="bug_id" value="[% bug.bug_id FILTER html %]">
view_only = 1
%]
<div id="field-value-bug_id">
- [% this_bug_href = "show_bug.cgi?id=$bug.id" %]
+ [% this_bug_href = basepath _ "show_bug.cgi?id=$bug.id" %]
[% IF cgi.param("format") %]
[% format_uri = cgi.param("format") FILTER uri %]
[% this_bug_href = this_bug_href _ "&format=" _ format_uri %]
<button type="button" id="mode-btn" class="major">
<span id="mode-btn-readonly" title="Enable editing fields for [% terms.bug %] metadata">Edit [% terms.Bug %]</span>
<span id="mode-btn-loading">
- <img id="edit-throbber" src="extensions/BugModal/web/throbber.gif" width="16" height="11">
+ <img id="edit-throbber" src="[% basepath FILTER none %]extensions/BugModal/web/throbber.gif" width="16" height="11">
Fetching
</span>
</button>
field = bug_fields.product
field_type = constants.FIELD_TYPE_SINGLE_SELECT
hide_on_edit = can_edit_product
- help = "describecomponents.cgi?product=$filtered_product"
+ help = basepath _ "describecomponents.cgi?product=$filtered_product"
%]
<div class="name-info-outer dropdown">
<span id="product-name" class="dropdown-button" tabindex="0" role="button"
</header>
<li role="separator"></li>
<div class="actions">
- <div><a href="buglist.cgi?product=[% bug.product FILTER uri %]&bug_status=__open__"
+ <div><a href="[% basepath FILTER none %]buglist.cgi?product=[% bug.product FILTER uri %]&bug_status=__open__"
target="_blank" role="menuitem" tabindex="-1">See Open [% terms.Bugs %] in This Product</a></div>
- <div><a href="enter_bug.cgi?product=[% bug.product FILTER uri %]"
+ <div><a href="[% basepath FILTER none %]enter_bug.cgi?product=[% bug.product FILTER uri %]"
target="_blank" role="menuitem" tabindex="-1">File New [% terms.Bug %] in This Product</a></div>
<div><button disabled type="button" class="minor component-watching" role="menuitem" tabindex="-1"
data-product="[% bug.product FILTER html %]"
hide_on_view = 1
hide_on_edit = !can_edit_product
append_content = 1
- help = "describecomponents.cgi?product=$filtered_product"
+ help = basepath _ "describecomponents.cgi?product=$filtered_product"
%]
<span id="product-search-container">
[% INCLUDE prodcompsearch/form.html.tmpl
%]
<button id="product-search" type="button" class="minor">Search</button>
<button id="product-search-cancel" type="button" class="minor" style="display:none">X</button>
- <img id="product-throbber" src="extensions/BugModal/web/throbber.gif"
+ <img id="product-throbber" src="[% basepath FILTER none %]extensions/BugModal/web/throbber.gif"
width="16" height="11" style="display:none">
- <img id="product-search-error" class="tt" src="extensions/BugModal/web/error.png"
+ <img id="product-search-error" class="tt" src="[% basepath FILTER none %]extensions/BugModal/web/error.png"
width="16" height="16" style="display:none">
</span>
[% END %]
[% WRAPPER bug_modal/field.html.tmpl
field = bug_fields.component
field_type = constants.FIELD_TYPE_SINGLE_SELECT
- help = "describecomponents.cgi?product=$filtered_product&component=$filtered_component#$filtered_component"
+ help = basepath _ "describecomponents.cgi?product=$filtered_product&component=$filtered_component#$filtered_component"
%]
<div class="name-info-outer dropdown">
</header>
<li role="separator"></li>
<div class="actions">
- <div><a href="buglist.cgi?product=[% bug.product FILTER uri %]&
+ <div><a href="[% basepath FILTER none %]buglist.cgi?product=[% bug.product FILTER uri %]&
[%~ %]component=[% bug.component FILTER uri %]&bug_status=__open__"
target="_blank" role="menuitem" tabindex="-1">See Open [% terms.Bugs %] in This Component</a></div>
- <div><a href="enter_bug.cgi?product=[% bug.product FILTER uri %]&
+ <div><a href="[% basepath FILTER none %]enter_bug.cgi?product=[% bug.product FILTER uri %]&
[%~ %]component=[% bug.component FILTER uri %]"
target="_blank" role="menuitem" tabindex="-1">File New [% terms.Bug %] in This Component</a></div>
<div><button disabled type="button" class="minor component-watching" role="menuitem" tabindex="-1"
field = bug_fields.keywords
field_type = constants.FIELD_TYPE_KEYWORDS
hide_on_view = bug.keyword_objects.size == 0
- help = "describekeywords.cgi"
+ help = basepath _ "describekeywords.cgi"
%]
[% bug.keyword_objects.pluck("name").join(", ") || "---" FILTER html %]
[% END %]
label = ""
hide_on_edit = 1
%]
- Dependency <a href="showdependencytree.cgi?id=[% bug.bug_id FILTER none %]&hide_resolved=1">tree</a>
- / <a href="showdependencygraph.cgi?id=[% bug.bug_id FILTER none %]">graph</a>
+ Dependency <a href="[% basepath FILTER none %]showdependencytree.cgi?id=[% bug.bug_id FILTER none %]&hide_resolved=1">tree</a>
+ / <a href="[% basepath FILTER none %]showdependencygraph.cgi?id=[% bug.bug_id FILTER none %]">graph</a>
[% END %]
[% END %]
help = "https://wiki.mozilla.org/BMO/UserGuide/BugFields#deadline"
%]
<div>
- <a href="summarize_time.cgi?id=[% bug.bug_id FILTER none %]&do_depends=1">
+ <a href="[% basepath FILTER none %]summarize_time.cgi?id=[% bug.bug_id FILTER none %]&do_depends=1">
Summarize time (including time for [% terms.bugs %]
blocking this [% terms.bug %])</a>
</div>
[% IF user.id %]
<div id="top-actions">
- <a href="attachment.cgi?bugid=[% bug.id FILTER uri %]&action=enter" id="attachments-add-link">Attach File</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?bugid=[% bug.id FILTER uri %]&action=enter" id="attachments-add-link">Attach File</a>
[%+ Hook.process('top_actions') %]
<button type="submit" class="save-btn major" id="top-save-btn" style="display:none">Save Changes</button>
</div>
aria-expanded="false" aria-controls="format-menu" class="dropdown-button minor">Format [% terms.Bug %] ▴</button>
<ul class="dropdown-content left menu-up" id="format-menu" role="menu" style="display:none;">
<li role="presentation">
- <a href="show_bug.cgi?format=multiple&id=[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">For Printing</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?format=multiple&id=[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">For Printing</a>
</li>
<li role="presentation">
- <a href="show_bug.cgi?ctype=xml&id=[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">XML</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?ctype=xml&id=[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">XML</a>
</li>
<li role="presentation">
- <a href="show_bug.cgi?format=default&id=[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">Legacy</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?format=default&id=[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">Legacy</a>
</li>
[% IF bug.groups_in.size == 0 %]
<li role="presentation">
- <a href="rest/bug/[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">JSON</a>
+ <a href="[% basepath FILTER none %]rest/bug/[% bug.id FILTER uri %]" role="menuitem" tabindex="-1">JSON</a>
</li>
[% END %]
</ul>
aria-expanded="false" aria-controls="new-bug-menu" class="dropdown-button minor">New/Clone [% terms.Bug %] ▴</button>
<ul class="dropdown-content left menu-up" id="new-bug-menu" role="menu" style="display:none;">
<li role="presentation">
- <a href="enter_bug.cgi" role="menuitem" tabindex="-1" target="_blank">
+ <a href="[% basepath FILTER none %]enter_bug.cgi" role="menuitem" tabindex="-1" target="_blank">
Create a new [% terms.bug %]</a>
</li>
<li role="presentation">
- <a href="enter_bug.cgi?product=[% bug.product FILTER uri %]"
+ <a href="[% basepath FILTER none %]enter_bug.cgi?product=[% bug.product FILTER uri %]"
role="menuitem" tabindex="-1" target="_blank">… in this product</a>
</li>
<li role="presentation">
- <a href="enter_bug.cgi?product=[% bug.product FILTER uri %]&component=[% bug.component FILTER uri %]"
+ <a href="[% basepath FILTER none %]enter_bug.cgi?product=[% bug.product FILTER uri %]&component=[% bug.component FILTER uri %]"
role="menuitem" tabindex="-1" target="_blank">… in this component</a>
</li>
<li role="separator"></li>
<li role="presentation">
- <a href="enter_bug.cgi?format=__default__&product=[% bug.product FILTER uri %]&blocked=[% bug.id FILTER uri %]"
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__&product=[% bug.product FILTER uri %]&blocked=[% bug.id FILTER uri %]"
role="menuitem" tabindex="-1" target="_blank">… that blocks this [% terms.bug %]</a>
</li>
<li role="presentation">
- <a href="enter_bug.cgi?format=__default__&product=[% bug.product FILTER uri %]&dependson=[% bug.id FILTER uri %]"
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__&product=[% bug.product FILTER uri %]&dependson=[% bug.id FILTER uri %]"
role="menuitem" tabindex="-1" target="_blank">… that depends on this [% terms.bug %]</a>
</li>
<li role="separator"></li>
<li role="presentation">
- <a href="enter_bug.cgi?format=__default__&product=[% bug.product FILTER uri %]&cloned_bug_id=[% bug.id FILTER uri %]"
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__&product=[% bug.product FILTER uri %]&cloned_bug_id=[% bug.id FILTER uri %]"
role="menuitem" tabindex="-1" target="_blank">… as a clone of this [% terms.bug %]</a>
</li>
<li role="presentation">
- <a href="enter_bug.cgi?format=__default__&cloned_bug_id=[% bug.id FILTER uri %]"
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__&cloned_bug_id=[% bug.id FILTER uri %]"
role="menuitem" tabindex="-1" target="_blank">… as a clone, in a different product</a>
</li>
</ul>
ELSE;
%]
<div id="new-comment-notice">
- You need to <a href="show_bug.cgi?id=[% bug.bug_id FILTER none %]&GoAheadAndLogIn=1">log in</a>
+ You need to <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id FILTER none %]&GoAheadAndLogIn=1">log in</a>
before you can comment on or make changes to this [% terms.bug %].
</div>
[%
<input type="datetime-local" name="[% name FILTER html %]" id="[% name FILTER html %]"
value="[% value FILTER html %]" [% aria_labelledby_html FILTER none %]>
<img class="cf_datetime-img" id="[% name FILTER html %]-img"
- src="extensions/BugModal/web/calendar.png" width="16" height="16">
+ src="[% basepath FILTER none %]extensions/BugModal/web/calendar.png" width="16" height="16">
[% CASE constants.FIELD_TYPE_DATE %]
[%# date %]
<input type="date" name="[% name FILTER html %]" id="[% name FILTER html %]"
value="[% value FILTER html %]" [% aria_labelledby_html FILTER none %]>
<img class="cf_date-img" id="[% name FILTER html %]-img"
- src="extensions/BugModal/web/calendar.png" width="16" height="16">
+ src="[% basepath FILTER none %]extensions/BugModal/web/calendar.png" width="16" height="16">
[% CASE constants.FIELD_TYPE_INTEGER %]
[%# integer %]
[% INCLUDE nav_link text="Next ❱" bug_id="" %]
[% END %]
[% INCLUDE nav_link text="Last ❱❱" bug_id=last_bug_list.last %]
- <a id="search-nav-reget" href="buglist.cgi?regetlastlist=[% search.id FILTER uri %]">Last search results</a>
+ <a id="search-nav-reget" href="[% basepath FILTER none %]buglist.cgi?regetlastlist=[% search.id FILTER uri %]">Last search results</a>
</div>
[% BLOCK nav_link %]
[% IF bug_id == "" %]
<span class="search-nav-disabled">[% text FILTER none %]</span>
[% ELSE %]
- <a class="search-nav-link" href="show_bug.cgi?id=[% bug_id FILTER uri %]&list_id=[% search.id FILTER uri %]">
+ <a class="search-nav-link" href="[% basepath FILTER none %]show_bug.cgi?id=[% bug_id FILTER uri %]&list_id=[% search.id FILTER uri %]">
[%~ text FILTER none ~%]
</a>
[% END %]
[%~ ~%]
<li id="comment-preview-tab" role="tab" tabindex="-1" aria-controls="comment-preview-tabpanel" aria-selected="false">
Preview
- <img id="preview-throbber" src="extensions/BugModal/web/throbber.gif" width="16" height="11" style="display:none">
+ <img id="preview-throbber" src="[% basepath FILTER none %]extensions/BugModal/web/throbber.gif" width="16" height="11" style="display:none">
</li>
</ul>
</div>
<div id="bugzilla-etiquette">
- <a href="page.cgi?id=etiquette.html" target="_blank" tabindex="-1">
+ <a href="[% basepath FILTER none %]page.cgi?id=etiquette.html" target="_blank" tabindex="-1">
Comments Subject to Etiquette and Contributor Guidelines</a>
</div>
data-show-edit="[% user.in_group('editusers') || user.in_group('disableusers') || user.bless_groups.size > 0 ? 1 : 0 %]"
title="[% u.identity FILTER html %]"
[% ELSE %]
- href="user_profile?user_id=[% u.id FILTER none %]"
+ href="[% basepath FILTER none %]user_profile?user_id=[% u.id FILTER none %]"
[% END %]
>
<span class="[% user.id ? 'fn' : 'fna' %]">[% nick_only ? u.nick : (u.name || u.nick) FILTER html %]</span>
function ccListLoading() {
$('#cc-list').html(
- '<img src="extensions/BugModal/web/throbber.gif" width="16" height="11"> Loading...'
+ `<img src="${BUGZILLA.config.basepath}extensions/BugModal/web/throbber.gif" width="16" height="11"> Loading...`
);
}
function ccListUpdate() {
bugzilla_ajax(
{
- url: 'rest/bug_modal/cc/' + BUGZILLA.bug_id
+ url: `${BUGZILLA.config.basepath}rest/bug_modal/cc/${BUGZILLA.bug_id}`
},
function(data) {
$('#cc-list').html(data.html);
$('#action-history')
.click(function(event) {
event.preventDefault();
- window.open(`show_activity.cgi?id=${BUGZILLA.bug_id}`, '_blank');
+ window.open(`${BUGZILLA.config.basepath}show_activity.cgi?id=${BUGZILLA.bug_id}`, '_blank');
});
// use scrollTo for in-page activity links
// load the missing select data
bugzilla_ajax(
{
- url: 'rest/bug_modal/edit/' + BUGZILLA.bug_id
+ url: `${BUGZILLA.config.basepath}rest/bug_modal/edit/${BUGZILLA.bug_id}`
},
function(data) {
$('#mode-btn').hide();
bugzilla_ajax(
{
- url: 'rest/bug/' + BUGZILLA.bug_id,
+ url: `${BUGZILLA.config.basepath}rest/bug/${BUGZILLA.bug_id}`,
type: 'PUT',
data: JSON.stringify({ cc: cc_change })
},
$('#vote-btn')
.click(function(event) {
event.preventDefault();
- window.location.href = 'page.cgi?id=voting/user.html&bug_id=' + BUGZILLA.bug_id + '#vote_' + BUGZILLA.bug_id;
+ window.location.href = `${BUGZILLA.config.basepath}page.cgi?` +
+ `id=voting/user.html&bug_id=${BUGZILLA.bug_id}#vote_${BUGZILLA.bug_id}`;
});
// user-story
bugzilla_ajax(
{
- url: 'rest/bug_modal/new_product/' + BUGZILLA.bug_id + '?product=' + encodeURIComponent($('#product').val())
+ url: `${BUGZILLA.config.basepath}rest/bug_modal/new_product/${BUGZILLA.bug_id}?` +
+ `product=${encodeURIComponent($('#product').val())}`
},
function(data) {
$('#product-throbber').hide();
preview.html('');
bugzilla_ajax(
{
- url: 'rest/bug/comment/render',
+ url: `${BUGZILLA.config.basepath}rest/bug/comment/render`,
type: 'POST',
data: { text: comment.val() },
hideError: true
}
function show_new_changes_indicator() {
- const url = `rest/bug_user_last_visit/${BUGZILLA.bug_id}`;
+ const url = `${BUGZILLA.config.basepath}rest/bug_user_last_visit/${BUGZILLA.bug_id}`;
// Get the last visited timestamp
bugzilla_ajax({ url }, data => {
if (history && history.replaceState) {
var href = document.location.href;
if (!href.match(/show_bug\.cgi/)) {
- history.replaceState(null, BUGZILLA.bug_title, 'show_bug.cgi?id=' + BUGZILLA.bug_id);
+ history.replaceState(null, BUGZILLA.bug_title, `${BUGZILLA.config.basepath}show_bug.cgi?id=${BUGZILLA.bug_id}`);
document.title = BUGZILLA.bug_title;
}
if (href.match(/show_bug\.cgi\?.*list_id=/)) {
// update bugzilla
bugzilla_ajax(
{
- url: 'rest/bug/comment/' + commentID + '/tags',
+ url: `${BUGZILLA.config.basepath}rest/bug/comment/${commentID}/tags`,
type: 'PUT',
data: { remove: [ tag ] },
hideError: true
cancelRefresh();
refreshXHR = bugzilla_ajax(
{
- url: 'rest/bug/comment/' + commentID + '?include_fields=tags',
+ url: `${BUGZILLA.config.basepath}rest/bug/comment/${commentID}?include_fields=tags`,
hideError: true
},
function(data) {
appendTo: $('#main-inner'),
forceFixPosition: true,
serviceUrl: function(query) {
- return 'rest/bug/comment/tags/' + encodeURIComponent(query);
+ return `${BUGZILLA.config.basepath}rest/bug/comment/tags/${encodeURIComponent(query)}`;
},
params: {
Bugzilla_api_token: (BUGZILLA.api_token ? BUGZILLA.api_token : '')
// update bugzilla
bugzilla_ajax(
{
- url: 'rest/bug/comment/' + commentID + '/tags',
+ url: `${BUGZILLA.config.basepath}rest/bug/comment/${commentID}/tags`,
type: 'PUT',
data: { add: addTags },
hideError: true
function ccListLoading() {
$('#cc-list').html(
- '<img src="extensions/BugModal/web/throbber.gif" width="16" height="11"> Loading...'
+ `<img src="${BUGZILLA.config.basepath}extensions/BugModal/web/throbber.gif" width="16" height="11"> Loading...`
);
}
function ccListUpdate() {
bugzilla_ajax(
{
- url: 'rest/bug_modal/cc/' + BUGZILLA.bug_id
+ url: `${BUGZILLA.config.basepath}rest/bug_modal/cc/${BUGZILLA.bug_id}`
},
function(data) {
$('#cc-list').html(data.html);
$('#action-history')
.click(function(event) {
event.preventDefault();
- document.location.href = 'show_activity.cgi?id=' + BUGZILLA.bug_id;
+ document.location.href = `${BUGZILLA.config.basepath}show_activity.cgi?id=${BUGZILLA.bug_id}`;
});
// use scrollTo for in-page activity links
// load the missing select data
bugzilla_ajax(
{
- url: 'rest/bug_modal/edit/' + BUGZILLA.bug_id
+ url: `${BUGZILLA.config.basepath}rest/bug_modal/edit/${BUGZILLA.bug_id}`
},
function(data) {
$('#mode-btn').hide();
bugzilla_ajax(
{
- url: 'rest/bug/' + BUGZILLA.bug_id,
+ url: `${BUGZILLA.config.basepath}rest/bug/${BUGZILLA.bug_id}`,
type: 'PUT',
data: JSON.stringify({ cc: cc_change })
},
$('#vote-btn')
.click(function(event) {
event.preventDefault();
- window.location.href = 'page.cgi?id=voting/user.html&bug_id=' + BUGZILLA.bug_id + '#vote_' + BUGZILLA.bug_id;
+ window.location.href = `${BUGZILLA.config.basepath}page.cgi?` +
+ `id=voting/user.html&bug_id=${BUGZILLA.bug_id}#vote_${BUGZILLA.bug_id}`;
});
// user-story
preview.html('');
bugzilla_ajax(
{
- url: 'rest/bug/comment/render',
+ url: `${BUGZILLA.config.basepath}rest/bug/comment/render`,
type: 'POST',
data: { text: comment.val() },
hideError: true
if (history && history.replaceState) {
var href = document.location.href;
if (!href.match(/new-bug/) && !href.match(/show_bug\.cgi/)) {
- history.replaceState(null, BUGZILLA.bug_title, 'show_bug.cgi?id=' + BUGZILLA.bug_id);
+ history.replaceState(null, BUGZILLA.bug_title, `${BUGZILLA.config.basepath}show_bug.cgi?id=${BUGZILLA.bug_id}`);
document.title = BUGZILLA.bug_title;
}
if (href.match(/show_bug\.cgi\?.*list_id=/)) {
$('#component').attr('disabled', true);
bugzilla_ajax(
{
- url: 'rest/bug_modal/product_info?product=' + encodeURIComponent(product)
+ url: `${BUGZILLA.config.basepath}rest/bug_modal/product_info?product=${encodeURIComponent(product)}`
},
function(data) {
$('#product-throbber').hide();
var product_name = window.location.hash? window.location.hash.substr(1) : null;
bugzilla_ajax(
{
- url: 'rest/bug_modal/initial_field_values'
+ url: `${BUGZILLA.config.basepath}rest/bug_modal/initial_field_values`
},
function(data) {
initial = data
This feature provides fine-grained control over what changes to [% terms.bugs
%] will result in an email notification. These filters are applied
<b>after</b> the rules configured on the
- <a href="userprefs.cgi?tab=email">Email Preferences</a> tab.
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=email">Email Preferences</a> tab.
</p>
<p>
If multiple filters are applicable to the same [% terms.bug %] change,
etc. If a new component is added which starts with "Developer Tools", you'll
automatically start watching that too.
<br>
- Use <a href="userprefs.cgi?tab=email">Email Preferences</a> to filter which
+ Use <a href="[% basepath FILTER none %]userprefs.cgi?tab=email">Email Preferences</a> to filter which
notification emails you receive.
</p>
</td>
<td>
[% IF (watch.component) %]
- <a href="buglist.cgi?product=[% watch.product.name FILTER uri ~%]
+ <a href="[% basepath FILTER none %]buglist.cgi?product=[% watch.product.name FILTER uri ~%]
&component=[% watch.component.name FILTER uri %]&resolution=---">
[% watch.component.name FILTER html %]
</a>
[% ELSIF watch.component_prefix %]
<i>starts with:</i> [% watch.component_prefix FILTER html %]
[% ELSE %]
- <a href="describecomponents.cgi?product=[% watch.product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]describecomponents.cgi?product=[% watch.product.name FILTER uri %]">
__Any__
</a>
[% END %]
<td>[% watch.user.login FILTER html %]</td>
<td> [% watch.component.product.name FILTER html %]</td>
<td>
- <a href="buglist.cgi?product=[% watch.product.name FILTER uri ~%]
+ <a href="[% basepath FILTER none %]buglist.cgi?product=[% watch.product.name FILTER uri ~%]
&component=[% watch.component.name FILTER uri %]&resolution=---">
[% watch.component.name FILTER html %]
</a>
</table>
<p>
- Use <a href="userprefs.cgi?tab=email#new_watched_by_you">Email Preferences</a>
+ Use <a href="[% basepath FILTER none %]userprefs.cgi?tab=email#new_watched_by_you">Email Preferences</a>
to manage this list.
</p>
#%]
[% IF san_tag == "component_watching_repair" %]
- <a href="sanitycheck.cgi?component_watching_repair=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?component_watching_repair=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]"
>Repair invalid product_id values in the component_watch table</a>
* @returns {Promise<Object|String>} Response data or error message.
*/
async fetch(request = {}, path = '') {
- request.url = `/rest/component-watching${path}`;
+ request.url = `${BUGZILLA.config.basepath}rest/component-watching${path}`;
return new Promise((resolve, reject) => bugzilla_ajax(request, data => resolve(data), error => reject(error)));
}
%]
[% IF comment.edit_count %]
- <a href="page.cgi?id=editcomments.html&bug_id=[% bug.id FILTER none %]&comment_id=[% comment.id FILTER none %]"
+ <a href="[% basepath FILTER none %]page.cgi?id=editcomments.html&bug_id=[% bug.id FILTER none %]&comment_id=[% comment.id FILTER none %]"
title="[% comment.edit_count FILTER none %] edit[% "s" UNLESS comment.edit_count == 1 %]">(Edited)</a>
[% END %]
// load original comment text
bugzilla_ajax(
{
- url: 'rest/editcomments/comment/' + id,
+ url: `${BUGZILLA.config.basepath}rest/editcomments/comment/${id}`,
hideError: true
},
function(data) {
<div id="edit_table"></div>
<br>
-<form method="post" action="page.cgi" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]page.cgi" enctype="multipart/form-data"
onsubmit="editTable.to_json('table_data')">
<input type="hidden" name="id" value="edit_table.html">
<input type="hidden" name="table" value="[% table_name FILTER html %]">
[% ELSIF san_tag == "example_check_au_user_alert" %]
User <[% login FILTER html %]> isn't Australian.
[% IF user.in_group('editusers') %]
- <a href="editusers.cgi?id=[% userid FILTER none %]">Edit this user</a>.
+ <a href="[% basepath FILTER none %]editusers.cgi?id=[% userid FILTER none %]">Edit this user</a>.
[% END %]
[% ELSIF san_tag == "example_check_au_user_prompt" %]
- <a href="sanitycheck.cgi?example_repair_au_user=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?example_repair_au_user=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">Fix these users</a>.
[% ELSIF san_tag == "example_repair_au_user_start" %]
<em>EXAMPLE PLUGIN</em> - OK, would now make users Australian.
# byron jones <glob@mozilla.com>
#%]
-<link rel="stylesheet" href="extensions/FlagTypeComment/web/styles/ftc.css">
-<script [% script_nonce FILTER none %] src="extensions/FlagTypeComment/web/js/ftc.js"></script>
+<link rel="stylesheet" href="[% basepath FILTER none %]extensions/FlagTypeComment/web/styles/ftc.css">
+<script [% script_nonce FILTER none %] src="[% basepath FILTER none %]extensions/FlagTypeComment/web/js/ftc.js"></script>
[% IF ftc_flags.keys.size %]
[%# plaintext templates from database %]
#%]
[% USE Bugzilla %]
[% IF Param('user_info_class').split(',').contains('GitHubAuth') %]
- <form method="post" action="[% urlbase FILTER html %]github.cgi">
+ <form method="post" action="[% basepath FILTER html %]github.cgi">
<input type="hidden" name="github_secret" value="[% Bugzilla.github_secret FILTER html %]">
<input type="hidden" name="target_uri" value="[% Bugzilla.cgi.target_uri FILTER html %]">
- <input type="image" src="extensions/GitHubAuth/web/images/github_sign_in.png"
+ <input type="image" src="[% basepath FILTER none %]extensions/GitHubAuth/web/images/github_sign_in.png"
alt="Sign in with GitHub"
title="Sign in with GitHub"
width="185" height="25">
</form>
-[% END %]
\ No newline at end of file
+[% END %]
[% IF Param('user_info_class').split(',').contains('GitHubAuth') %]
<span id="github_mini_login[% qs_suffix FILTER html %]" class="mini_login[% qs_suffix FILTER html %]">
- <form method="post" action="[% urlbase FILTER html %]github.cgi">
+ <form method="post" action="[% basepath FILTER html %]github.cgi">
<input type="hidden" name="github_secret" value="[% Bugzilla.github_secret FILTER html %]">
<input type="hidden" name="target_uri" value="[% Bugzilla.cgi.target_uri FILTER html %]">
- <input type="image" src="extensions/GitHubAuth/web/images/sign_in.png" height="22" width="75" align="absmiddle"
+ <input type="image" src="[% basepath FILTER none %]extensions/GitHubAuth/web/images/sign_in.png" height="22" width="75" align="absmiddle"
alt="Sign in with GitHub"
title="Sign in with GitHub"> or
</form>
[% IF user.settings.show_gravatars.value == 'On' %]
[% IF who.last_activity_ts %]
- <a href="user_profile?user_id=[% who.id FILTER none %]">
+ <a href="[% basepath FILTER none %]user_profile?user_id=[% who.id FILTER none %]">
[% END %]
<img alt="User image" align="middle" src="[% who.gravatar FILTER none %]" width="32" height="32" border="0">
[% "</a>" IF who.last_activity_ts %]
style_urls = [ 'extensions/GuidedBugEntry/web/style/guided.css' ]
%]
-<iframe id="yui-history-iframe" src="extensions/GuidedBugEntry/web/yui-history-iframe.txt"></iframe>
+<iframe id="yui-history-iframe" src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/yui-history-iframe.txt"></iframe>
<input id="yui-history-field" type="hidden">
<noscript>
You require JavaScript to use this [% terms.bug %] entry form.<br><br>
-Please use the <a href="enter_bug.cgi?format=__default__">advanced [% terms.bug %] entry form</a>.
+Please use the <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__">advanced [% terms.bug %] entry form</a>.
</noscript>
<div id="loading" class="hidden">
</div>
<div id="advanced">
- <a id="advanced_img" href="enter_bug.cgi?format=__default__"><img
- src="extensions/GuidedBugEntry/web/images/advanced.png" width="16" height="16" border="0"></a>
- <a id="advanced_link" href="enter_bug.cgi?format=__default__">Switch to the advanced [% terms.bug %] entry form</a>
+ <a id="advanced_img" href="[% basepath FILTER none %]enter_bug.cgi?format=__default__"><img
+ src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/images/advanced.png" width="16" height="16" border="0"></a>
+ <a id="advanced_link" href="[% basepath FILTER none %]enter_bug.cgi?format=__default__">Switch to the advanced [% terms.bug %] entry form</a>
</div>
<script [% script_nonce FILTER none %]>
}
);
</script>
-<script src="page.cgi?id=guided_products.js[% "&format_forced=1" IF format_forced %]"></script>
+<script src="[% basepath FILTER none %]page.cgi?id=guided_products.js[% "&format_forced=1" IF format_forced %]"></script>
[% PROCESS global/footer.html.tmpl %]
[%############################################################################%]
onclick="product.select('[% name FILTER js %]')"
[% END %]>
<span class="product-item">
- <img src="extensions/BMO/web/producticons/[% icon FILTER uri %]" class="product-icon">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/producticons/[% icon FILTER uri %]" class="product-icon">
<a href="javascript:void(0)">[% caption FILTER html %]</a>
<p>
[% IF content %]
<td>
<div class="exit_img">
<a href="https://support.mozilla.org/">
- <img src="extensions/GuidedBugEntry/web/images/support.png" width="32" height="32"></a>
+ <img src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/images/support.png" width="32" height="32"></a>
</div>
</td>
<td class="exit_text">
<td>
<div class="exit_img">
<a href="https://input.mozilla.org/feedback/">
- <img src="extensions/GuidedBugEntry/web/images/input.png" width="32" height="32">
+ <img src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/images/input.png" width="32" height="32">
</a>
</div>
</td>
<tr>
<td>
<div class="exit_img">
- <img src="extensions/GuidedBugEntry/web/images/webbug.png" width="32" height="32">
+ <img src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/images/webbug.png" width="32" height="32">
</div>
</td>
<td class="exit_text_last">
<table border="0" cellpadding="5" cellspacing="0" id="product_support" class="hidden">
<tr>
<td>
- <img src="extensions/GuidedBugEntry/web/images/message.png" width="24" height="24">
+ <img src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/images/message.png" width="24" height="24">
</td>
<td id="product_support_message"> </td>
</tr>
<table border="0" cellpadding="5" cellspacing="0" id="l10n_message">
<tr>
<td>
- <img src="extensions/BMO/web/producticons/localization.png" width="24" height="24">
+ <img src="[% basepath FILTER none %]extensions/BMO/web/producticons/localization.png" width="24" height="24">
</td>
<td>
<a href="javascript:void(0)" id="l10n_link">
[% INCLUDE page_title %]
-<form method="post" action="post_bug.cgi" enctype="multipart/form-data" onsubmit="return bugForm.validate()">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" enctype="multipart/form-data" onsubmit="return bugForm.validate()">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="hidden" name="product" id="product" value="">
<input type="hidden" name="component" id="component" value="">
<div class="label">
Component:
</div>
- (<a id="list_comp" href="describecomponents.cgi" target="_blank"
+ (<a id="list_comp" href="[% basepath FILTER none %]describecomponents.cgi" target="_blank"
title="Show a list of all components and descriptions (in a new window)."
>List</a>)
</td>
[%############################################################################%]
[% BLOCK help %]
-<img src="extensions/GuidedBugEntry/web/images/help.png" width="16" height="16" class="help_image"
+<img src="[% basepath FILTER none %]extensions/GuidedBugEntry/web/images/help.png" width="16" height="16" class="help_image"
helpid="[% id FILTER html %]" onMouseOver="bugForm.showHelp(this)" onMouseOut="bugForm.hideHelp(this)"
>
[% END %]
},
setAdvancedLink: function() {
- var href = 'enter_bug.cgi?format=__default__' +
- '&product=' + encodeURIComponent(product.getName()) +
- '&short_desc=' + encodeURIComponent(dupes.getSummary());
+ var href = `${BUGZILLA.config.basepath}enter_bug.cgi?format=__default__` +
+ `&product=${encodeURIComponent(product.getName())}` +
+ `&short_desc=${encodeURIComponent(dupes.getSummary())}`;
Dom.get('advanced_img').href = href;
Dom.get('advanced_link').href = href;
}
Dom.get('product').value = productName;
Dom.get('product_label').innerHTML = YAHOO.lang.escapeHTML(productName);
Dom.get('dupes_product_name').innerHTML = YAHOO.lang.escapeHTML(productName);
- Dom.get('list_comp').href = 'describecomponents.cgi?product=' + encodeURIComponent(productName);
+ Dom.get('list_comp').href = `${BUGZILLA.config.basepath}describecomponents.cgi?` +
+ `product=${encodeURIComponent(productName)}`;
guided.setAdvancedLink();
if (productName == '') {
YAHOO.util.Connect.setDefaultPostHeader('application/json; charset=UTF-8');
YAHOO.util.Connect.asyncRequest(
'POST',
- 'jsonrpc.cgi',
+ `${BUGZILLA.config.basepath}jsonrpc.cgi`,
{
success: function(res) {
try {
if (data.error)
throw(data.error.message);
if (data.result.products.length == 0)
- document.location.href = 'enter_bug.cgi?format=guided';
+ document.location.href = `${BUGZILLA.config.basepath}enter_bug.cgi?format=guided`;
product.details = data.result.products[0];
bugForm.onProductUpdated();
} catch (err) {
},
_initDataTable: function() {
- var dataSource = new YAHOO.util.XHRDataSource("jsonrpc.cgi");
+ var dataSource = new YAHOO.util.XHRDataSource(`${BUGZILLA.config.basepath}jsonrpc.cgi`);
dataSource.connTimeout = 15000;
dataSource.connMethodPost = true;
dataSource.connXhrMode = "cancelStaleRequests";
},
_formatId: function(el, oRecord, oColumn, oData) {
- el.innerHTML = '<a href="show_bug.cgi?id=' + oData +
- '" target="_blank">' + oData + '</a>';
+ el.innerHTML = `<a href="${BUGZILLA.config.basepath}show_bug.cgi?id=${oData}" target="_blank">${oData}</a>`;
},
_formatStatus: function(el, oRecord, oColumn, oData) {
YAHOO.util.Connect.setDefaultPostHeader('application/json; charset=UTF-8');
YAHOO.util.Connect.asyncRequest(
'POST',
- 'jsonrpc.cgi',
+ `${BUGZILLA.config.basepath}jsonrpc.cgi`,
{
success: function(res) {
var data = YAHOO.lang.JSON.parse(res.responseText);
dupes._dataTable.showTableMessage(
'Searching for similar issues... ' +
- '<img src="extensions/GuidedBugEntry/web/images/throbber.gif"' +
+ `<img src="${BUGZILLA.config.basepath}extensions/GuidedBugEntry/web/images/throbber.gif"` +
' width="16" height="11">',
YAHOO.widget.DataTable.CLASS_LOADING
);
var visibleCount = 0;
if (products[productName] && products[productName].format) {
Dom.addClass('advanced', 'hidden');
- document.location.href = 'enter_bug.cgi?format=' + encodeURIComponent(products[productName].format) +
- '&product=' + encodeURIComponent(productName) +
- '&short_desc=' + encodeURIComponent(dupes.getSummary());
+ document.location.href = `${BUGZILLA.config.basepath}enter_bug.cgi?` +
+ `format=${encodeURIComponent(products[productName].format)}` +
+ `&product=${encodeURIComponent(productName)}` +
+ `&short_desc=${encodeURIComponent(dupes.getSummary())}`;
guided.updateStep = false;
return;
}
support:
'If you are new to Firefox or Bugzilla, please consider checking ' +
'<a href="https://support.mozilla.org/">' +
- '<img src="extensions/GuidedBugEntry/web/images/sumo.png" width="16" height="16" align="absmiddle">' +
+ `<img src="${BUGZILLA.config.basepath}extensions/GuidedBugEntry/web/images/sumo.png" width="16" height="16" align="absmiddle">` +
' <b>Firefox Help</b></a> instead of creating a bug.'
},
support:
'If you are new to Firefox or Bugzilla, please consider checking ' +
'<a href="https://support.mozilla.org/">' +
- '<img src="extensions/GuidedBugEntry/web/images/sumo.png" width="16" height="16" align="absmiddle">' +
+ `<img src="${BUGZILLA.config.basepath}extensions/GuidedBugEntry/web/images/sumo.png" width="16" height="16" align="absmiddle">` +
' <b>Firefox Help</b></a> instead of creating a bug.'
},
[%# make attachment changes better %]
[% IF change.attachid %]
html += '<a '
- + 'href="attachment.cgi?id=[% change.attachid FILTER none %]&action=edit" '
+ + 'href="[% basepath FILTER none %]attachment.cgi?id=[% change.attachid FILTER none %]&action=edit" '
+ 'title="[% change.attach.description FILTER html FILTER js %]" '
+ 'class="[% "bz_obsolete" IF change.attach.isobsolete %]"'
+ '>Attachment #[% change.attachid FILTER none %]</a> - ';
<div id="custom_form_list_text">
Other task-specific [% terms.bug %] forms exist that should be used if appropriate:
<ul>
- <li><a href="enter_bug.cgi?product=Mozilla%20Foundation%20Operations">Mozilla Foundation Vendor Request</a></li>
- <li><a href="form.name.clearance">Name Clearance Request</a></li>
- <li><a href="form.nda">NDA Request</a></li>
+ <li><a href="[% basepath FILTER none %]enter_bug.cgi?product=Mozilla%20Foundation%20Operations">Mozilla Foundation Vendor Request</a></li>
+ <li><a href="[% basepath FILTER none %]form.name.clearance">Name Clearance Request</a></li>
+ <li><a href="[% basepath FILTER none %]form.nda">NDA Request</a></li>
</ul>
</div>
</div>
<span class="required_explanation">Required Field</span>)
</p>
-<form method="post" action="post_bug.cgi" id="mozProjectForm" enctype="multipart/form-data">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="mozProjectForm" enctype="multipart/form-data">
<input type="hidden" id="product" name="product" value="Legal">
<input type="hidden" id="component" name="component" value="General">
<input type="hidden" id="rep_platform" name="rep_platform" value="All">
<span class="field_data">
<input class="date-field" name="sow_start_date" id="sow_start_date">
<img class="date-field-img" id="sow_start_date-img"
- src="extensions/BugModal/web/calendar.png" width="16" height="16">
+ src="[% basepath FILTER none %]extensions/BugModal/web/calendar.png" width="16" height="16">
</span>
</div>
<span class="field_data">
<input class="date-field" name="sow_end_date" id="sow_end_date">
<img class="date-field-img" id="sow_end_date-img"
- src="extensions/BugModal/web/calendar.png" width="16" height="16">
+ src="[% basepath FILTER none %]extensions/BugModal/web/calendar.png" width="16" height="16">
</span>
</div>
[% IF user.login %]
<li class="link-dashboard">
- <a href="[% urlbase FILTER none %]page.cgi?id=mydashboard.html" title="Show My Dashboard">
+ <a href="[% basepath FILTER none %]page.cgi?id=mydashboard.html" title="Show My Dashboard">
<span class="icon" aria-hidden="true"></span>
<span class="label">My Dashboard</span>
</a>
</optgroup>
</select>
<small>
- (<a href="userprefs.cgi?tab=saved-searches">add or remove saved searches</a>)
+ (<a href="[% basepath FILTER none %]userprefs.cgi?tab=saved-searches">add or remove saved searches</a>)
</small>
</div>
<section id="saved_searches_container">
<header>
<h2 class="query_heading">Saved Searches</h2>
- <a href="userprefs.cgi?tab=saved-searches">Edit</a>
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=saved-searches">Edit</a>
</header>
<ul>
[% IF user.showmybugslink %][% filtered_username = user.login FILTER uri %]
- <li><a href="[% Param('mybugstemplate').replace('%userid%', filtered_username) %]">
+ <li><a href="[% basepath FILTER none %][% Param('mybugstemplate').replace('%userid%', filtered_username) %]">
My [% terms.Bugs %]</a></li>
[% END %]
[% FOREACH q = user.queries %][% IF q.link_in_footer %]
- <li><a href="buglist.cgi?cmdtype=runnamed&namedcmd=[% q.name FILTER uri %]">
+ <li><a href="[% basepath FILTER none %]buglist.cgi?cmdtype=runnamed&namedcmd=[% q.name FILTER uri %]">
[% q.name FILTER html %]</a></li>
[% END %][% END %]
[% FOREACH q = user.queries_subscribed %]
- <li><a href="buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
+ <li><a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
[% q.name FILTER uri %]&sharer_id=[% q.user.id FILTER uri %]"
title="Shared by [% q.user.identity FILTER html %]">[% q.name FILTER html FILTER no_break %]</a></li>
[% END %]
for (var i = 0, l = data.size(); i < l; i++) {
ids.push(data.item(i).get('bug_id'));
}
- var url = 'buglist.cgi?bug_id=' + ids.join('%2C');
+ var url = `${BUGZILLA.config.basepath}buglist.cgi?bug_id=${ids.join('%2C')}`;
window.open(url, '_blank');
};
if (o.data.bug_status == 'RESOLVED' || o.data.bug_status == 'VERIFIED') {
bug_closed = "bz_closed";
}
- return '<a href="show_bug.cgi?id=' + encodeURIComponent(o.data.bug_id) +
- '" target="_blank" ' + 'title="' + Y.Escape.html(o.data.bug_status) + ' - ' +
- Y.Escape.html(o.data.bug_summary) + '" class="' + bug_closed +
- '">' + o.data.bug_id + '</a>';
+ return `<a href="${BUGZILLA.config.basepath}show_bug.cgi?id=${encodeURIComponent(o.data.bug_id)}" ` +
+ `target="_blank" title="${o.data.bug_status.htmlEncode()} - ${o.data.bug_summary.htmlEncode()}" ` +
+ `class="${bug_closed}">${o.data.bug_id}</a>`;
};
var updatedFormatter = function(o) {
};
// Requestee
- dataSource.requestee = new Y.DataSource.IO({ source: 'jsonrpc.cgi' });
+ dataSource.requestee = new Y.DataSource.IO({ source: `${BUGZILLA.config.basepath}jsonrpc.cgi` });
dataSource.requestee.on('error', function(e) {
try {
var response = Y.JSON.parse(e.data.responseText);
});
// Requester
- dataSource.requester = new Y.DataSource.IO({ source: 'jsonrpc.cgi' });
+ dataSource.requester = new Y.DataSource.IO({ source: `${BUGZILLA.config.basepath}jsonrpc.cgi` });
dataSource.requester.on('error', function(e) {
try {
var response = Y.JSON.parse(e.data.responseText);
}
}
- var bugQuery = new Y.DataSource.IO({ source: 'jsonrpc.cgi' });
+ var bugQuery = new Y.DataSource.IO({ source: `${BUGZILLA.config.basepath}jsonrpc.cgi` });
bugQuery.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
Y.one("#query_container .query_description").setHTML(e.response.meta.description);
Y.one("#query_container .query_heading").setHTML(e.response.meta.heading);
Y.one("#query_bugs_found").setHTML(
- '<a href="buglist.cgi?' + e.response.meta.buffer +
- '" target="_blank">' + e.response.results.length + ' bugs found</a>');
+ `<a href="${BUGZILLA.config.basepath}buglist.cgi?${e.response.meta.buffer}" target="_blank">` +
+ `${e.response.results.length} bugs found</a>`);
bugQueryTable.set('data', e.response.results);
var mark_read = e.response.meta.mark_read;
};
- lastChangesQuery = new Y.DataSource.IO({ source: 'jsonrpc.cgi' });
+ lastChangesQuery = new Y.DataSource.IO({ source: `${BUGZILLA.config.basepath}jsonrpc.cgi` });
lastChangesQuery.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
columns: [
{ key: Y.Plugin.DataTableRowExpansion.column_key, label: ' ', sortable: false },
{ key: "bug_id", label: "Bug", allowHTML: true, sortable: true,
- formatter: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
+ formatter: `<a href="${BUGZILLA.config.basepath}show_bug.cgi?id={value}" target="_blank">{value}</a>` },
{ key: "changeddate", label: "Updated", formatter: updatedFormatter,
allowHTML: true, sortable: true },
{ key: "bug_status", label: "Status", sortable: true },
for (var i = 0, l = data.size(); i < l; i++) {
ids.push(data.item(i).get('bug_id'));
}
- var url = 'buglist.cgi?bug_id=' + ids.join('%2C');
+ var url = `${BUGZILLA.config.basepath}buglist.cgi?bug_id=${ids.join('%2C')}`;
window.open(url, '_blank');
});
});
<div class="pcs-header">
[% input_label FILTER none %]
<img id="[% id FILTER html %]-throbber"
- src="extensions/ProdCompSearch/web/images/throbber.gif"
+ src="[% basepath FILTER none %]extensions/ProdCompSearch/web/images/throbber.gif"
style="display:none" width="16" height="11">
<span class="pcs-message" id="[% id FILTER html %]-no_results" style="display:none">
No components found
</div>
<input type="text" class="prod_comp_search" id="[% id FILTER html %]" size="50"
placeholder="Search by product and component"
- data-script_name="[% script_name FILTER html %]"
+ data-script_name="[% basepath _ script_name FILTER html %]"
data-format="[% format FILTER html %]"
data-cloned_bug_id="[% cloned_bug_id FILTER html %]"
data-new_tab="[% new_tab ? "1" : "0" %]"
appendTo: $('#main-inner'),
forceFixPosition: true,
serviceUrl: function(query) {
- return 'rest/prod_comp_search/' + encodeURIComponent(query);
+ return `${BUGZILLA.config.basepath}rest/prod_comp_search/${encodeURIComponent(query)}`;
},
params: params,
deferRequestBy: 250,
Push
</dt>
<dd>
- <a href="page.cgi?id=push_config.html">Configuration</a><br>
- <a href="page.cgi?id=push_queues.html">Queues</a><br>
- <a href="page.cgi?id=push_log.html">Log</a><br>
+ <a href="[% basepath FILTER none %]page.cgi?id=push_config.html">Configuration</a><br>
+ <a href="[% basepath FILTER none %]page.cgi?id=push_queues.html">Queues</a><br>
+ <a href="[% basepath FILTER none %]page.cgi?id=push_log.html">Log</a><br>
</dd>
[% END %]
[% END %]
</script>
-<form method="POST" action="page.cgi">
+<form method="POST" action="[% basepath FILTER none %]page.cgi">
<input type="hidden" name="id" value="push_config.html">
<input type="hidden" name="save" value="1">
<input type="hidden" id="token" name="token" value="[% issue_hash_token(['push_config']) FILTER html %]">
<tr>
<th class="report-header">Actions</th>
<td>
- <form class="action-button" method="post" action="page.cgi" id="deleteMessage" enctype="multipart/form-data">
+ <form class="action-button" method="post" action="[% basepath FILTER none %]page.cgi" id="deleteMessage" enctype="multipart/form-data">
<input type="hidden" name="token" value="[% issue_hash_token(['deleteMessage']) FILTER html %]">
<input type="hidden" name="id" value="push_queues_view.html">
<input type="hidden" name="delete" value="1">
<input type="hidden" name="connector" value="[% message_obj.connector FILTER html %]">
<input type="submit" value="Delete">
</form>
- <form class="action-button" method="post" action="page.cgi" id="returnQueue" enctype="multipart/form-data">
+ <form class="action-button" method="post" action="[% basepath FILTER none %]page.cgi" id="returnQueue" enctype="multipart/form-data">
<input type="hidden" name="id" value="push_queues.html">
<input type="submit" value="Return">
</form>
<h1>Community IT Discourse Request</h1>
-<form method="post" action="post_bug.cgi" id="tmRequestForm" name="f">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="tmRequestForm" name="f">
<input type="hidden" name="product" value="Infrastructure & Operations">
<input type="hidden" name="component" value="Community IT: Discourse">
<input type="hidden" name="bug_severity" value="normal">
<a href="mailto:reps-council@mozilla.org">Reps Council</a> for assistance.
</p>
-<form method="post" action="post_bug.cgi" id="tmRequestForm">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="tmRequestForm">
<input type="hidden" name="product" value="Mozilla Reps">
<input type="hidden" name="component" value="Mentorship">
<input type="hidden" name="bug_severity" value="normal">
<span class="required_star">*</span> - <span class="required_explanation">Required Fields</span>
</p>
-<form method="post" action="post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="remo-budget">
<p>Review the <a href="https://wiki.mozilla.org/ReMo/SOPs/Swag_Requests" target="_blank" rel="noopener noreferrer">
Swag Requests SOP</a> before you complete this form.</p>
-<form method="post" action="post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi" id="swagRequestForm" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" name="format" value="remo-swag">
</p>
<p style="font-size: x-small">
- Reference: <a href="show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
+ Reference: <a href="[% basepath FILTER none %]show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
</p>
[% PROCESS global/footer.html.tmpl %]
</p>
<p style="font-size: x-small">
- Reference: <a href="show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
+ Reference: <a href="[% basepath FILTER none %]show_bug.cgi?id=[% id FILTER uri %]">#[% id FILTER html %]</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[% ELSIF error == "remo_payment_cancel_dupe" %]
[% title = "Already filed payment request" %]
You already used the form to file
- <a href="[% urlbase FILTER html %]attachment.cgi?id=[% attachid FILTER uri %]&action=edit">
+ <a href="[% basepath FILTER html %]attachment.cgi?id=[% attachid FILTER uri %]&action=edit">
attachment [% attachid FILTER uri %]</a>.<br>
<br>
- You can either <a href="[% urlbase FILTER html %]page.cgi?id=remo-form-payment.html">
+ You can either <a href="[% basepath FILTER html %]page.cgi?id=remo-form-payment.html">
create a new payment request</a> or [% "go back to $terms.bug $bugid" FILTER bug_link(bugid) FILTER none %].
[% ELSIF error == "remo_missing_voucher" %]
<h1>Mozilla Reps - Payment Form</h1>
-<form method="post" action="page.cgi" id="paymentForm" enctype="multipart/form-data"
+<form method="post" action="[% basepath FILTER none %]page.cgi" id="paymentForm" enctype="multipart/form-data"
onSubmit="return validateAndSubmit();">
<input type="hidden" id="id" name="id" value="remo-form-payment.html">
<input type="hidden" id="token" name="token" value="[% token FILTER html %]">
div.text('Getting bug info...');
- var url = ("rest/bug/" + bug_id +
- "?include_fields=product,component,status,summary&Bugzilla_api_token=" + BUGZILLA.api_token);
+ var url = `${BUGZILLA.config.basepath}rest/bug/${bug_id}?` +
+ `include_fields=product,component,status,summary&Bugzilla_api_token=${BUGZILLA.api_token}`;
$.getJSON(url).done(function(data) {
var bug_message = "";
if (data) {
</div>
[% END %]
-<form method="post" action="page.cgi">
+<form method="post" action="[% basepath FILTER none %]page.cgi">
<input type="hidden" name="id" value="request_defer.html">
<input type="hidden" name="flag" value="[% flag.id FILTER none %]">
<input type="hidden" name="save" value="1">
<tr><td>
<div class="flag-bug">
- <a href="show_bug.cgi?id=[% flag.bug.id FILTER none %]">
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% flag.bug.id FILTER none %]">
[% terms.Bug %] [%+ flag.bug.id FILTER none %]
</a>
-
- <a href="show_bug.cgi?id=[% flag.bug.id FILTER none %]">
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% flag.bug.id FILTER none %]">
[% flag.bug.short_desc FILTER html %]
</a>
</div>
[% IF flag.attachment %]
<div class="flag-attach">
<div class="flag-attach-desc">
- <a href="attachment.cgi?id=[% flag.attachment.id FILTER none %]&action=edit">
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% flag.attachment.id FILTER none %]&action=edit">
[% flag.attachment.description FILTER html %]
</a>
</div>
</div>
[% IF flag.attachment.ispatch %]
<div class="flag-attach-actions">
- <a href="attachment.cgi?id=[% flag.attachment.id FILTER none ~%]
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% flag.attachment.id FILTER none ~%]
&action=diff">Diff</a> |
- <a href="review?bug=[% flag.bug.id FILTER none ~%]
+ <a href="[% basepath FILTER none %]review?bug=[% flag.bug.id FILTER none ~%]
&attachment=[% flag.attachment.id FILTER none %]">Review</a>
</div>
[% END %]
Restrict commenting on this [% terms.bug %] to users in the
<b>[% Param('restrict_comments_group') FILTER html %]</b> group.
</label>
- (<a href="page.cgi?id=restrict_comments_guidelines.html"
+ (<a href="[% basepath FILTER none %]page.cgi?id=restrict_comments_guidelines.html"
target="_blank">guidelines</a>)
</td>
</tr>
Restrictions may be applied to [% terms.bugs %] which are subject to high
volumes of off topic comments, or [% terms.bugs %] which contain high volumes
of violations of [% terms.Bugzilla %]
- <a href="page.cgi?id=etiquette.html">etiquette guidelines</a>.
+ <a href="[% basepath FILTER none %]page.cgi?id=etiquette.html">etiquette guidelines</a>.
</li>
<li>
Restrictions should not be used as a preemptive measure against comments
<div class="empty">You’re all caught up!</div>
[%- END -%]
<footer>
- <div><a href="request.cgi?action=queue&requestee=[% user.login FILTER uri %]&group=type"
+ <div><a href="[% basepath FILTER none %]request.cgi?action=queue&requestee=[% user.login FILTER uri %]&group=type"
role="menuitem" tabindex="-1">See All</a></div>
</footer>
</section>
<ul>
<li>
<strong>
- <a href="[% urlbase FILTER none %]page.cgi?id=review_suggestions.html">Suggested Reviewers</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=review_suggestions.html">Suggested Reviewers</a>
</strong> - All suggestions for the "review" flag.
</li>
</ul>
[% END %]
</ul>
-<a href="enter_bug.cgi?product=bugzilla.mozilla.org&component=Administration&format=__default__">Request a change</a>
+<a href="[% basepath FILTER none %]enter_bug.cgi?product=bugzilla.mozilla.org&component=Administration&format=__default__">Request a change</a>
<table id="report" class="hover" cellspacing="0">
get_link(req) {
const dup = req.dup_count > 1;
const splinter_base = BUGZILLA.param.splinter_base;
+ const basepath = BUGZILLA.config.basepath;
const x_types = ['github-pull-request', 'review-board-request', 'phabricator-request', 'google-doc'];
const is_patch = req.attach_ispatch;
const [is_ghpr, is_rbr, is_phr, is_gdoc] = x_types.map(type => req.attach_mimetype === `text/x-${type}`);
const link = (is_patch && !dup && splinter_base)
? `${splinter_base}&bug=${req.bug_id}&attachment=${req.attach_id}`
- : (is_redirect && !dup) ? `attachment.cgi?id=${req.attach_id}` // external redirect
- : ((is_patch || is_file) && !dup) ? `attachment.cgi?id=${req.attach_id}&action=edit`
- : `show_bug.cgi?id=${req.bug_id}`;
+ : (is_redirect && !dup) ? `${basepath}attachment.cgi?id=${req.attach_id}` // external redirect
+ : ((is_patch || is_file) && !dup) ? `${basepath}attachment.cgi?id=${req.attach_id}&action=edit`
+ : `${basepath}show_bug.cgi?id=${req.bug_id}`;
const attach_label = (is_patch || is_rbr || is_phr) ? (dup ? `${req.dup_count} patches` : 'a patch')
: is_ghpr ? (dup ? `${req.dup_count} pull requests` : 'a pull request')
find_form: function() {
for (var i = 0; i < document.forms.length; i++) {
var action = document.forms[i].getAttribute('action');
- if (action == 'attachment.cgi' || action == 'post_bug.cgi')
+ if (action.match(/\/(attachment|post_bug).cgi$/))
return document.forms[i];
}
return false;
}
var flagDS, bugDS, attachmentDS, historyTable;
- flagDS = new Y.DataSource.IO({ source: 'jsonrpc.cgi' });
+ flagDS = new Y.DataSource.IO({ source: `${BUGZILLA.config.basepath}jsonrpc.cgi` });
flagDS.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
resultListLocator: 'result',
}
});
- bugDS = new Y.DataSource.IO({ source: 'jsonrpc.cgi' });
+ bugDS = new Y.DataSource.IO({ source: `${BUGZILLA.config.basepath}jsonrpc.cgi` });
bugDS.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
resultListLocator: 'result.bugs',
}
});
- attachmentDS = new Y.DataSource.IO({ source: 'jsonrpc.cgi' });
+ attachmentDS = new Y.DataSource.IO({ source: `${BUGZILLA.config.basepath}jsonrpc.cgi` });
attachmentDS.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
metaFields: { 'attachments': 'result.attachments' }
{ key: "action", label: "Action", sortable: true, formatter: format_action },
{ key: "duration", label: "Duration", sortable: true, formatter: format_duration },
{ key: "bug_id", label: "Bug", sortable: true, allowHTML: true,
- formatter: '<a href="show_bug.cgi?id={value}" target="_blank">{value}</a>' },
+ formatter: `<a href="${BUGZILLA.config.basepath}show_bug.cgi?id={value}" target="_blank">{value}</a>` },
{ key: 'bug_summary', label: 'Summary' }
]
});
<p>If you are a member of a secure group, or if you enter a key here, your password reset email will also be sent to you encrypted. If you are a member of a secure group and do not enter a key, you will not be able to reset your password without the assistance of an administrator.</p>
-<p><a href="page.cgi?id=securemail/help.html">More help is available</a>.</p>
+<p><a href="[% basepath FILTER none %]page.cgi?id=securemail/help.html">More help is available</a>.</p>
[% Hook.process('moreinfo') %]
[% terms.Bugzilla %] considers certain groups as "secure". If a [% terms.bug %] is in one of those groups, [% terms.Bugzilla %] will not send unencrypted
email about it. To receive encrypted email rather than just a "something changed" placeholder, you must provide either
-a S/MIME or a GPG/PGP key on the <a href="[% urlbase FILTER none %]userprefs.cgi?tab=securemail">SecureMail preferences tab</a>.<br>
+a S/MIME or a GPG/PGP key on the <a href="[% basepath FILTER none %]userprefs.cgi?tab=securemail">SecureMail preferences tab</a>.<br>
<br>
-In addition, if you have uploaded a S/MIME or GPG/PGP key using the <a href="[% urlbase FILTER none %]userprefs.cgi?tab=securemail">
+In addition, if you have uploaded a S/MIME or GPG/PGP key using the <a href="[% basepath FILTER none %]userprefs.cgi?tab=securemail">
SecureMail preferences tab</a>, if you request your password to be reset, [% terms.Bugzilla %] will send the reset email encrypted and you will
be required to decrypt it to view the reset instructions.
<div class="[% class_name FILTER html %]">
<span role="heading" aria-level="2" class="bz_comment_number">
- <a href="show_bug.cgi?id=[% public_bug.bug_id FILTER none %]#c[% count %]">
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% public_bug.bug_id FILTER none %]#c[% count %]">
[%- comment_label FILTER html %]</a>
</span>
[% RETURN UNLESS is_shadow_bug %]
<br>
-<a href="show_bug.cgi?id=[% bug.cf_shadow_bug FILTER none %]#comment">Add public comment</a>
+<a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.cf_shadow_bug FILTER none %]#comment">Add public comment</a>
sub get_review_base {
my $base = Bugzilla->params->{'splinter_base'};
$base =~ s!/$!!;
- my $urlbase = Bugzilla->localconfig->{urlbase};
- $urlbase =~ s!/$!! if $base =~ "^/";
- $base = $urlbase . $base;
+ my $basepath = Bugzilla->localconfig->{basepath};
+ $basepath =~ s!/$!! if $base =~ "^/";
+ $base = $basepath . $base;
return $base;
}
<script [% script_nonce FILTER none %]>
Splinter.configBase = '[% Bugzilla.splinter_review_base FILTER js %]';
- Splinter.configBugUrl = '[% urlbase FILTER js %]';
+ Splinter.configBugUrl = '[% basepath FILTER js %]';
Splinter.configHaveExtension = true;
- Splinter.configHelp = '[% urlbase FILTER js %]page.cgi?id=splinter/help.html';
+ Splinter.configHelp = '[% basepath FILTER js %]page.cgi?id=splinter/help.html';
Splinter.configNote = '';
Splinter.readOnly = [% user.id FILTER none %] == 0;
[reviews]</a>
[% END %]
<a id='helpLink' target='splinterHelp'
- href="[% urlbase FILTER none %]page.cgi?id=splinter/help.html">
+ href="[% basepath FILTER none %]page.cgi?id=splinter/help.html">
[help]</a>
</div>
<span id="attachCreator"></span> -
<span id="attachDate"></span>
[% IF feature_enabled('patch_viewer') %]
- <a href="[% urlbase FILTER none %]attachment.cgi?id=[% attach_id FILTER uri %]&action=diff"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attach_id FILTER uri %]&action=diff"
target="_blank">[diff]</a>
[% END %]
- <a href="[% urlbase FILTER none %]attachment.cgi?id=[% attach_id FILTER uri %]&action=edit"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attach_id FILTER uri %]&action=edit"
target="_blank">[details]</a>
<p>
<b>Comment:</b><br>
<li>When the review is complete and you publish it, the overview comment and all line specific comments with their context,
will be combined together into a single review comment on the [% terms.bug %] report.</li>
<li>For more detailed instructions, read the Splinter
- <a id='helpLink' target='splinterHelp' href="[% urlbase FILTER none %]page.cgi?id=splinter/help.html">help page</a>.
+ <a id='helpLink' target='splinterHelp' href="[% basepath FILTER none %]page.cgi?id=splinter/help.html">help page</a>.
</li>
</ul>
</div>
<div id="emptyCommentNotice"><Overall Comment></div>
</div>
<div id="myPatchComments"></div>
- <form id="publish" method="post" action="attachment.cgi" onsubmit="normalizeComments();">
+ <form id="publish" method="post" action="[% basepath FILTER none %]attachment.cgi" onsubmit="normalizeComments();">
<input type="hidden" id="publish_token" name="token" value="">
<input type="hidden" id="publish_action" name="action" value="update">
<input type="hidden" id="publish_review" name="comment" value="">
[% IF user.in_group('admin') %]
<dt id="push">
- <a href="page.cgi?id=tracking_flags_admin_list.html">Release Tracking Flags</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=tracking_flags_admin_list.html">Release Tracking Flags</a>
</dt>
<dd>
Tracking flags are special multi-value fields used to aid tracking releases
#%]
[% IF san_tag == "tracking_flags_repair" %]
- <a href="sanitycheck.cgi?tracking_flags_repair=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?tracking_flags_repair=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]"
>Repair invalid product_id values in the tracking_flags_visibility table</a>
[% END %]
</div>
-<form method="POST" action="page.cgi" onsubmit="return on_submit()">
+<form method="POST" action="[% basepath FILTER none %]page.cgi" onsubmit="return on_submit()">
<input type="hidden" name="id" value="tracking_flags_admin_edit.html">
<input type="hidden" name="mode" value="[% mode FILTER html %]">
<input type="hidden" name="flag_id" value="[% flag ? flag.flag_id : 0 FILTER html %]">
<hr>
<p>
-Return to the <a href="page.cgi?id=tracking_flags_admin_list.html">list of Tracking Flags</a>.
+Return to the <a href="[% basepath FILTER none %]page.cgi?id=tracking_flags_admin_list.html">list of Tracking Flags</a>.
</p>
[% INCLUDE global/footer.html.tmpl %]
[% loop.count % 2 == 1 ? " odd_row" : " even_row" %]
[% " is_disabled" UNLESS flag.is_active %]">
<td [% 'class="disabled"' UNLESS flag.is_active %]>
- <a href="page.cgi?id=tracking_flags_admin_edit.html&mode=edit&flag_id=[% flag.flag_id FILTER uri %]">
+ <a href="[% basepath FILTER none %]page.cgi?id=tracking_flags_admin_edit.html&mode=edit&flag_id=[% flag.flag_id FILTER uri %]">
[% flag.name FILTER html %]
</a>
</td>
</td>
[% END %]
<td>
- <a href="page.cgi?id=tracking_flags_admin_edit.html&mode=copy&copy_from=[% flag.flag_id FILTER uri %]">Copy</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=tracking_flags_admin_edit.html&mode=copy&copy_from=[% flag.flag_id FILTER uri %]">Copy</a>
</td>
</tr>
[% END %]
</table>
<div id="new_flag">
- <a href="page.cgi?id=tracking_flags_admin_edit.html">Add Flag</a> |
+ <a href="[% basepath FILTER none %]page.cgi?id=tracking_flags_admin_edit.html">Add Flag</a> |
[% IF !show_bug_counts %]
- <a href="page.cgi?id=tracking_flags_admin_list.html&show_bug_counts=1">
+ <a href="[% basepath FILTER none %]page.cgi?id=tracking_flags_admin_list.html&show_bug_counts=1">
Show [% terms.bug %] counts (slower)</a> |
[% END %]
<input type="checkbox" onclick="filter_flag_list(this.checked)" id="filter">
# defined by the Mozilla Public License, v. 2.0.
#%]
-<a href="user_profile?user_id=[% user.id FILTER none %]">
+<a href="[% basepath FILTER none %]user_profile?user_id=[% user.id FILTER none %]">
[% terms.Bugzilla %] User Profile
</a><br><hr>
<td> </td>
<th>Search</th>
<td colspan="2">
- <form action="[% urlbase FILTER html %]user_profile">
+ <form action="[% basepath FILTER html %]user_profile">
[% INCLUDE global/userselect.html.tmpl
id => "login"
name => "login"
<th>Last activity</th>
<td colspan="2">
[% IF user.id %]
- <a href="page.cgi?id=user_activity.html&action=run&who=[% target.login FILTER uri %]">
+ <a href="[% basepath FILTER none %]page.cgi?id=user_activity.html&action=run&who=[% target.login FILTER uri %]">
[% END %]
[% target.last_activity_ts FILTER time %]
[% "</a>" IF user.id %]
<th></th>
<td colspan="2">
[% IF target.id == user.id %]
- <a href="userprefs.cgi?tab=account"><input type="button" value = "Edit Profile & Preferences"></a>
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=account"><input type="button" value = "Edit Profile & Preferences"></a>
[% END %]
</td>
</tr>
<th>Review requests</th>
<td class="numeric">
[% IF user.id %]
- <a href="request.cgi?action=queue&type=review&requestee=[% target.login FILTER uri %]&group=type"
+ <a href="[% basepath FILTER none %]request.cgi?action=queue&type=review&requestee=[% target.login FILTER uri %]&group=type"
target="_blank">
[% END %]
[% target.review_request_count FILTER html %]
</td>
[% IF user.id %]
<td>
- (<a href="page.cgi?id=review_history.html&requestee=[% target.login FILTER uri %]">Review History</a>)
+ (<a href="[% basepath FILTER none %]page.cgi?id=review_history.html&requestee=[% target.login FILTER uri %]">Review History</a>)
</td>
[% END %]
</tr>
<th>Feedback requests</th>
<td class="numeric">
[% IF user.id %]
- <a href="request.cgi?action=queue&type=feedback&requestee=[% target.login FILTER uri %]&group=type"
+ <a href="[% basepath FILTER none %]request.cgi?action=queue&type=feedback&requestee=[% target.login FILTER uri %]&group=type"
target="_blank">
[% END %]
[% target.feedback_request_count FILTER html %]
<th>Needinfo requests</th>
<td class="numeric">
[% IF user.id %]
- <a href="request.cgi?action=queue&type=needinfo&requestee=[% target.login FILTER uri %]&group=type"
+ <a href="[% basepath FILTER none %]request.cgi?action=queue&type=needinfo&requestee=[% target.login FILTER uri %]&group=type"
target="_blank">
[% END %]
[% target.needinfo_request_count FILTER html %]
<th>[% terms.Bugs %] filed</th>
<td class="numeric">
[% IF user.id %]
- <a href="buglist.cgi?query_format=advanced&emailtype1=exact&emailreporter1=1&email1=[% target.login FILTER uri %]"
+ <a href="[% basepath FILTER none %]buglist.cgi?query_format=advanced&emailtype1=exact&emailreporter1=1&email1=[% target.login FILTER uri %]"
target="_blank">
[% END %]
[% stats.bugs_filed || 0 FILTER html %]
<th>Assigned to</th>
<td class="numeric">
[% IF user.id %]
- <a href="buglist.cgi?query_format=advanced&emailtype1=exact&emailassigned_to1=1&email1=[% target.login FILTER uri %]"
+ <a href="[% basepath FILTER none %]buglist.cgi?query_format=advanced&emailtype1=exact&emailassigned_to1=1&email1=[% target.login FILTER uri %]"
target="_blank">
[% END %]
[% stats.assigned || 0 FILTER html %]
<th>Commented on</th>
<td class="numeric">
[% IF user.id %]
- <a href="buglist.cgi?query_format=advanced&emailtype1=exact&emaillongdesc1=1&email1=[% target.login FILTER uri %]"
+ <a href="[% basepath FILTER none %]buglist.cgi?query_format=advanced&emailtype1=exact&emaillongdesc1=1&email1=[% target.login FILTER uri %]"
target="_blank">
[% END %]
[% stats.commented_on || 0 FILTER html %]
<th>QA-Contact</th>
<td class="numeric">
[% IF user.id %]
- <a href="buglist.cgi?query_format=advanced&emailtype1=exact&emailqa_contact1=1&email1=[% target.login FILTER uri %]"
+ <a href="[% basepath FILTER none %]buglist.cgi?query_format=advanced&emailtype1=exact&emailqa_contact1=1&email1=[% target.login FILTER uri %]"
target="_blank">
[% END %]
[% stats.qa_contact || 0 FILTER html %]
[% FOREACH p = products %]
<span class="product_span">
[% IF p.product.id %]
- <a href="describecomponents.cgi?product=[% p.product.name FILTER uri %]"
+ <a href="[% basepath FILTER none %]describecomponents.cgi?product=[% p.product.name FILTER uri %]"
target="_blank">
[% END %]
[% p.product.name FILTER html %] ([% p.count || 0 FILTER html %])
has too many votes for [% terms.abug %]...<br>
[% IF changes._too_many_votes.size %]
[% FOREACH detail = changes._too_many_votes %]
- →removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
+ →removed votes for [% terms.bug %] <a href="[% basepath FILTER none %]show_bug.cgi?id=
[%- detail.id FILTER uri %]">
[%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
[% END %]
who now has too many total votes...<br>
[% IF changes._too_many_total_votes.size %]
[% FOREACH detail = changes._too_many_total_votes %]
- →removed votes for [% terms.bug %] <a href="show_bug.cgi?id=
+ →removed votes for [% terms.bug %] <a href="[% basepath FILTER none %]show_bug.cgi?id=
[%- detail.id FILTER uri %]">
[%- detail.id FILTER html %]</a> from [% detail.name FILTER html %]<br>
[% END %]
#%]
[% IF san_tag == "voting_cache_rebuild_fix" %]
- <a href="sanitycheck.cgi?rebuild_vote_cache=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?rebuild_vote_cache=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">Click here to
rebuild the vote cache</a>
<span id="votes_container">
[% IF bug.votes %]
with
- <a href="page.cgi?id=voting/bug.html&bug_id=
+ <a href="[% basepath FILTER none %]page.cgi?id=voting/bug.html&bug_id=
[%- bug.id FILTER uri %]">
[%- bug.votes FILTER html %]
[% IF bug.votes == 1 %]
including you
[% END %]
[% END %]
- (<a href="page.cgi?id=voting/user.html&bug_id=
+ (<a href="[% basepath FILTER none %]page.cgi?id=voting/user.html&bug_id=
[%- bug.id FILTER uri %]#vote_
[%- bug.id FILTER uri %]">vote</a>)
</span>
[% total = total + voter.vote_count %]
<tr>
<td>
- <a href="page.cgi?id=voting/user.html&user_id=
+ <a href="[% basepath FILTER none %]page.cgi?id=voting/user.html&user_id=
[%- voter.id FILTER uri %]">
[% voter.login_name FILTER email FILTER html %]
</a>
[% END %]
[% IF products.size %]
- <form name="voting_form" method="post" action="page.cgi?id=voting/user.html">
+ <form name="voting_form" method="post" action="[% basepath FILTER none %]page.cgi?id=voting/user.html">
<input type="hidden" name="action" value="vote">
<input type="hidden" name="token" value="[% issue_hash_token(['vote']) FILTER html %]">
<table cellspacing="4">
[% END %]
<tr>
<th>[% product.name FILTER html %]</th>
- <td colspan="2"><a href="buglist.cgi?bug_id=
+ <td colspan="2"><a href="[% basepath FILTER none %]buglist.cgi?bug_id=
[%- product.bug_ids.join(",") FILTER uri %]">([% terms.bug %] list)</a>
</td>
<td>
</td>
<td>
[% bug.short_desc FILTER html %]
- (<a href="page.cgi?id=voting/bug.html&bug_id=[% bug.id FILTER none %]">Show Votes</a>)
+ (<a href="[% basepath FILTER none %]page.cgi?id=voting/bug.html&bug_id=[% bug.id FILTER none %]">Show Votes</a>)
</td>
</tr>
[% END %]
[% IF canedit %]
<input type="submit" value="Change My Votes" id="change"> or
- <a href="buglist.cgi?bug_id=[% all_bug_ids.join(",") FILTER uri %]">view all
+ <a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% all_bug_ids.join(",") FILTER uri %]">view all
as [% terms.bug %] list</a>
<br>
<br>
[% END %]
and then click <b>Change My Votes</b>.
[% ELSE %]
- <a href="buglist.cgi?bug_id=[% all_bug_ids.join(",") FILTER uri %]">View all
+ <a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% all_bug_ids.join(",") FILTER uri %]">View all
as [% terms.bug %] list</a>
[% END %]
</form>
[% END %]
<p>
- <a href="page.cgi?id=voting.html">Help with voting</a>.
+ <a href="[% basepath FILTER none %]page.cgi?id=voting.html">Help with voting</a>.
</p>
[% PROCESS global/footer.html.tmpl %]
remove your vote from every [% terms.bug %] you've voted on?
</p>
-<form action="page.cgi?id=voting/user.html" method="post">
+<form action="[% basepath FILTER none %]page.cgi?id=voting/user.html" method="post">
<input type="hidden" name="action" value="vote">
<input type="hidden" name="token" value="[% issue_hash_token(['vote']) FILTER html %]">
<p>
$('#mfa-totp-throbber').show();
$('#mfa-totp-issued').hide();
- var url = 'rest/user/mfa/totp/enroll' +
- '?Bugzilla_api_token=' + encodeURIComponent(BUGZILLA.api_token);
+ var url = `${BUGZILLA.config.basepath}rest/user/mfa/totp/enroll` +
+ `?Bugzilla_api_token=${encodeURIComponent(BUGZILLA.api_token)}`;
$.ajax({
"url": url,
"contentType": "application/json",
// If we have not viewed as diff before, set the view diff frame URL
if (!has_viewed_as_diff) {
var viewDiffFrame = document.getElementById('viewDiffFrame');
- viewDiffFrame.src =
- 'attachment.cgi?id=' + attachment_id + '&action=diff&headers=0';
+ viewDiffFrame.src = `${BUGZILLA.config.basepath}attachment.cgi?id=${attachment_id}&action=diff&headers=0`;
has_viewed_as_diff = 1;
}
}
600);
},
formatBugLink: function(el, oRecord, oColumn, oData) {
- el.innerHTML = '<a href="show_bug.cgi?id=' + oData + '">'
- + oData + '</a>';
+ el.innerHTML = `<a href="${BUGZILLA.config.basepath}show_bug.cgi?id=${oData}">${oData}</a>`;
},
formatStatus: function(el, oRecord, oColumn, oData) {
var resolution = oRecord.getData('resolution');
}
},
formatCcButton: function(el, oRecord, oColumn, oData) {
- var url = 'process_bug.cgi?id=' + oRecord.getData('id')
- + '&addselfcc=1&token=' + escape(oData);
+ var url = `${BUGZILLA.config.basepath}process_bug.cgi?` +
+ `id=${oRecord.getData('id')}&addselfcc=1&token=${escape(oData)}`;
var button = document.createElement('a');
button.setAttribute('href', url);
button.innerHTML = YAHOO.bugzilla.dupTable.addCcMessage;
new YAHOO.widget.Button(button);
},
init_ds: function() {
- var new_ds = new YAHOO.util.XHRDataSource("jsonrpc.cgi");
+ var new_ds = new YAHOO.util.XHRDataSource(`${BUGZILLA.config.basepath}jsonrpc.cgi`);
new_ds.connTimeout = 30000;
new_ds.connMethodPost = true;
new_ds.connXhrMode = "cancelStaleRequests";
};
YAHOO.util.Connect.setDefaultPostHeader('application/json', true);
- YAHOO.util.Connect.asyncRequest('POST', 'jsonrpc.cgi', callbacks,
+ YAHOO.util.Connect.asyncRequest('POST', `${BUGZILLA.config.basepath}jsonrpc.cgi`, callbacks,
args)
},
},
};
YAHOO.util.Connect.setDefaultPostHeader('application/json', true);
- YAHOO.util.Connect.asyncRequest('POST', 'jsonrpc.cgi', callbacks, args)
+ YAHOO.util.Connect.asyncRequest('POST', `${BUGZILLA.config.basepath}jsonrpc.cgi`, callbacks, args)
},
};
},
};
YAHOO.util.Connect.setDefaultPostHeader('application/json', true);
- YAHOO.util.Connect.asyncRequest('POST', 'jsonrpc.cgi', callbacks, args)
+ YAHOO.util.Connect.asyncRequest('POST', `${BUGZILLA.config.basepath}jsonrpc.cgi`, callbacks, args)
},
};
})();
appendTo: $('#main-inner'),
forceFixPosition: true,
serviceUrl: function(query) {
- return 'rest/bug/comment/tags/' + encodeURIComponent(query);
+ return `${BUGZILLA.config.basepath}rest/bug/comment/tags/${encodeURIComponent(query)}`;
},
params: {
Bugzilla_api_token: BUGZILLA.api_token
rpcRefresh : function(comment_id, comment_no, noRefreshOnError) {
this.incPending(comment_id);
YAHOO.util.Connect.setDefaultPostHeader('application/json', true);
- YAHOO.util.Connect.asyncRequest('POST', 'jsonrpc.cgi',
+ YAHOO.util.Connect.asyncRequest('POST', `${BUGZILLA.config.basepath}jsonrpc.cgi`,
{
success: function(res) {
YAHOO.bugzilla.commentTagging.decPending(comment_id);
rpcUpdate : function(comment_id, comment_no, add, remove) {
this.incPending(comment_id);
YAHOO.util.Connect.setDefaultPostHeader('application/json', true);
- YAHOO.util.Connect.asyncRequest('POST', 'jsonrpc.cgi',
+ YAHOO.util.Connect.asyncRequest('POST', `${BUGZILLA.config.basepath}jsonrpc.cgi`,
{
success: function(res) {
YAHOO.bugzilla.commentTagging.decPending(comment_id);
var options_user = {
appendTo: $('#main-inner'),
forceFixPosition: true,
- serviceUrl: 'rest/user/suggest',
+ serviceUrl: `${BUGZILLA.config.basepath}rest/user/suggest`,
params: {
Bugzilla_api_token: BUGZILLA.api_token,
},
Dom.removeClass('comment_preview_loading', 'bz_default_hidden');
YAHOO.util.Connect.setDefaultPostHeader('application/json', true);
- YAHOO.util.Connect.asyncRequest('POST', 'jsonrpc.cgi',
+ YAHOO.util.Connect.asyncRequest('POST', `${BUGZILLA.config.basepath}jsonrpc.cgi`,
{
success: function(res) {
data = YAHOO.lang.JSON.parse(res.responseText);
const detect_blocked_gravatars = () => {
document.querySelectorAll('img[src^="https://secure.gravatar.com/avatar/"]').forEach($img => {
if (!$img.complete || !$img.naturalHeight) {
- $img.src = 'extensions/Gravatar/web/default.jpg';
+ $img.src = `${BUGZILLA.config.basepath}extensions/Gravatar/web/default.jpg`;
}
});
}
},
initDataTable: function() {
- var dataSource = new YAHOO.util.XHRDataSource("jsonrpc.cgi");
+ var dataSource = new YAHOO.util.XHRDataSource(`${BUGZILLA.config.basepath}jsonrpc.cgi`);
dataSource.connTimeout = 15000;
dataSource.connMethodPost = true;
dataSource.connXhrMode = "cancelStaleRequests";
},
formatId: function(el, oRecord, oColumn, oData) {
- el.innerHTML = '<a href="show_bug.cgi?id=' + oData + '" target="_blank">' + oData + '</a>';
+ el.innerHTML = `<a href="${BUGZILLA.config.basepath}show_bug.cgi?id=${oData}" target="_blank">${oData}</a>`;
},
formatStatus: function(el, oRecord, oColumn, oData) {
YAHOO.bugzilla.instantSearch.dataTable.showTableMessage(
'Searching... ' +
- '<img src="extensions/GuidedBugEntry/web/images/throbber.gif"' +
+ `<img src="${BUGZILLA.config.basepath}extensions/GuidedBugEntry/web/images/throbber.gif"` +
' width="16" height="11">',
YAHOO.widget.DataTable.CLASS_LOADING
);
my ($sel, $bug_id, $bug_summary, $options) = @_;
my $ndash = NDASH;
edit_bug($sel, $bug_id, $bug_summary, $options);
- $sel->click_ok("//a[contains(\@href, 'show_bug.cgi?id=$bug_id')]");
+ $sel->click_ok("//a[contains(\@href, '/show_bug.cgi?id=$bug_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("$bug_id $ndash $bug_summary", "Returning back to bug $bug_id");
}
my $title = $sel->get_title();
if ($title eq "Select Classification") {
ok(1, "More than one enterable classification available. Display them in a list");
- $sel->click_ok("//a[contains(\@href, 'editproducts.cgi?action=add&classification=$classification')]",
+ $sel->click_ok("//a[contains(\@href, '/editproducts.cgi?action=add&classification=$classification')]",
undef, "Add product to $classification");
}
else {
$sel->title_is("Select component of product 'TestProduct'");
$text = trim($sel->get_text("bugzilla-body"));
if ($text =~ /TempComponent/) {
- $sel->click_ok("//a[contains(\@href, 'editcomponents.cgi?action=del&product=TestProduct&component=TempComponent')]");
+ $sel->click_ok("//a[contains(\@href, '/editcomponents.cgi?action=del&product=TestProduct&component=TempComponent')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete component 'TempComponent' from 'TestProduct' product");
$sel->click_ok("delete");
$sel->title_is("Edit Product 'TestProduct'");
$sel->click_ok("link=Edit components:");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
-$sel->click_ok("//a[contains(\@href, 'editcomponents.cgi?action=del&product=TestProduct&component=TempComponent')]");
+$sel->click_ok("//a[contains(\@href, '/editcomponents.cgi?action=del&product=TestProduct&component=TempComponent')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete component 'TempComponent' from 'TestProduct' product");
$sel->click_ok("delete");
$sel->title_is("Select version of product 'TestProduct'");
$text = trim($sel->get_text("bugzilla-body"));
if ($text =~ /TempVersion/) {
- $sel->click_ok("//a[contains(\@href, 'editversions.cgi?action=del&product=TestProduct&version=TempVersion')]");
+ $sel->click_ok("//a[contains(\@href, '/editversions.cgi?action=del&product=TestProduct&version=TempVersion')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Version of Product 'TestProduct'");
$sel->click_ok("delete");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select version of product 'TestProduct'");
$text = trim($sel->get_text("bugzilla-body"));
-$sel->click_ok("//a[contains(\@href, 'editversions.cgi?action=del&product=TestProduct&version=TempVersion')]");
+$sel->click_ok("//a[contains(\@href, '/editversions.cgi?action=del&product=TestProduct&version=TempVersion')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Version of Product 'TestProduct'");
$sel->click_ok("delete");
$sel->title_is("Select milestone of product 'TestProduct'");
$text = trim($sel->get_text("bugzilla-body"));
if ($text =~ /TempMilestone/) {
- $sel->click_ok("//a[contains(\@href, 'editmilestones.cgi?action=del&product=TestProduct&milestone=TempMilestone')]");
+ $sel->click_ok("//a[contains(\@href, '/editmilestones.cgi?action=del&product=TestProduct&milestone=TempMilestone')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Milestone of Product 'TestProduct'");
$sel->click_ok("delete");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select milestone of product 'TestProduct'");
$text = trim($sel->get_text("bugzilla-body"));
-$sel->click_ok("//a[contains(\@href, 'editmilestones.cgi?action=del&product=TestProduct&milestone=TempMilestone')]");
+$sel->click_ok("//a[contains(\@href, '/editmilestones.cgi?action=del&product=TestProduct&milestone=TempMilestone')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Milestone of Product 'TestProduct'");
$sel->click_ok("delete");
$sel->click_ok("link=Classifications");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select classification");
-$sel->click_ok('//a[@href="editclassifications.cgi?action=del&classification=ctwo"]');
+$sel->click_ok('//a[contains(@href,"/editclassifications.cgi?action=del&classification=ctwo")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Error");
my $error = trim($sel->get_text("error_msg"));
$sel->go_back_ok();
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select classification");
-$sel->click_ok('//a[@href="editclassifications.cgi?action=reclassify&classification=ctwo"]');
+$sel->click_ok('//a[contains(@href,"/editclassifications.cgi?action=reclassify&classification=ctwo")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Reclassify products");
$sel->add_selection_ok("myprodlist", "label=TestProduct");
$sel->click_ok("link=edit");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select classification");
-$sel->click_ok('//a[@href="editclassifications.cgi?action=del&classification=ctwo"]');
+$sel->click_ok('//a[contains(@href,"/editclassifications.cgi?action=del&classification=ctwo")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete classification");
$sel->is_text_present_ok("Do you really want to delete this classification?");
$sel->click_ok("link=List$bug1_id");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select value for the 'List$bug1_id' (cf_qa_list_$bug1_id) field");
-$sel->click_ok("//a[contains(\@href, 'editvalues.cgi?action=del&field=cf_qa_list_$bug1_id&value=have%20fun%3F')]");
+$sel->click_ok("//a[contains(\@href, '/editvalues.cgi?action=del&field=cf_qa_list_$bug1_id&value=have%20fun%3F')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Value 'have fun?' from the 'List$bug1_id' (cf_qa_list_$bug1_id) field");
$sel->is_text_present_ok("Do you really want to delete this value?");
# This value cannot be deleted as it's in use.
-$sel->click_ok("//a[contains(\@href, 'editvalues.cgi?action=del&field=cf_qa_list_$bug1_id&value=storage')]");
+$sel->click_ok("//a[contains(\@href, '/editvalues.cgi?action=del&field=cf_qa_list_$bug1_id&value=storage')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Value 'storage' from the 'List$bug1_id' (cf_qa_list_$bug1_id) field");
$sel->is_text_present_ok("There is 1 bug with this field value");
$sel->click_ok("link=Status");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select value for the 'Status' (bug_status) field");
-$sel->click_ok('//a[@href="editvalues.cgi?action=del&field=bug_status&value=SUSPENDED"]');
+$sel->click_ok('//a[contains(@href,"/editvalues.cgi?action=del&field=bug_status&value=SUSPENDED")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Value 'SUSPENDED' from the 'Status' (bug_status) field");
$sel->is_text_present_ok("Sorry, but the 'SUSPENDED' value cannot be deleted");
$sel->click_ok("link=Status");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select value for the 'Status' (bug_status) field");
-$sel->click_ok('//a[@href="editvalues.cgi?action=del&field=bug_status&value=SUSPENDED"]');
+$sel->click_ok('//a[contains(@href,"/editvalues.cgi?action=del&field=bug_status&value=SUSPENDED")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Value 'SUSPENDED' from the 'Status' (bug_status) field");
$sel->click_ok("delete");
$sel->title_is("Field Value Deleted");
$sel->is_text_present_ok("The value SUSPENDED of the Status (bug_status) field has been deleted");
-$sel->click_ok('//a[@href="editvalues.cgi?action=del&field=bug_status&value=IN_QA"]');
+$sel->click_ok('//a[contains(@href,"/editvalues.cgi?action=del&field=bug_status&value=IN_QA")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Value 'IN_QA' from the 'Status' (bug_status) field");
$sel->click_ok("delete");
$sel->click_ok("link=Resolution");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select value for the 'Resolution' (resolution) field");
-$sel->click_ok('//a[@href="editvalues.cgi?action=del&field=resolution&value=UPSTREAM"]');
+$sel->click_ok('//a[contains(@href,"/editvalues.cgi?action=del&field=resolution&value=UPSTREAM")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Value 'UPSTREAM' from the 'Resolution' (resolution) field");
$sel->click_ok("delete");
$sel->click_ok("create");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Custom Field Created");
- $sel->click_ok("//a[\@href='editfields.cgi?action=del&name=$fname']");
+ $sel->click_ok("//a[contains(\@href,'/editfields.cgi?action=del&name=$fname')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete the Custom Field '$fname' ($fdesc)");
$sel->click_ok("link=Delete field '$fdesc'");
edit_product($sel, "ready_to_die");
$sel->go_back_ok();
$sel->wait_for_page_to_load_ok(WAIT_TIME);
-$sel->click_ok('//a[@href="editproducts.cgi?action=del&product=ready_to_die"]');
+$sel->click_ok('//a[contains(@href,"/editproducts.cgi?action=del&product=ready_to_die")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Product 'ready_to_die'");
$sel->click_ok("delete");
$sel->click_ok("link=Groups");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Edit Groups");
-$sel->click_ok("//a[contains(\@href, 'editgroups.cgi?action=del&group=$group2_id')]");
+$sel->click_ok("//a[contains(\@href, '/editgroups.cgi?action=del&group=$group2_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete group");
$sel->is_text_present_ok("This group is tied to the following products");
edit_product($sel, "ready_to_die");
$sel->go_back_ok();
$sel->wait_for_page_to_load_ok(WAIT_TIME);
-$sel->click_ok('//a[@href="editproducts.cgi?action=del&product=ready_to_die"]');
+$sel->click_ok('//a[contains(@href,"/editproducts.cgi?action=del&product=ready_to_die")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Product 'ready_to_die'");
$sel->click_ok("delete");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Edit Groups");
ok(!$sel->is_text_present('ready_to_die__'), 'No ready_to_die__ group created');
-$sel->click_ok("//a[contains(\@href, 'editgroups.cgi?action=del&group=$group1_id')]");
+$sel->click_ok("//a[contains(\@href, '/editgroups.cgi?action=del&group=$group1_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete group");
$sel->click_ok("delete");
edit_product($sel, "ready_to_die");
$sel->go_back_ok();
$sel->wait_for_page_to_load_ok(WAIT_TIME);
-$sel->click_ok('//a[@href="editproducts.cgi?action=del&product=ready_to_die"]');
+$sel->click_ok('//a[contains(@href,"/editproducts.cgi?action=del&product=ready_to_die")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Product 'ready_to_die'");
$sel->click_ok("delete");
if ($text =~ /(Kill me!|Kill me nicely)/) {
my $product = $1;
my $escaped_product = url_quote($product);
- $sel->click_ok("//a[\@href='editproducts.cgi?action=del&product=$escaped_product']");
+ $sel->click_ok("//a[contains(\@href,'/editproducts.cgi?action=del&product=$escaped_product')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Product '$product'");
$sel->click_ok("delete");
$sel->click_ok("link=Edit milestones:");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select milestone of product 'Kill me nicely'");
-$sel->click_ok('//a[@href="editmilestones.cgi?action=del&product=Kill%20me%20nicely&milestone=pre-0.1"]');
+$sel->click_ok('//a[contains(@href,"/editmilestones.cgi?action=del&product=Kill%20me%20nicely&milestone=pre-0.1")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Milestone of Product 'Kill me nicely'");
$text = trim($sel->get_text("bugzilla-body"));
$sel->click_ok("//a[contains(text(),'Edit\nversions:')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select version of product 'Kill me nicely'");
-$sel->click_ok("//a[contains(\@href, 'editversions.cgi?action=del&product=Kill%20me%20nicely&version=0.1a')]");
+$sel->click_ok("//a[contains(\@href, '/editversions.cgi?action=del&product=Kill%20me%20nicely&version=0.1a')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Version of Product 'Kill me nicely'");
$text = trim($sel->get_text("bugzilla-body"));
# Delete an unused version. The action must succeed.
-$sel->click_ok('//a[@href="editversions.cgi?action=del&product=Kill%20me%20nicely&version=0.1"]');
+$sel->click_ok('//a[contains(@href,"/editversions.cgi?action=del&product=Kill%20me%20nicely&version=0.1")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Version of Product 'Kill me nicely'");
$text = trim($sel->get_text("bugzilla-body"));
$sel->click_ok("link=Edit components:");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select component of product 'Kill me nicely'");
-$sel->click_ok("//a[contains(\@href, 'editcomponents.cgi?action=del&product=Kill%20me%20nicely&component=second%20comp')]");
+$sel->click_ok("//a[contains(\@href, '/editcomponents.cgi?action=del&product=Kill%20me%20nicely&component=second%20comp')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete component 'second comp' from 'Kill me nicely' product");
$text = trim($sel->get_text("bugzilla-body"));
$sel->click_ok("link=Products");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select product");
-$sel->click_ok("//a[\@href='editproducts.cgi?action=del&product=Kill%20me%20nicely']");
+$sel->click_ok("//a[contains(\@href,'/editproducts.cgi?action=del&product=Kill%20me%20nicely')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Product 'Kill me nicely'");
$text = trim($sel->get_text("bugzilla-body"));
# Clone the flag type, but set the request group to 'editbugs' and the sortkey to 950.
-$sel->click_ok("//a[\@href='editflagtypes.cgi?action=copy&id=$flagtype1_id']");
+$sel->click_ok("//a[contains(\@href,'/editflagtypes.cgi?action=copy&id=$flagtype1_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Create Flag Type for Bugs Based on SeleniumBugFlag1Test");
$sel->type_ok("name", "SeleniumBugFlag2Test");
# Clone the first flag type again, but with different attributes.
-$sel->click_ok("//a[\@href='editflagtypes.cgi?action=copy&id=$flagtype1_id']");
+$sel->click_ok("//a[contains(\@href,'/editflagtypes.cgi?action=copy&id=$flagtype1_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Create Flag Type for Bugs Based on SeleniumBugFlag1Test");
$sel->type_ok("name", "SeleniumBugFlag3Test");
# Clone the flag type.
-$sel->click_ok("//a[\@href='editflagtypes.cgi?action=copy&id=$aflagtype1_id']");
+$sel->click_ok("//a[contains(\@href,'/editflagtypes.cgi?action=copy&id=$aflagtype1_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Create Flag Type for Attachments Based on SeleniumAttachmentFlag1Test");
$sel->type_ok("name", "SeleniumAttachmentFlag2Test");
# Clone the flag type again, and set it as inactive.
-$sel->click_ok("//a[\@href='editflagtypes.cgi?action=copy&id=$aflagtype1_id']");
+$sel->click_ok("//a[contains(\@href,'/editflagtypes.cgi?action=copy&id=$aflagtype1_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Create Flag Type for Attachments Based on SeleniumAttachmentFlag1Test");
$sel->type_ok("name", "SeleniumAttachmentFlag3Test");
# A powerless user cannot edit someone else's attachment flags.
-$sel->click_ok("//a[\@href='attachment.cgi?id=$attachment2_id&action=edit']");
+$sel->click_ok("//a[contains(\@href,'/attachment.cgi?id=$attachment2_id&action=edit')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_like(qr/^Attachment $attachment2_id Details for Bug $bug1_id/);
$sel->is_element_present_ok('//select[@title="attachmentflag2"][@disabled]',
log_in($sel, $config, 'admin');
go_to_bug($sel, $bug1_id);
-$sel->click_ok("//a[\@href='attachment.cgi?id=${attachment3_id}&action=edit']");
+$sel->click_ok("//a[contains(\@href,'/attachment.cgi?id=${attachment3_id}&action=edit')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_like(qr/^Attachment $attachment3_id Details for Bug $bug1_id/);
$sel->select_ok('//select[@title="attachmentflag1"]', "label=+");
{
my $flag_id = $flagtype->[0];
my $flag_name = $flagtype->[1];
- $sel->click_ok("//a[\@href='editflagtypes.cgi?action=confirmdelete&id=$flag_id']");
+ $sel->click_ok("//a[contains(\@href,'/editflagtypes.cgi?action=confirmdelete&id=$flag_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Confirm Deletion of Flag Type '$flag_name'");
$sel->click_ok("link=Yes, delete");
{
my $flag_id = $flagtype->[0];
my $flag_name = $flagtype->[1];
- $sel->click_ok("//a[\@href='editflagtypes.cgi?action=confirmdelete&id=$flag_id']");
+ $sel->click_ok("//a[contains(\@href,'/editflagtypes.cgi?action=confirmdelete&id=$flag_id')]");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Confirm Deletion of Flag Type '$flag_name'");
$sel->click_ok("link=Yes, delete");
$sel->click_ok("link=Groups");
$sel->wait_for_page_to_load(WAIT_TIME);
$sel->title_is("Edit Groups");
-$sel->click_ok("//a[\@href='editgroups.cgi?action=del&group=${group_id}']");
+$sel->click_ok("//a[contains(\@href,'/editgroups.cgi?action=del&group=${group_id}')]");
$sel->wait_for_page_to_load(WAIT_TIME);
$sel->title_is("Delete group");
$sel->is_text_present_ok("Do you really want to delete this group?");
$sel->is_text_present_ok("Hopefully an ice cream");
$sel->is_text_present_ok("key-selenium-ktwo");
$sel->is_text_present_ok("the second keyword");
-$sel->click_ok('//a[@href="buglist.cgi?keywords=key-selenium-kone"]');
+$sel->click_ok('//a[contains(@href,"/buglist.cgi?keywords=key-selenium-kone")]');
$sel->wait_for_page_to_load(WAIT_TIME);
$sel->title_is("Bug List");
$sel->is_element_present_ok("link=$test_bug_1");
$sel->is_text_present_ok("2 bugs found");
$sel->go_back_ok();
$sel->wait_for_page_to_load(WAIT_TIME);
-$sel->click_ok('//a[@href="buglist.cgi?keywords=key-selenium-ktwo"]');
+$sel->click_ok('//a[contains(@href,"/buglist.cgi?keywords=key-selenium-ktwo")]');
$sel->wait_for_page_to_load(WAIT_TIME);
$sel->title_is("Bug List");
$sel->is_element_present_ok("link=$test_bug_2");
# A powerless user can comment on attachments he doesn't own.
-$sel->click_ok('//a[@href="attachment.cgi?id=' . $attachment1_id . '&action=edit"]');
+$sel->click_ok('//a[contains(@href,"/attachment.cgi?id=' . $attachment1_id . '&action=edit")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_like(qr/^Attachment $attachment1_id Details for Bug $bug1_id/);
$sel->is_text_present_ok("created by QA Admin");
log_in($sel, $config, 'admin');
go_to_bug($sel, $bug1_id);
-$sel->click_ok('//a[@href="attachment.cgi?id=' . $attachment2_id . '&action=edit"]');
+$sel->click_ok('//a[contains(@href,"/attachment.cgi?id=' . $attachment2_id . '&action=edit")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_like(qr/^Attachment $attachment2_id Details for Bug $bug1_id/);
$sel->check_ok("isprivate");
log_in($sel, $config, 'admin');
go_to_bug($sel, $bug1_id);
-$sel->click_ok('//a[@href="attachment.cgi?id=' . $attachment2_id . '&action=edit"]');
+$sel->click_ok('//a[contains(@href,"/attachment.cgi?id=' . $attachment2_id . '&action=edit")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_like(qr/^Attachment $attachment2_id Details for Bug $bug1_id/);
$sel->click_ok("link=Delete");
if($sel->is_text_present("SavedSearchTEST1")) {
# There is no other way to identify this link (as they are all named "Forget").
- $sel->click_ok('//a[contains(@href,"buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=SavedSearchTEST1")]');
+ $sel->click_ok('//a[contains(@href,"/buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=SavedSearchTEST1")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Search is gone");
$sel->is_text_present_ok("OK, the SavedSearchTEST1 search is gone.");
$sel->title_is("User Preferences");
$sel->is_text_present_ok("SavedSearchTEST1");
-$sel->click_ok('//a[@href="buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=SavedSearchTEST1"]');
+$sel->click_ok('//a[contains(@href,"/buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=SavedSearchTEST1")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Bug List: SavedSearchTEST1");
$sel->click_ok("link=Edit Search");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("User Preferences");
# There is no better way to identify the link
-$sel->click_ok('//a[contains(@href,"buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=Shared%20Selenium%20buglist")]',
+$sel->click_ok('//a[contains(@href,"/buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=Shared%20Selenium%20buglist")]',
undef, "Deleting the 'Shared Selenium buglist' search");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Search is gone");
$sel->title_is("User Preferences");
$sel->click_ok("quicksearch_top");
ok(!$sel->is_text_present("Shared Selenium buglist"), "The 'Shared Selenium buglist' is no longer available");
-$sel->click_ok('//a[contains(@href,"buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=helpwanted")]',
+$sel->click_ok('//a[contains(@href,"/buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=helpwanted")]',
undef, "Deleting the 'helpwanted' search");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Search is gone");
$sel->click_ok("link=Edit milestones:");
$sel->wait_for_page_to_load(WAIT_TIME);
$sel->title_is("Select milestone of product 'TestProduct'");
-$sel->click_ok('//a[@href="editmilestones.cgi?action=del&product=TestProduct&milestone=TM1"]',
+$sel->click_ok('//a[contains(@href,"/editmilestones.cgi?action=del&product=TestProduct&milestone=TM1")]',
undef, "Deleting the TM1 milestone");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Milestone of Product 'TestProduct'");
$sel->click_ok("link=Groups");
$sel->wait_for_page_to_load(WAIT_TIME);
$sel->title_is("Edit Groups");
- $sel->click_ok("//a[\@href='editgroups.cgi?action=del&group=$slave_gid']");
+ $sel->click_ok("//a[contains(\@href,'/editgroups.cgi?action=del&group=$slave_gid')]");
$sel->wait_for_page_to_load(WAIT_TIME);
$sel->title_is("Delete group");
$sel->is_text_present_ok("Do you really want to delete this group?");
$sel->click_ok("link=Products");
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Select product");
-$sel->click_ok('//a[@href="editproducts.cgi?action=del&product=Eureka"]');
+$sel->click_ok('//a[contains(@href,"/editproducts.cgi?action=del&product=Eureka")]');
$sel->wait_for_page_to_load_ok(WAIT_TIME);
$sel->title_is("Delete Product 'Eureka'");
$full_text = trim($sel->get_body_text());
account?</p>
<div>
- <form action="auth.cgi" method="post">
+ <form action="[% basepath FILTER none %]auth.cgi" method="post">
<input type="hidden" name="confirm" value="1">
<input type="hidden" name="callback" value="[% callback FILTER html %]">
<input type="hidden" name="description" value="[% description FILTER html %]">
[% login_target = "index.cgi" %]
[% END %]
-[% login_target = urlbase _ login_target %]
+[% login_target = basepath _ login_target %]
<li id="mini_login_container[% qs_suffix %]">
[% connector = "?" %]
class='show_forgot_form'
data-qs-suffix="[% qs_suffix FILTER html %]">Forgot Password</a>
<div id="forgot_form[% qs_suffix %]" class="mini-popup mini_forgot bz_default_hidden">
- <form action="token.cgi" method="post">
+ <form action="[% basepath FILTER none %]token.cgi" method="post">
<input type="email" name="loginname" size="20" placeholder="Email" aria-label="Email" required>
<input id="forgot_button[% qs_suffix %]" value="Reset Password"
type="submit">
</p>
<div id="login" class="login-form">
- <form name="login" action="[% urlbase FILTER html %][% target FILTER uri FILTER html %]" method="POST"
+ <form name="login" action="[% basepath FILTER html %][% target FILTER uri FILTER html %]" method="POST"
[%- IF Bugzilla.cgi.param("data") %] enctype="multipart/form-data"[% END %]>
<div class="field-login">
<label for="Bugzilla_login">Email Address:</label>
<p>
If you don't have a [% terms.Bugzilla %] account, you can
- <a href="createaccount.cgi">create a new account</a>.
+ <a href="[% basepath FILTER none %]createaccount.cgi">create a new account</a>.
</p>
[% END %]
[% IF user.authorizer.can_change_password %]
<hr>
- <form id="forgot" method="get" action="token.cgi">
+ <form id="forgot" method="get" action="[% basepath FILTER none %]token.cgi">
<input type="hidden" name="a" value="reqpw">
If you have an account, but have forgotten your password,
enter your email address below and submit a request
</p>
[% END %]
-<form id="account_creation_form" method="get" action="createaccount.cgi">
+<form id="account_creation_form" method="get" action="[% basepath FILTER none %]createaccount.cgi">
<table>
<tr>
<td align="right">
[% Param('passwdqc_desc') FILTER html_light %]
</p>
-<form id="confirm_account_form" method="post" action="token.cgi">
+<form id="confirm_account_form" method="post" action="[% basepath FILTER none %]token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="confirm_new_account">
<div class="flex">
cancel account button below and your details will be forgotten.
</p>
-<form id="cancel_account_form" method="post" action="token.cgi">
+<form id="cancel_account_form" method="post" action="[% basepath FILTER none %]token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="cancel_new_account">
<input type="submit" id="confirm" value="Cancel Account">
To change your email address, please enter the old email address:
</p>
-<form method="post" action="token.cgi">
+<form method="post" action="[% basepath FILTER none %]token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="chgem">
<table>
<div class="flex">
<div class="flex-left">
- <form method="post" action="token.cgi">
+ <form method="post" action="[% basepath FILTER none %]token.cgi">
<input type="hidden" name="t" value="[% token FILTER html %]">
<input type="hidden" name="a" value="chgpw">
<table>
</div>
[% tab_footer = BLOCK %]
- <form action="token.cgi" method="post" id="forgot-form">
+ <form action="[% basepath FILTER none %]token.cgi" method="post" id="forgot-form">
<input type="hidden" name="loginname" value="[% user.login FILTER html %]">
<input type="hidden" name="a" value="reqpw">
<input type="hidden" name="token" value="[% issue_hash_token(['reqpw']) FILTER html %]">
<td>
<input type="checkbox" name="remove_ignored_bug_[% bug.id FILTER html %]" value="1">
</td>
- <td><a href="[% urlbase FILTER html %]show_bug.cgi?id=[% bug.id FILTER uri %]">
+ <td><a href="[% basepath FILTER html %]show_bug.cgi?id=[% bug.id FILTER uri %]">
[% bug.id FILTER html %]</a>
</td>
<td>[% bug.status FILTER html %]</td>
[% SET MFA_HOWTO = "https://wiki.mozilla.org/BMO/UserGuide/Two-Factor_Authentication" %]
[% tab_footer = BLOCK %]
- <form action="token.cgi" method="post" id="forgot-form">
+ <form action="[% basepath FILTER none %]token.cgi" method="post" id="forgot-form">
<input type="hidden" name="loginname" value="[% user.login FILTER html %]">
<input type="hidden" name="a" value="reqpw">
<input type="hidden" name="token" value="[% issue_hash_token(['reqpw']) FILTER html %]">
[% INCLUDE recovery_blurb %]
<iframe id="mfa-recovery-frame" tabindex="-1"
- src="userprefs.cgi?tab=mfa&frame=recovery&t=[% mfa_recovery_token FILTER uri %]">
+ src="[% basepath FILTER none %]userprefs.cgi?tab=mfa&frame=recovery&t=[% mfa_recovery_token FILTER uri %]">
</iframe>
[% ELSIF user.mfa %]
<p class="mfa-api-blurb">
[% IF user.settings.api_key_only.value == 'on' %]
Enabling two-factor authentication has also required systems that
- interface with [% terms.Bugzilla %]'s API to use <a href="userprefs.cgi?tab=apikey">API keys</a>
+ interface with [% terms.Bugzilla %]'s API to use <a href="[% basepath FILTER none %]userprefs.cgi?tab=apikey">API keys</a>
for authentication.<br>
<br>
While not recommended, this limitation can be lifted by changing the
- <a href="userprefs.cgi?tab=settings#api_key_only">Require API key authentication for API requests</a>
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=settings#api_key_only">Require API key authentication for API requests</a>
preference.
[% ELSE %]
Systems that interface with [% terms.Bugzilla %]'s API are not required to use API keys.<br>
Change the
- <a href="userprefs.cgi?tab=settings#api_key_only">Require API key authentication for API requests</a>
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=settings#api_key_only">Require API key authentication for API requests</a>
preference to enforce API key usage.
[% END %]
</p>
<p class="mfa-disable-blurb">
You will need to disable your two-factor authentication in order to change to a different method.
There will be a small amount of time when your account will not be as secure, so you may use the
- <a href="userprefs.cgi?tab=sessions">sessions</a> page to log out all other sessions other
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=sessions">sessions</a> page to log out all other sessions other
than the current one after setting up the new method.
</p>
[% END %]
[% ELSIF user.mfa == "Duo" %]
<p>
- <img src="images/duo.png" id="duo-logo" width="32" height="32">
+ <img src="[% basepath FILTER none %]images/duo.png" id="duo-logo" width="32" height="32">
Verification with Duo Security will be performed before your account is updated.
</p>
</div>
<div id="mfa-totp-issued" style="display:none">
- <iframe id="mfa-enable-totp-frame" src="userprefs.cgi?tab=mfa&frame=totp" tabindex="-1"></iframe>
+ <iframe id="mfa-enable-totp-frame" src="[% basepath FILTER none %]userprefs.cgi?tab=mfa&frame=totp" tabindex="-1"></iframe>
<div id="mfa-totp-blurb">
Scan this QR code with your <a href="#" id="mfa-totp-apps">TOTP App</a>,
then enter the six digit code the app generates.<br>
</p>
<p>
- <img src="images/duo.png" id="duo-logo" width="32" height="32">
+ <img src="[% basepath FILTER none %]images/duo.png" id="duo-logo" width="32" height="32">
Verification with Duo Security will be performed before your account is updated.<br>
You must be <a href="https://mana.mozilla.org/wiki/display/SD/DuoSecurity" target="_blank" rel="noopener noreferrer">
<p class="mfa-api-blurb" style="display:none">
Enabling two-factor authentication will also require systems that
- interface with [% terms.Bugzilla %]'s API to use <a href="userprefs.cgi?tab=apikey">API keys</a>
+ interface with [% terms.Bugzilla %]'s API to use <a href="[% basepath FILTER none %]userprefs.cgi?tab=apikey">API keys</a>
for authentication. While not recommended, this limitation can be lifted by changing the
- <a href="userprefs.cgi?tab=settings#api_key_only">Require API key authentication for API requests</a>
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=settings#api_key_only">Require API key authentication for API requests</a>
preference after 2FA is enabled.
</p>
</div>
[% ELSIF set_bits.size %]
<br>
And you can turn on or off the following bits for
- <a href="editusers.cgi">other users</a>:
+ <a href="[% basepath FILTER none %]editusers.cgi">other users</a>:
<table align="center">
[% FOREACH bit_description = set_bits %]
<tr>
[% IF user.in_group('bz_sudoers') %]
<br>
You are a member of the <b>bz_sudoers</b> group, so you can
- <a href="relogin.cgi?action=prepare-sudo">impersonate someone else</a>.
+ <a href="[% basepath FILTER none %]relogin.cgi?action=prepare-sudo">impersonate someone else</a>.
[% END %]
</td>
</tr>
<h3>[% current_tab.label %]</h3>
[% IF current_tab.saveable %]
- <form name="userprefsform" method="post" action="userprefs.cgi">
+ <form name="userprefsform" method="post" action="[% basepath FILTER none %]userprefs.cgi">
<input type="hidden" name="tab" value="[% current_tab.name %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
[% END %]
<td>My [% terms.Bugs %]</td>
<td>
[% filtered_username = user.login FILTER uri %]
- <a href="[% Param('mybugstemplate').replace('%userid%', filtered_username) %]">Run</a>
+ <a href="[% basepath FILTER none %][% Param('mybugstemplate').replace('%userid%', filtered_username) %]">Run</a>
</td>
<td>
<tr>
<td>[% q.name FILTER html %]</td>
<td>
- <a href="buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=[% q.name FILTER uri %]
+ <a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=[% q.name FILTER uri %]
[% IF q.shared_with_group.id %]&sharer_id=[% user.id FILTER uri %][% END %]">Run</a>
</td>
<td>
- <a href="query.cgi?[% q.edit_link FILTER html %]&known_name=
+ <a href="[% basepath FILTER none %]query.cgi?[% q.edit_link FILTER html %]&known_name=
[% q.name FILTER uri %]">Edit</a>
</td>
<td>
[% IF q.used_in_whine %]
- Remove from <a href="editwhines.cgi">whining</a> first
+ Remove from <a href="[% basepath FILTER none %]editwhines.cgi">whining</a> first
[% ELSE %]
- <a href="buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=
+ <a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=
[% q.name FILTER uri %]&token=
[% issue_hash_token([q.id, q.name]) FILTER uri %]">Forget</a>
[% END %]
<td>[% q.user.identity FILTER html %]</td>
<td>[% q.shared_with_group.name FILTER html %]</td>
<td>
- <a href="buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
+ <a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
[% q.name FILTER uri %]&sharer_id=
[% q.user.id FILTER uri %]">Run</a>
</td>
<td>
- <a href="query.cgi?[% q.edit_link FILTER html %]&known_name=
+ <a href="[% basepath FILTER none %]query.cgi?[% q.edit_link FILTER html %]&known_name=
[% q.name FILTER uri %]">Edit</a>
</td>
<td align="center">
<ul>
[% FOREACH tab = tabs %]
<li [%= IF tab.name == current_tab_name %]class="selected"[% END %]>
- <a href="[% tab.link FILTER html %]">[% tab.label FILTER html %]</a>
+ <a href="[% basepath _ tab.link FILTER html %]">[% tab.label FILTER html %]</a>
</li>
[% END %]
</ul>
data = profile_changes
%]
-<p><a href="editusers.cgi?action=edit&userid=
+<p><a href="[% basepath FILTER none %]editusers.cgi?action=edit&userid=
[%- otheruser.id FILTER uri %]"
title="Edit user '[% otheruser.login FILTER html %]'">Edit this user</a> or
- <a title="Search For Users" href="editusers.cgi">search for other accounts</a>
+ <a title="Search For Users" href="[% basepath FILTER none %]editusers.cgi">search for other accounts</a>
[% IF listselectionvalues.matchtype != 'exact' %]
or go <a title="Return to the user list"
- href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
+ href="[% basepath FILTER none %]editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
to the user list</a>
[% END %]
</p>
[% Param('passwdqc_desc') FILTER html_light %]
</p>
-<form method="POST" action="reset_password.cgi">
+<form method="POST" action="[% basepath FILTER none %]reset_password.cgi">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="hidden" name="do_save" value="1">
<input type="hidden" name="prev_url" value="[% prev_url FILTER html %]">
</div>
</form>
-<form action="token.cgi" method="post" id="forgot-form">
+<form action="[% basepath FILTER none %]token.cgi" method="post" id="forgot-form">
<input type="hidden" name="loginname" value="[% user.login FILTER html %]">
<input type="hidden" name="a" value="reqpw">
<input type="hidden" name="token" value="[% issue_hash_token(['reqpw']) FILTER html %]">
<td class="admin_links">
<dl>
[% class = user.in_group('tweakparams') ? "" : "forbidden" %]
- <dt id="parameters" class="[% class %]"><a href="editparams.cgi">Parameters</a></dt>
+ <dt id="parameters" class="[% class %]"><a href="[% basepath FILTER none %]editparams.cgi">Parameters</a></dt>
<dd class="[% class %]">Set core parameters of the installation. That's the
place where you specify the URL to access this installation, determine how
users authenticate, choose which [% terms.bug %] fields to display, select
the mail transfer agent to send email notifications, choose which group of
users can use charts and share queries, and much more.</dd>
- <dt id="preferences" class="[% class %]"><a href="editsettings.cgi">Default Preferences</a></dt>
+ <dt id="preferences" class="[% class %]"><a href="[% basepath FILTER none %]editsettings.cgi">Default Preferences</a></dt>
<dd class="[% class %]">Set the default user preferences. These are the values
which will be used by default for all users. Users will be able to edit their
- own preferences from the <a href="userprefs.cgi?tab=settings">Preferences</a>.</dd>
+ own preferences from the <a href="[% basepath FILTER none %]userprefs.cgi?tab=settings">Preferences</a>.</dd>
[% class = user.in_group('editcomponents') ? "" : "forbidden" %]
- <dt id="sanitycheck" class="[% class %]"><a href="sanitycheck.cgi">Sanity Check</a></dt>
+ <dt id="sanitycheck" class="[% class %]"><a href="[% basepath FILTER none %]sanitycheck.cgi">Sanity Check</a></dt>
<dd class="[% class %]">Run sanity checks to locate problems in your database.
This may take several tens of minutes depending on the size of your installation.
You can also automate this check by running <tt>sanitycheck.pl</tt> from a cron job.
A notification will be sent per email to the specified user if errors are detected.</dd>
[% class = (user.in_group('editusers') || user.in_group('disableusers') || user.can_bless) ? "" : "forbidden" %]
- <dt id="users" class="[% class %]"><a href="editusers.cgi">Users</a></dt>
+ <dt id="users" class="[% class %]"><a href="[% basepath FILTER none %]editusers.cgi">Users</a></dt>
<dd class="[% class %]">Create new user accounts or edit existing ones. You can
also add and remove users from groups (also known as "user privileges").</dd>
[% class = (Param('useclassification') && user.in_group('editclassifications')) ? "" : "forbidden" %]
- <dt id="classifications" class="[% class %]"><a href="editclassifications.cgi">Classifications</a></dt>
+ <dt id="classifications" class="[% class %]"><a href="[% basepath FILTER none %]editclassifications.cgi">Classifications</a></dt>
<dd class="[% class %]">If your installation has to manage many products at once,
it's a good idea to group these products into distinct categories. This lets users
find information more easily when doing searches or when filing new [% terms.bugs %].</dd>
[% class = (user.in_group('editcomponents')
|| user.get_products_by_permission("editcomponents").size) ? "" : "forbidden" %]
- <dt id="products" class="[% class %]"><a href="editproducts.cgi">Products</a></dt>
+ <dt id="products" class="[% class %]"><a href="[% basepath FILTER none %]editproducts.cgi">Products</a></dt>
<dd class="[% class %]">Edit all aspects of products, including group restrictions
which let you define who can access [% terms.bugs %] being in these products. You
can also edit some specific attributes of products such as
- <a href="editcomponents.cgi">components</a>, <a href="editversions.cgi">versions</a>
- and <a href="editmilestones.cgi">milestones</a> directly.</dd>
+ <a href="[% basepath FILTER none %]editcomponents.cgi">components</a>, <a href="[% basepath FILTER none %]editversions.cgi">versions</a>
+ and <a href="[% basepath FILTER none %]editmilestones.cgi">milestones</a> directly.</dd>
[% class = (user.in_group('editcomponents')
|| user.get_products_by_permission('editcomponents').size) ? "" : "forbidden" %]
- <dt id="flags" class="[% class %]"><a href="editflagtypes.cgi">Flags</a></dt>
+ <dt id="flags" class="[% class %]"><a href="[% basepath FILTER none %]editflagtypes.cgi">Flags</a></dt>
<dd class="[% class %]">A flag is a custom 4-states attribute of [% terms.bugs %]
and/or attachments. These states are: granted, denied, requested and undefined.
You can set as many flags as desired per [% terms.bug %], and define which users
<td class="admin_links">
<dl>
[% class = user.in_group('admin') ? "" : "forbidden" %]
- <dt id="custom_fields" class="[% class %]"><a href="editfields.cgi">Custom Fields</a></dt>
+ <dt id="custom_fields" class="[% class %]"><a href="[% basepath FILTER none %]editfields.cgi">Custom Fields</a></dt>
<dd class="[% class %]">[% terms.Bugzilla %] lets you define fields which are
not implemented by default, based on your local and specific requirements.
These fields can then be used as any other field, meaning that you can set
interface more complex and harder to use. Be sure you have investigated other ways
to satisfy your needs before doing this.</dd>
- <dt id="field_values" class="[% class %]"><a href="editvalues.cgi">Field Values</a></dt>
+ <dt id="field_values" class="[% class %]"><a href="[% basepath FILTER none %]editvalues.cgi">Field Values</a></dt>
<dd class="[% class %]">Define legal values for fields whose values must belong
to some given list. This is also the place where you define legal values for some
types of custom fields.</dd>
- <dt id="status_workflow" class="[% class %]"><a href="editworkflow.cgi">[%terms.Bug %] Status Workflow</a></dt>
+ <dt id="status_workflow" class="[% class %]"><a href="[% basepath FILTER none %]editworkflow.cgi">[%terms.Bug %] Status Workflow</a></dt>
<dd class="[% class %]">Customize your workflow and choose initial [% terms.bug %]
statuses available on [% terms.bug %] creation and allowed [% terms.bug %] status
transitions when editing existing [% terms.bugs %].</dd>
[% class = user.in_group('creategroups') ? "" : "forbidden" %]
- <dt id="groups" class="[% class %]"><a href="editgroups.cgi">Groups</a></dt>
+ <dt id="groups" class="[% class %]"><a href="[% basepath FILTER none %]editgroups.cgi">Groups</a></dt>
<dd class="[% class %]">Define groups which will be used in the installation.
They can either be used to define new user privileges or to restrict the access
to some [% terms.bugs %].</dd>
[% class = user.in_group('editkeywords') ? "" : "forbidden" %]
- <dt id="keywords" class="[% class %]"><a href="editkeywords.cgi">Keywords</a></dt>
+ <dt id="keywords" class="[% class %]"><a href="[% basepath FILTER none %]editkeywords.cgi">Keywords</a></dt>
<dd class="[% class %]">Set keywords to be used with [% terms.bugs %]. Keywords
are an easy way to "tag" [% terms.bugs %] to let you find them more easily later.</dd>
[% class = user.in_group('bz_canusewhines') ? "" : "forbidden" %]
- <dt id="whining" class="[% class %]"><a href="editwhines.cgi">Whining</a></dt>
+ <dt id="whining" class="[% class %]"><a href="[% basepath FILTER none %]editwhines.cgi">Whining</a></dt>
<dd class="[% class %]">Set queries which will be run at some specified date
and time, and get the result of these queries directly per email. This is a
good way to create reminders and to keep track of the activity in your installation.</dd>
[% IF Bugzilla.localconfig.param_override.use_mailer_queue OR Param('use_mailer_queue') %]
[% class = user.in_group('admin') ? "" : "forbidden" %]
- <dt id="view_job_queue" class="[% class %]"><a href="view_job_queue.cgi">Job Queue</a></dt>
+ <dt id="view_job_queue" class="[% class %]"><a href="[% basepath FILTER none %]view_job_queue.cgi">Job Queue</a></dt>
<dd class="[% class %]">View the queue of undelivered/deferred jobs/emails.</dd>
[% END %]
title = "Add new classification"
%]
-<form method=post action="editclassifications.cgi">
+<form method=post action="[% basepath FILTER none %]editclassifications.cgi">
<table border=0 cellpadding=4 cellspacing=0>
[% PROCESS "admin/classifications/edit-common.html.tmpl" %]
<h2>Confirmation</h2>
<p>Do you really want to delete this classification?</p>
-<form method=post action="editclassifications.cgi">
+<form method=post action="[% basepath FILTER none %]editclassifications.cgi">
<input type=submit value="Yes, delete">
<input type=hidden name="action" value="delete">
<input type=hidden name="classification" value="[% classification.name FILTER html %]">
title = "Edit classification"
%]
-<form method=post action="editclassifications.cgi">
+<form method=post action="[% basepath FILTER none %]editclassifications.cgi">
<table border=0 cellpadding=4 cellspacing=0>
[% PROCESS "admin/classifications/edit-common.html.tmpl" %]
<tr valign=top>
<th align="right">
- <a href="editproducts.cgi?classification=[% classification.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]editproducts.cgi?classification=[% classification.name FILTER uri %]">
Edit Products</a>:
</th>
<td>
[% PROCESS global/variables.none.tmpl %]
<p>Back to the <a href="./">main [% terms.bugs %] page</a>
-or <a href="editclassifications.cgi"> edit</a> more classifications.</p>
+or <a href="[% basepath FILTER none %]editclassifications.cgi"> edit</a> more classifications.</p>
title = "Reclassify products"
%]
-<form method=post action="editclassifications.cgi">
+<form method=post action="[% basepath FILTER none %]editclassifications.cgi">
<table border=0 cellpadding=4 cellspacing=0>
<tr>
<td valign="top">Classification:</td>
[% FOREACH cl = classifications %]
<tr>
- <td valign="top"><a href="editclassifications.cgi?action=edit&classification=[% cl.name FILTER uri %]"><b>[% cl.name FILTER html %]</b></a></td>
+ <td valign="top"><a href="[% basepath FILTER none %]editclassifications.cgi?action=edit&classification=[% cl.name FILTER uri %]"><b>[% cl.name FILTER html %]</b></a></td>
<td valign="top">
[% IF cl.description %]
[% cl.description FILTER html_light %]
[% IF (cl.id == 1) %]
<td valign="top">[% cl.product_count FILTER html %]</td>
[% ELSE %]
- <td valign="top"><a href="editclassifications.cgi?action=reclassify&classification=[% cl.name FILTER uri %]">reclassify ([% cl.product_count FILTER html %])</a></td>
+ <td valign="top"><a href="[% basepath FILTER none %]editclassifications.cgi?action=reclassify&classification=[% cl.name FILTER uri %]">reclassify ([% cl.product_count FILTER html %])</a></td>
[% END %]
[%# don't allow user to delete the default id. %]
[% IF (cl.id == 1) %]
<td valign="top"> </td>
[% ELSE %]
- <td valign="top"><a href="editclassifications.cgi?action=del&classification=[% cl.name FILTER uri %]">delete</a></td>
+ <td valign="top"><a href="[% basepath FILTER none %]editclassifications.cgi?action=del&classification=[% cl.name FILTER uri %]">delete</a></td>
[% END %]
</tr>
[% END %]
<tr>
<td valign="top" colspan=4>Add a new classification</td>
- <td valign="top" align="center"><a href="editclassifications.cgi?action=add">Add</a></td>
+ <td valign="top" align="center"><a href="[% basepath FILTER none %]editclassifications.cgi?action=add">Add</a></td>
</tr>
</table>
<td valign="top">
[% IF comp.bug_count %]
<a title="List of [% terms.bugs %] for component '[% comp.name FILTER html %]'"
- href="buglist.cgi?component=[% comp.name FILTER uri %]&product=
+ href="[% basepath FILTER none %]buglist.cgi?component=[% comp.name FILTER uri %]&product=
[%- product.name FILTER uri %]">[% comp.bug_count %]</a>
[% ELSE %]
None
<p>Do you really want to delete this component?</p>
- <form method="post" action="editcomponents.cgi">
+ <form method="post" action="[% basepath FILTER none %]editcomponents.cgi">
<input type="submit" id="delete" value="Yes, delete">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
generate_api_token = 1
%]
-<form method="post" action="editcomponents.cgi">
+<form method="post" action="[% basepath FILTER none %]editcomponents.cgi">
<table border="0" cellpadding="4" cellspacing="0">
[% PROCESS "admin/components/edit-common.html.tmpl" %]
javascript_urls = [ "js/field.js" ]
%]
-<form method="post" action="editcomponents.cgi">
+<form method="post" action="[% basepath FILTER none %]editcomponents.cgi">
<table border="0" cellpadding="4" cellspacing="0">
[% PROCESS "admin/components/edit-common.html.tmpl" %]
<td>
[% IF comp.bug_count > 0 %]
<a title="[% terms.Bugs %] in component '[% comp.name FILTER html %]'"
- href="buglist.cgi?component=
+ href="[% basepath FILTER none %]buglist.cgi?component=
[%- comp.name FILTER uri %]&product=
[%- product.name FILTER uri %]">[% comp.bug_count %]</a>
[% ELSE %]
<input type="hidden" name="product" value="[% product.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" value="Save Changes" id="update"> or <a
- href="editcomponents.cgi?action=del&product=
+ href="[% basepath FILTER none %]editcomponents.cgi?action=del&product=
[%- product.name FILTER uri %]&component=
[%- comp.name FILTER uri %]">Delete</a> this component.
[% IF comp && !no_edit_component_link %]
component <a
title="Edit Component '[% comp.name FILTER html %]'"
- href="editcomponents.cgi?action=edit&product=
+ href="[% basepath FILTER none %]editcomponents.cgi?action=edit&product=
[%- product.name FILTER uri %]&component=[% comp.name FILTER uri %]">
'[% comp.name FILTER html %]'</a>
or edit
[% IF !no_edit_other_components_link %]
other components of product <a
title="Choose a component from product '[% product.name FILTER html %]' to edit"
- href="editcomponents.cgi?product=
+ href="[% basepath FILTER none %]editcomponents.cgi?product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>,
or edit
[% END %]
product <a
title="Edit Product '[% product.name FILTER html %]'"
- href="editproducts.cgi?action=edit&product=
+ href="[% basepath FILTER none %]editproducts.cgi?action=edit&product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
</p>
overrides = overrides
%]
-<p><a href="editcomponents.cgi?action=add&product=[% product.name FILTER uri %]">Add</a>
+<p><a href="[% basepath FILTER none %]editcomponents.cgi?action=add&product=[% product.name FILTER uri %]">Add</a>
a new component to product '[% product.name FILTER html %]'</p>
[% IF ! showbugcounts %]
- <p><a href="editcomponents.cgi?product=[% product.name FILTER uri %]&showbugcounts=1">
+ <p><a href="[% basepath FILTER none %]editcomponents.cgi?product=[% product.name FILTER uri %]&showbugcounts=1">
Redisplay table with [% terms.bug %] counts (slower)</a></p>
[% END %]
%]
[% IF !showbugcounts %]
- <p><a href="editcomponents.cgi?showbugcounts=1">
+ <p><a href="[% basepath FILTER none %]editcomponents.cgi?showbugcounts=1">
Redisplay table with [% terms.bug %] counts (slower)</a></p>
[% END %]
and has never been used in [% terms.abug FILTER html %].</em>
</p>
-<a href="editfields.cgi?action=delete&name=[% field.name FILTER html %]&token=[% token FILTER html %]">
+<a href="[% basepath FILTER none %]editfields.cgi?action=delete&name=[% field.name FILTER html %]&token=[% token FILTER html %]">
Delete field '[% field.description FILTER html %]'</a>
<p>
- <a href="editfields.cgi">Back to the list of existing custom fields</a>
+ <a href="[% basepath FILTER none %]editfields.cgi">Back to the list of existing custom fields</a>
</p>
[% PROCESS global/footer.html.tmpl %]
used as the label for this field in the user interface.</li>
</ul>
-<form id="add_field" action="editfields.cgi" method="GET">
+<form id="add_field" action="[% basepath FILTER none %]editfields.cgi" method="GET">
<table border="0" cellspacing="0" cellpadding="5" id="edit_custom_field">
<tr>
<th class="narrow_label"><label for="name">Name:</label></th>
</form>
<p>
- <a href="editfields.cgi">Back to the list of existing custom fields</a>
+ <a href="[% basepath FILTER none %]editfields.cgi">Back to the list of existing custom fields</a>
</p>
[% PROCESS global/footer.html.tmpl %]
the label for this field in the user interface.
</p>
-<form id="edit_field" action="editfields.cgi" method="GET">
+<form id="edit_field" action="[% basepath FILTER none %]editfields.cgi" method="GET">
<table border="0" cellspacing="0" cellpadding="5" id="edit_custom_field">
<tr>
<th class="narrow_label">Name:</th>
<tr>
<th> </th>
<td>
- <a href="editvalues.cgi?field=[% field.name FILTER uri %]">Edit
+ <a href="[% basepath FILTER none %]editvalues.cgi?field=[% field.name FILTER uri %]">Edit
legal values for this field</a>.
</td>
[% IF field.obsolete %]
<p>
- <a href="editfields.cgi?action=del&name=[% field.name FILTER html %]">Remove
+ <a href="[% basepath FILTER none %]editfields.cgi?action=del&name=[% field.name FILTER html %]">Remove
this custom field from the database.</a><br>
This action will only be successful if the custom field has never been used
in [% terms.abug %].<br>
[% END %]
<p>
- <a href="editfields.cgi">Back to the list of existing custom fields</a>
+ <a href="[% basepath FILTER none %]editfields.cgi">Back to the list of existing custom fields</a>
</p>
[% PROCESS global/footer.html.tmpl %]
%]
<p>
- <a href="editfields.cgi?action=add">Add a new custom field</a>
+ <a href="[% basepath FILTER none %]editfields.cgi?action=add">Add a new custom field</a>
</p>
[% PROCESS global/footer.html.tmpl %]
<a title="List of [% terms.bugs %] where '
[%- field.description FILTER html %]' is '
[%- value.name FILTER html %]'"
- href="buglist.cgi?[% field.name FILTER uri %]=
+ href="[% basepath FILTER none %]buglist.cgi?[% field.name FILTER uri %]=
[%- value.name FILTER uri %]">
[%- value.bug_count FILTER html %]</a>
[% ELSE %]
<li>'[% value.name FILTER html %]' is the default value for
the '[% field.description FILTER html %]' field.
[% IF user.in_group('tweakparams') %]
- You first have to <a href="editparams.cgi?section=bugfields">change
+ You first have to <a href="[% basepath FILTER none %]editparams.cgi?section=bugfields">change
the default value</a> for this field before you can delete
this value.
[% END %]
<a title="List of [% terms.bugs %] where '
[%- field.description FILTER html %]' is '
[%- value.name FILTER html %]'"
- href="buglist.cgi?[% field.name FILTER uri %]=
+ href="[% basepath FILTER none %]buglist.cgi?[% field.name FILTER uri %]=
[%- value.name FILTER uri %]">
[% IF value.bug_count > 1 %]
those [% terms.bugs %]
[% IF value.controls_visibility_of_fields.size %]
<li>This value controls the visibility of the following fields:<br>
[% FOREACH field = value.controls_visibility_of_fields %]
- <a href="editfields.cgi?action=edit&name=
+ <a href="[% basepath FILTER none %]editfields.cgi?action=edit&name=
[%- field.name FILTER uri %]">
[%- field.description FILTER html %]
([% field.name FILTER html %])</a><br>
other fields:<br>
[% FOREACH field_name = value.controlled_values.keys %]
[% FOREACH controlled = value.controlled_values.${field_name} %]
- <a href="editvalues.cgi?action=edit&field=
+ <a href="[% basepath FILTER none %]editvalues.cgi?action=edit&field=
[%- controlled.field.name FILTER uri %]&value=
[%- controlled.name FILTER uri %]">
[% controlled.field.description FILTER html %]
<p>Do you really want to delete this value?</p>
- <form method="post" action="editvalues.cgi">
+ <form method="post" action="[% basepath FILTER none %]editvalues.cgi">
<input type="submit" value="Yes, delete" id="delete">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="field" value="[% field.name FILTER html %]">
'[% field.description FILTER html %]' field.
</p>
-<form method="post" action="editvalues.cgi">
+<form method="post" action="[% basepath FILTER none %]editvalues.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right"><label for="value">Value:</label></th>
title = title
%]
-<form method="post" action="editvalues.cgi">
+<form method="post" action="[% basepath FILTER none %]editvalues.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
[% UNLESS no_add_link %]
<a title="Add a value for the '[% field.description FILTER html %]' field."
- href="editvalues.cgi?action=add&field=
+ href="[% basepath FILTER none %]editvalues.cgi?action=add&field=
[%- field.name FILTER uri %]">Add</a> a value.
[% END %]
Edit value <a
title="Edit value '[% value.name FILTER html %]' for the '
[%- field.name FILTER html %]' field"
- href="editvalues.cgi?action=edit&field=
+ href="[% basepath FILTER none %]editvalues.cgi?action=edit&field=
[%- field.name FILTER uri %]&value=
[%- value.name FILTER uri %]">
'[% value.name FILTER html %]'</a>.
[% UNLESS no_edit_other_link %]
Edit other values for the <a
- href="editvalues.cgi?field=
+ href="[% basepath FILTER none %]editvalues.cgi?field=
[%- field.name FILTER uri %]">'[% field.description FILTER html %]'</a> field.
[% END %]
[% END %]
Note that instead of deleting the type you can
- <a href="editflagtypes.cgi?action=deactivate&id=[% flag_type.id %]&token=
+ <a href="[% basepath FILTER none %]editflagtypes.cgi?action=deactivate&id=[% flag_type.id %]&token=
[%- token FILTER html %]">deactivate it</a>,
in which case the type [% IF flag_type.flag_count %] and its flags [% END %] will remain
in the database but will not appear in the [% terms.Bugzilla %] UI.
</tr>
<tr>
<td>
- <a href="editflagtypes.cgi?action=delete&id=[% flag_type.id %]&token=
+ <a href="[% basepath FILTER none %]editflagtypes.cgi?action=delete&id=[% flag_type.id %]&token=
[%- token FILTER html %]">Yes, delete
</a>
</td>
<td align="right">
- <a href="editflagtypes.cgi">
+ <a href="[% basepath FILTER none %]editflagtypes.cgi">
No, don't delete
</a>
</td>
doc_section = doc_section
%]
-<form id="flagtype_properties" method="post" action="editflagtypes.cgi">
+<form id="flagtype_properties" method="post" action="[% basepath FILTER none %]editflagtypes.cgi">
<input type="hidden" name="action" value="[% action FILTER html %]">
<input type="hidden" name="can_fully_edit" value="[% can_fully_edit FILTER html %]">
<input type="hidden" name="id" value="[% type.id FILTER html %]">
which are available to at least one component of the product are shown.
</p>
-<form id="flagtype_form" name="flagtype_form" action="editflagtypes.cgi" method="get">
+<form id="flagtype_form" name="flagtype_form" action="[% basepath FILTER none %]editflagtypes.cgi" method="get">
<table>
<tr>
<th><label for="product">Product:</label></th>
[% PROCESS display_flag_types types=bug_types types_id='bugs' %]
<p>
- <a href="editflagtypes.cgi?action=enter&target_type=bug">Create Flag Type for [% terms.Bugs %]</a>
+ <a href="[% basepath FILTER none %]editflagtypes.cgi?action=enter&target_type=bug">Create Flag Type for [% terms.Bugs %]</a>
</p>
<h3>Flag Types for Attachments</h3>
[% PROCESS display_flag_types types=attachment_types types_id='attachments' %]
<p>
- <a href="editflagtypes.cgi?action=enter&target_type=attachment">Create Flag Type For Attachments</a>
+ <a href="[% basepath FILTER none %]editflagtypes.cgi?action=enter&target_type=attachment">Create Flag Type For Attachments</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[% FOREACH type = types %]
<tr class="[% IF type.is_active %]active[% ELSE %]inactive[% END %]">
- <td><a href="editflagtypes.cgi?action=edit&id=[% type.id %]">[% type.name FILTER html FILTER no_break %]</a></td>
+ <td><a href="[% basepath FILTER none %]editflagtypes.cgi?action=edit&id=[% type.id %]">[% type.name FILTER html FILTER no_break %]</a></td>
<td>[% type.description FILTER html %]</td>
<td align="right">[% type.sortkey FILTER html %]</td>
<td>
[% FOREACH state = ['granted', 'pending', 'denied'] %]
[% bug_list = bug_lists.${type.id}.$state || [] %]
[% IF bug_list.size %]
- <a href="buglist.cgi?bug_id=[% bug_list.unique.nsort.join(",") FILTER html %]">
+ <a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% bug_list.unique.nsort.join(",") FILTER html %]">
[% bug_list.size FILTER html %] [%+ state_desc.$state FILTER html %]
</a>
<br>
</td>
[% END %]
<td>
- <a href="editflagtypes.cgi?action=copy&id=[% type.id %]">Copy</a>
- | <a href="editflagtypes.cgi?action=confirmdelete&id=[% type.id %]">Delete</a>
+ <a href="[% basepath FILTER none %]editflagtypes.cgi?action=copy&id=[% type.id %]">Copy</a>
+ | <a href="[% basepath FILTER none %]editflagtypes.cgi?action=confirmdelete&id=[% type.id %]">Delete</a>
</td>
</tr>
for further information.
</p>
-<form method="post" action="editgroups.cgi">
+<form method="post" action="[% basepath FILTER none %]editgroups.cgi">
<input type="hidden" name="group_id" value="[% group.id FILTER html %]">
<input type="hidden" name="regexp" value="[% regexp FILTER html %]">
<input type="hidden" name="action" value="remove_regexp">
<input name="token" type="hidden" value="[% token FILTER html %]">
<input id="confirm" name="confirm" type="submit" value="Confirm">
- <p>Or <a href="editgroups.cgi">return to the Edit Groups page</a>.</p>
+ <p>Or <a href="[% basepath FILTER none %]editgroups.cgi">return to the Edit Groups page</a>.</p>
</form>
[% PROCESS global/footer.html.tmpl %]
javascript_urls = [ "js/field.js" ]
%]
-<form method="post" action="editgroups.cgi">
+<form method="post" action="[% basepath FILTER none %]editgroups.cgi">
<table border="1" cellpadding="4" cellspacing="0"><tr>
<th>New Name</th>
<th>New Description</th>
<p>Back to the <a href="./">main [% terms.bugs %] page</a>
-or to the <a href="editgroups.cgi">group list</a>.
+or to the <a href="[% basepath FILTER none %]editgroups.cgi">group list</a>.
[% PROCESS global/footer.html.tmpl %]
</tr>
</table>
-<form method="post" action="editgroups.cgi">
+<form method="post" action="[% basepath FILTER none %]editgroups.cgi">
[% IF group.members_non_inherited.size %]
<p><b>[% group.members_non_inherited.size FILTER html %] users belong
directly to this group. You cannot delete this group while there are
users in it.</b>
- <br><a href="editusers.cgi?action=list&groupid=
+ <br><a href="[% basepath FILTER none %]editusers.cgi?action=list&groupid=
[%- group.id FILTER uri %]&grouprestrict=1">Show
me which users</a> - <label><input type="checkbox" name="removeusers">Remove
all users from this group for me.</label></p>
visible only to this group. You cannot delete this group while any
[%+ terms.bugs %] are using it.</b>
- <br><a href="buglist.cgi?field0-0-0=bug_group&type0-0-0=equals&value0-0-0=
+ <br><a href="[% basepath FILTER none %]buglist.cgi?field0-0-0=bug_group&type0-0-0=equals&value0-0-0=
[%- group.name FILTER uri %]">Show me
which [% terms.bugs %]</a> -
<label><input type="checkbox" name="removebugs">Remove
[% SET hidden = 1 %]
[% END %]
- <li><a href="editproducts.cgi?action=editgroupcontrols&product=
+ <li><a href="[% basepath FILTER none %]editproducts.cgi?action=editgroupcontrols&product=
[%- data.product.name FILTER uri %]">
[%- data.product.name FILTER html %]</a>
([% active.join(', ') FILTER html %])
<p><b>This group restricts who can make changes to flags of certain types.
You cannot delete this group while there are flag types using it.</b>
- <br><a href="editflagtypes.cgi?action=list&group=
+ <br><a href="[% basepath FILTER none %]editflagtypes.cgi?action=list&group=
[%- group.id FILTER uri %]">Show
me which types</a> -
<label><input type="checkbox" name="removeflags">Remove all
</p>
</form>
-Go back to the <a href="editgroups.cgi">group list</a>.
+Go back to the <a href="[% basepath FILTER none %]editgroups.cgi">group list</a>.
[% PROCESS global/footer.html.tmpl %]
javascript_urls = [ "js/field.js" ]
%]
-<form method="post" action="editgroups.cgi">
+<form method="post" action="[% basepath FILTER none %]editgroups.cgi">
<input type="hidden" name="action" value="postchanges">
<input type="hidden" name="group_id" value="[% group.id FILTER html %]">
2.16.</p>
<table><tr><td>
-<form method="post" action="editgroups.cgi">
+<form method="post" action="[% basepath FILTER none %]editgroups.cgi">
<fieldset>
<legend>Remove all explicit memberships from users whose login names
match the following regular expression:</legend>
</form>
</td></tr></table>
-<p>Back to the <a href="editgroups.cgi">group list</a>.</p>
+<p>Back to the <a href="[% basepath FILTER none %]editgroups.cgi">group list</a>.</p>
[% PROCESS global/footer.html.tmpl %]
overrides = overrides
%]
-<p><a href="editgroups.cgi?action=add">Add Group</a></p>
+<p><a href="[% basepath FILTER none %]editgroups.cgi?action=add">Add Group</a></p>
<p>
<b>Name</b> is what is used with the B<!-- blah -->ugzilla->user->in_group()
the <code>[% keyword.name FILTER html %]</code> keyword?
</p>
-<form method="post" action="editkeywords.cgi">
+<form method="post" action="[% basepath FILTER none %]editkeywords.cgi">
<input type="hidden" name="id" value="[% keyword.id FILTER html %]">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="token" value="[% token FILTER html %]">
value="Yes, really delete the keyword">
</form>
-<p><a href="editkeywords.cgi">Edit other keywords</a>.</p>
+<p><a href="[% basepath FILTER none %]editkeywords.cgi">Edit other keywords</a>.</p>
[% PROCESS global/footer.html.tmpl %]
subheader = "This page allows you to add a new keyword."
%]
-<form method="post" action="editkeywords.cgi">
+<form method="post" action="[% basepath FILTER none %]editkeywords.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right">Name:</th>
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
-<p><a href="editkeywords.cgi">Edit other keywords</a>.</p>
+<p><a href="[% basepath FILTER none %]editkeywords.cgi">Edit other keywords</a>.</p>
[% PROCESS global/footer.html.tmpl %]
title = "Edit keyword"
%]
-<form method="post" action="editkeywords.cgi">
+<form method="post" action="[% basepath FILTER none %]editkeywords.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right"><label for="name">Name:</label></th>
<th align="right">[% terms.Bugs %]:</th>
<td>
[% IF keyword.bug_count > 0 %]
- <a href="buglist.cgi?keywords=[% keyword.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]buglist.cgi?keywords=[% keyword.name FILTER uri %]">
[% keyword.bug_count FILTER html %]</a>
[% ELSE %]
none
<input type="hidden" name="token" value="[% token FILTER html %]">
</form>
-<p><a href="editkeywords.cgi">Edit other keywords</a>.</p>
+<p><a href="[% basepath FILTER none %]editkeywords.cgi">Edit other keywords</a>.</p>
[% PROCESS global/footer.html.tmpl %]
footer = footer_row
%]
-<p><a href="editkeywords.cgi?action=add">Add a new keyword</a></p>
+<p><a href="[% basepath FILTER none %]editkeywords.cgi?action=add">Add a new keyword</a></p>
[% PROCESS global/footer.html.tmpl %]
[% IF milestone.bug_count %]
<a title="List of [% terms.bugs %] targetted at milestone '
[% milestone.name FILTER html %]'"
- href="buglist.cgi?target_milestone=[% milestone.name FILTER uri %]&product=
+ href="[% basepath FILTER none %]buglist.cgi?target_milestone=[% milestone.name FILTER uri %]&product=
[%- product.name FILTER uri %]">
[% milestone.bug_count FILTER none %]</a>
[% ELSE %]
<p>Do you really want to delete this milestone?<p>
-<form method="post" action="editmilestones.cgi">
+<form method="post" action="[% basepath FILTER none %]editmilestones.cgi">
<input type="submit" id="delete" value="Yes, delete">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
onload = "document.forms['f'].milestone.focus()"
%]
-<form name="f" method="post" action="editmilestones.cgi">
+<form name="f" method="post" action="[% basepath FILTER none %]editmilestones.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right"><label for="milestone">Milestone:</label></th>
onload = "document.forms['f'].milestone.select()"
%]
-<form name="f" method="post" action="editmilestones.cgi">
+<form name="f" method="post" action="[% basepath FILTER none %]editmilestones.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
[% UNLESS no_add_milestone_link %]
<a title="Add a milestone to product '[% product.name FILTER html %]'"
- href="editmilestones.cgi?action=add&product=
+ href="[% basepath FILTER none %]editmilestones.cgi?action=add&product=
[%- product.name FILTER uri %]">Add</a> a milestone.
[% END %]
Edit milestone <a
title="Edit Milestone '[% milestone.name FILTER html %]' of product '
[%- product.name FILTER html %]'"
- href="editmilestones.cgi?action=edit&product=
+ href="[% basepath FILTER none %]editmilestones.cgi?action=edit&product=
[%- product.name FILTER uri %]&milestone=
[%- milestone.name FILTER uri %]">
'[% milestone.name FILTER html %]'</a>.
[% UNLESS no_edit_other_milestones_link %]
Edit other milestones of product <a
- href="editmilestones.cgi?product=
+ href="[% basepath FILTER none %]editmilestones.cgi?product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
[% END %]
Edit product <a
- href="editproducts.cgi?action=edit&product=
+ href="[% basepath FILTER none %]editproducts.cgi?action=edit&product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
</p>
[% IF ! showbugcounts %]
- <p><a href="editmilestones.cgi?product=[% product.name FILTER uri %]&showbugcounts=1">
+ <p><a href="[% basepath FILTER none %]editmilestones.cgi?product=[% product.name FILTER uri %]&showbugcounts=1">
Redisplay table with [% terms.bug %] counts (slower)</a></p>
[% END %]
%]
[% IF !showbugcounts %]
- <p><a href="editmilestones.cgi?showbugcounts=1">
+ <p><a href="[% basepath FILTER none %]editmilestones.cgi?showbugcounts=1">
Redisplay table with [% terms.bug %] counts (slower)</a></p>
[% END %]
<table id="menu">
<tr>
<td class="index">
- <a href="editparams.cgi?section=index" title="Show all parameters">Index</a>
+ <a href="[% basepath FILTER none %]editparams.cgi?section=index" title="Show all parameters">Index</a>
</td>
</tr>
[% FOREACH panel = panels %]
</td>
[% ELSE %]
<td>
- <a href="editparams.cgi?section=[% panel.name FILTER uri %]"
+ <a href="[% basepath FILTER none %]editparams.cgi?section=[% panel.name FILTER uri %]"
title="[% panel.desc FILTER html %]">[% panel.title FILTER html %]</a>
</td>
[% END %]
</p>
[%# CONTENT PANEL %]
- <form method="post" action="editparams.cgi">
+ <form method="post" action="[% basepath FILTER none %]editparams.cgi">
[% PROCESS admin/params/common.html.tmpl panel = current_panel %]
<input type="hidden" name="section" value="[% current_panel.name FILTER html %]">
<input type="hidden" name="action" value="save">
[% FOREACH param = panel.param_list.sort('name') %]
<tr>
<td>
- <a href="editparams.cgi?section=
+ <a href="[% basepath FILTER none %]editparams.cgi?section=
[%- panel.name FILTER uri %]#[% param.name FILTER uri %]_desc">
[% param.name FILTER html %]</a>
</td>
<tr>
<td valign="top">Product:</td>
<td valign="top">
- <a href="editproducts.cgi?product=[% product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]editproducts.cgi?product=[% product.name FILTER uri %]">
[% product.name FILTER html %]
</a>
</td>
<tr>
<td>
[% IF product.components.size > 0 %]
- <a href="editcomponents.cgi?product=[% product.name FILTER uri %]"
+ <a href="[% basepath FILTER none %]editcomponents.cgi?product=[% product.name FILTER uri %]"
title="Edit components for product '[% product.name FILTER html %]'">
Components:
</a>
<tr>
<td>
[% IF product.versions.size > 0 %]
- <a href="editversions.cgi?product=[%- product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]editversions.cgi?product=[%- product.name FILTER uri %]">
Versions:
</a>
[% ELSE %]
<tr>
<td valign="top">
[% IF product.milestones.size > 0 %]
- <a href="editmilestones.cgi?product=[%- product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]editmilestones.cgi?product=[%- product.name FILTER uri %]">
Milestones:
</a>
[% ELSE %]
<td>[% terms.Bugs %]:</td>
<td>
[% IF product.bug_count %]
- <a href="buglist.cgi?product=[% product.name FILTER uri %]"
+ <a href="[% basepath FILTER none %]buglist.cgi?product=[% product.name FILTER uri %]"
title="List of [% terms.bugs %] for product '[% product.name FILTER html %]'">
[% product.bug_count FILTER html %]
</a>
<p>Do you really want to delete this product?</p>
- <form method="post" action="editproducts.cgi">
+ <form method="post" action="[% basepath FILTER none %]editproducts.cgi">
<input type="checkbox" id="delete_series" name="delete_series" value=1>
<label for="delete_series">
Delete all related series (you can also delete them later, by visiting
- the <a href="chart.cgi?category=[% product.name FILTER html %]">New Charts page</a>.)
+ the <a href="[% basepath FILTER none %]chart.cgi?category=[% product.name FILTER html %]">New Charts page</a>.)
</label><p>
<input type="submit" id="delete" value="Yes, delete">
<input type="hidden" name="action" value="delete">
product.allows_unconfirmed = 1
%]
-<form method="post" action="editproducts.cgi">
+<form method="post" action="[% basepath FILTER none %]editproducts.cgi">
<table border="0" cellpadding="4" cellspacing="0">
[% PROCESS "admin/products/edit-common.html.tmpl" %]
${constants.CONTROLMAPMANDATORY} => 'Mandatory'}
%]
-<form method="post" action="editproducts.cgi">
+<form method="post" action="[% basepath FILTER none %]editproducts.cgi">
<table border="0" cellpadding="4" cellspacing="0">
[% PROCESS "admin/products/edit-common.html.tmpl" %]
<tr>
<th align="right" valign="top">
- <a href="editcomponents.cgi?product=[% product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]editcomponents.cgi?product=[% product.name FILTER uri %]">
Edit components:
</a>
</th>
</tr>
<tr>
<th align="right" valign="top">
- <a href="editversions.cgi?product=[% product.name FILTER uri %]">Edit
+ <a href="[% basepath FILTER none %]editversions.cgi?product=[% product.name FILTER uri %]">Edit
versions:</a>
</th>
<td>
[% IF Param('usetargetmilestone') %]
<tr>
<th align="right" valign="top">
- <a href="editmilestones.cgi?product=[% product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]editmilestones.cgi?product=[% product.name FILTER uri %]">
Edit milestones:</a>
</th>
<td>
[% END %]
<tr>
<th align="right" valign="top">
- <a href="editproducts.cgi?action=editgroupcontrols&product=
+ <a href="[% basepath FILTER none %]editproducts.cgi?action=editgroupcontrols&product=
[%- product.name FILTER uri %]">
Edit Group Access Controls:
</a>
</tr>
<tr>
<th align="right">[% terms.Bugs %]:</th>
- <td><a href="buglist.cgi?product=[% product.name FILTER uri %]">
+ <td><a href="[% basepath FILTER none %]buglist.cgi?product=[% product.name FILTER uri %]">
[% product.bug_count FILTER html %]</a></td>
</tr>
</table>
<p>
[% UNLESS no_add_product_link || !user.in_group("editcomponents") %]
<a title="Add a product"
- href="editproducts.cgi?action=add">Add</a> a product[% -%]
+ href="[% basepath FILTER none %]editproducts.cgi?action=add">Add</a> a product[% -%]
[%# Strictly speaking, we should not have to check for a
classification if they are enabled, but I'm just being paranoid %]
[% IF Param('useclassification') && classification %]
(<a title="Add a product to classification '
[%- classification.name FILTER html %]'"
- href="editproducts.cgi?action=add
+ href="[% basepath FILTER none %]editproducts.cgi?action=add
[%- classification_url_part %]">to
classification '[% classification.name FILTER html %]'</a>)
[% END %].
Edit product <a
title="Edit Product '[% product.name FILTER html %]'
[%- classification_text %]"
- href="editproducts.cgi?action=edit&product=[% product.name FILTER uri %]">
+ href="[% basepath FILTER none %]editproducts.cgi?action=edit&product=[% product.name FILTER uri %]">
'[% product.name FILTER html %]'</a>.
[% END %]
[%# Edit other products (in a classification if specified): %]
[% UNLESS no_edit_other_products_link %]
Edit <a
- href="editproducts.cgi?
+ href="[% basepath FILTER none %]editproducts.cgi?
[%- classification_url_part_start FILTER none %]">other products
[% classification_text %]</a>.
[% IF Param('useclassification') && classification
&& user.in_group('editclassifications') %]
- Edit classification <a href="editclassifications.cgi?action=edit
+ Edit classification <a href="[% basepath FILTER none %]editclassifications.cgi?action=edit
[%- classification_url_part %]">'
[%- classification.name FILTER html %]'</a>.
group '[% group.name FILTER html %]' impacts [% group.count %]
[% terms.bugs %] for which the group is no longer applicable and will
be removed.[% END %]
-<form action="editproducts.cgi" method="post">
+<form action="[% basepath FILTER none %]editproducts.cgi" method="post">
[% PROCESS "global/hidden-fields.html.tmpl" exclude="^Bugzilla_(login|password)$" %]
title = title
%]
-<form method="post" action="editproducts.cgi">
+<form method="post" action="[% basepath FILTER none %]editproducts.cgi">
<input type="hidden" name="action" value="updategroupcontrols">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
<input type="hidden" name="token" value="[% token FILTER html %]">
[% IF !showbugcounts %]
- <p><a href="editproducts.cgi?showbugcounts=1[% classification_url_part %]">
+ <p><a href="[% basepath FILTER none %]editproducts.cgi?showbugcounts=1[% classification_url_part %]">
Redisplay table with [% terms.bug %] counts (slower)</a></p>
[% END %]
[% IF changes.name.defined %]
<p>
Updated product name from '[% changes.name.0 FILTER html %]' to
- '<a href="editproducts.cgi?action=edit&product=
+ '<a href="[% basepath FILTER none %]editproducts.cgi?action=edit&product=
[%- product.name FILTER uri %]">[% product.name FILTER html %]</a>'.
</p>
[% END %]
The product no longer allows the
[%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status.
Note that any
- <a href="buglist.cgi?product=
+ <a href="[% basepath FILTER none %]buglist.cgi?product=
[%- product.name FILTER uri %]&bug_status=UNCONFIRMED">
[%- terms.bugs %] that currently have the
[%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status</a>
[% errortext FILTER html %]: [% INCLUDE bug_list badbugs = badbugs %]
[% ELSIF san_tag == "bug_check_repair" %]
- <a href="sanitycheck.cgi?[% param FILTER uri %]=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?[% param FILTER uri %]=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">[% text FILTER html %]</a>.
[% ELSIF san_tag == "bug_check_creation_date" %]
[% END %]
[% ELSIF san_tag == "cross_check_attachment_has_references" %]
- <a href="sanitycheck.cgi?remove_invalid_attach_references=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?remove_invalid_attach_references=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">Remove
invalid references to non existent attachments.</a>
[% ELSIF san_tag == "cross_check_bug_has_references" %]
- <a href="sanitycheck.cgi?remove_invalid_bug_references=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?remove_invalid_bug_references=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">Remove
invalid references to non existent [% terms.bugs %].</a>
[%+ PROCESS bug_link bug_id = bug_id %].
[% ELSIF san_tag == "flag_fix" %]
- <a href="sanitycheck.cgi?remove_invalid_flags=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?remove_invalid_flags=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">Click
here to delete invalid flags</a>
half an hour: [% INCLUDE bug_list badbugs = badbugs %]
[% ELSIF san_tag == "unsent_bugmail_fix" %]
- <a href="sanitycheck.cgi?rescanallBugMail=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?rescanallBugMail=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">Send these mails</a>.
[% ELSIF san_tag == "whines_obsolete_target_deletion_start" %]
[% END %]
[% ELSIF san_tag == "whines_obsolete_target_fix" %]
- <a href="sanitycheck.cgi?remove_old_whine_targets=1&token=
+ <a href="[% basepath FILTER none %]sanitycheck.cgi?remove_old_whine_targets=1&token=
[%- issue_hash_token(['sanitycheck']) FILTER uri %]">Click here to
remove old users/groups</a>
# which itself calls this template again, generating a recursion error.
# I doubt having a tooltip with the bug status and summary is so
# important here anyway, as you can click the "(as buglist)" link. %]
- <a href="show_bug.cgi?id=[% bug_id FILTER uri %]">[% bug_id FILTER html %]</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug_id FILTER uri %]">[% bug_id FILTER html %]</a>
[% ", " IF !loop.last %]
[% END %]
- (<a href="buglist.cgi?bug_id=[% badbugs.join(",") FILTER uri %]">as [% terms.bug %] list</a>).
+ (<a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% badbugs.join(",") FILTER uri %]">as [% terms.bug %] list</a>).
[% END %]
[% BLOCK bug_link %]
- <a href="show_bug.cgi?id=[% bug_id FILTER uri %]">[% terms.bug %] [%+ bug_id FILTER html %]</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug_id FILTER uri %]">[% terms.bug %] [%+ bug_id FILTER html %]</a>
[% END %]
<hr>
[% IF settings.size %]
- <form name="adminsettingform" method="post" action="editsettings.cgi">
+ <form name="adminsettingform" method="post" action="[% basepath FILTER none %]editsettings.cgi">
<table border="1" cellpadding="4">
<tr>
<th>Preference Text</th>
Your actions may be logged more carefully than normal.
</p>
-<form action="relogin.cgi" method="POST">
+<form action="[% basepath FILTER none %]relogin.cgi" method="POST">
<p>
To begin,
[% IF Param('usemenuforusers') %]
[% link_uri = link_uri.replace("%%$m%%", replacement_value) %]
[% END %]
[% END %]
- <a href="[% link_uri %]">
+ <a href="[% basepath FILTER none %][% link_uri %]">
[% END %]
[% IF content_use_field && field_descs.exists(row.${c.name}) %]
[% IF attachments %]
<li>
[% otheruser.login FILTER html %]
- <a href="buglist.cgi?field0-0-0=attachments.submitter&type0-0-0=equals&value0-0-0=
+ <a href="[% basepath FILTER none %]buglist.cgi?field0-0-0=attachments.submitter&type0-0-0=equals&value0-0-0=
[%- otheruser.login FILTER uri %]">has submitted
[% IF attachments == 1 %]
one attachment
[% IF reporter %]
<li>
[% otheruser.login FILTER html %]
- <a href="buglist.cgi?emailreporter1=1&emailtype1=exact&email1=
+ <a href="[% basepath FILTER none %]buglist.cgi?emailreporter1=1&emailtype1=exact&email1=
[%- otheruser.login FILTER uri %]">has reported
[% IF reporter == 1 %]
one [% terms.bug %]
[% IF flags.setter %]
<li>
[% otheruser.login FILTER html %] has
- <a href="buglist.cgi?field0-0-0=setters.login_name&type0-0-0=equals&value0-0-0=
+ <a href="[% basepath FILTER none %]buglist.cgi?field0-0-0=setters.login_name&type0-0-0=equals&value0-0-0=
[%- otheruser.login FILTER uri %]">set
or requested
[% IF flags.setter == 1 %]
[% IF longdescs %]
<li>
[% otheruser.login FILTER html %] has
- <a href="buglist.cgi?emaillongdesc1=1&emailtype1=exact&email1=
+ <a href="[% basepath FILTER none %]buglist.cgi?emaillongdesc1=1&emailtype1=exact&email1=
[%- otheruser.login FILTER uri %]">commented
[% IF longdescs == 1 %]
once on [% terms.abug %]
[% IF assignee_or_qa %]
<li>
[% otheruser.login FILTER html %]
- <a href="buglist.cgi?emailassigned_to1=1&emailqa_contact1=1&emailtype1=exact&email1=
+ <a href="[% basepath FILTER none %]buglist.cgi?emailassigned_to1=1&emailqa_contact1=1&emailtype1=exact&email1=
[%- otheruser.login FILTER uri %]">is
the assignee or the QA contact of
[% IF assignee_or_qa == 1 %]
[% IF cc %]
<li>
[% otheruser.login FILTER html %]
- <a href="buglist.cgi?emailcc1=1&emailtype1=exact&email1=
+ <a href="[% basepath FILTER none %]buglist.cgi?emailcc1=1&emailtype1=exact&email1=
[%- otheruser.login FILTER uri %]">is
on the CC list of
[% IF cc == 1 %]
[% IF flags.requestee %]
<li>
[% otheruser.login FILTER html %] has been
- <a href="buglist.cgi?field0-0-0=requestees.login_name&type0-0-0=equals&value0-0-0=
+ <a href="[% basepath FILTER none %]buglist.cgi?field0-0-0=requestees.login_name&type0-0-0=equals&value0-0-0=
[%- otheruser.login FILTER uri %]">asked
to set
[% IF flags.requestee == 1 %]
</p>
<p>Do you really want to delete this user account?</p>
- <form method="post" action="editusers.cgi">
+ <form method="post" action="[% basepath FILTER none %]editusers.cgi">
<p>
<input type="submit" id="delete" value="Yes, delete">
<input type="hidden" name="action" value="delete">
[% END %]
[% END %]
- <a href="editusers.cgi?action=edit&userid=[% otheruser.id %]
+ <a href="[% basepath FILTER none %]editusers.cgi?action=edit&userid=[% otheruser.id %]
[% INCLUDE listselectionurlparams %]">edit the user</a>,
go
- <a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
+ <a href="[% basepath FILTER none %]editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
to the user list</a>,
[% IF editusers %]
- <a href="editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
+ <a href="[% basepath FILTER none %]editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
a new user</a>,
[% END %]
- or <a href="editusers.cgi">find other users</a>.
+ or <a href="[% basepath FILTER none %]editusers.cgi">find other users</a>.
</p>
[% PROCESS global/footer.html.tmpl %]
listselectionvalues = listselectionvalues
%]
-<form name="f" method="post" action="editusers.cgi">
+<form name="f" method="post" action="[% basepath FILTER none %]editusers.cgi">
<table class="main">
[% PROCESS admin/users/userdata.html.tmpl
editform = 0
</form>
<p>
- You can also <a href="editusers.cgi">find a user</a>
+ You can also <a href="[% basepath FILTER none %]editusers.cgi">find a user</a>
[% IF listselectionvalues %],
or
- <a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">go
+ <a href="[% basepath FILTER none %]editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">go
back to the user list</a>
[% END %].
</p>
listselectionvalues = listselectionvalues
%]
-<form method="post" action="editusers.cgi">
+<form method="post" action="[% basepath FILTER none %]editusers.cgi">
<table class="main">
[% PROCESS admin/users/userdata.html.tmpl
editform = 1
[% can_edit_groups = user.in_group('creategroups') %]
[% FOREACH group = otheruser.groups_owned %]
[% IF can_edit_groups %]
- <a href="[% urlbase FILTER none %]editgroups.cgi?action=changeform&group=[% group.id FILTER none %]">
+ <a href="[% basepath FILTER none %]editgroups.cgi?action=changeform&group=[% group.id FILTER none %]">
[% END %]
[% group.name FILTER html %]
[% '</a>' IF can_edit_groups %]<br>
[% INCLUDE listselectionhiddenfields %]
[% IF editusers %]
- , <a href="editusers.cgi?action=activity&userid=[% otheruser.id %]"
+ , <a href="[% basepath FILTER none %]editusers.cgi?action=activity&userid=[% otheruser.id %]"
title="View Account History for '
[%- otheruser.login FILTER html %]'">View Account History</a>
- or <a href="editusers.cgi?action=admin_activity&userid=[% otheruser.id %]"
+ or <a href="[% basepath FILTER none %]editusers.cgi?action=admin_activity&userid=[% otheruser.id %]"
title="View Account History for '
[%- otheruser.login FILTER html %]'">View Admin History</a>
[% END %]
[% END %]
[% IF Param('allowuserdeletion') && editusers %]
- <form method="post" action="editusers.cgi">
+ <form method="post" action="[% basepath FILTER none %]editusers.cgi">
<p>
<input type="submit" id="delete" value="Delete User">
<input type="hidden" name="action" value="del">
<p>
You can also
[% IF editusers %]
- <a href="editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
+ <a href="[% basepath FILTER none %]editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
a new user</a>
[% IF listselectionvalues %],
[% END %]
[% END %]
[% IF listselectionvalues.matchtype != 'exact' %]
go
- <a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
+ <a href="[% basepath FILTER none %]editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
to the user list</a>,
[% END %]
[% IF editusers OR listselectionvalues %]
or
[% END %]
- <a href="editusers.cgi">find other users</a>.
+ <a href="[% basepath FILTER none %]editusers.cgi">find other users</a>.
</p>
[% PROCESS global/footer.html.tmpl %]
<p>
If you do not wish to modify a user account at this time, you can
- <a href="editusers.cgi">find other users</a>
+ <a href="[% basepath FILTER none %]editusers.cgi">find other users</a>
[% IF editusers %]
or
- <a href="editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
+ <a href="[% basepath FILTER none %]editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
a new user</a>
[% END %].
</p>
<tr>
<td>
[% IF user.in_group("editcomponents", component.product_id) %]
- <a href="editcomponents.cgi?action=edit&product=
+ <a href="[% basepath FILTER none %]editcomponents.cgi?action=edit&product=
[% item.product.name FILTER uri %]&component=
[% component.name FILTER uri %]">
[% END %]
listselectionvalues = listselectionvalues
%]
-<form name="f" method="get" action="editusers.cgi">
+<form name="f" method="get" action="[% basepath FILTER none %]editusers.cgi">
<input type="hidden" name="action" value="list">
<p><label for="matchvalue">List users with</label>
<select id="matchvalue" name="matchvalue">
[% IF editusers %]
<p>
- You can also <a href="editusers.cgi?action=add">add a new user</a>
+ You can also <a href="[% basepath FILTER none %]editusers.cgi?action=add">add a new user</a>
[%- IF listselectionvalues %],
or
- <a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">show
+ <a href="[% basepath FILTER none %]editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">show
the user list again</a>
[%- END %].
</p>
[% IF editform %]
[% IF !otheruser.in_group('bz_sudo_protect') %]
<br>
- <a href="relogin.cgi?action=prepare-sudo&target_login=
+ <a href="[% basepath FILTER none %]relogin.cgi?action=prepare-sudo&target_login=
[%- otheruser.login FILTER uri %]">Impersonate this user</a>
[% END %]
[% END %]
[% IF version.bug_count %]
<a title="List of [% terms.bugs %] targetted at version '
[%- version.name FILTER html %]'"
- href="buglist.cgi?version=[% version.name FILTER uri %]&product=
+ href="[% basepath FILTER none %]buglist.cgi?version=[% version.name FILTER uri %]&product=
[%- product.name FILTER uri %]">
[%- version.bug_count FILTER none %]</a>
[% ELSE %]
<p>Do you really want to delete this version?</p>
- <form method="post" action="editversions.cgi">
+ <form method="post" action="[% basepath FILTER none %]editversions.cgi">
<input type="submit" id="delete" value="Yes, delete">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
subheader = subheader
%]
-<form method="post" action="editversions.cgi">
+<form method="post" action="[% basepath FILTER none %]editversions.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<th align="right"><label for="version">Version:</label></th>
title = title
%]
-<form method="post" action="editversions.cgi">
+<form method="post" action="[% basepath FILTER none %]editversions.cgi">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
[% UNLESS no_add_version_link %]
<a title="Add a version to product '[% product.name FILTER html %]'"
- href="editversions.cgi?action=add&product=
+ href="[% basepath FILTER none %]editversions.cgi?action=add&product=
[%- product.name FILTER uri %]">Add</a> a version.
[% END %]
Edit version <a
title="Edit Version '[% version.name FILTER html %]' of product '
[%- product.name FILTER html %]'"
- href="editversions.cgi?action=edit&product=
+ href="[% basepath FILTER none %]editversions.cgi?action=edit&product=
[%- product.name FILTER uri %]&version=
[%- version.name FILTER uri %]">
'[% version.name FILTER html %]'</a>.
[% UNLESS no_edit_other_versions_link %]
Edit other versions of product <a
- href="editversions.cgi?product=
+ href="[% basepath FILTER none %]editversions.cgi?product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
[% END %]
Edit product <a
- href="editproducts.cgi?action=edit&product=
+ href="[% basepath FILTER none %]editproducts.cgi?action=edit&product=
[%- product.name FILTER uri %]">'[% product.name FILTER html %]'</a>.
</p>
[% IF ! showbugcounts %]
- <p><a href="editversions.cgi?product=[% product.name FILTER uri %]&showbugcounts=1">
+ <p><a href="[% basepath FILTER none %]editversions.cgi?product=[% product.name FILTER uri %]&showbugcounts=1">
Redisplay table with [% terms.bug %] counts (slower)</a></p>
[% END %]
%]
[% IF !showbugcounts %]
- <p><a href="editversions.cgi?showbugcounts=1">
+ <p><a href="[% basepath FILTER none %]editversions.cgi?showbugcounts=1">
Redisplay table with [% terms.bug %] counts (slower)</a></p>
[% END %]
by the user doing the change.
</p>
-<form id="workflow_form" method="POST" action="editworkflow.cgi">
+<form id="workflow_form" method="POST" action="[% basepath FILTER none %]editworkflow.cgi">
<table>
<tr>
<th colspan="2"> </th>
<input type="hidden" name="action" value="update_comment">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" id="update_comment" value="Commit Changes"> -
- <a href="editworkflow.cgi?action=edit_comment">Cancel Changes</a> -
- <a href="editworkflow.cgi">View Current Workflow</a>
+ <a href="[% basepath FILTER none %]editworkflow.cgi?action=edit_comment">Cancel Changes</a> -
+ <a href="[% basepath FILTER none %]editworkflow.cgi">View Current Workflow</a>
</p>
</form>
correct one.
</p>
-<form id="workflow_form" method="POST" action="editworkflow.cgi">
+<form id="workflow_form" method="POST" action="[% basepath FILTER none %]editworkflow.cgi">
<table>
<tr>
<th colspan="2"> </th>
this [% terms.bug %] status must then be valid (this is the reason why you cannot edit
them above).<br>
Note: you can change this setting by visiting the
- <a href="editparams.cgi?section=bugchange#duplicate_or_move_bug_status">Parameters</a>
+ <a href="[% basepath FILTER none %]editparams.cgi?section=bugchange#duplicate_or_move_bug_status">Parameters</a>
page and editing the <i>duplicate_or_move_bug_status</i> parameter.
</p>
<input type="hidden" name="action" value="update">
<input type="hidden" name="token" value="[% token FILTER html %]">
<input type="submit" id="update_workflow" value="Commit Changes"> -
- <a href="editworkflow.cgi">Cancel Changes</a> -
- <a href="editworkflow.cgi?action=edit_comment">View Comments Required on Status Transitions</a>
+ <a href="[% basepath FILTER none %]editworkflow.cgi">Cancel Changes</a> -
+ <a href="[% basepath FILTER none %]editworkflow.cgi?action=edit_comment">View Comments Required on Status Transitions</a>
</p>
</form>
onload = "document.forms['choose-id'].id.focus()"
%]
-<form name="choose-id" method="get" action="attachment.cgi">
+<form name="choose-id" method="get" action="[% basepath FILTER none %]attachment.cgi">
<p>Access an attachment by entering its ID into the form below:</p>
<p>Attachment ID: <input name="id" size="6">
<button name="action" value="edit" id="edit">Details</button>
</p>
</form>
-<form method="get" action="show_bug.cgi">
+<form method="get" action="[% basepath FILTER none %]show_bug.cgi">
<p>Or, access it from the list of attachments in its associated [% terms.bug %] report:</p>
<p>[% terms.Bug %] ID: <input name="id" size="6">
<input type="submit" name="action" value="View" id="action">
<tr>
<td valign="top">Attachment ID:</td>
<td valign="top">
- <a href="attachment.cgi?id=[% a.id FILTER html %]">[% a.id FILTER html %]</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% a.id FILTER html %]">[% a.id FILTER html %]</a>
</td>
</tr>
<tr>
<p>Do you really want to delete this attachment?</p>
-<form action="attachment.cgi" method="POST">
+<form action="[% basepath FILTER none %]attachment.cgi" method="POST">
<label for="reason">Reason of the deletion:</label>
<input type="text" id="reason" name="reason" value="" size="80" maxlength="200">
<br>
[% Hook.process('before_form') %]
-<form name="entryform" method="post" action="attachment.cgi" enctype="multipart/form-data">
+<form name="entryform" method="post" action="[% basepath FILTER none %]attachment.cgi" enctype="multipart/form-data">
<input type="hidden" name="bugid" value="[% bug.bug_id %]">
<input type="hidden" name="action" value="insert">
<input type="hidden" name="token" value="[% token FILTER html %]">
[% IF ((attachment.isprivate == 0) || user.is_insider) %]
<input type="checkbox" id="[% attachment.id %]"
name="obsolete" value="[% attachment.id %]">
- <a href="attachment.cgi?id=[% attachment.id %]&action=edit">[% attachment.id %]: [% attachment.description FILTER html %]</a><br>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=edit">[% attachment.id %]: [% attachment.description FILTER html %]</a><br>
[% END %]
[% END %]
[% ELSE %]
<dl>
<dt>
<a title="[% attachment.description FILTER html %]"
- href="attachment.cgi?id=[% attachment.id %]&action=edit">Attachment #[% attachment.id %]</a>
+ href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=edit">Attachment #[% attachment.id %]</a>
to [% "$terms.bug $attachment.bug_id" FILTER bug_link(attachment.bug_id) FILTER none %] created
</dt>
<dd>
<b>Note:</b> [% terms.Bugzilla %] automatically detected the content type
<em>[% attachment.contenttype FILTER html %]</em> for this attachment. If this is
incorrect, correct the value by editing the attachment's
- <a href="attachment.cgi?id=[% attachment.id %]&action=edit">details</a>.
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=edit">details</a>.
</p>
[% END %]
</dl>
<p>
-<a href="attachment.cgi?bugid=[% attachment.bug_id %]&action=enter">Create
+<a href="[% basepath FILTER none %]attachment.cgi?bugid=[% attachment.bug_id %]&action=enter">Create
Another Attachment to [% terms.Bug %] [%+ attachment.bug_id %]</a>
</p>
and
#[% newid %]: <a href="[% PROCESS diffurl id=newid %]">[% new_desc FILTER html %]</a>
[% END %]
- for <a href="show_bug.cgi?id=[% bugid %]">[% terms.bug %] #[% bugid %]</a>
+ for <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bugid %]">[% terms.bug %] #[% bugid %]</a>
[% END %]
[% subheader = BLOCK %]
[% bugsummary FILTER html %]
[% IF other_patches.size > 0 %]
[% IF headers %] |[%END%]
Differences between
- <form style="display: inline" action="attachment.cgi">
+ <form style="display: inline" action="[% basepath FILTER none %]attachment.cgi">
<select name="oldid">
[% FOREACH patch = other_patches %]
<option value="[% patch.id %]"
<br>
[% ELSE %]
[% IF headers %]
- <a href="attachment.cgi?oldid=[% oldid %]&newid=[% newid %]&action=interdiff&format=raw">Raw Unified</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?oldid=[% oldid %]&newid=[% newid %]&action=interdiff&format=raw">Raw Unified</a>
| Return to [% "$terms.bug $bugid" FILTER bug_link(bugid) FILTER none %]
|
[% END %]
[% context = 3 %]
[% END %]
[%# textbox for context %]
- <form style="display: inline" action="attachment.cgi"><input type="hidden" name="action" value="diff"><input type="hidden" name="id" value="[% attachid %]"><input type="hidden" name="collapsed" value="[% collapsed FILTER html %]"><input type="hidden" name="headers" value="[% headers FILTER html %]"><input type="text" name="context" value="[% context FILTER html %]" size="3"></form>)
+ <form style="display: inline" action="[% basepath FILTER none %]attachment.cgi"><input type="hidden" name="action" value="diff"><input type="hidden" name="id" value="[% attachid %]"><input type="hidden" name="collapsed" value="[% collapsed FILTER html %]"><input type="hidden" name="headers" value="[% headers FILTER html %]"><input type="text" name="context" value="[% context FILTER html %]" size="3"></form>)
[% END %]
[% IF warning %]
[% END %]
[%# Restore Stuff %]
-<form name="checkboxform" action="attachment.cgi">
+<form name="checkboxform" action="[% basepath FILTER none %]attachment.cgi">
<input type="checkbox" name="restore_indicator" style="display: none">
[% can_edit = attachment.validate_can_edit %]
[% editable_or_hide = can_edit ? "" : " bz_hidden_option" %]
-<form method="post" action="attachment.cgi" onsubmit="normalizeComments();">
+<form method="post" action="[% basepath FILTER none %]attachment.cgi" onsubmit="normalizeComments();">
<input type="hidden" name="id" value="[% attachment.id %]">
<input type="hidden" name="action" value="update">
<input type="hidden" name="contenttypemethod" value="manual">
</b></p>
<p><b>
In order to view the attachment, you first have to
- <a href="attachment.cgi?id=[% attachment.id %]">download it</a>.
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">download it</a>.
</b></p>
</div>
[% ELSIF attachment.is_viewable %]
readonly = 'readonly'
%]
[% ELSE %]
- <iframe id="viewFrame" src="attachment.cgi?id=[% attachment.id %]
+ <iframe id="viewFrame" src="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]
[%- "&content_type=text/plain" IF attachment.contenttype.match('^text/x-') %]" sandbox>
<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>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">View the attachment on a separate page</a>.</b>
</iframe>
[% END %]
<script [% script_nonce FILTER none %]>
able to display.
</b></p>
<p><b>
- <a href="attachment.cgi?id=[% attachment.id %]">Download the attachment</a>.
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">Download the attachment</a>.
</b></p>
</div>
[% END %]
<div id="attachment_actions">
<span class="label">Actions:</span>
- <a href="attachment.cgi?id=[% attachment.id %]">View</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">View</a>
[% IF use_patchviewer %]
- | <a href="attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a>
+ | <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a>
[% END %]
[% IF Param("allow_attachment_deletion")
&& user.in_group('admin')
&& attachment.datasize > 0 %]
- | <a href="attachment.cgi?id=[% attachment.id %]&action=delete">Delete</a>
+ | <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=delete">Delete</a>
[% END %]
[% Hook.process('action') %]
</div>
[% IF a.id == attachment.id %]
[%+ a.id FILTER html %]
[% ELSE %]
- <a href="attachment.cgi?id=[% a.id FILTER uri %]&action=edit"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% a.id FILTER uri %]&action=edit"
title="[% a.description FILTER html %]">[% a.id FILTER html %]</a>
[% END %]
[% IF a.isobsolete %]
IF attachment.isobsolete %]">
<td class="bz_attach_desc" valign="top">
[% IF attachment.datasize %]
- <a href="attachment.cgi?id=[% attachment.id %]"
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]"
title="View the content of the attachment">
[% END %]
<b>[% attachment.description FILTER html FILTER obsolete(attachment.isobsolete) %]</b>
[% END %]
<td class="bz_attach_actions" valign="top">
- <a href="attachment.cgi?id=[% attachment.id %]&action=edit">Details</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=edit">Details</a>
[% IF attachment.ispatch && feature_enabled('patch_viewer') %]
- | <a href="attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a>
+ | <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=diff">Diff</a>
[% END %]
[% Hook.process("action") %]
</td>
Obsolete</a> ([% obsolete_attachments %])
[% END %]
[% IF Param("allow_attachment_display") %]
- <a id="view_all" href="attachment.cgi?bugid=
+ <a id="view_all" href="[% basepath FILTER none %]attachment.cgi?bugid=
[%- bugid %]&action=viewall
[%- "&hide_obsolete=1" IF obsolete_attachments %]">View All</a>
[% END %]
</span>
[% END %]
- <a href="attachment.cgi?bugid=[% bugid %]&action=enter">Add an attachment</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?bugid=[% bugid %]&action=enter">Add an attachment</a>
(proposed patch, testcase, etc.)
</td>
</tr>
<p>
Someone else has made changes to
- <a href="attachment.cgi?id=[% attachment.id %]&action=edit">attachment [% attachment.id %]</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=edit">attachment [% attachment.id %]</a>
of [% "$terms.bug $attachment.bug_id" FILTER bug_link(attachment.bug_id) FILTER none %]
at the same time you were trying to. The changes made were:
</p>
<ul>
<li>
- <form method="post" action="attachment.cgi">
+ <form method="post" action="[% basepath FILTER none %]attachment.cgi">
[% PROCESS "global/hidden-fields.html.tmpl" exclude="^Bugzilla_(login|password)$" %]
<input type="submit" id="process" value="Submit my changes anyway">
This will cause all of the above changes to be overwritten.
</li>
<li>
Throw away my changes, and
- <a href="attachment.cgi?id=[% attachment.id %]&action=edit">revisit
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=edit">revisit
attachment [% attachment.id %]</a>
</li>
</ul>
[% IF hide_obsolete %]
<div id="hidden_obsolete_message">
Obsolete attachments are hidden. To view all attachments (including obsolete)
- <a href="attachment.cgi?bugid=[% bug.id FILTER html %]&action=viewall">click here</a>.
+ <a href="[% basepath FILTER none %]attachment.cgi?bugid=[% bug.id FILTER html %]&action=viewall">click here</a>.
</div>
[% END %]
<br>
</td>
<td valign="top">
- <a href="attachment.cgi?id=[% a.id %]&action=edit">Details</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% a.id %]&action=edit">Details</a>
</td>
</tr>
</table>
classes = 'viewall_frame'
%]
[% ELSE %]
- <iframe src="attachment.cgi?id=[% a.id %]" class="viewall_frame" sandbox>
+ <iframe src="[% basepath FILTER none %]attachment.cgi?id=[% a.id %]" class="viewall_frame" sandbox>
<b>You cannot view the attachment on this page because your browser does not support IFRAMEs.
- <a href="attachment.cgi?id=[% a.id %]">View the attachment on a separate page</a>.</b>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% a.id %]">View the attachment on a separate page</a>.</b>
</iframe>
[% END %]
[% ELSE %]
<p><b>
Attachment cannot be viewed because its MIME type is not text/*, image/*, or application/pdf.
- <a href="attachment.cgi?id=[% a.id %]">Download the attachment instead</a>.
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% a.id %]">Download the attachment instead</a>.
</b></p>
[% END %]
</div>
<dl>
<dt>Changes to
- <a href="attachment.cgi?id=[% attachment.id %]&action=edit">attachment [% attachment.id %]</a>
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]&action=edit">attachment [% attachment.id %]</a>
of [% "$terms.bug $attachment.bug_id" FILTER bug_link(attachment.bug_id) FILTER none %] submitted
</dt>
<dd>
[% "</tr><tr>" IF loop.index > 0 %]
<td>
[% IF change.attachid %]
- <a href="attachment.cgi?id=[% change.attachid %]">
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% change.attachid %]">
Attachment #[% change.attachid %]</a>
[% END %]
[% IF change.comment.defined %]
title = "Search by $terms.bug number"
%]
-<form method="get" action="show_bug.cgi" data-no-csrf>
+<form method="get" action="[% basepath FILTER none %]show_bug.cgi" data-no-csrf>
<p>
You may find a single [% terms.bug %] by entering its [% terms.bug %] id here:
<input name="id" size="6">
#%]
<div id="bugzilla-etiquette">
- <a href="page.cgi?id=etiquette.html" target="_blank" tabindex="-1">
+ <a href="[% basepath FILTER none %]page.cgi?id=etiquette.html" target="_blank" tabindex="-1">
Comments Subject to Etiquette and Contributor Guidelines</a>
</div>
<span role="heading" aria-level="2" class="bz_comment_number">
<a
- href="show_bug.cgi?id=[% bug.bug_id %]#c[% comment.count %]">
+ href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id %]#c[% comment.count %]">
[%- comment_label FILTER html %]</a>
</span>
[% END %]
<p>
- <a href="duplicates.cgi?[% productstring %]&format=simple" target="somebugs">All-time Top 20</a> (loaded initially) |
- <a href="duplicates.cgi?[% productstring %]&format=simple&sortby=delta&reverse=1&maxrows=100&changedsince=14" target="somebugs">Hot in the last two weeks</a>
+ <a href="[% basepath FILTER none %]duplicates.cgi?[% productstring %]&format=simple" target="somebugs">All-time Top 20</a> (loaded initially) |
+ <a href="[% basepath FILTER none %]duplicates.cgi?[% productstring %]&format=simple&sortby=delta&reverse=1&maxrows=100&changedsince=14" target="somebugs">Hot in the last two weeks</a>
</p>
<iframe name="somebugs" id="somebugs"
style="border: 2px black solid"
- src="duplicates.cgi?[% productstring %]&format=simple">
+ src="[% basepath FILTER none %]duplicates.cgi?[% productstring %]&format=simple">
</iframe>
<p>
</p>
[%# All bugs opened inside the past six months %]
- <form action="buglist.cgi" method="get" target="somebugs">
+ <form action="[% basepath FILTER none %]buglist.cgi" method="get" target="somebugs">
<input type="hidden" name="format" value="simple">
<input type="hidden" name="order" value="relevance desc">
<input type="hidden" name="bug_status" value="__all__">
there, tell us all about it.
</p>
-<form method="post" action="post_bug.cgi">
+<form method="post" action="[% basepath FILTER none %]post_bug.cgi">
<input type="hidden" name="format" value="guided">
<input type="hidden" name="assigned_to" value="">
<input type="hidden" name="priority"
The area where the problem occurs.
To pick the right component, you could use the same one as
similar [% terms.bugs %] you found in your search, or read the full list of
- <a target="_blank" href="describecomponents.cgi?product=
+ <a target="_blank" href="[% basepath FILTER none %]describecomponents.cgi?product=
[% product.name FILTER uri %]">component
descriptions</a> (opens in new window) if you need more help.
</p>
-->
</script>
-<form name="Create" id="Create" method="post" action="post_bug.cgi"
+<form name="Create" id="Create" method="post" action="[% basepath FILTER none %]post_bug.cgi"
class="enter_bug_form" enctype="multipart/form-data"
onsubmit="return validateEnterBug(this)">
<input type="hidden" name="product" value="[% product.name FILTER html %]">
[%# We can't use the select block in these two cases for various reasons. %]
<tr>
[% component_desc_url = BLOCK -%]
- describecomponents.cgi?product=[% product.name FILTER uri %]
+ [% basepath FILTER none %]describecomponents.cgi?product=[% product.name FILTER uri %]
[% END %]
[% INCLUDE "bug/field-label.html.tmpl"
field = bug_fields.component editable = 1
<tr>
[% INCLUDE bug/field.html.tmpl
bug = default, field = bug_fields.keywords, editable = 1,
- value = keywords, desc_url = "describekeywords.cgi",
+ value = keywords, desc_url = basepath _ "describekeywords.cgi",
value_span = 3
%]
</tr>
[% Hook.process("end") %]
<div id="guided">
- <a id="guided_img" href="enter_bug.cgi?format=guided&product=[% product.name FILTER uri %]"><img
- src="extensions/BMO/web/images/guided.png" width="16" height="16" border="0" align="absmiddle"></a>
- <a id="guided_link" href="enter_bug.cgi?format=guided&product=[% product.name FILTER uri %]"
+ <a id="guided_img" href="[% basepath FILTER none %]enter_bug.cgi?format=guided&product=[% product.name FILTER uri %]"><img
+ src="[% basepath FILTER none %]extensions/BMO/web/images/guided.png" width="16" height="16" border="0" align="absmiddle"></a>
+ <a id="guided_link" href="[% basepath FILTER none %]enter_bug.cgi?format=guided&product=[% product.name FILTER uri %]"
>Switch to the [% terms.Bugzilla %] Helper</a>
- | <a href="page.cgi?id=custom_forms.html">Custom [% terms.bug %] entry forms</a>
+ | <a href="[% basepath FILTER none %]page.cgi?id=custom_forms.html">Custom [% terms.bug %] entry forms</a>
</div>
[% PROCESS global/footer.html.tmpl %]
<p>
You can bookmark this link:
- “<a href="enter_bug.cgi?[% url FILTER html %]">
+ “<a href="[% basepath FILTER none %]enter_bug.cgi?[% url FILTER html %]">
[% IF short_desc %]
[% short_desc FILTER html %]
[% ELSE %]
Before reporting [% terms.abug %], please read the
<a href="https://developer.mozilla.org/docs/Mozilla/QA/Bug_writing_guidelines">
[% terms.bug %] writing guidelines</a>, please look at the list of
-<a href="duplicates.cgi">most frequently reported [% terms.bugs %]</a>, and please
-<a href="query.cgi">search</a> for the [% terms.bug %].
+<a href="[% basepath FILTER none %]duplicates.cgi">most frequently reported [% terms.bugs %]</a>, and please
+<a href="[% basepath FILTER none %]query.cgi">search</a> for the [% terms.bug %].
<hr>
-<form action="showdependencygraph.cgi" method="GET">
+<form action="[% basepath FILTER none %]showdependencygraph.cgi" method="GET">
<table>
<tr>
<th align="left"><label for="id">[% terms.Bug %] numbers</label>:</th>
[% global.seen = {} %]
[%# Display the tree of bugs that this bug depends on. %]
<h3>
- <a href="show_bug.cgi?id=[% bugid %]">[% terms.Bug %] [%+ bugid %]</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bugid %]">[% terms.Bug %] [%+ bugid %]</a>
[% IF type == 1 %]
[% tree_name = "dependson_tree" %]
[% IF ids.size %]
[%# 27 chars is the length of buglist.cgi?tweak=&bug_id=" %]
[% use_post = (ids.join(",").length > constants.CGI_URI_LIMIT - 27 ) ? 1 : 0 %]
[% IF use_post %]
- <form action="buglist.cgi" method="post">
+ <form action="[% basepath FILTER none %]buglist.cgi" method="post">
<input type="hidden" name="bug_id" value="[% ids.join(",") %]">
[% END %]
[% END %]
</form>
[% ELSE %]
- <a href="buglist.cgi?bug_id=[% ids.join(",") %]">view as [% terms.bug %] list</a>
+ <a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% ids.join(",") %]">view as [% terms.bug %] list</a>
[% IF user.in_group('editbugs') && ids.size > 1 %]
- | <a href="buglist.cgi?bug_id=[% ids.join(",") %]&tweak=1">change several</a>
+ | <a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% ids.join(",") %]&tweak=1">change several</a>
[% END %]
[% END %]
[% isclosed = !bug.isopened %]
[% FILTER closed(isclosed) -%]
<a title="[% INCLUDE buginfo bug=bug %]"
- href="show_bug.cgi?id=[% bugid %]">
+ href="[% basepath FILTER none %]show_bug.cgi?id=[% bugid %]">
<b>[%- bugid %]:</b>
<span class="summ_text">[%+ bug.short_desc FILTER html %]</span>
<span class="summ_info">[[% INCLUDE buginfo %]]</span>
</a>
- <a href="showdependencytree.cgi?id=[% bugid FILTER uri %]"
+ <a href="[% basepath FILTER none %]showdependencytree.cgi?id=[% bugid FILTER uri %]"
class="tree_link">
- <img src="skins/standard/dependency-tree/tree.png"
+ <img src="[% basepath FILTER none %]skins/standard/dependency-tree/tree.png"
title="See dependency tree for [% terms.bug %] [%+ bugid FILTER html %]">
</a>
[% END %]
[%# Hide/show resolved button
Swaps text depending on the state of hide_resolved %]
<td align="center">
- <form method="get" action="showdependencytree.cgi"
+ <form method="get" action="[% basepath FILTER none %]showdependencytree.cgi"
style="display: inline; margin: 0px;">
<input name="id" type="hidden" value="[% bugid %]">
[% IF maxdepth %]
</td>
<td>
- <form method="get" action="showdependencytree.cgi"
+ <form method="get" action="[% basepath FILTER none %]showdependencytree.cgi"
style="display: inline; margin: 0px;">
[%# set to one form %]
<input type="submit" id="change_maxdepth"
</td>
<td>
- <form method="get" action="showdependencytree.cgi"
+ <form method="get" action="[% basepath FILTER none %]showdependencytree.cgi"
style="display: inline; margin: 0px;">
[%# Minus one form
Allow subtracting only when realdepth and maxdepth > 1 %]
</td>
<td>
- <form method="get" action="showdependencytree.cgi"
+ <form method="get" action="[% basepath FILTER none %]showdependencytree.cgi"
style="display: inline; margin: 0px;">
[%# Limit entry form: the button can not do anything when total depth
is less than two, so disable it %]
</td>
<td>
- <form method="get" action="showdependencytree.cgi"
+ <form method="get" action="[% basepath FILTER none %]showdependencytree.cgi"
style="display: inline; margin: 0px;">
[%# plus one form
Disable button if total depth < 2, or if depth set to unlimited %]
</td>
<td>
- <form method="get" action="showdependencytree.cgi"
+ <form method="get" action="[% basepath FILTER none %]showdependencytree.cgi"
style="display: inline; margin: 0px;">
[%# Unlimited button %]
<input name="id" type="hidden" value="[% bugid %]">
//-->
</script>
-<form name="changeform" id="changeform" method="post" action="process_bug.cgi">
+<form name="changeform" id="changeform" method="post" action="[% basepath FILTER none %]process_bug.cgi">
<input type="hidden" name="delta_ts" value="[% bug.delta_ts %]">
<input type="hidden" name="longdesclength" value="[% bug.comments.size %]">
<a href="#c[% bug.comments.size - 1 %]"
accesskey="l"><b>L</b>ast Comment</a>
</span>
- <a href="show_bug.cgi?id=[% bug.bug_id %]">
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id %]">
[%-# %]<b>[% terms.Bug %] [% bug.bug_id FILTER html %]</b>
[%-# %]</a> -<span id="summary_alias_container" class="bz_default_hidden">
[% IF Param("usebugaliases") %]
<tr>
<th class="field_label">
<label for="keywords" accesskey="k">
- <a href="describekeywords.cgi"><u>K</u>eywords</a></label>:
+ <a href="[% basepath FILTER none %]describekeywords.cgi"><u>K</u>eywords</a></label>:
</th>
<td class="field_value" colspan="2">
[% INCLUDE bug/field.html.tmpl
[% dupe.id FILTER bug_link(dupe, use_alias => 1) FILTER none %][% " " %]
[% END %]
</span>
- (<a href="buglist.cgi?bug_id=[% bug.duplicate_ids.join(",") FILTER html %]">
+ (<a href="[% basepath FILTER none %]buglist.cgi?bug_id=[% bug.duplicate_ids.join(",") FILTER html %]">
[%-%]view as [% terms.bug %] list</a>)
</td>
</tr>
<th> </th>
<td colspan="2" align="left" id="show_dependency_tree_or_graph">
- Show dependency <a href="showdependencytree.cgi?id=[% bug.bug_id %]&hide_resolved=1">tree</a>
+ Show dependency <a href="[% basepath FILTER none %]showdependencytree.cgi?id=[% bug.bug_id %]&hide_resolved=1">tree</a>
[% IF Param('webdotbase') %]
- / <a href="showdependencygraph.cgi?id=[% bug.bug_id %]">graph</a>
+ / <a href="[% basepath FILTER none %]showdependencygraph.cgi?id=[% bug.bug_id %]">graph</a>
[% END %]
</td>
</tr>
</th>
<td>
[% bug.delta_ts FILTER time("%Y-%m-%d %H:%M %Z") %]
- (<a href="show_activity.cgi?id=[% bug.bug_id %]">[%# terms.Bug %]History</a>)
+ (<a href="[% basepath FILTER none %]show_activity.cgi?id=[% bug.bug_id %]">[%# terms.Bug %]History</a>)
</td>
</tr>
</tr>
<tr>
<td colspan="7" class="bz_summarize_time">
- <a href="summarize_time.cgi?id=[% bug.bug_id %]&do_depends=1">
+ <a href="[% basepath FILTER none %]summarize_time.cgi?id=[% bug.bug_id %]&do_depends=1">
Summarize time (including time for [% terms.bugs %]
blocking this [% terms.bug %])</a>
</td>
<fieldset>
<legend>Note</legend>
You need to
- <a href="show_bug.cgi?id=
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=
[%- bug.bug_id %]&GoAheadAndLogIn=1">log in</a>
before you can comment on or make changes to this [% terms.bug %].
</fieldset>
[% END %]
[% IF bug && field.name == 'component' %]
- (<a href="buglist.cgi?component=[% bug.component FILTER uri %]&product=[% bug.product FILTER uri %]&bug_status=__open__"
+ (<a href="[% basepath FILTER none %]buglist.cgi?component=[% bug.component FILTER uri %]&product=[% bug.product FILTER uri %]&bug_status=__open__"
target="_blank">show other [% terms.bugs %]</a>)
[% END %]
bz_status_[% bug.bug_status FILTER css_class_quote %]
[% ' bz_closed' IF !bug.isopened %]"
title="[% link_title FILTER collapse FILTER html %]"
- href="[% urlbase FILTER html IF full_url %]show_bug.cgi?id=
+ href="[% full_url ? urlbase : basepath FILTER html %]show_bug.cgi?id=
[%~ bug.id FILTER uri %][% anchor FILTER html %]">
[%~ link_text FILTER html %]</a>
[% PROCESS global/variables.none.tmpl %]
[% IF bottom_navigator == 1 %]
<ul class="related_actions">
- <li><a href="show_bug.cgi?format=multiple&id=
+ <li><a href="[% basepath FILTER none %]show_bug.cgi?format=multiple&id=
[% bug.bug_id FILTER uri %]">Format For Printing</a></li>
- <li> - <a href="show_bug.cgi?ctype=xml&id=
+ <li> - <a href="[% basepath FILTER none %]show_bug.cgi?ctype=xml&id=
[% bug.bug_id FILTER uri %]">XML</a></li>
[% IF NOT bug.groups_in.size %]
- <li> - <a href="rest/bug/[% bug.bug_id FILTER uri %]">JSON</a></li>
+ <li> - <a href="[% basepath FILTER none %]rest/bug/[% bug.bug_id FILTER uri %]">JSON</a></li>
[% END %]
<li> -
- <a href="enter_bug.cgi?format=__default__&cloned_bug_id=[% bug.bug_id FILTER uri %]"
+ <a href="[% basepath FILTER none %]enter_bug.cgi?format=__default__&cloned_bug_id=[% bug.bug_id FILTER uri %]"
id="clone_bug"
onclick="return show_clone_menu(this, '[% bug.id FILTER js %]', '[% bug.product FILTER js %]', '[% bug.component FILTER js %]');">
Clone This [% terms.Bug %]</a>
([% this_bug_idx + 1 %] of [% last_bug_list.size %])
- <a href="show_bug.cgi?id=
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.first FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">First</a>
- <a href="show_bug.cgi?id=
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.last FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">Last</a>
[% IF this_bug_idx > 0 %]
[% prev_bug = this_bug_idx - 1 %]
- <a href="show_bug.cgi?id=
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.$prev_bug FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">Prev</a>
[% ELSE %]
[% IF this_bug_idx + 1 < last_bug_list.size %]
[% next_bug = this_bug_idx + 1 %]
- <a href="show_bug.cgi?id=
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=
[%- last_bug_list.$next_bug FILTER uri %]&list_id=
[%- my_search.id FILTER uri %]">Next</a>
[% ELSE %]
<i><font color="#777777">Next</font></i>
[% END %]
- <a href="buglist.cgi?regetlastlist=
+ <a href="[% basepath FILTER none %]buglist.cgi?regetlastlist=
[%- my_search.id FILTER uri %]">Show last search results</a>
</div>
[% END %]
[% PROCESS global/header.html.tmpl %]
<div style="display: none" id="xhr-error"></div>
-<form name="newbugform" id="newbugform" method="post" action="new_bug.cgi" enctype="multipart/form-data">
+<form name="newbugform" id="newbugform" method="post" action="[% basepath FILTER none %]new_bug.cgi" enctype="multipart/form-data">
<input type="hidden" value="[% issue_hash_token(['new_bug']) FILTER html %]" name="token">
<div class="new-bug-container">
<div class="new-bug">
field_type = constants.FIELD_TYPE_SINGLE_SELECT
edit_only = 1
editable = 1
- help = "describecomponents.cgi?product=$filtered_product"
+ help = basepath _ "describecomponents.cgi?product=$filtered_product"
%]
<span aria-owns="product-name product-latch">
hide_on_view = 1
hide_on_edit = !can_edit_product
append_content = 1
- help = "describecomponents.cgi?product=$filtered_product" %]
+ help = basepath _ "describecomponents.cgi?product=$filtered_product" %]
[%# component %]
[% WRAPPER bug_modal/field.html.tmpl
field = bug_fields.component
field_type = constants.FIELD_TYPE_SINGLE_SELECT
- help = "describecomponents.cgi?product=$filtered_product&component=$filtered_component#$filtered_component"
+ help = basepath _ "describecomponents.cgi?product=$filtered_product&component=$filtered_component#$filtered_component"
edit_only = 1
editable = 1
%]
</div>
<div id="component-info" style="display:none">
<div>[% bug.component_obj.description FILTER html_light %]</div>
- <a href="buglist.cgi?component=[% bug.component FILTER uri %]&
+ <a href="[% basepath FILTER none %]buglist.cgi?component=[% bug.component FILTER uri %]&
[%~ %]product=[% bug.product FILTER uri %]&
[%~ %]bug_status=__open__" target="_blank">Other [% terms.Bugs %]</a>
</div>
field_type = constants.FIELD_TYPE_MULTI_SELECT
edit_only = 1
editable = 1
- help = "describekeywords.cgi"
+ help = basepath _ "describekeywords.cgi"
%]
[% WRAPPER bug_modal/field.html.tmpl
</li>
<li id="comment-preview-tab" role="tab" tabindex="-1" aria-controls="comment-preview-tabpanel" aria-selected="false">
Preview
- <img id="preview-throbber" src="extensions/BugModal/web/throbber.gif" width="16" height="11" style="display:none">
+ <img id="preview-throbber" src="[% basepath FILTER none %]extensions/BugModal/web/throbber.gif" width="16" height="11" style="display:none">
</li>
</ul>
<div id="comment-edit-tabpanel" class="comment-tabpanel" role="tabpanel" aria-labelledby="comment-edit-tab">
Do you wish to do this?
</p>
-<form method="post" action="process_bug.cgi">
+<form method="post" action="[% basepath FILTER none %]process_bug.cgi">
[% PROCESS "global/hidden-fields.html.tmpl" exclude="^Bugzilla_(login|password)$" %]
<ul>
<li>
- <form method="post" action="process_bug.cgi">
+ <form method="post" action="[% basepath FILTER none %]process_bug.cgi">
<input type="hidden" name="delta_ts"
value="[% bug.delta_ts FILTER html %]">
[% PROCESS "global/hidden-fields.html.tmpl"
</li>
[% IF cgi.param("comment") %]
<li>
- <form method="post" action="process_bug.cgi">
+ <form method="post" action="[% basepath FILTER none %]process_bug.cgi">
<input type="hidden" name="id" value="[% cgi.param("id") FILTER html %]">
<input type="hidden" name="delta_ts" value="[% bug.delta_ts FILTER html %]">
<input type="hidden" name="comment" value="[% cgi.param("comment") FILTER html %]">
</style>
</head>
<body>
-<img src="images/buggie.png" id="buggie" alt="buggie">
+<img src="[% basepath FILTER none %]images/buggie.png" id="buggie" alt="buggie">
<div id="content">
<h1>[% terms.Bug %] Updates Temporarily Suspended</h1>
<p>
Only updates to [% terms.bugs %] are being blocked by this page, any other
-activities in [% terms.Bugzilla %] are still fair game. <a href="index.cgi"
+activities in [% terms.Bugzilla %] are still fair game. <a href="[% basepath FILTER none %]index.cgi"
target="_blank">Open [% terms.Bugzilla %] in a new tab/window</a> if you'd
like, to continue working on other things while waiting.
</p>
[% PROCESS global/header.html.tmpl
title = 'Verify New Product Details...' %]
-<form action="process_bug.cgi" method="post">
+<form action="[% basepath FILTER none %]process_bug.cgi" method="post">
[% SET exclude_items = ['version', 'component', 'target_milestone'] %]
[% IF verify_bug_groups %]
[% id = cgi.param('id') %]
Cancel and Return to [% "$terms.bug $id" FILTER bug_link(id) FILTER none %]
[% ELSE %]
- Cancel and Return to <a href="buglist.cgi?regetlastlist=1">the last search results</a>
+ Cancel and Return to <a href="[% basepath FILTER none %]buglist.cgi?regetlastlist=1">the last search results</a>
[% END %]
[% PROCESS global/footer.html.tmpl %]
[% END %]
[% IF ids.size > 1 %]
<div class="bz_query_buttons">
- <form method="post" action="buglist.cgi">
+ <form method="post" action="[% basepath FILTER none %]buglist.cgi">
<input type="hidden" name="bug_id" value="[% ids.join(",") FILTER html %]">
<input type="submit" id="short_format" value="Short Format">
</form>
[% BLOCK bug_display %]
<h1>
[% terms.Bug %]
- <a href="show_bug.cgi?id=[% bug.bug_id FILTER html %]">[% bug.bug_id FILTER html %]</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id FILTER html %]">[% bug.bug_id FILTER html %]</a>
[% IF Param("usebugaliases") AND bug.alias AND NOT bug.error %]
- (<a href="show_bug.cgi?id=[% bug.alias FILTER uri %]">
+ (<a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.alias FILTER uri %]">
[% bug.alias FILTER html %]</a>)
[% END %]
</h1>
[% FOREACH attachment = bug.attachments %]
<tr>
<td>
- <a href="attachment.cgi?id=[% attachment.id %]">
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">
[% attachment.description FILTER html %]
</a>[% "<br>" IF not loop.last() %]
</td>
</table>
[% ELSE %]
[% FOREACH attachment = bug.attachments %]
- <a href="attachment.cgi?id=[% attachment.id %]">
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% attachment.id %]">
[% attachment.description FILTER html %]
</a>[% "<br>" IF not loop.last() %]
[% END %]
<hr>
<p>
The next [% terms.bug %] in your list is [% terms.bug %]
- <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>:
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>:
</p>
<hr>
[% END %]
[% BLOCK query_form %]
<hr noshade size=1>
-<form method="post" name="summary" style="display: inline" action="summarize_time.cgi">
+<form method="post" name="summary" style="display: inline" action="[% basepath FILTER none %]summarize_time.cgi">
<input type="hidden" name="do_depends" value="[% do_depends FILTER html %]">
<input type="hidden" name="id" value="[% ids.join(",") FILTER html %]">
<input type="hidden" name="do_report" value="1">
#%]
[% IF user.id && user.settings.per_bug_queries.value == "on" %]
- <form id="list_of_bugs" action="buglist.cgi" method="get">
+ <form id="list_of_bugs" action="[% basepath FILTER none %]buglist.cgi" method="get">
<input type="hidden" name="cmdtype" value="doit">
<input type="hidden" name="remtype" value="asnamed">
<input type="hidden" name="list_of_bugs" value="1">
<ul>
[% FOREACH ref = referenced_bugs %]
<li>
- [<a href="[% urlbase FILTER html %]show_bug.cgi?id=[% ref.id FILTER none %]">
+ [<a href="[% basepath FILTER html %]show_bug.cgi?id=[% ref.id FILTER none %]">
[% terms.Bug %] [% ref.id FILTER none %]</a>] [% ref.short_desc FILTER html %]
</li>
[% END %]
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
[%# Filtering of the URL param is not required & would break the URL when the comment anchor is set %]
- <link itemprop="url" href="[% urlbase FILTER html %]show_bug.cgi?id=[% "$bug.id$comment_anchor" FILTER none %]">
+ <link itemprop="url" href="[% basepath FILTER html %]show_bug.cgi?id=[% "$bug.id$comment_anchor" FILTER none %]">
<meta itemprop="name" content="View [% terms.bug %]">
</div>
<meta itemprop="description" content="[% terms.Bugzilla %] [%+ terms.bug %] update notification">
"Foo", you would put it in "extensions/Foo/web/style.css", and then
you could link to it in HTML like:
-<link href="extensions/Foo/web/style.css" rel="stylesheet" type="text/css">
+<link href="[% basepath FILTER none %]extensions/Foo/web/style.css" rel="stylesheet" type="text/css">
<input type="submit" id="confirm" value="Yes, Confirm Changes">
</form>
-<p><a href="index.cgi">No, throw away these changes</a> (you will be redirected
+<p><a href="[% basepath FILTER none %]index.cgi">No, throw away these changes</a> (you will be redirected
to the home page).</p>
[% PROCESS global/footer.html.tmpl %]
<section id="header-search-dropdown-saved">
<header>
<h3>Saved Searches</h3>
- <a href="userprefs.cgi?tab=saved-searches">Edit</a>
+ <a href="[% basepath FILTER none %]userprefs.cgi?tab=saved-searches">Edit</a>
</header>
<ul role="none">
[% IF user.showmybugslink %][% filtered_username = user.login FILTER uri %]
- <li role="none"><a role="option" href="[% Param('mybugstemplate').replace('%userid%', filtered_username) %]">
+ <li role="none"><a role="option" href="[% basepath FILTER none %][% Param('mybugstemplate').replace('%userid%', filtered_username) %]">
My [% terms.Bugs %]</a></li>
[% END %]
[% FOREACH q = user.queries %][% IF q.link_in_footer %]
- <li role="none"><a role="option" href="buglist.cgi?cmdtype=runnamed&namedcmd=[% q.name FILTER uri %]">
+ <li role="none"><a role="option" href="[% basepath FILTER none %]buglist.cgi?cmdtype=runnamed&namedcmd=[% q.name FILTER uri %]">
[% q.name FILTER html %]</a></li>
[% END %][% END %]
[% FOREACH q = user.queries_subscribed %]
- <li role="none"><a role="option" href="buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
+ <li role="none"><a role="option" href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
[% q.name FILTER uri %]&sharer_id=[% q.user.id FILTER uri %]"
title="Shared by [% q.user.identity FILTER html %]">[% q.name FILTER html FILTER no_break %]</a></li>
[% END %]
[% END %]
[%- js_BUGZILLA = {
+ config => {
+ basepath => basepath,
+ }
user => {
# TODO: Move all properties form bug_modal/header.html.tmpl
login => user.login,
<div class="warning">
<div class="inner">
<p>
- Please <a href="userprefs.cgi?tab=mfa">enable two-factor authentication</a>
+ Please <a href="[% basepath FILTER none %]userprefs.cgi?tab=mfa">enable two-factor authentication</a>
[% IF Param('mfa_group_grace_period') %]
before <i>[% user.mfa_required_date FILTER time %]</i>.
[% ELSE %]
<header id="header" role="banner">
<div class="inner">
<h1 id="header-title" class="title"><a href="./" title="Go to home page">[% terms.Bugzilla %]</a></h1>
- <form role="search" id="header-search" class="quicksearch" action="buglist.cgi" data-no-csrf>
+ <form role="search" id="header-search" class="quicksearch" action="[% basepath FILTER none %]buglist.cgi" data-no-csrf>
<section class="searchbox-outer dropdown" role="combobox" aria-expanded="false" aria-haspopup="listbox"
aria-owns="header-search-dropdown">
<h2>Quick Search</h2>
<nav id="header-nav">
<ul class="links">
<li class="link-browse">
- <a href="describecomponents.cgi" title="Browse [% terms.bugs %] by component">
+ <a href="[% basepath FILTER none %]describecomponents.cgi" title="Browse [% terms.bugs %] by component">
<span class="icon" aria-hidden="true"></span>
<span class="label">Browse</span>
</a>
</li>
<li class="link-search">
- <a href="query.cgi?format=advanced" title="Search [% terms.bugs %] using various criteria">
+ <a href="[% basepath FILTER none %]query.cgi?format=advanced" title="Search [% terms.bugs %] using various criteria">
<span class="icon" aria-hidden="true"></span>
<span class="label">Advanced Search</span>
</a>
</li>
[% IF user.id %]
<li class="link-file">
- <a href="enter_bug.cgi" title="File a new [% terms.bug %]">
+ <a href="[% basepath FILTER none %]enter_bug.cgi" title="File a new [% terms.bug %]">
<span class="icon" aria-hidden="true"></span>
<span class="label">New [% terms.Bug %]</span>
</a>
<ul class="dropdown-content left" id="header-tools-menu" role="menu" style="display:none;">
[% IF user.id %]
<li role="presentation">
- <a href="request.cgi?requester=[% user.login FILTER uri %]&requestee=[% user.login FILTER uri %]&do_union=1&group=type&action=queue" role="menuitem" tabindex="-1">My Requests</a>
+ <a href="[% basepath FILTER none %]request.cgi?requester=[% user.login FILTER uri %]&requestee=[% user.login FILTER uri %]&do_union=1&group=type&action=queue" role="menuitem" tabindex="-1">My Requests</a>
</li>
[% END %]
<li role="presentation">
- <a href="report.cgi" role="menuitem" tabindex="-1">Reports</a>
+ <a href="[% basepath FILTER none %]report.cgi" role="menuitem" tabindex="-1">Reports</a>
</li>
[% IF user.in_group('tweakparams') || user.in_group('editusers') || user.can_bless || user.in_group('disableusers')
|| (Param('useclassification') && user.in_group('editclassifications'))
|| user.in_group('editkeywords') || user.in_group('bz_canusewhines')
|| user.get_products_by_permission("editcomponents").size %]
<li role="presentation">
- <a href="admin.cgi" role="menuitem" tabindex="-1">Administration</a>
+ <a href="[% basepath FILTER none %]admin.cgi" role="menuitem" tabindex="-1">Administration</a>
</li>
[% END %]
[% IF Param('docs_urlbase') %]
</li>
<li role="separator"></li>
<li role="presentation">
- <a href="user_profile?user_id=[% user.id FILTER none %]" role="menuitem" tabindex="-1">My Profile</a>
+ <a href="[% basepath FILTER none %]user_profile?user_id=[% user.id FILTER none %]" role="menuitem" tabindex="-1">My Profile</a>
</li>
<li role="presentation">
- <a href="page.cgi?id=user_activity.html&action=run&who=[% user.login FILTER uri %]" role="menuitem"
+ <a href="[% basepath FILTER none %]page.cgi?id=user_activity.html&action=run&who=[% user.login FILTER uri %]" role="menuitem"
tabindex="-1">My Activity</a>
</li>
<li role="presentation">
- <a href="userprefs.cgi" role="menuitem" tabindex="-1">Preferences</a>
+ <a href="[% basepath FILTER none %]userprefs.cgi" role="menuitem" tabindex="-1">Preferences</a>
</li>
<li role="separator"></li>
<li role="presentation">
- <a href="index.cgi?logout=1" role="menuitem" tabindex="-1">Log out</a>
+ <a href="[% basepath FILTER none %]index.cgi?logout=1" role="menuitem" tabindex="-1">Log out</a>
</li>
[% IF sudoer %]
<li role="presentation">
- <a href="relogin.cgi?action=end-sudo" role="menuitem" tabindex="-1">End sudo session impersonating [% user.login FILTER html %]</a>
+ <a href="[% basepath FILTER none %]relogin.cgi?action=end-sudo" role="menuitem" tabindex="-1">End sudo session impersonating [% user.login FILTER html %]</a>
</li>
[% END %]
</ul>
[% ELSE %]
<ul id="header-login" class="links">
[% IF Param('createemailregexp') && user.authorizer.user_can_create_account %]
- <li id="moz_new_account_container_top"><a href="createaccount.cgi">New Account</a></li>
+ <li id="moz_new_account_container_top"><a href="[% basepath FILTER none %]createaccount.cgi">New Account</a></li>
[% END %]
[% IF user.authorizer.can_login %]
[% PROCESS "account/auth/login-small.html.tmpl" qs_suffix = "_top" %]
[% ELSIF message_tag == "buglist_updated_named_query" %]
[% title = "Search updated" %]
Your search named <code><a
- href="buglist.cgi?cmdtype=runnamed&namedcmd=[% queryname FILTER uri %]"
+ href="[% basepath FILTER none %]buglist.cgi?cmdtype=runnamed&namedcmd=[% queryname FILTER uri %]"
>[% queryname FILTER html %]</a></code> has been updated.
[% ELSIF message_tag == "buglist_new_default_query" %]
[% ELSIF message_tag == "buglist_new_named_query" %]
[% title = "Search created" %]
OK, you have a new search named <code><a
- href="buglist.cgi?cmdtype=runnamed&namedcmd=[% queryname FILTER uri %]"
+ href="[% basepath FILTER none %]buglist.cgi?cmdtype=runnamed&namedcmd=[% queryname FILTER uri %]"
>[% queryname FILTER html %]</a></code>.
[% ELSIF message_tag == "buglist_query_gone" %]
valid choice for the <em>[% field.description FILTER html %]</em>
(<em>[% field.name FILTER html %]</em>) field.
[% IF field.name == "bug_status" %]
- You should now visit the <a href="editworkflow.cgi">status workflow
+ You should now visit the <a href="[% basepath FILTER none %]editworkflow.cgi">status workflow
page</a> to include your new [% terms.bug %] status.
[% END %]
[% ELSIF message_tag == "product_created" %]
[% title = "Product Created" %]
The product <em>[% product.name FILTER html %]</em> has been created. You will need to
- <a href="editcomponents.cgi?action=add&product=[% product.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]editcomponents.cgi?action=add&product=[% product.name FILTER uri %]">
add at least one component</a> before anyone can enter [% terms.bugs %] against this product.
[% ELSIF message_tag == "product_deleted" %]
[% ELSIF message_tag == "tag_updated" %]
[% title = "Tag Updated" %]
- The '<a href="buglist.cgi?tag=[% tag FILTER uri %]">[% tag FILTER html %]</a>'
+ The '<a href="[% basepath FILTER none %]buglist.cgi?tag=[% tag FILTER uri %]">[% tag FILTER html %]</a>'
tag has been
[% IF action == "add" %]
added to
[% cgi = Bugzilla.cgi %]
[% IF NOT (cgi.user_agent("MSIE [1-6]") OR cgi.user_agent("Mozilla/4")) %]
- <link rel="Top" href="[% urlbase FILTER html %]">
+ <link rel="Top" href="[% basepath FILTER html %]">
[%# *** Attachment *** %]
[% IF attachment && attachment.bug_id %]
- <link rel="Up" href="show_bug.cgi?id=[% attachment.bug_id FILTER none %]">
+ <link rel="Up" href="[% basepath FILTER none %]show_bug.cgi?id=[% attachment.bug_id FILTER none %]">
[% END %]
[%# *** Dependencies, Activity, Print-version *** %]
[% IF bug %]
<link rel="Show" title="Dependency Tree"
- href="showdependencytree.cgi?id=[% bug.bug_id %]&hide_resolved=1">
+ href="[% basepath FILTER none %]showdependencytree.cgi?id=[% bug.bug_id %]&hide_resolved=1">
[% IF Param('webdotbase') %]
<link rel="Show" title="Dependency Graph"
- href="showdependencygraph.cgi?id=[% bug.bug_id %]">
+ href="[% basepath FILTER none %]showdependencygraph.cgi?id=[% bug.bug_id %]">
[% END %]
<link rel="Show" title="[% terms.Bug %] Activity"
- href="show_activity.cgi?id=[% bug.bug_id %]">
+ href="[% basepath FILTER none %]show_activity.cgi?id=[% bug.bug_id %]">
<link rel="Show" title="Printer-Friendly Version"
- href="show_bug.cgi?format=multiple&id=[% bug.bug_id %]">
+ href="[% basepath FILTER none %]show_bug.cgi?format=multiple&id=[% bug.bug_id %]">
[% END %]
[% IF user.showmybugslink %]
[% user_login = user.login FILTER uri %]
<link rel="Saved Searches" title="My [% terms.Bugs %]"
- href="[% Param('mybugstemplate').replace('%userid%', user_login) %]">
+ href="[% basepath FILTER none %][% Param('mybugstemplate').replace('%userid%', user_login) %]">
[% END %]
[% FOREACH q = user.queries_subscribed %]
<link rel="Saved Search"
title="[% q.name FILTER html %] ([% q.user.login FILTER html %])"
- href="buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
+ href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=
[% q.name FILTER uri %]&sharer_id=
[% q.user.id FILTER uri %]">
[% END %]
[%# *** Bugzilla Administration Tools *** %]
[% IF user.login %]
[% '<link rel="Administration" title="Parameters"
- href="editparams.cgi">' IF user.in_group('tweakparams') %]
+ href="' _ basepath _ 'editparams.cgi">' IF user.in_group('tweakparams') %]
[% '<link rel="Administration" title="Users"
- href="editusers.cgi">' IF user.in_group('editusers') || user.in_group('disableusers') %]
- [% '<link rel="Administration" title="Products" href="editproducts.cgi">'
+ href="' _ basepath _ 'editusers.cgi">' IF user.in_group('editusers') || user.in_group('disableusers') %]
+ [% '<link rel="Administration" title="Products" href="' _ basepath _ 'editproducts.cgi">'
IF user.in_group('editcomponents') || user.get_products_by_permission("editcomponents").size %]
[% '<link rel="Administration" title="Flag Types"
- href="editflagtypes.cgi">' IF user.in_group('editcomponents') %]
+ href="' _ basepath _ 'editflagtypes.cgi">' IF user.in_group('editcomponents') %]
[% '<link rel="Administration" title="Groups"
- href="editgroups.cgi">' IF user.in_group('creategroups') %]
+ href="' _ basepath _ 'editgroups.cgi">' IF user.in_group('creategroups') %]
[% '<link rel="Administration" title="Keywords"
- href="editkeywords.cgi">' IF user.in_group('editkeywords') %]
+ href="' _ basepath _ 'editkeywords.cgi">' IF user.in_group('editkeywords') %]
[% '<link rel="Administration" title="Whining"
- href="editwhines.cgi">' IF user.in_group('bz_canusewhines') %]
+ href="' _ basepath _ 'editwhines.cgi">' IF user.in_group('bz_canusewhines') %]
[% '<link rel="Administration" title="Sanity Check"
- href="sanitycheck.cgi">' IF user.in_group('editcomponents') %]
+ href="' _ basepath _ 'sanitycheck.cgi">' IF user.in_group('editcomponents') %]
[% END %]
[% END %]
but [% terms.Bugzilla %] is unable to trust your request. Make sure
your web browser accepts cookies and that you haven't been redirected
here from an external web site.
- <a href="index.cgi?GoAheadAndLogIn=1">Click here</a> if you really want
+ <a href="[% basepath FILTER none %]index.cgi?GoAheadAndLogIn=1">Click here</a> if you really want
to log in.
[% ELSIF error == "auth_invalid_token" %]
[% docslinks = {'myaccount.html' => 'Creating an account'} %]
You are not authorized to access [% terms.bug %] [%= bug_id FILTER html %].
To see this [% terms.bug %], you must
- first <a href="show_bug.cgi?id=
+ first <a href="[% basepath FILTER none %]show_bug.cgi?id=
[% bug_id FILTER uri %]&GoAheadAndLogIn=1">log
in to an account</a> with the appropriate permissions.
the '[% field.description FILTER html %]' field and cannot be deleted
or disabled.
[% IF user.in_group('tweakparams') %]
- You have to <a href="editparams.cgi?section=bugfields#
+ You have to <a href="[% basepath FILTER none %]editparams.cgi?section=bugfields#
[%- param_name FILTER uri %]">change</a> the default value first.
[% END %]
[% title = "Cannot Delete Group" %]
The <em>[% group.name FILTER html %]</em> group cannot be deleted because
there are
- <a href="editgroups.cgi?action=del&group=
+ <a href="[% basepath FILTER none %]editgroups.cgi?action=del&group=
[%- group.id FILTER uri %]">records</a>
in the database which refer to it. All references to this group must
be removed before you can remove it.
has to have at least one active component in order for you to
enter [% terms.abug %] into it.<br>
[% IF user.in_group("editcomponents", product.id) %]
- <a href="editcomponents.cgi?action=add&product=[% product.name FILTER uri %]">Create
+ <a href="[% basepath FILTER none %]editcomponents.cgi?action=add&product=[% product.name FILTER uri %]">Create
a new component</a>.
[% ELSE %]
Please contact [% Param("maintainer") %] and ask them
[% title = "Missing Cookie" %]
Sorry, I seem to have lost the cookie that recorded
the results of your last search. I'm afraid you will have to start
- again from the <a href="query.cgi">search page</a>.
+ again from the <a href="[% basepath FILTER none %]query.cgi">search page</a>.
[% ELSIF error == "missing_datasets" %]
[% title = "No Datasets Selected" %]
has to have at least one active version in order for you to
enter [% terms.abug %] into it.<br>
[% IF user.in_group("editcomponents", product.id) %]
- <a href="editversions.cgi?action=add&product=[% product.name FILTER uri %]">Create
+ <a href="[% basepath FILTER none %]editversions.cgi?action=add&product=[% product.name FILTER uri %]">Create
a new version</a>.
[% ELSE %]
Please contact [% Param("maintainer") %] and ask them
Either you mis-typed the name or that user has not yet registered
for a [% terms.Bugzilla %] account.
[% ELSIF class == "Bugzilla::Keyword" %]
- The legal keyword names are <a href="describekeywords.cgi?show_inactive_keywords=1">listed
+ The legal keyword names are <a href="[% basepath FILTER none %]describekeywords.cgi?show_inactive_keywords=1">listed
here</a>.
[% END %]
[% END %]
[% IF locked_user %]
- You must <a href="token.cgi?a=reqpw&loginname=[% locked_user.email FILTER uri %]&token=[% issue_hash_token(['reqpw']) FILTER uri %]">
+ You must <a href="[% basepath FILTER none %]token.cgi?a=reqpw&loginname=[% locked_user.email FILTER uri %]&token=[% issue_hash_token(['reqpw']) FILTER uri %]">
request a new password</a> in order to log in again.
[% END %]
[% title = "Must define new default milestone" %]
[% admindocslinks = {'products.html' => 'Administering products',
'milestones.html' => 'About Milestones'} %]
- You must <a href="editmilestones.cgi?action=add&product=[% product FILTER uri %]">
+ You must <a href="[% basepath FILTER none %]editmilestones.cgi?action=add&product=[% product FILTER uri %]">
create the milestone '[% milestone FILTER html %]'</a> before
it can be made the default milestone for product '[% product FILTER html %]'.
[% IF unknown.size %]
<p>The valid field names are
- <a href="page.cgi?id=quicksearch.html#fields">listed here</a>.</p>
+ <a href="[% basepath FILTER none %]page.cgi?id=quicksearch.html#fields">listed here</a>.</p>
[% END %]
[% ELSIF error == "reassign_to_empty" %]
[% title = "Saved Search In Use" %]
[% docslinks = {'whining.html' => 'About Whining'} %]
The saved search <em>[% search_name FILTER html %]</em> is being used
- by <a href="editwhines.cgi">Whining events</a> with the following subjects:
+ by <a href="[% basepath FILTER none %]editwhines.cgi">Whining events</a> with the following subjects:
[%+ subjects FILTER html %]
[% ELSIF error == "search_content_without_matches" %]
[% ELSIF error == "sudo_password_required" %]
[% title = "Password Required" %]
Your [% terms.Bugzilla %] password is required to begin a sudo
- session. Please <a href="relogin.cgi?action=prepare-sudo&target_login=
+ session. Please <a href="[% basepath FILTER none %]relogin.cgi?action=prepare-sudo&target_login=
[%- target_login FILTER uri %]&reason=
[%- reason FILTER uri %]">go back</a> and enter your password.
[% ELSIF error == "sudo_preparation_required" %]
[% title = "Preparation Required" %]
You may not start a sudo session directly. Please
- <a href="relogin.cgi?action=prepare-sudo&target_login=
+ <a href="[% basepath FILTER none %]relogin.cgi?action=prepare-sudo&target_login=
[%- target_login FILTER uri %]&reason=
[%- reason FILTER uri %]">start your session normally</a>.
AND !sharer_id %]
<p>
Alternatively, you can
- <a href="buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=
+ <a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=
[% namedcmd FILTER uri %]">forget</a>
[% FOREACH q = Bugzilla.user.queries %]
[% IF q.name == namedcmd %]
- or <a href="query.cgi?[% q.url FILTER html %]">edit</a>
+ or <a href="[% basepath FILTER none %]query.cgi?[% q.url FILTER html %]">edit</a>
[% END %]
[% END %]
</li>
[% END %]
<li id="tile-search">
- <a href="query.cgi">
+ <a href="[% basepath FILTER none %]query.cgi">
<span class="icon" aria-hidden="true"></span>
<span class="label">Advanced Search</span>
</a>
</li>
<li id="tile-new-bug">
- <a href="enter_bug.cgi">
+ <a href="[% basepath FILTER none %]enter_bug.cgi">
<span class="icon" aria-hidden="true"></span>
<span class="label">New [% terms.Bug %]</span>
</a>
</li>
[% IF user.id %]
<li id="tile-prefs">
- <a href="userprefs.cgi">
+ <a href="[% basepath FILTER none %]userprefs.cgi">
<span class="icon" aria-hidden="true"></span>
<span class="label">Preferences</span>
</a>
</li>
[% ELSIF Param('createemailregexp') && user.authorizer.user_can_create_account %]
<li id="tile-new-account">
- <a href="createaccount.cgi">
+ <a href="[% basepath FILTER none %]createaccount.cgi">
<span class="icon" aria-hidden="true"></span>
<span class="label">New Account</span>
</a>
</li>
[% END %]
</ul>
- <form id="quicksearchForm" name="quicksearchForm" action="buglist.cgi" data-no-csrf>
+ <form id="quicksearchForm" name="quicksearchForm" action="[% basepath FILTER none %]buglist.cgi" data-no-csrf>
<div>
<input id="quicksearch_main" type="text" name="quicksearch" autofocus
placeholder="Enter [% terms.abug %] number or some search terms"
<input id="find" type="submit" value="Quick Search">
<ul class="additional_links" id="quicksearch_links">
<li>
- <a href="page.cgi?id=quicksearch.html">Quick Search help</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=quicksearch.html">Quick Search help</a>
</li>
<li class="bz_default_hidden" id="quicksearch_plugin">
|
- <a href="javascript:window.external.AddSearchProvider('[% urlbase FILTER html %]search_plugin.cgi')">
+ <a href="javascript:window.external.AddSearchProvider('[% basepath FILTER html %]search_plugin.cgi')">
Install the Quick Search plugin
</a>
</li>
</ul>
<ul class="additional_links">
<li>
- <a href="page.cgi?id=etiquette.html">[%- terms.Bugzilla %] Etiquette</a>
+ <a href="[% basepath FILTER none %]page.cgi?id=etiquette.html">[%- terms.Bugzilla %] Etiquette</a>
</li>
<li>
| <a href="https://developer.mozilla.org/docs/Mozilla/QA/Bug_writing_guidelines">[%- terms.Bug %] Writing Guidelines</a>
[% available_columns.$column_desc = column %]
[% END %]
-<form name="changecolumns" action="colchange.cgi" onsubmit="change_submit();" data-no-csrf>
+<form name="changecolumns" action="[% basepath FILTER none %]colchange.cgi" onsubmit="change_submit();" data-no-csrf>
<input type="hidden" name="rememberedquery" value="[% buffer FILTER html %]">
<table>
<tr>
[% INCLUDE "bug/field-label.html.tmpl"
field = bug_fields.keywords, editable = 1
- desc_url = "describekeywords.cgi"
+ desc_url = basepath _ "describekeywords.cgi"
%]
<td colspan="3">
[% INCLUDE bug/field.html.tmpl
[% IF user.settings.display_quips.value == 'on' %]
[% DEFAULT quip = "$terms.Bugzilla would like to put a random quip here, but no one has entered any." %]
<span class="bz_quip">
- <a href="quips.cgi"><em>[% quip FILTER html %]</em></a>
+ <a href="[% basepath FILTER none %]quips.cgi"><em>[% quip FILTER html %]</em></a>
</span>
[% END %]
[%############################################################################%]
[% IF dotweak %]
- <form name="changeform" method="post" action="process_bug.cgi">
+ <form name="changeform" method="post" action="[% basepath FILTER none %]process_bug.cgi">
[% END %]
[%############################################################################%]
<ul class="zero_result_links">
<li>[% PROCESS enter_bug_link %]</li>
[% IF one_product.defined %]
- <li><a href="enter_bug.cgi">File a new [% terms.bug %] in a
+ <li><a href="[% basepath FILTER none %]enter_bug.cgi">File a new [% terms.bug %] in a
different product</a></li>
[% END %]
<li><a href="[% PROCESS edit_search_url %]">Edit this search</a></li>
- <li><a href="query.cgi">Start a new search</a></li>
+ <li><a href="[% basepath FILTER none %]query.cgi">Start a new search</a></li>
</ul>
[% END %]
<tr>
[% IF bugs.size > 0 %]
<td valign="middle" class="bz_query_buttons">
- <form method="post" action="show_bug.cgi" data-no-csrf>
+ <form method="post" action="[% basepath FILTER none %]show_bug.cgi" data-no-csrf>
[% FOREACH id = buglist %]
<input type="hidden" name="id" value="[% id FILTER html %]">
[% END %]
<input type="hidden" name="format" value="multiple">
<input type="submit" id="long_format" value="Long Format">
</form>
- <form method="post" action="show_bug.cgi" data-no-csrf>
+ <form method="post" action="[% basepath FILTER none %]show_bug.cgi" data-no-csrf>
<input type="hidden" name="ctype" value="xml">
[% FOREACH id = buglist %]
<input type="hidden" name="id" value="[% id FILTER html %]">
</form>
[% IF user.is_timetracker %]
- <form method="post" action="summarize_time.cgi" data-no-csrf>
+ <form method="post" action="[% basepath FILTER none %]summarize_time.cgi" data-no-csrf>
<input type="hidden" name="id" value="[% buglist_joined FILTER html %]">
<input type="submit" id="timesummary" value="Time Summary">
</form>
<small>
Time Summary will only include the [% terms.bugs %] shown above. In order to
to see a time summary for all [% terms.bugs %] found by the search, you can
- <a href="buglist.cgi?[% urlquerypart FILTER html %]
+ <a href="[% basepath FILTER none %]buglist.cgi?[% urlquerypart FILTER html %]
[%- "&order=$qorder" FILTER html IF order %]&limit=0">
Show all search results</a>.</small>
[% END %]
[%# Links to more things users can do with this bug list. %]
[% Hook.process("links") %]
- <a href="buglist.cgi?
+ <a href="[% basepath FILTER none %]buglist.cgi?
[% urlquerypart FILTER html %]&ctype=csv&human=1
[%~ IF searchname %]&namedcmd=[% searchname FILTER uri %][% END %]">CSV</a> |
- <a href="buglist.cgi?
+ <a href="[% basepath FILTER none %]buglist.cgi?
[% urlquerypart FILTER html %]&title=
[%- title FILTER uri %]&ctype=atom">Feed</a> |
- <a href="buglist.cgi?
+ <a href="[% basepath FILTER none %]buglist.cgi?
[% urlquerypart FILTER html %]&ctype=ics">iCalendar</a>
[% IF bugs.size > 0 %]
<br>
- <a href="colchange.cgi?
+ <a href="[% basepath FILTER none %]colchange.cgi?
[% urlquerypart FILTER html %]&query_based_on=
[% defaultsavename OR searchname FILTER uri %]">Change Columns</a>
[% IF bugs.size > 1 && caneditbugs && !dotweak %]
- | <a href="buglist.cgi?[% urlquerypart FILTER html %]
+ | <a href="[% basepath FILTER none %]buglist.cgi?[% urlquerypart FILTER html %]
[%- "&order=$qorder" FILTER html IF order %]&tweak=1"
>Change Several [% terms.Bugs %] at Once</a>
[% END %]
[% IF searchtype == "saved" %]
<td valign="middle" nowrap="nowrap" class="bz_query_forget">
|
- <a href="buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=
+ <a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd=
[% searchname FILTER uri %]&token=
[% issue_hash_token([search_id, searchname]) FILTER uri %]">
Forget Search '[% searchname FILTER html %]'</a>
<td> </td>
<td valign="middle" class="bz_query_remember">
- <form method="get" action="buglist.cgi">
+ <form method="get" action="[% basepath FILTER none %]buglist.cgi">
<input type="submit" id="remember" value="Remember search"> as
<input type="hidden" name="newquery"
value="[% urlquerypart FILTER html %][% "&order=$qorder" FILTER html IF order %]">
[% BLOCK edit_search_url %]
[% editqueryname = searchname OR defaultsavename OR '' %]
- query.cgi?[% urlquerypart FILTER html %]
+ [% basepath FILTER none %]query.cgi?[% urlquerypart FILTER html %]
[%- IF editqueryname != '' %]&known_name=
[%- editqueryname FILTER uri %]
[% END %]
[% END %]
[% BLOCK enter_bug_link %]
- <a href="enter_bug.cgi
+ <a href="[% basepath FILTER none %]enter_bug.cgi
[%- IF one_product.defined %]?product=
[%- one_product.name FILTER uri %][% END %]">File
a new [% terms.bug %]
[% ELSIF default_limited AND bugs.size >= Param('default_search_limit') %]
This result was limited to [% Param('default_search_limit') FILTER html %]
[%+ terms.bugs %].
- <a href="buglist.cgi?[% urlquerypart FILTER html %]
+ <a href="[% basepath FILTER none %]buglist.cgi?[% urlquerypart FILTER html %]
[%- "&order=$qorder" FILTER html IF order %]&limit=0">See
all search results for this query</a>.
[% time_summary_limited = 1 %]
[% IF elastic %]
<br>
ElasticSearch took [% elastic_query_time FILTER html %] seconds.
- <a href="buglist.cgi?[% urlquerypart FILTER html %]&elastic=0">Try without ElasticSearch</a>
+ <a href="[% basepath FILTER none %]buglist.cgi?[% urlquerypart FILTER html %]&elastic=0">Try without ElasticSearch</a>
[% ELSIF was_elastic %]
<br>
Search took [% query_time FILTER html %] seconds.
[% END %]
</p>
- <form method="post" action="quips.cgi">
+ <form method="post" action="[% basepath FILTER none %]quips.cgi">
<input type="hidden" name="action" value="add">
<input type="hidden" name="token"
value="[% issue_hash_token(['create-quips']) FILTER html %]">
If the parameter 'quip_list_entry_control' is set to <q>open</q>,
entered quips are automatically approved.
</p>
- <form name="editform" method="post" action="quips.cgi">
+ <form name="editform" method="post" action="[% basepath FILTER none %]quips.cgi">
<input type="hidden" name="action" value="approve">
<input type="hidden" name="token"
value="[% issue_hash_token(['approve-quips']) FILTER html %]">
[% "Unknown" IF NOT users.$userid %]
</td>
<td>
- <a href="quips.cgi?action=delete&quipid=[% quipid FILTER uri %]&token=
+ <a href="[% basepath FILTER none %]quips.cgi?action=delete&quipid=[% quipid FILTER uri %]&token=
[%- issue_hash_token(['quips', quipid]) FILTER uri %]">
Delete
</a>
[% ELSE %]
<p>
Those who like their wisdom in large doses can
- <a href="quips.cgi?action=show">view
+ <a href="[% basepath FILTER none %]quips.cgi?action=show">view
[% IF user.in_group('bz_quip_moderators') %]
and edit
[% END %]
[% END %]
<th colspan="[% splitheader ? 2 : 1 %]" class="first-child
sorted_[% lsearch(order_columns, 'bug_id') FILTER html %]">
- <a href="buglist.cgi?
+ <a href="[% basepath FILTER none %]buglist.cgi?
[% urlquerypart FILTER html %]&order=
[% PROCESS new_order id='bug_id' %]
[%-#%]&query_based_on=
<th colspan="[% splitheader ? 2 : 1 %]"
class="sortable_column_[% key FILTER html %]
sorted_[% lsearch(order_columns, id) FILTER html %]">
- <a href="buglist.cgi?[% urlquerypart FILTER html %]&order=
+ <a href="[% basepath FILTER none %]buglist.cgi?[% urlquerypart FILTER html %]&order=
[% PROCESS new_order %]
[%-#%]&query_based_on=
[% defaultsavename OR searchname FILTER uri %]">
</td>
[% END %]
<td class="first-child bz_id_column">
- <a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>
<span style="display: none">[%+ '[SEC]' IF bug.secure_mode %]</span>
</td>
[% bug.${login_column}.truncate(col_abbrev.maxlength,
col_abbrev.ellipsis) FILTER html %]
[% ELSIF column == 'short_desc' || column == "short_short_desc" %]
- <a href="show_bug.cgi?id=[% bug.bug_id FILTER html %]">
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.bug_id FILTER html %]">
[%- bug.$column.truncate(col_abbrev.maxlength, col_abbrev.ellipsis) FILTER html FILTER wbr -%]
</a>
[% ELSIF bug_fields.$column.type == constants.FIELD_TYPE_BUG_ID %]
- <a href="show_bug.cgi?id=[% bug.$column FILTER html %]">
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% bug.$column FILTER html %]">
[%- bug.$column.truncate(col_abbrev.maxlength, col_abbrev.ellipsis) FILTER html -%]
</a>
[% ELSE %]
[% RETURN UNLESS user.mfa %]
-<img src="images/mfa.png" class="mfa-protected" width="16" height="16"
+<img src="[% basepath FILTER none %]images/mfa.png" class="mfa-protected" width="16" height="16"
alt="2FA" title="Protected by Two-factor Authentication">
software, to see whether it has already been fixed.
</li>
- <li><a href="query.cgi?format=specific">Search</a>
+ <li><a href="[% basepath FILTER none %]query.cgi?format=specific">Search</a>
[% terms.Bugzilla %], to see whether your [% terms.bug %] has
already been reported.</li>
</ol>
<ol>
<li>Choose
- "<a href="enter_bug.cgi">Enter a new [% terms.bug %]</a>"</li>
+ "<a href="[% basepath FILTER none %]enter_bug.cgi">Enter a new [% terms.bug %]</a>"</li>
<li>Select the product in which you've found the [% terms.bug %]</li>
<li>Fill out the form. Here is some help understanding it:</li>
</ol>
URLs, email addresses and so on will be replaced with appropriate HTML links.
</p>
-<form action="page.cgi" method="post">
+<form action="[% basepath FILTER none %]page.cgi" method="post">
[% INCLUDE global/textarea.html.tmpl
name = 'text'
minrows = 20
<p>Type in one or more words (or pieces of words) to search for:</p>
-<form name="f" action="buglist.cgi" method="get"
+<form name="f" action="[% basepath FILTER none %]buglist.cgi" method="get"
class='quicksearch_check_empty' data-no-csrf>
<input type="text" size="40" name="quicksearch">
<input type="submit" value="Search" id="find">
<p>It is pretty easy to write rather complex queries without too much effort.
For very complex queries, you have to use the
- <a href="query.cgi?format=advanced">Advanced Search</a> form.</p>
+ <a href="[% basepath FILTER none %]query.cgi?format=advanced">Advanced Search</a> form.</p>
<ul class="qs_help">
<li>All [% terms.bugs %] reported by userA@company.com or assigned to him
<kbd>text/plain</kbd> attachments as HTML.</li>
<li>If you receive a Whine mail that is empty, there will now be a brief
message explaining that your search found no results.</li>
- <li>The <a href="page.cgi?id=fields.html">Field Help Page</a> now
+ <li>The <a href="[% basepath FILTER none %]page.cgi?id=fields.html">Field Help Page</a> now
contains a description of every single field that can be on
[%+ terms.abug %] in [% terms.Bugzilla %].</li>
</ul>
<h2 id="v40_previous">Release Notes For Previous Versions</h2>
-<p><a href="page.cgi?id=release-notes3.html">Release Notes for
+<p><a href="[% basepath FILTER none %]page.cgi?id=release-notes3.html">Release Notes for
[%+ terms.Bugzilla %] 3.x and Earlier</a></p>
[% INCLUDE global/footer.html.tmpl %]
<h3>Release Notes For Newer Versions</h3>
<p>Release notes for versions of [% terms.Bugzilla %] of the 4.x series are
- available <a href="page.cgi?id=release-notes.html">here</a>.</p>
+ available <a href="[% basepath FILTER none %]page.cgi?id=release-notes.html">here</a>.</p>
<h1>[% title FILTER html %]</h1>
[%+ terms.Bugzilla %] and in the header/footer of every page
is now simplified and made more powerful. There is a
<kbd>[?]</kbd> link next to the box that will take you to
- the simplified <a href="page.cgi?id=quicksearch.html">Quicksearch Help</a>,
+ the simplified <a href="[% basepath FILTER none %]page.cgi?id=quicksearch.html">Quicksearch Help</a>,
which describes every single feature of the system in a simple layout,
including new features such as the ability to use partial field names
when searching.</p>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=69621">
[%- terms.Bug %] 69621</a>: If you rename or remove a keyword that is
in use on [% terms.bugs %], you will need to rebuild the "keyword cache"
- by running <a href="sanitycheck.cgi">sanitycheck.cgi</a> and choosing
+ by running <a href="[% basepath FILTER none %]sanitycheck.cgi">sanitycheck.cgi</a> and choosing
the option to rebuild the cache when it asks. Otherwise keywords may
not show up properly in search results.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=89822">
is now no longer allowed, as it would break [% terms.Bugzilla %]. If you
created such a custom field, you should delete it by first marking it
obsolete and then clicking "Delete" in the custom field list, using
- <a href="editfields.cgi">editfields.cgi</a>.
+ <a href="[% basepath FILTER none %]editfields.cgi">editfields.cgi</a>.
(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=525025">[% terms.Bug %] 525025</a>)
</li>
<li>Clicking "submit only my comment" on the "mid-air collisions" page
background. This requires the administrator to run a daemon
that comes with [% terms.Bugzilla %], named
<a href="[% docs_urlbase FILTER html %]api/jobqueue.html">jobqueue.pl</a>,
- and to enable the <a href="editparams.cgi?section=mta#use_mailer_queue">
+ and to enable the <a href="[% basepath FILTER none %]editparams.cgi?section=mta#use_mailer_queue">
use_mailer_queue</a> parameter.</p>
<p>Using the background email-sending daemon instead of sending mail directly
other installation.</p>
<p>If your installation does not need this field, you can hide it by disabling
- the <a href="editparams.cgi?section=bugfields#use_see_also">use_see_also
+ the <a href="[% basepath FILTER none %]editparams.cgi?section=bugfields#use_see_also">use_see_also
parameter</a>.</p>
<h3 id="v34_feat_cols">Re-order Columns in Search Results</h3>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=69621">
[%- terms.Bug %] 69621</a>: If you rename or remove a keyword that is
in use on [% terms.bugs %], you will need to rebuild the "keyword cache"
- by running <a href="sanitycheck.cgi">sanitycheck.cgi</a> and choosing
+ by running <a href="[% basepath FILTER none %]sanitycheck.cgi">sanitycheck.cgi</a> and choosing
the option to rebuild the cache when it asks. Otherwise keywords may
not show up properly in search results.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=89822">
<li>We no longer delete environment variables like <kbd>$ENV{PATH}</kbd>
automatically unless we're actually running in taint mode.</li>
<li>We are now using YUI 2.6.0.</li>
- <li>In <a href="config.cgi?ctype=rdf">the RDF format of config.cgi</a>,
+ <li>In <a href="[% basepath FILTER none %]config.cgi?ctype=rdf">the RDF format of config.cgi</a>,
the "resource" attribute for flags now contains "flag.cgi" instead
of "flags.cgi".</li>
</ul>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=69621">
[%- terms.Bug %] 69621</a>: If you rename or remove a keyword that is
in use on [% terms.bugs %], you will need to rebuild the "keyword cache"
- by running <a href="sanitycheck.cgi">sanitycheck.cgi</a> and choosing
+ by running <a href="[% basepath FILTER none %]sanitycheck.cgi">sanitycheck.cgi</a> and choosing
the option to rebuild the cache when it asks. Otherwise keywords may
not show up properly in search results.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=89822">
<p>Firefox 2 users and Internet Explorer 7 users will be presented
with the option to add [% terms.Bugzilla %] to their search bar.
This uses the
- <a href="page.cgi?id=quicksearch.html">QuickSearch syntax</a>.</p>
+ <a href="[% basepath FILTER none %]page.cgi?id=quicksearch.html">QuickSearch syntax</a>.</p>
<h3 id="v30_feat_other">Other Enhancements and Changes</h3>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=69621">
[%- terms.Bug %] 69621</a>: If you rename or remove a keyword that is
in use on [% terms.bugs %], you will need to rebuild the "keyword cache"
- by running <a href="sanitycheck.cgi">sanitycheck.cgi</a> and choosing
+ by running <a href="[% basepath FILTER none %]sanitycheck.cgi">sanitycheck.cgi</a> and choosing
the option to rebuild the cache when it asks. Otherwise keywords may
not show up properly in search results.</li>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=99215">
<div align="center">
- [% imageurl = BLOCK %]chart.cgi?
+ [% imageurl = BLOCK %][% basepath FILTER none %]chart.cgi?
[% imagebase FILTER html %]&ctype=png&action=plot&width=
[% width %]&height=[% height -%]
[% END %]
</p>
<p>
- <a href="chart.cgi?
+ <a href="[% basepath FILTER none %]chart.cgi?
[% imagebase FILTER html %]&ctype=csv&action=plot">CSV</a> |
- <a href="chart.cgi?[% imagebase FILTER html %]&action=assemble">Edit
+ <a href="[% basepath FILTER none %]chart.cgi?[% imagebase FILTER html %]&action=assemble">Edit
this chart</a>
</p>
[% BLOCK describe_comp %]
<section id="[% comp.name FILTER html %]" class="component[%- IF comp.name == component_mark %] highlight[% END %]">
<header>
- <h2><a href="buglist.cgi?product=[%- product.name FILTER uri %]&component=
+ <h2><a href="[% basepath FILTER none %]buglist.cgi?product=[%- product.name FILTER uri %]&component=
[%- comp.name FILTER uri %]&resolution=---">[% comp.name FILTER html %]</a></h2>
</header>
<div>
[% gttext = "Grand Total" %]
-<form method="get" action="chart.cgi" name="chartform">
+<form method="get" action="[% basepath FILTER none %]chart.cgi" name="chartform">
<table cellpadding="2" cellspacing="2" border="0">
[% IF NOT category OR category.size == 0 %]
<td align="center">
[% IF user.id == series.creator_id OR user.in_group("admin") %]
- <a href="chart.cgi?action=edit&series_id=
+ <a href="[% basepath FILTER none %]chart.cgi?action=edit&series_id=
[% series.series_id %]">Edit</a> |
- <a href="chart.cgi?action=confirm-delete&series_id=
+ <a href="[% basepath FILTER none %]chart.cgi?action=confirm-delete&series_id=
[%- series.series_id %]">Delete</a> |
[% END %]
- <a href="buglist.cgi?cmdtype=dorem&namedcmd=
+ <a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&namedcmd=
[% series.category FILTER uri %]%20/%20
[% series.subcategory FILTER uri %]%20/%20
[% series.name FILTER uri -%]&series_id=
or start with a clean slate.
</p>
- <form action="chart.cgi" id="create_series" name="create_series" method="GET">
+ <form action="[% basepath FILTER none %]chart.cgi" id="create_series" name="create_series" method="GET">
<input type="hidden" name="action" value="convert_search">
<label for="series_from_search">Based on:</label>
<select id="series_from_search" name="series_from_search">
<p class="areyoureallyreallysure">Are you sure you want to delete this series?</p>
<p>
- <a href="chart.cgi?action=delete&series_id=[% series.series_id FILTER html %]&token=
+ <a href="[% basepath FILTER none %]chart.cgi?action=delete&series_id=[% series.series_id FILTER html %]&token=
[%- issue_hash_token([series.id, series.name]) FILTER uri %]">Yes, delete</a> |
- <a href="chart.cgi">No, go back to the charts page</a>
+ <a href="[% basepath FILTER none %]chart.cgi">No, go back to the charts page</a>
</p>
[% PROCESS global/footer.html.tmpl %]
[% column.reverse_sort = reverse ? 0 : 1 %]
[% END %]
<th class="[% column.name FILTER html %]">
- <a href="duplicates.cgi?sortby=[% column.name FILTER uri %]
+ <a href="[% basepath FILTER none %]duplicates.cgi?sortby=[% column.name FILTER uri %]
[% IF column.reverse_sort.defined %]
[%- %]&reverse=[% column.reverse_sort FILTER uri %]
[% END %]
<h3 id="params">Change Parameters</h3>
-<form method="get" action="duplicates.cgi" data-no-csrf>
+<form method="get" action="[% basepath FILTER none %]duplicates.cgi" data-no-csrf>
<input type="hidden" name="sortby" value="[% sortby FILTER html %]">
<input type="hidden" name="reverse" value="[% reverse FILTER html %]">
<input type="hidden" name="bug_id" value="[% bug_ids_string FILTER html %]">
<input type="submit" id="change" value="Change">
</form>
-<form method="post" action="buglist.cgi" data-no-csrf>
+<form method="post" action="[% basepath FILTER none %]buglist.cgi" data-no-csrf>
<input type="hidden" name="bug_id" value="[% bug_ids_string FILTER html %]">
Or just give this to me as a <input type="submit" id="list"
value="[% terms.bug %] list">.
<li>If your problem not listed:</li>
<ul>
- <li><a href="query.cgi">Try and locate a similar [% terms.bug %]</a>
+ <li><a href="[% basepath FILTER none %]query.cgi">Try and locate a similar [% terms.bug %]</a>
that has already been filed.</li>
<li>If you find your [% terms.bug %] in [% terms.Bugzilla %],
feel free to comment with any new or additional data you may have.</li>
<li>If you cannot find your problem already documented in
[%+ terms.Bugzilla %],
- <a href="enter_bug.cgi">file a new [% terms.bug %]</a>.</li>
+ <a href="[% basepath FILTER none %]enter_bug.cgi">file a new [% terms.bug %]</a>.</li>
</ul>
</ul>
</p>
[% END %]
-<form method="get" action="chart.cgi" name="chartform">
+<form method="get" action="[% basepath FILTER none %]chart.cgi" name="chartform">
[% PROCESS reports/series.html.tmpl
button_name = "Change Data Set" %]
</p>
<p>
- <a href="query.cgi?[% default.query FILTER html %]">View
+ <a href="[% basepath FILTER none %]query.cgi?[% default.query FILTER html %]">View
series search parameters</a> |
- <a href="buglist.cgi?cmdtype=dorem&namedcmd=
+ <a href="[% basepath FILTER none %]buglist.cgi?cmdtype=dorem&namedcmd=
[% default.category FILTER uri %]-
[% default.subcategory FILTER uri %]-
[% default.name FILTER uri %]&remaction=runseries&series_id=
</script>
<p>
- <a href="[% urlbase FILTER html %]?show_inactive_keywords=[% show_inactive_keywords ? "1" : "0" FILTER none %]"
+ <a href="[% basepath FILTER html %]?show_inactive_keywords=[% show_inactive_keywords ? "1" : "0" FILTER none %]"
id="keywords_show_hide">[% show_inactive_keywords ? "Show" : "Hide" FILTER html %] inactive keywords</a>
</p>
<td>[% keyword.is_active ? "Yes" : "No" FILTER html %]</td>
<td align="center">
[% IF keyword.bug_count > 0 %]
- <a href="buglist.cgi?keywords=[% keyword.name FILTER uri %]&resolution=---">
+ <a href="[% basepath FILTER none %]buglist.cgi?keywords=[% keyword.name FILTER uri %]&resolution=---">
Search</a>
[% ELSE %]
none
</td>
<td align="right">
[% IF keyword.bug_count > 0 %]
- <a href="buglist.cgi?keywords=[% keyword.name FILTER uri %]">
+ <a href="[% basepath FILTER none %]buglist.cgi?keywords=[% keyword.name FILTER uri %]">
[% keyword.bug_count %]</a>
[% ELSE %]
none
[% IF caneditkeywords %]
<p>
- <a href="editkeywords.cgi">Edit keywords</a>.
+ <a href="[% basepath FILTER none %]editkeywords.cgi">Edit keywords</a>.
</p>
[% END %]
<ul>
<li id="report_search">
- <strong><a href="query.cgi">Search</a></strong> -
+ <strong><a href="[% basepath FILTER none %]query.cgi">Search</a></strong> -
list sets of [% terms.bugs %].
</li>
<li id="report_tabular">
<strong>
- <a href="query.cgi?format=report-table">Tabular reports</a>
+ <a href="[% basepath FILTER none %]query.cgi?format=report-table">Tabular reports</a>
</strong> -
tables of [% terms.bug %] counts in 1, 2 or 3 dimensions, as HTML or CSV.
</li>
[% IF feature_enabled('graphical_reports') %]
<li id="report_graphical">
<strong>
- <a href="query.cgi?format=report-graph">Graphical reports</a>
+ <a href="[% basepath FILTER none %]query.cgi?format=report-graph">Graphical reports</a>
</strong> -
line graphs, bar and pie charts.
</li>
[% END %]
<li id="report_duplicates">
- <strong><a href="duplicates.cgi">Duplicates</a></strong> -
+ <strong><a href="[% basepath FILTER none %]duplicates.cgi">Duplicates</a></strong> -
list of most frequently reported [% terms.bugs %].
</li>
[% Hook.process('current_state') %]
<ul>
[% IF feature_enabled('old_charts') %]
<li id="old_charts">
- <strong><a href="reports.cgi">Old Charts</a></strong> -
+ <strong><a href="[% basepath FILTER none %]reports.cgi">Old Charts</a></strong> -
plot the status and/or resolution of [% terms.bugs %] against
time, for each product in your database.
</li>
[% END %]
[% IF feature_enabled('new_charts') AND user.in_group(Param("chartgroup")) %]
<li id="new_charts">
- <strong><a href="chart.cgi">New Charts</a></strong> -
+ <strong><a href="[% basepath FILTER none %]chart.cgi">New Charts</a></strong> -
plot any arbitrary search against time. Far more powerful.
</li>
[% END %]
<img src="[% url_image FILTER html %]">
<br clear="both">
[% ELSE %]
- <form id="choose_product" method="get" action="reports.cgi" data-no-csrf>
+ <form id="choose_product" method="get" action="[% basepath FILTER none %]reports.cgi" data-no-csrf>
<table border="1" cellpadding="5" cellspacing="2">
<tr>
<th>Product:</th>
[% col_field_disp = field_descs.$col_field || col_field %]
[% row_field_disp = field_descs.$row_field || row_field %]
-[% urlbase = BLOCK %]buglist.cgi?[% buglistbase FILTER html %][% END %]
+[% urlbase = BLOCK %][% basepath FILTER none %]buglist.cgi?[% buglistbase FILTER html %][% END %]
[% IF tbl == "-total-" %]
[% IF tbl_vals %]
[% urlbase = urlbase _ "&" _ tbl_vals %]
{ name => "line", description => "Line" },
{ name => "table", description => "Table" } ] %]
- [% formaturl = "report.cgi?$switchbase&width=$width" _
+ [% formaturl = basepath _ "report.cgi?$switchbase&width=$width" _
"&height=$height&action=wrap" %]
[% FOREACH other_format = formats %]
[% NEXT IF other_format.name == "pie" AND row_field AND col_field %]
<p>
[% IF format == "table" %]
- <a href="query.cgi?[% switchbase %]&format=report-table">Edit
+ <a href="[% basepath FILTER none %]query.cgi?[% switchbase %]&format=report-table">Edit
this report</a>
[% ELSE %]
- <a href="query.cgi?[% switchbase %]&chart_format=
+ <a href="[% basepath FILTER none %]query.cgi?[% switchbase %]&chart_format=
[% format FILTER uri %]&format=report-graph&cumulate=[% cumulate %]">
Edit this report
</a>
to some group are shown by default.
</p>
-<form id="request_form" name="request_form" action="request.cgi" method="get">
+<form id="request_form" name="request_form" action="[% basepath FILTER none %]request.cgi" method="get">
<input type="hidden" name="action" value="queue">
<table id="filtering">
[% END %]
[% PROCESS display_buglist %]
<br><br>
- <a href="request.cgi?[% urlquerypart FILTER html %]&ctype=csv">(view entire list as CSV)</a>
+ <a href="[% basepath FILTER none %]request.cgi?[% urlquerypart FILTER html %]&ctype=csv">(view entire list as CSV)</a>
[% END %]
[% PROCESS global/footer.html.tmpl %]
[% END %]
[% BLOCK display_bug %]
- <a href="show_bug.cgi?id=[% request.bug_id %]"
+ <a href="[% basepath FILTER none %]show_bug.cgi?id=[% request.bug_id %]"
[%- ' class="bz_secure"' IF request.restricted %]>
[% request.bug_id %] ([% request.priority FILTER html %]/[% request.bug_severity FILTER html %]): [%+ request.bug_summary FILTER html %]</a>
[% END %]
[% BLOCK display_attachment %]
[% IF request.attach_id %]
- <a href="attachment.cgi?id=[% request.attach_id %]">
+ <a href="[% basepath FILTER none %]attachment.cgi?id=[% request.attach_id %]">
[% request.attach_id %]: [%+ request.attach_summary FILTER html %]</a>
- [<a href="attachment.cgi?id=[% request.attach_id %]&action=edit">details</a>]
+ [<a href="[% basepath FILTER none %]attachment.cgi?id=[% request.attach_id %]&action=edit">details</a>]
[% ELSE %]
N/A
[% END %]
[% BLOCK display_buglist %]
</table>
[% NEXT UNLESS buglist.keys.size %]
- <a href="buglist.cgi?bug_id=
+ <a href="[% basepath FILTER none %]buglist.cgi?bug_id=
[%- buglist.keys.nsort.join(",") FILTER html %]">(view as
[%+ terms.bug %] list)</a>
[% END %]
<html>
<head>
<title>Bugzilla::REST::API</title>
- <link href="[% urlbase FILTER none %][% 'skins/standard/global.css' FILTER version %]"
+ <link href="[% 'skins/standard/global.css' FILTER version %]"
rel="stylesheet" type="text/css">
</head>
<body>
User-agent: *
-Disallow: /
+Disallow: [% basepath FILTER none %]
Crawl-delay: 30
[% IF NOT Bugzilla.localconfig.urlbase.matches("bugzilla-dev") %]
-Allow: /$
-Allow: /index.cgi
+Allow: [% basepath FILTER none %]$
+Allow: [% basepath FILTER none %]index.cgi
-Allow: /page.cgi
-Disallow: /page.cgi*id=voting*
-Disallow: /page.cgi*id=productdashboard*
-Disallow: /page.cgi*id=user_activity*
+Allow: [% basepath FILTER none %]page.cgi
+Disallow: [% basepath FILTER none %]page.cgi*id=voting*
+Disallow: [% basepath FILTER none %]page.cgi*id=productdashboard*
+Disallow: [% basepath FILTER none %]page.cgi*id=user_activity*
-Allow: /show_bug.cgi
-Disallow: /show_bug.cgi*ctype=*
-Disallow: /show_bug.cgi*format=multiple*
+Allow: [% basepath FILTER none %]show_bug.cgi
+Disallow: [% basepath FILTER none %]show_bug.cgi*ctype=*
+Disallow: [% basepath FILTER none %]show_bug.cgi*format=multiple*
-Allow: /describecomponents.cgi
-Allow: /describekeywords.cgi
+Allow: [% basepath FILTER none %]describecomponents.cgi
+Allow: [% basepath FILTER none %]describekeywords.cgi
[% FILTER remove('#.*') %]
[% Hook.process("end") %]
[% IF userdefaultquery %]
<p>
- <a href="query.cgi?nukedefaultquery=1&token=
+ <a href="[% basepath FILTER none %]query.cgi?nukedefaultquery=1&token=
[%- issue_hash_token(['nukedefaultquery']) FILTER uri %]">
Set my default search back to the system default</a>.
</p>
<p id="search_help">Hover your mouse over each field label to get help for that field.</p>
-<form method="post" action="buglist.cgi" name="queryform" id="queryform"
+<form method="post" action="[% basepath FILTER none %]buglist.cgi" name="queryform" id="queryform"
onsubmit="remove_token()" data-no-csrf>
[% PROCESS search/form.html.tmpl %]
doc_section = "reporting.html#charts-new-series"
%]
-<form method="get" action="chart.cgi" name="chartform">
+<form method="get" action="[% basepath FILTER none %]chart.cgi" name="chartform">
[% PROCESS search/form.html.tmpl %]
[% button_name = "Generate Report" %]
-<form method="get" action="report.cgi" name="reportform" id="reportform">
+<form method="get" action="[% basepath FILTER none %]report.cgi" name="reportform" id="reportform">
<table align="center">
<tr>
[% button_name = "Generate Report" %]
-<form method="get" action="report.cgi" name="reportform" id="reportform">
+<form method="get" action="[% basepath FILTER none %]report.cgi" name="reportform" id="reportform">
<table align="center">
<tr>
for "crash secure SSL flash".
</p>
-<form name="queryform" method="get" action="buglist.cgi" data-no-csrf>
+<form name="queryform" method="get" action="[% basepath FILTER none %]buglist.cgi" data-no-csrf>
<input type="hidden" name="query_format" value="specific">
<input type="hidden" name="order" value="relevance desc">
[% WRAPPER global/tabs.html.tmpl
tabs = [ { name => 'instant', label => "Instant Search",
- link => "query.cgi?format=instant" },
+ link => basepath _ "query.cgi?format=instant" },
{ name => 'specific', label => "Simple Search",
- link => "query.cgi?format=specific" },
+ link => basepath _ "query.cgi?format=specific" },
{ name => 'advanced', label => "Advanced Search",
- link => "query.cgi?format=advanced" },
+ link => basepath _ "query.cgi?format=advanced" },
{ name => 'google', label => 'Google Search',
- link => "query.cgi?format=google" } ]
+ link => basepath _ "query.cgi?format=google" } ]
current_tab_name = query_format || format || "advanced"
%]
your installation correctly.</p>
<p>As an administrator, you have access to all administrative pages, accessible from
- the <a href="admin.cgi">Administration</a> link visible at the bottom of this page.
+ the <a href="[% basepath FILTER none %]admin.cgi">Administration</a> link visible at the bottom of this page.
This link will always be visible, on all pages. From there, you must visit at least
- the <a href="editparams.cgi">Parameters</a> page, from where you can set all important
+ the <a href="[% basepath FILTER none %]editparams.cgi">Parameters</a> page, from where you can set all important
parameters for this installation; among others:</p>
<ul>
- <li><a href="editparams.cgi?section=general#maintainer_desc">maintainer</a>,
+ <li><a href="[% basepath FILTER none %]editparams.cgi?section=general#maintainer_desc">maintainer</a>,
the person responsible for this installation if something is
running wrongly.</li>
</ul>
<p>Also important are the following parameters:</p>
<ul>
- <li><a href="editparams.cgi?section=auth#requirelogin_desc">requirelogin</a>, if turned
+ <li><a href="[% basepath FILTER none %]editparams.cgi?section=auth#requirelogin_desc">requirelogin</a>, if turned
on, will protect your installation from users having no account on this installation.
In other words, users who are not explicitly authenticated with a valid account
cannot see any data. This is what you want if you want to keep your data private.</li>
- <li><a href="editparams.cgi?section=auth#createemailregexp_desc">createemailregexp</a>
+ <li><a href="[% basepath FILTER none %]editparams.cgi?section=auth#createemailregexp_desc">createemailregexp</a>
defines which users are allowed to create an account on this installation. If set
to ".*" (the default), everybody is free to create his own account. If set to
"@mycompany.com$", only users having an account @mycompany.com will be allowed to
installation, you must absolutely set this parameter to something different from
the default.</li>
- <li><a href="editparams.cgi?section=mta#mail_delivery_method_desc">mail_delivery_method</a>
+ <li><a href="[% basepath FILTER none %]editparams.cgi?section=mta#mail_delivery_method_desc">mail_delivery_method</a>
defines the method used to send emails, such as sendmail or SMTP. You have to set
it correctly to send emails.</li>
</ul>
<p>
Searches come from saved searches, which are created by executing a <a
- href="query.cgi">search</a>, then telling [% terms.Bugzilla %] to remember
+ href="[% basepath FILTER none %]query.cgi">search</a>, then telling [% terms.Bugzilla %] to remember
the search under a particular name. Add a query by clicking "Add a new
query", and select the desired saved search name under "Search" and add a
title for the [% terms.bug %] table. The optional number entered under
All times are server local time ([% local_timezone FILTER html %]).
</p>
-<form method="post" action="editwhines.cgi">
+<form method="post" action="[% basepath FILTER none %]editwhines.cgi">
[%# This hidden submit button must be here to set default behavior when
the user presses return on a form input field #%]
<input type="submit" value="Update / Commit" name="commit"
</select>
[% ELSE %]
- Please visit the <a href="query.cgi">Search</a> page and save a query
+ Please visit the <a href="[% basepath FILTER none %]query.cgi">Search</a> page and save a query
[% END %]
[%+ END %]