Move the bulk of plugins removal to utils/packages.js

This commit is contained in:
Flavio Copes
2016-03-06 10:07:58 +01:00
parent cf6bfff8cc
commit 1f890c2a7d
2 changed files with 81 additions and 63 deletions

View File

@@ -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);
});

View 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();