mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-10-26 07:46:31 +01:00
fix for broken GPM + fix for intermitten ajax error
Signed-off-by: Andy Miller <rhuk@mac.com>
This commit is contained in:
@@ -13,8 +13,15 @@ const DOMBehaviors = {
|
||||
|
||||
preventUnload() {
|
||||
let selector = '[name="task"][value^="save"], [data-delete-action], [data-flex-safe-action]';
|
||||
if ($._data(window, 'events') && ($._data(window, 'events').beforeunload || []).filter((event) => event.namespace === '_grav').length) {
|
||||
return;
|
||||
// jQuery 3.x removed $._data, use $._data only if available (jQuery < 3.0)
|
||||
// or check with jQuery's internal data store for jQuery >= 3.0
|
||||
try {
|
||||
const hasData = typeof $._data === 'function';
|
||||
if (hasData && $._data(window, 'events') && ($._data(window, 'events').beforeunload || []).filter((event) => event.namespace === '_grav').length) {
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
// $._data not available in jQuery 3.x+, continue with adding event handler
|
||||
}
|
||||
|
||||
// Allow some elements to leave the page without native confirmation
|
||||
@@ -33,8 +40,15 @@ const DOMBehaviors = {
|
||||
preventClickAway() {
|
||||
let selector = 'a[href]:not([href^="#"]):not([target="_blank"]):not([href^="javascript:"])';
|
||||
|
||||
if ($._data($(selector).get(0), 'events') && ($._data($(selector).get(0), 'events').click || []).filter((event) => event.namespace === '_grav')) {
|
||||
return;
|
||||
// jQuery 3.x removed $._data, use $._data only if available (jQuery < 3.0)
|
||||
try {
|
||||
const hasData = typeof $._data === 'function';
|
||||
const element = $(selector).get(0);
|
||||
if (element && hasData && $._data(element, 'events') && ($._data(element, 'events').click || []).filter((event) => event.namespace === '_grav')) {
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
// $._data not available in jQuery 3.x+, continue with adding event handler
|
||||
}
|
||||
|
||||
// Prevent clicking away if the form state is dirty
|
||||
|
||||
@@ -7,7 +7,18 @@ import { Instance as Update } from './index';
|
||||
// Dashboard update and Grav update
|
||||
$(document).on('click.remodal', '[data-remodal-id="update-grav"] [data-remodal-action="confirm"]', () => {
|
||||
const element = $('#grav-update-button');
|
||||
element.html(`${translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT} ${formatBytes(Update.payload.grav.assets['grav-update'].size)}..`);
|
||||
|
||||
// Safely get the file size with fallback
|
||||
let sizeText = '';
|
||||
if (Update.payload &&
|
||||
Update.payload.grav &&
|
||||
Update.payload.grav.assets &&
|
||||
Update.payload.grav.assets['grav-update'] &&
|
||||
Update.payload.grav.assets['grav-update'].size) {
|
||||
sizeText = ` ${formatBytes(Update.payload.grav.assets['grav-update'].size)}`;
|
||||
}
|
||||
|
||||
element.html(`${translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT}${sizeText}..`);
|
||||
|
||||
element.attr('disabled', 'disabled').find('> .fa').removeClass('fa-cloud-download').addClass('fa-refresh fa-spin');
|
||||
|
||||
|
||||
39
themes/grav/js/admin.min.js
vendored
39
themes/grav/js/admin.min.js
vendored
@@ -1692,7 +1692,13 @@ function formatBytes(bytes, decimals) {
|
||||
// Dashboard update and Grav update
|
||||
external_jQuery_default()(document).on('click.remodal', '[data-remodal-id="update-grav"] [data-remodal-action="confirm"]', function () {
|
||||
var element = external_jQuery_default()('#grav-update-button');
|
||||
element.html("".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT, " ").concat(formatBytes(updates_Instance.payload.grav.assets['grav-update'].size), ".."));
|
||||
|
||||
// Safely get the file size with fallback
|
||||
var sizeText = '';
|
||||
if (updates_Instance.payload && updates_Instance.payload.grav && updates_Instance.payload.grav.assets && updates_Instance.payload.grav.assets['grav-update'] && updates_Instance.payload.grav.assets['grav-update'].size) {
|
||||
sizeText = " ".concat(formatBytes(updates_Instance.payload.grav.assets['grav-update'].size));
|
||||
}
|
||||
element.html("".concat(external_GravAdmin_namespaceObject.translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT).concat(sizeText, ".."));
|
||||
element.attr('disabled', 'disabled').find('> .fa').removeClass('fa-cloud-download').addClass('fa-refresh fa-spin');
|
||||
utils_request(updates_Instance.updateURL, function (response) {
|
||||
if (response.type === 'updategrav') {
|
||||
@@ -4225,10 +4231,17 @@ var DOMBehaviors = {
|
||||
},
|
||||
preventUnload: function preventUnload() {
|
||||
var selector = '[name="task"][value^="save"], [data-delete-action], [data-flex-safe-action]';
|
||||
if (external_jQuery_default()._data(window, 'events') && (external_jQuery_default()._data(window, 'events').beforeunload || []).filter(function (event) {
|
||||
return event.namespace === '_grav';
|
||||
}).length) {
|
||||
return;
|
||||
// jQuery 3.x removed $._data, use $._data only if available (jQuery < 3.0)
|
||||
// or check with jQuery's internal data store for jQuery >= 3.0
|
||||
try {
|
||||
var hasData = typeof (external_jQuery_default())._data === 'function';
|
||||
if (hasData && external_jQuery_default()._data(window, 'events') && (external_jQuery_default()._data(window, 'events').beforeunload || []).filter(function (event) {
|
||||
return event.namespace === '_grav';
|
||||
}).length) {
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
// $._data not available in jQuery 3.x+, continue with adding event handler
|
||||
}
|
||||
|
||||
// Allow some elements to leave the page without native confirmation
|
||||
@@ -4245,10 +4258,18 @@ var DOMBehaviors = {
|
||||
},
|
||||
preventClickAway: function preventClickAway() {
|
||||
var selector = 'a[href]:not([href^="#"]):not([target="_blank"]):not([href^="javascript:"])';
|
||||
if (external_jQuery_default()._data(external_jQuery_default()(selector).get(0), 'events') && (external_jQuery_default()._data(external_jQuery_default()(selector).get(0), 'events').click || []).filter(function (event) {
|
||||
return event.namespace === '_grav';
|
||||
})) {
|
||||
return;
|
||||
|
||||
// jQuery 3.x removed $._data, use $._data only if available (jQuery < 3.0)
|
||||
try {
|
||||
var hasData = typeof (external_jQuery_default())._data === 'function';
|
||||
var element = external_jQuery_default()(selector).get(0);
|
||||
if (element && hasData && external_jQuery_default()._data(element, 'events') && (external_jQuery_default()._data(element, 'events').click || []).filter(function (event) {
|
||||
return event.namespace === '_grav';
|
||||
})) {
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
// $._data not available in jQuery 3.x+, continue with adding event handler
|
||||
}
|
||||
|
||||
// Prevent clicking away if the form state is dirty
|
||||
|
||||
Reference in New Issue
Block a user