summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFatih Acet <acetfatih@gmail.com>2016-12-05 11:22:48 +0000
committerAlejandro Rodríguez <alejorro70@gmail.com>2016-12-07 14:01:53 -0300
commit1a4c8eba07f12e04e8ab07e7e16319ee863053fe (patch)
tree42e6eec1c43cb9596e466ddef23cf9c1aee74934 /app
parentc30fd18572036e389758da9a669898779186e772 (diff)
downloadgitlab-ce-1a4c8eba07f12e04e8ab07e7e16319ee863053fe.tar.gz
Merge branch 'fix-compatibility-with-ie11-for-merge-requests' into 'master'
Fix compatibility with Internet Explorer 11 for merge requests ## What does this MR do? This merge request restores the compatibility with Internet Explorer 11. ## Are there points in the code the reviewer needs to double check? No. ## Why was this MR needed? Commit ca3c0c6cd915d44ec2d409b04ab05d964bd5a403 introduced an incompatibility with Internet Explorer 11. On all merge requests in all projects the 'Changes' tab does not display the changes in IE11 but instead fails with 'Something went wrong on our end'. The reason ist, that this code snipped produces different results on Firefox and Internet Explorer 11: ``` var element = document.createElement('a'); element.href = '/some/absolute/url'; alert(element.pathname); ``` With Internet Explorer 11 the alert will print a relative path, whereas with Firefox the alert will print an absolute path. For GitLab this meant that a wrong AJAX URL was composed which resulted in a 404. ## Screenshots (if relevant) None. ## Does this MR meet the acceptance criteria? - [X] [Changelog entry](https://docs.gitlab.com/ce/development/changelog.html) added - [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md) - [ ] API support added - Tests - [X] Added for this feature/bug - [ ] All builds are passing - [X] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html) - [X] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [X] Branch has no merge conflicts with `master` (if it does - rebase it please) - [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) ## What are the relevant issue numbers? #23977 #24380 See merge request !7525
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/lib/utils/common_utils.js13
-rw-r--r--app/assets/javascripts/merge_request_tabs.js.es65
2 files changed, 15 insertions, 3 deletions
diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js
index d83c41fae9d..19266479048 100644
--- a/app/assets/javascripts/lib/utils/common_utils.js
+++ b/app/assets/javascripts/lib/utils/common_utils.js
@@ -126,6 +126,19 @@
$('.has-tooltip, [data-toggle="tooltip"]').tooltip('destroy');
};
+ gl.utils.parseUrl = function (url) {
+ var parser = document.createElement('a');
+ parser.href = url;
+ return parser;
+ };
+
+ gl.utils.parseUrlPathname = function (url) {
+ var parsedUrl = gl.utils.parseUrl(url);
+ // parsedUrl.pathname will return an absolute path for Firefox and a relative path for IE11
+ // We have to make sure we always have an absolute path.
+ return parsedUrl.pathname.charAt(0) === '/' ? parsedUrl.pathname : '/' + parsedUrl.pathname;
+ };
+
gl.utils.isMetaKey = function(e) {
return e.metaKey || e.ctrlKey || e.altKey || e.shiftKey;
};
diff --git a/app/assets/javascripts/merge_request_tabs.js.es6 b/app/assets/javascripts/merge_request_tabs.js.es6
index 583fb9fc03d..3ec0f1fd613 100644
--- a/app/assets/javascripts/merge_request_tabs.js.es6
+++ b/app/assets/javascripts/merge_request_tabs.js.es6
@@ -225,11 +225,10 @@
// We extract pathname for the current Changes tab anchor href
// some pages like MergeRequestsController#new has query parameters on that anchor
- const url = document.createElement('a');
- url.href = source;
+ const urlPathname = gl.utils.parseUrlPathname(source);
this.ajaxGet({
- url: `${url.pathname}.json${location.search}`,
+ url: `${urlPathname}.json${location.search}`,
success: (data) => {
$('#diffs').html(data.html);