summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-06-15 02:50:08 +0200
committerKohei Yoshino <kohei.yoshino@gmail.com>2018-06-15 02:50:08 +0200
commit404dc5496967203c5f99755340f43d712420446a (patch)
treeb369a872bb1fa58c0ad95e249347dc5f8905e337
parent69e02e0576fc834de982ab6fa3d5b77ce7fe472a (diff)
downloadbugzilla-404dc5496967203c5f99755340f43d712420446a.tar.gz
bugzilla-404dc5496967203c5f99755340f43d712420446a.tar.xz
Bug 1468848 - Change presentation of show_bug.cgi urls to be /bug/ID or /bug/ALIAS.
-rw-r--r--.htaccess3
-rw-r--r--Bugzilla/Install/Localconfig.pm13
-rw-r--r--README.rst5
-rw-r--r--extensions/BMO/template/en/default/hook/global/header-additional_header.html.tmpl2
-rw-r--r--extensions/BugModal/template/en/default/bug_modal/header.html.tmpl1
-rw-r--r--extensions/BugModal/web/bug_modal.js18
-rw-r--r--extensions/OpenGraph/template/en/default/hook/global/header-start.html.tmpl2
-rw-r--r--template/en/default/global/header.html.tmpl1
-rw-r--r--template/en/default/setup/strings.txt.pl4
9 files changed, 35 insertions, 14 deletions
diff --git a/.htaccess b/.htaccess
index ee7d296b0..ac0e40d88 100644
--- a/.htaccess
+++ b/.htaccess
@@ -42,7 +42,6 @@ RewriteRule ^template_cache.deleteme/ - [F,L,NC]
RewriteRule ^review$ page.cgi?id=splinter.html$1 [QSA]
RewriteRule ^user_?profile$ page.cgi?id=user_profile.html$1 [QSA]
RewriteRule ^request_defer$ page.cgi?id=request_defer.html$1 [QSA]
-RewriteRule ^([0-9]+)$ show_bug.cgi?id=$1 [QSA]
RewriteRule ^favicon\.ico$ extensions/BMO/web/images/favicon.ico
RewriteRule ^form[\.:]itrequest$ enter_bug.cgi?product=Infrastructure+\%26+Operations&format=itrequest [QSA]
RewriteRule ^form[\.:](mozlist|poweredby|presentation|trademark|recoverykey)$ enter_bug.cgi?product=mozilla.org&format=$1 [QSA]
@@ -84,6 +83,8 @@ RewriteRule ^form[\.:]shield[\.:]studies$ enter_bug.cgi?product=Shield&format=sh
RewriteRule ^form[\.:]client[\.:]bounty$ enter_bug.cgi?product=Firefox&format=client-bounty [QSA]
RewriteRule ^rest - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^rest/(.*)$ rest.cgi/$1 [NE]
+RewriteRule ^bug/([^/]+)$ show_bug.cgi?id=$1 [NE]
+RewriteRule ^([0-9]+)$ show_bug.cgi?id=$1 [QSA]
RewriteRule ^(?:latest|1\.2|1\.3)/(.*)$ extensions/BzAPI/bin/rest.cgi/$1 [NE]
RewriteRule ^bzapi/(.*)$ extensions/BzAPI/bin/rest.cgi/$1 [NE]
RewriteRule ^login$ index.cgi?GoAheadAndLogIn=1 [NE]
diff --git a/Bugzilla/Install/Localconfig.pm b/Bugzilla/Install/Localconfig.pm
index e1a8e0909..f6333f218 100644
--- a/Bugzilla/Install/Localconfig.pm
+++ b/Bugzilla/Install/Localconfig.pm
@@ -164,6 +164,10 @@ use constant LOCALCONFIG_VARS => (
default => _migrate_param( "urlbase", "" ),
},
{
+ name => 'canonical_urlbase',
+ default => '',
+ },
+ {
name => 'attachment_base',
default => _migrate_param( "attachment_base", '' ),
},
@@ -286,13 +290,16 @@ sub _read_localconfig_from_file {
sub read_localconfig {
my ($include_deprecated) = @_;
-
+ my $lc;
if ($ENV{LOCALCONFIG_ENV}) {
- return _read_localconfig_from_env();
+ $lc = _read_localconfig_from_env();
}
else {
- return _read_localconfig_from_file($include_deprecated);
+ $lc = _read_localconfig_from_file($include_deprecated);
}
+ $lc->{canonical_urlbase} //= $lc->{urlbase};
+
+ return $lc;
}
#
diff --git a/README.rst b/README.rst
index d8986fc73..bbc91bff2 100644
--- a/README.rst
+++ b/README.rst
@@ -246,9 +246,12 @@ BUGZILLA_UNSAFE_AUTH_DELEGATION
BMO_urlbase
The public url for this instance. Note that if this begins with https://
- abd BMO_inbound_proxies is set to '*' Bugzilla will believe the connection to it
+ and BMO_inbound_proxies is set to '*' Bugzilla will believe the connection to it
is using SSL.
+BMO_canonical_urlbase
+ The public url for the production instance, if different from urlbase above.
+
BMO_attachment_base
This is the url for attachments.
When the allow_attachment_display parameter is on, it is possible for a
diff --git a/extensions/BMO/template/en/default/hook/global/header-additional_header.html.tmpl b/extensions/BMO/template/en/default/hook/global/header-additional_header.html.tmpl
index f1896dccc..d7a4cc2a5 100644
--- a/extensions/BMO/template/en/default/hook/global/header-additional_header.html.tmpl
+++ b/extensions/BMO/template/en/default/hook/global/header-additional_header.html.tmpl
@@ -21,7 +21,7 @@
<link rel="shortcut icon" href="extensions/BMO/web/images/favicon.ico">
[% IF bug %]
-<link id="shorturl" rev="canonical" href="https://bugzil.la/[% bug.bug_id FILTER uri %]">
+<link id="shorturl" rel="canonical" href="[% Bugzilla.localconfig.canonical_urlbase FILTER none %]bug/[% bug.bug_id FILTER uri %]">
[% END %]
[%# *** Bug List Navigation *** %]
diff --git a/extensions/BugModal/template/en/default/bug_modal/header.html.tmpl b/extensions/BugModal/template/en/default/bug_modal/header.html.tmpl
index 38b6b572f..a21e9c268 100644
--- a/extensions/BugModal/template/en/default/bug_modal/header.html.tmpl
+++ b/extensions/BugModal/template/en/default/bug_modal/header.html.tmpl
@@ -94,6 +94,7 @@
[%# expose useful data to js %]
BUGZILLA.bug_id = [% bug.id FILTER none %];
BUGZILLA.bug_title = '[% unfiltered_title FILTER js %]';
+ BUGZILLA.bug_alias = '[% bug.alias FILTER js %]';
BUGZILLA.user = {
id: [% user.id FILTER none %],
login: '[% user.login FILTER js %]',
diff --git a/extensions/BugModal/web/bug_modal.js b/extensions/BugModal/web/bug_modal.js
index bf5c300e1..9d2701e51 100644
--- a/extensions/BugModal/web/bug_modal.js
+++ b/extensions/BugModal/web/bug_modal.js
@@ -1344,15 +1344,19 @@ function confirmUnsafeURL(url) {
// fix url after bug creation/update
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);
+ let bug_id = BUGZILLA.bug_id;
+ let bug_alias = BUGZILLA.bug_alias;
+ let bug_slug = bug_alias || bug_id;
+ let url = new URL(document.location.href);
+ if (!url.pathname.match(/^bug\/[0-9]+/)) {
+ url.searchParams.delete("id");
+ let new_url = url.search ? `/bug/${bug_slug}${url.search}` : `/bug/${bug_slug}`;
+ if (url.hash) {
+ new_url += url.hash;
+ }
+ history.replaceState(null, BUGZILLA.bug_title, new_url);
document.title = BUGZILLA.bug_title;
}
- if (href.match(/show_bug\.cgi\?.*list_id=/)) {
- href = href.replace(/[\?&]+list_id=(\d+|cookie)/, '');
- history.replaceState(null, BUGZILLA.bug_title, href);
- }
}
// ajax wrapper, to simplify error handling and auth
diff --git a/extensions/OpenGraph/template/en/default/hook/global/header-start.html.tmpl b/extensions/OpenGraph/template/en/default/hook/global/header-start.html.tmpl
index 51c388d42..247e44ea9 100644
--- a/extensions/OpenGraph/template/en/default/hook/global/header-start.html.tmpl
+++ b/extensions/OpenGraph/template/en/default/hook/global/header-start.html.tmpl
@@ -9,7 +9,7 @@
[% USE Bugzilla %]
<meta property="og:type" content="website">
<meta property="og:title" content="[% title FILTER none %]">
-<meta property="og:url" content="[% Bugzilla.cgi.self_url FILTER html %]">
+<meta property="og:url" content="[% Bugzilla.cgi.url FILTER html %]">
[% IF bug %]
<meta property="og:description"
content="[% bug.bug_status FILTER html %] ([% bug.assigned_to.login FILTER email FILTER html %]) in [% bug.product FILTER html %] - [% bug.component FILTER html %]. Last updated [% bug.delta_ts FILTER time('%Y-%m-%d') %].">
diff --git a/template/en/default/global/header.html.tmpl b/template/en/default/global/header.html.tmpl
index 6b56a5d30..771fa801b 100644
--- a/template/en/default/global/header.html.tmpl
+++ b/template/en/default/global/header.html.tmpl
@@ -136,6 +136,7 @@
<meta name="viewport" content="width=1024">
<meta name="generator" content="[% terms.Bugzilla _ " " _ constants.BUGZILLA_VERSION FILTER html %]">
+ <base href="[% urlbase FILTER html %]">
<meta name="bugzilla-global" content="dummy"
id="bugzilla-global" data-bugzilla="[% json_encode(js_BUGZILLA) FILTER html %]">
<title>[% title %]</title>
diff --git a/template/en/default/setup/strings.txt.pl b/template/en/default/setup/strings.txt.pl
index 8726a8b13..fe375400d 100644
--- a/template/en/default/setup/strings.txt.pl
+++ b/template/en/default/setup/strings.txt.pl
@@ -231,6 +231,10 @@ END
localconfig_urlbase => <<'END',
The URL that is the common initial leading part of all URLs.
END
+ localconfig_canonical_urlbase => <<'END',
+The URL that is the canonical initial leading part of all URLs.
+This will be the production url for a dev site, for instance.
+END
localconfig_use_suexec => <<'END',
Set this to 1 if Bugzilla runs in an Apache SuexecUserGroup environment.