mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2026-04-14 08:37:36 +02:00
Move the bulk of plugins removal to utils/packages.js
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable */
|
||||
import $ from 'jquery';
|
||||
import { config } from 'grav-config';
|
||||
import request from '../utils/request';
|
||||
import packages from '../utils/packages';
|
||||
|
||||
// Plugins sliders details
|
||||
$('.gpm-name, .gpm-actions').on('click', function(e) {
|
||||
@@ -27,80 +27,21 @@ $('.gpm-name, .gpm-actions').on('click', function(e) {
|
||||
});
|
||||
|
||||
// Removing plugin flow
|
||||
|
||||
// Step 1: remove the actual plugin that I want to remove
|
||||
$(document).on('click', '[data-plugin-action="remove-plugin"]', (event) => {
|
||||
let slug = $(event.target).data('plugin-slug');
|
||||
let url = `${config.base_url_relative}/plugins.json/task${config.param_sep}removePlugin/admin-nonce${config.param_sep}${config.admin_nonce}`;
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
request(url, {
|
||||
method: 'post',
|
||||
body: {
|
||||
plugin: slug
|
||||
}
|
||||
}, (response) => {
|
||||
if (response.status == 'success') {
|
||||
$('.remove-plugin-confirm').addClass('hidden');
|
||||
|
||||
if (response.dependencies.length > 0) {
|
||||
addDependenciesToList(response.dependencies);
|
||||
$('.remove-plugin-dependencies').removeClass('hidden');
|
||||
} else {
|
||||
$('.remove-plugin-done').removeClass('hidden');
|
||||
getBackToPluginsList();
|
||||
}
|
||||
|
||||
//The plugin was removed. When the modal closes, move to the plugins list
|
||||
$(document).on('closing', '[data-remodal-id="delete-plugin"]', function (e) {
|
||||
getBackToPluginsList();
|
||||
});
|
||||
}
|
||||
});
|
||||
packages.removePackage(slug);
|
||||
});
|
||||
|
||||
var getBackToPluginsList = function getBackToPluginsList() {
|
||||
window.location.href = `${config.base_url_relative}/plugins`;
|
||||
};
|
||||
|
||||
var addDependencyToList = function addDependencyToList(dependency, slug = '') {
|
||||
var container = $('.plugin-dependencies-container');
|
||||
var text = `${dependency} <a href="#" class="button" data-dependency-slug="${dependency}" data-plugin-action="remove-dependency">Remove</a>`;
|
||||
if (slug) {
|
||||
text += ` (was needed by ${slug})`;
|
||||
}
|
||||
|
||||
container.append(`<li>${text}</li>`);
|
||||
};
|
||||
|
||||
var addDependenciesToList = function addDependenciesToList(dependencies, slug = '') {
|
||||
dependencies.forEach(function(dependency) {
|
||||
addDependencyToList(dependency, slug);
|
||||
});
|
||||
};
|
||||
|
||||
$(document).on('click', '[data-plugin-action="remove-dependency"]', (event) => {
|
||||
let slug = $(event.target).data('dependency-slug');
|
||||
let url = `${config.base_url_relative}/plugins.json/task${config.param_sep}removePlugin/admin-nonce${config.param_sep}${config.admin_nonce}`;
|
||||
let button = $(event.target);
|
||||
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
request(url, {
|
||||
method: 'post',
|
||||
body: {
|
||||
plugin: slug
|
||||
}
|
||||
}, (response) => {
|
||||
if (response.status == 'success') {
|
||||
$(event.target).removeClass('button');
|
||||
$(event.target).replaceWith($('<span>Removed successfully</span>'));
|
||||
|
||||
if (response.dependencies.length > 0) {
|
||||
addDependenciesToList(response.dependencies, slug);
|
||||
}
|
||||
}
|
||||
});
|
||||
packages.removeDependency(slug, button);
|
||||
});
|
||||
|
||||
77
themes/grav/app/utils/packages.js
Normal file
77
themes/grav/app/utils/packages.js
Normal file
@@ -0,0 +1,77 @@
|
||||
/* eslint-disable */
|
||||
import { config } from 'grav-config';
|
||||
import request from '../utils/request';
|
||||
|
||||
class Packages {
|
||||
|
||||
getBackToPluginsList() {
|
||||
window.location.href = `${config.base_url_relative}/plugins`;
|
||||
}
|
||||
|
||||
addDependencyToList(dependency, slug = '') {
|
||||
let container = $('.plugin-dependencies-container');
|
||||
let text = `${dependency} <a href="#" class="button" data-dependency-slug="${dependency}" data-plugin-action="remove-dependency">Remove</a>`;
|
||||
|
||||
if (slug) {
|
||||
text += ` (was needed by ${slug})`;
|
||||
}
|
||||
|
||||
container.append(`<li>${text}</li>`);
|
||||
}
|
||||
|
||||
addDependenciesToList(dependencies, slug = '') {
|
||||
dependencies.forEach((dependency) => {
|
||||
this.addDependencyToList(dependency, slug);
|
||||
});
|
||||
}
|
||||
|
||||
removePackage(slug) {
|
||||
let url = `${config.base_url_relative}/plugins.json/task${config.param_sep}removePlugin/admin-nonce${config.param_sep}${config.admin_nonce}`;
|
||||
|
||||
request(url, {
|
||||
method: 'post',
|
||||
body: {
|
||||
plugin: slug
|
||||
}
|
||||
}, (response) => {
|
||||
if (response.status == 'success') {
|
||||
$('.remove-plugin-confirm').addClass('hidden');
|
||||
|
||||
if (response.dependencies.length > 0) {
|
||||
this.addDependenciesToList(response.dependencies);
|
||||
$('.remove-plugin-dependencies').removeClass('hidden');
|
||||
} else {
|
||||
$('.remove-plugin-done').removeClass('hidden');
|
||||
this.getBackToPluginsList();
|
||||
}
|
||||
|
||||
//The plugin was removed. When the modal closes, move to the plugins list
|
||||
$(document).on('closing', '[data-remodal-id="delete-plugin"]', (e) => {
|
||||
this.getBackToPluginsList();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
removeDependency(slug, button) {
|
||||
let url = `${config.base_url_relative}/plugins.json/task${config.param_sep}removePlugin/admin-nonce${config.param_sep}${config.admin_nonce}`;
|
||||
|
||||
request(url, {
|
||||
method: 'post',
|
||||
body: {
|
||||
plugin: slug
|
||||
}
|
||||
}, (response) => {
|
||||
if (response.status == 'success') {
|
||||
button.removeClass('button');
|
||||
button.replaceWith($('<span>Removed successfully</span>'));
|
||||
|
||||
if (response.dependencies.length > 0) {
|
||||
this.addDependenciesToList(response.dependencies, slug);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new Packages();
|
||||
Reference in New Issue
Block a user