diff --git a/apps/files/controller/viewcontroller.php b/apps/files/controller/viewcontroller.php index 9fe3452133..ded6fd555d 100644 --- a/apps/files/controller/viewcontroller.php +++ b/apps/files/controller/viewcontroller.php @@ -137,7 +137,6 @@ class ViewController extends Controller { \OCP\Util::addscript('files', 'app'); \OCP\Util::addscript('files', 'file-upload'); \OCP\Util::addscript('files', 'newfilemenu'); - \OCP\Util::addscript('files', 'jquery.iframe-transport'); \OCP\Util::addscript('files', 'jquery.fileupload'); \OCP\Util::addscript('files', 'jquery-visibility'); \OCP\Util::addscript('files', 'fileinfomodel'); diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index fca69064cd..b88a7031db 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -504,7 +504,7 @@ OC.Upload = { //fetch response from iframe response = data.result[0].body.innerText; } - var result = $.parseJSON(response); + var result = JSON.parse(response); delete data.jqXHR; diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 79dc42da8f..ea0f0666b4 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -2593,7 +2593,7 @@ // fetch response from iframe response = data.result[0].body.innerText; } - var result=$.parseJSON(response); + var result = JSON.parse(response); if (typeof result[0] !== 'undefined' && result[0].status === 'success') { var file = result[0]; @@ -2906,7 +2906,7 @@ $(document).ready(function() { OCA.Files.FileList.lastAction(); } }); - $(window).unload(function () { + $(window).on('unload', function () { $(window).trigger('beforeunload'); }); diff --git a/apps/files/js/jquery.iframe-transport.js b/apps/files/js/jquery.iframe-transport.js deleted file mode 100644 index 5c9df77976..0000000000 --- a/apps/files/js/jquery.iframe-transport.js +++ /dev/null @@ -1,205 +0,0 @@ -/* - * jQuery Iframe Transport Plugin 1.7 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/*jslint unparam: true, nomen: true */ -/*global define, window, document */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - // Helper variable to create unique names for the transport iframes: - var counter = 0; - - // The iframe transport accepts three additional options: - // options.fileInput: a jQuery collection of file input fields - // options.paramName: the parameter name for the file form data, - // overrides the name property of the file input field(s), - // can be a string or an array of strings. - // options.formData: an array of objects with name and value properties, - // equivalent to the return data of .serializeArray(), e.g.: - // [{name: 'a', value: 1}, {name: 'b', value: 2}] - $.ajaxTransport('iframe', function (options) { - if (options.async) { - var form, - iframe, - addParamChar; - return { - send: function (_, completeCallback) { - form = $('
'); - form.attr('accept-charset', options.formAcceptCharset); - addParamChar = /\?/.test(options.url) ? '&' : '?'; - // XDomainRequest only supports GET and POST: - if (options.type === 'DELETE') { - options.url = options.url + addParamChar + '_method=DELETE'; - options.type = 'POST'; - } else if (options.type === 'PUT') { - options.url = options.url + addParamChar + '_method=PUT'; - options.type = 'POST'; - } else if (options.type === 'PATCH') { - options.url = options.url + addParamChar + '_method=PATCH'; - options.type = 'POST'; - } - // javascript:false as initial iframe src - // prevents warning popups on HTTPS in IE6. - // IE versions below IE8 cannot set the name property of - // elements that have already been added to the DOM, - // so we set the name along with the iframe HTML markup: - counter += 1; - iframe = $( - '' - ).bind('load', function () { - var fileInputClones, - paramNames = $.isArray(options.paramName) ? - options.paramName : [options.paramName]; - iframe - .unbind('load') - .bind('load', function () { - var response; - // Wrap in a try/catch block to catch exceptions thrown - // when trying to access cross-domain iframe contents: - try { - response = iframe.contents(); - // Google Chrome and Firefox do not throw an - // exception when calling iframe.contents() on - // cross-domain requests, so we unify the response: - if (!response.length || !response[0].firstChild) { - throw new Error(); - } - } catch (e) { - response = undefined; - } - // The complete callback returns the - // iframe content document as response object: - completeCallback( - 200, - 'success', - {'iframe': response} - ); - // Fix for IE endless progress bar activity bug - // (happens on form submits to iframe targets): - $('') - .appendTo(form); - window.setTimeout(function () { - // Removing the form in a setTimeout call - // allows Chrome's developer tools to display - // the response result - form.remove(); - }, 0); - }); - form - .prop('target', iframe.prop('name')) - .prop('action', options.url) - .prop('method', options.type); - if (options.formData) { - $.each(options.formData, function (index, field) { - $('') - .prop('name', field.name) - .val(field.value) - .appendTo(form); - }); - } - if (options.fileInput && options.fileInput.length && - options.type === 'POST') { - fileInputClones = options.fileInput.clone(); - // Insert a clone for each file input field: - options.fileInput.after(function (index) { - return fileInputClones[index]; - }); - if (options.paramName) { - options.fileInput.each(function (index) { - $(this).prop( - 'name', - paramNames[index] || options.paramName - ); - }); - } - // Appending the file input fields to the hidden form - // removes them from their original location: - form - .append(options.fileInput) - .prop('enctype', 'multipart/form-data') - // enctype must be set as encoding for IE: - .prop('encoding', 'multipart/form-data'); - } - form.submit(); - // Insert the file input fields at their original location - // by replacing the clones with the originals: - if (fileInputClones && fileInputClones.length) { - options.fileInput.each(function (index, input) { - var clone = $(fileInputClones[index]); - $(input).prop('name', clone.prop('name')); - clone.replaceWith(input); - }); - } - }); - form.append(iframe).appendTo(document.body); - }, - abort: function () { - if (iframe) { - // javascript:false as iframe src aborts the request - // and prevents warning popups on HTTPS in IE6. - // concat is used to avoid the "Script URL" JSLint error: - iframe - .unbind('load') - .prop('src', 'javascript'.concat(':false;')); - } - if (form) { - form.remove(); - } - } - }; - } - }); - - // The iframe transport returns the iframe content document as response. - // The following adds converters from iframe to text, json, html, xml - // and script. - // Please note that the Content-Type for JSON responses has to be text/plain - // or text/html, if the browser doesn't include application/json in the - // Accept header, else IE will show a download dialog. - // The Content-Type for XML responses on the other hand has to be always - // application/xml or text/xml, so IE properly parses the XML response. - // See also - // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation - $.ajaxSetup({ - converters: { - 'iframe text': function (iframe) { - return iframe && $(iframe[0].body).text(); - }, - 'iframe json': function (iframe) { - return iframe && $.parseJSON($(iframe[0].body).text()); - }, - 'iframe html': function (iframe) { - return iframe && $(iframe[0].body).html(); - }, - 'iframe xml': function (iframe) { - var xmlDoc = iframe && iframe[0]; - return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc : - $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || - $(xmlDoc.body).html()); - }, - 'iframe script': function (iframe) { - return iframe && $.globalEval($(iframe[0].body).text()); - } - } - }); - -})); \ No newline at end of file diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index ae00b01dca..cb7fe1103b 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -8,7 +8,6 @@ OCP\Util::addStyle('files_sharing', 'mobile'); OCP\Util::addScript('files_sharing', 'public'); OCP\Util::addScript('files', 'fileactions'); OCP\Util::addScript('files', 'fileactionsmenu'); -OCP\Util::addScript('files', 'jquery.iframe-transport'); OCP\Util::addScript('files', 'jquery.fileupload'); // JS required for folders diff --git a/apps/user_ldap/js/wizard/wizardTabGeneric.js b/apps/user_ldap/js/wizard/wizardTabGeneric.js index 21085e3a58..4415172a18 100644 --- a/apps/user_ldap/js/wizard/wizardTabGeneric.js +++ b/apps/user_ldap/js/wizard/wizardTabGeneric.js @@ -391,7 +391,7 @@ OCA = OCA || {}; */ _setCheckBox: function($element, value) { if(parseInt(value, 10) === 1) { - $element.attr('checked', 'checked'); + $element.prop('checked', 'checked'); } else { $element.removeAttr('checked'); } diff --git a/core/js/js.js b/core/js/js.js index 188c15c5db..ac1d582a9f 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -1337,9 +1337,6 @@ if(typeof localStorage !=='undefined' && localStorage !== null){ var item = localStorage.getItem(OC.localStorage.namespace+name); if(item === null) { return null; - } else if (typeof JSON === 'undefined') { - //fallback to jquery for IE6/7/8 - return $.parseJSON(item); } else { return JSON.parse(item); } @@ -1439,11 +1436,15 @@ function initCore() { */ moment.locale(OC.getLocale()); - if ($.browser.msie || !!navigator.userAgent.match(/Trident\/7\./)) { - // for IE10+ that don't have conditional comments - // and IE11 doesn't identify as MSIE any more... + var userAgent = window.navigator.userAgent; + var msie = userAgent.indexOf('MSIE '); + var trident = userAgent.indexOf('Trident/'); + var edge = userAgent.indexOf('Edge/'); + + if (msie > 0 || trident > 0) { + // (IE 10 or older) || IE 11 $('html').addClass('ie'); - } else if (!!navigator.userAgent.match(/Edge\/12/)) { + } else if (edge > 0) { // for edge $('html').addClass('edge'); } diff --git a/core/js/lostpassword.js b/core/js/lostpassword.js index df28c2308c..30d7b98f4e 100644 --- a/core/js/lostpassword.js +++ b/core/js/lostpassword.js @@ -81,12 +81,12 @@ OC.Lostpassword = { $('#password').parents('form').attr('action'), { password : $('#password').val(), - proceed: $('#encrypted-continue').attr('checked') ? 'true' : 'false' + proceed: $('#encrypted-continue').is(':checked') ? 'true' : 'false' }, OC.Lostpassword.resetDone ); } - if($('#encrypted-continue').attr('checked')) { + if($('#encrypted-continue').is(':checked')) { $('#reset-password #submit').hide(); $('#reset-password #float-spinner').removeClass('hidden'); } diff --git a/core/js/multiselect.js b/core/js/multiselect.js index 6d5c54ac0f..71cf3e10a6 100644 --- a/core/js/multiselect.js +++ b/core/js/multiselect.js @@ -120,7 +120,7 @@ label.text(element.text() || item); label.attr('title', element.text() || item); if(settings.checked.indexOf(item) !== -1 || checked) { - input.attr('checked', true); + input.prop('checked', true); } if(checked){ if(settings.singleSelect) { @@ -145,7 +145,7 @@ element.attr('selected','selected'); if(typeof settings.oncheck === 'function') { if(settings.oncheck(value)===false) { - $(this).attr('checked', false); + $(this).prop('checked', false); return; } } @@ -157,7 +157,7 @@ element.attr('selected',null); if(typeof settings.onuncheck === 'function') { if(settings.onuncheck(value)===false) { - $(this).attr('checked',true); + $(this).prop('checked',true); return; } } diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index e4edbf24c0..fd0b6d9d1b 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -268,11 +268,11 @@ if ($element.attr('name') === 'edit') { checked = $element.is(':checked'); // Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck - $($checkboxes).attr('checked', checked); + $($checkboxes).prop('checked', checked); } else { var numberChecked = $checkboxes.filter(':checked').length; checked = numberChecked > 0; - $('input[name="edit"]', $li).attr('checked', checked); + $('input[name="edit"]', $li).prop('checked', checked); } var permissions = OC.PERMISSION_READ; diff --git a/settings/admin.php b/settings/admin.php index cfb7eb5c54..b67331b22e 100644 --- a/settings/admin.php +++ b/settings/admin.php @@ -38,7 +38,6 @@ $template = new OC_Template('settings', 'admin', 'user'); $l = \OC::$server->getL10N('settings'); OC_Util::addScript('settings', 'certificates'); -OC_Util::addScript('files', 'jquery.iframe-transport'); OC_Util::addScript('files', 'jquery.fileupload'); \OC::$server->getEventDispatcher()->dispatch('OC\Settings\Admin::loadAdditionalScripts'); diff --git a/settings/js/admin.js b/settings/js/admin.js index 1bbb20efa0..34e258065c 100644 --- a/settings/js/admin.js +++ b/settings/js/admin.js @@ -38,7 +38,7 @@ $(document).ready(function(){ $('#backgroundjobs span.crondate').tipsy({gravity: 's', live: true}); $('#backgroundjobs input').change(function(){ - if($(this).attr('checked')){ + if($(this).is(':checked')){ var mode = $(this).val(); if (mode === 'ajax' || mode === 'webcron' || mode === 'cron') { OC.AppConfig.setValue('core', 'backgroundjobs_mode', mode); @@ -131,7 +131,7 @@ $(document).ready(function(){ $('#setting_smtphost').removeClass('hidden'); $('#mail_smtpsecure_label').removeClass('hidden'); $('#mail_smtpsecure').removeClass('hidden'); - if ($('#mail_smtpauth').attr('checked')) { + if ($('#mail_smtpauth').is(':checked')) { $('#mail_credentials').removeClass('hidden'); } } diff --git a/settings/js/apps.js b/settings/js/apps.js index 1b68701281..015236f957 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -193,15 +193,15 @@ OC.Settings.Apps = OC.Settings.Apps || { OC.Settings.Apps.isType(app, 'authentication') || OC.Settings.Apps.isType(app, 'logging') || OC.Settings.Apps.isType(app, 'prevent_group_restriction')) { page.find(".groups-enable").hide(); - page.find(".groups-enable__checkbox").attr('checked', null); + page.find(".groups-enable__checkbox").prop('checked', false); } else { page.find('#group_select').val((app.groups || []).join('|')); if (app.active) { if (app.groups.length) { OC.Settings.Apps.setupGroupsSelect(page.find('#group_select')); - page.find(".groups-enable__checkbox").attr('checked','checked'); + page.find(".groups-enable__checkbox").prop('checked', true); } else { - page.find(".groups-enable__checkbox").attr('checked', null); + page.find(".groups-enable__checkbox").prop('checked', false); } page.find(".groups-enable").show(); } else { @@ -289,7 +289,7 @@ OC.Settings.Apps = OC.Settings.Apps || { if (OC.Settings.Apps.isType(app, 'filesystem') || OC.Settings.Apps.isType(app, 'prelogin') || OC.Settings.Apps.isType(app, 'authentication') || OC.Settings.Apps.isType(app, 'logging')) { - element.parent().find(".groups-enable").attr('checked', null); + element.parent().find(".groups-enable").prop('checked', true); element.parent().find(".groups-enable").hide(); element.parent().find('#group_select').hide().val(null); } else { diff --git a/settings/js/certificates.js b/settings/js/certificates.js index f2a8e6b0af..7e62a4f515 100644 --- a/settings/js/certificates.js +++ b/settings/js/certificates.js @@ -24,10 +24,10 @@ $(document).ready(function () { }, success: function (data) { if (typeof data === 'string') { - data = $.parseJSON(data); + data = JSON.parse(data); } else if (data && data.length) { // fetch response from iframe - data = $.parseJSON(data[0].body.innerText); + data = JSON.parse(data[0].body.innerText); } if (!data || typeof(data) === 'string') { // IE8 iframe workaround comes here instead of fail() diff --git a/settings/js/personal.js b/settings/js/personal.js index bd13b7fd25..b6e8e2ff50 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -166,7 +166,7 @@ function cleanCropper () { function avatarResponseHandler (data) { if (typeof data === 'string') { - data = $.parseJSON(data); + data = JSON.parse(data); } var $warning = $('#avatar .warning'); $warning.hide(); @@ -248,10 +248,10 @@ $(document).ready(function () { done: function (e, data) { var response = data; if (typeof data.result === 'string') { - response = $.parseJSON(data.result); + response = JSON.parse(data.result); } else if (data.result && data.result.length) { // fetch response from iframe - response = $.parseJSON(data.result[0].body.innerText); + response = JSON.parse(data.result[0].body.innerText); } else { response = data.result; } diff --git a/settings/personal.php b/settings/personal.php index 90b8bb2fbb..6c2fccbec9 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -47,7 +47,6 @@ OC_Util::addScript('settings', 'certificates'); OC_Util::addStyle( 'settings', 'settings' ); \OC_Util::addVendorScript('strengthify/jquery.strengthify'); \OC_Util::addVendorStyle('strengthify/strengthify'); -\OC_Util::addScript('files', 'jquery.iframe-transport'); \OC_Util::addScript('files', 'jquery.fileupload'); if ($config->getSystemValue('enable_avatars', true) === true) { \OC_Util::addVendorScript('jcrop/js/jquery.Jcrop');