diff options
author | Dylan William Hardison <dylan@hardison.net> | 2018-06-15 02:50:08 +0200 |
---|---|---|
committer | Kohei Yoshino <kohei.yoshino@gmail.com> | 2018-06-15 02:50:08 +0200 |
commit | 404dc5496967203c5f99755340f43d712420446a (patch) | |
tree | b369a872bb1fa58c0ad95e249347dc5f8905e337 | |
parent | 69e02e0576fc834de982ab6fa3d5b77ce7fe472a (diff) | |
download | bugzilla-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-- | .htaccess | 3 | ||||
-rw-r--r-- | Bugzilla/Install/Localconfig.pm | 13 | ||||
-rw-r--r-- | README.rst | 5 | ||||
-rw-r--r-- | extensions/BMO/template/en/default/hook/global/header-additional_header.html.tmpl | 2 | ||||
-rw-r--r-- | extensions/BugModal/template/en/default/bug_modal/header.html.tmpl | 1 | ||||
-rw-r--r-- | extensions/BugModal/web/bug_modal.js | 18 | ||||
-rw-r--r-- | extensions/OpenGraph/template/en/default/hook/global/header-start.html.tmpl | 2 | ||||
-rw-r--r-- | template/en/default/global/header.html.tmpl | 1 | ||||
-rw-r--r-- | template/en/default/setup/strings.txt.pl | 4 |
9 files changed, 35 insertions, 14 deletions
@@ -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. |