diff --git a/django/contrib/admin/static/admin/js/SelectBox.js b/django/contrib/admin/static/admin/js/SelectBox.js index 68e29d58283..0e92836414e 100644 --- a/django/contrib/admin/static/admin/js/SelectBox.js +++ b/django/contrib/admin/static/admin/js/SelectBox.js @@ -114,16 +114,11 @@ SelectBox.cache[id].sort(function(a, b) { a = a.text.toLowerCase(); b = b.text.toLowerCase(); - try { - if (a > b) { - return 1; - } - if (a < b) { - return -1; - } + if (a > b) { + return 1; } - catch (e) { - // silently fail on IE 'unknown' exception + if (a < b) { + return -1; } return 0; } ); diff --git a/django/contrib/admin/static/admin/js/SelectFilter2.js b/django/contrib/admin/static/admin/js/SelectFilter2.js index c1002b9c049..72ecc83aada 100644 --- a/django/contrib/admin/static/admin/js/SelectFilter2.js +++ b/django/contrib/admin/static/admin/js/SelectFilter2.js @@ -166,15 +166,9 @@ Requires jQuery, core.js, and SelectBox.js. }, any_selected: function(field) { var any_selected = false; - try { - // Temporarily add the required attribute and check validity. - // This is much faster in WebKit browsers than the fallback. - field.attr('required', 'required'); - any_selected = field.is(':valid'); - } catch (e) { - // Browsers that don't support :valid (IE < 10) - any_selected = field.find('option:selected').length > 0; - } + // Temporarily add the required attribute and check validity. + field.attr('required', 'required'); + any_selected = field.is(':valid'); field.removeAttr('required'); return any_selected; }, diff --git a/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js b/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js index f04dbc51bf9..6470d0fbf61 100644 --- a/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js +++ b/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js @@ -203,8 +203,6 @@ else { // since style's width is in em, it'd be tough to calculate // px value of it. let's use an estimated px for now - // TODO: IE returns wrong value for findPosX when in rtl mode - // (it returns as it was left aligned), needs to be fixed. clock_box.style.left = findPosX(clock_link) - 110 + 'px'; } clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; @@ -376,8 +374,6 @@ else { // since style's width is in em, it'd be tough to calculate // px value of it. let's use an estimated px for now - // TODO: IE returns wrong value for findPosX when in rtl mode - // (it returns as it was left aligned), needs to be fixed. cal_box.style.left = findPosX(cal_link) - 180 + 'px'; } cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; diff --git a/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js b/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js index 4f507be4b2c..74298048fa6 100644 --- a/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js +++ b/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js @@ -5,25 +5,8 @@ (function($) { 'use strict'; - // IE doesn't accept periods or dashes in the window name, but the element IDs - // we use to generate popup window names may contain them, therefore we map them - // to allowed characters in a reversible way so that we can locate the correct - // element when the popup window is dismissed. - function id_to_windowname(text) { - text = text.replace(/\./g, '__dot__'); - text = text.replace(/\-/g, '__dash__'); - return text; - } - - function windowname_to_id(text) { - text = text.replace(/__dot__/g, '.'); - text = text.replace(/__dash__/g, '-'); - return text; - } - function showAdminPopup(triggeringLink, name_regexp, add_popup) { var name = triggeringLink.id.replace(name_regexp, ''); - name = id_to_windowname(name); var href = triggeringLink.href; if (add_popup) { if (href.indexOf('?') === -1) { @@ -42,7 +25,7 @@ } function dismissRelatedLookupPopup(win, chosenId) { - var name = windowname_to_id(win.name); + var name = win.name; var elem = document.getElementById(name); if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) { elem.value += ',' + chosenId; @@ -74,7 +57,7 @@ } function dismissAddRelatedObjectPopup(win, newId, newRepr) { - var name = windowname_to_id(win.name); + var name = win.name; var elem = document.getElementById(name); if (elem) { var elemName = elem.nodeName.toUpperCase(); @@ -99,7 +82,7 @@ } function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) { - var id = windowname_to_id(win.name).replace(/^edit_/, ''); + var id = win.name.replace(/^edit_/, ''); var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); var selects = $(selectsSelector); selects.find('option').each(function() { @@ -118,7 +101,7 @@ } function dismissDeleteRelatedObjectPopup(win, objId) { - var id = windowname_to_id(win.name).replace(/^delete_/, ''); + var id = win.name.replace(/^delete_/, ''); var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); var selects = $(selectsSelector); selects.find('option').each(function() { @@ -129,10 +112,6 @@ win.close(); } - // Global for testing purposes - window.id_to_windowname = id_to_windowname; - window.windowname_to_id = windowname_to_id; - window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup; window.dismissRelatedLookupPopup = dismissRelatedLookupPopup; window.showRelatedObjectPopup = showRelatedObjectPopup; diff --git a/django/contrib/admin/static/admin/js/core.js b/django/contrib/admin/static/admin/js/core.js index a90d185d7af..f575b2c186b 100644 --- a/django/contrib/admin/static/admin/js/core.js +++ b/django/contrib/admin/static/admin/js/core.js @@ -1,9 +1,5 @@ // Core javascript helper functions -// basic browser identification & version -var isOpera = (navigator.userAgent.indexOf("Opera") >= 0) && parseFloat(navigator.appVersion); -var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); - // quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); function quickElement() { 'use strict'; @@ -37,12 +33,8 @@ function findPosX(obj) { var curleft = 0; if (obj.offsetParent) { while (obj.offsetParent) { - curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); - obj = obj.offsetParent; - } - // IE offsetParent does not include the top-level - if (isIE && obj.parentElement) { curleft += obj.offsetLeft - obj.scrollLeft; + obj = obj.offsetParent; } } else if (obj.x) { curleft += obj.x; @@ -55,12 +47,8 @@ function findPosY(obj) { var curtop = 0; if (obj.offsetParent) { while (obj.offsetParent) { - curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); - obj = obj.offsetParent; - } - // IE offsetParent does not include the top-level - if (isIE && obj.parentElement) { curtop += obj.offsetTop - obj.scrollTop; + obj = obj.offsetParent; } } else if (obj.y) { curtop += obj.y; diff --git a/js_tests/admin/RelatedObjectLookups.test.js b/js_tests/admin/RelatedObjectLookups.test.js deleted file mode 100644 index 8585e9ada3e..00000000000 --- a/js_tests/admin/RelatedObjectLookups.test.js +++ /dev/null @@ -1,16 +0,0 @@ -/* global QUnit, id_to_windowname, - windowname_to_id */ -/* eslint strict: 0 */ -'use strict'; - -QUnit.module('admin.RelatedObjectLookups'); - -QUnit.test('id_to_windowname', function(assert) { - assert.equal(id_to_windowname('.test'), '__dot__test'); - assert.equal(id_to_windowname('misc-test'), 'misc__dash__test'); -}); - -QUnit.test('windowname_to_id', function(assert) { - assert.equal(windowname_to_id('__dot__test'), '.test'); - assert.equal(windowname_to_id('misc__dash__test'), 'misc-test'); -}); diff --git a/js_tests/tests.html b/js_tests/tests.html index 0bce71ab29c..c247abc755d 100644 --- a/js_tests/tests.html +++ b/js_tests/tests.html @@ -90,7 +90,6 @@ -