mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-03 11:55:52 +01:00
Added an option to reinstall a plugin/theme already installed #984
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
# v1.2.15
|
||||||
|
## 02/xx/2017
|
||||||
|
|
||||||
|
1. [](#new)
|
||||||
|
* Added an option to reinstall a plugin/theme already installed [#984](https://github.com/getgrav/grav-plugin-admin/issues/984)
|
||||||
|
|
||||||
# v1.2.14
|
# v1.2.14
|
||||||
## 02/17/2017
|
## 02/17/2017
|
||||||
|
|
||||||
|
|||||||
@@ -966,7 +966,7 @@ class AdminController extends AdminBaseController
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function taskInstallPackage()
|
protected function taskInstallPackage($reinstall = false)
|
||||||
{
|
{
|
||||||
$data = $this->post;
|
$data = $this->post;
|
||||||
$package = isset($data['package']) ? $data['package'] : '';
|
$package = isset($data['package']) ? $data['package'] : '';
|
||||||
@@ -994,12 +994,16 @@ class AdminController extends AdminBaseController
|
|||||||
'status' => 'success',
|
'status' => 'success',
|
||||||
'message' => $this->admin->translate(is_string($result)
|
'message' => $this->admin->translate(is_string($result)
|
||||||
? $result
|
? $result
|
||||||
: sprintf($this->admin->translate('PLUGIN_ADMIN.PACKAGE_X_INSTALLED_SUCCESSFULLY', null), $package))
|
: sprintf($this->admin->translate(
|
||||||
|
$reinstall ? 'PLUGIN_ADMIN.PACKAGE_X_REINSTALLED_SUCCESSFULLY' : 'PLUGIN_ADMIN.PACKAGE_X_INSTALLED_SUCCESSFULLY'
|
||||||
|
, null), $package))
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
$this->admin->json_response = [
|
$this->admin->json_response = [
|
||||||
'status' => 'error',
|
'status' => 'error',
|
||||||
'message' => $this->admin->translate('PLUGIN_ADMIN.INSTALLATION_FAILED')
|
'message' => $this->admin->translate(
|
||||||
|
$reinstall ? 'PLUGIN_ADMIN.REINSTALLATION_FAILED' : 'PLUGIN_ADMIN.INSTALLATION_FAILED'
|
||||||
|
)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1066,6 +1070,17 @@ class AdminController extends AdminBaseController
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle reinstalling a package
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function taskReinstallPackage()
|
||||||
|
{
|
||||||
|
$reinstall = true;
|
||||||
|
$this->taskInstallPackage($reinstall);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle the email password recovery procedure.
|
* Handle the email password recovery procedure.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -636,3 +636,11 @@ PLUGIN_ADMIN:
|
|||||||
OFFLINE_WARNING: "The connection to the GPM cannot be established"
|
OFFLINE_WARNING: "The connection to the GPM cannot be established"
|
||||||
CLI_COMPATIBILITY: "CLI Compatibility"
|
CLI_COMPATIBILITY: "CLI Compatibility"
|
||||||
CLI_COMPATIBILITY_HELP: "Ensures that only non-volatile Cache drivers are used (file, redis, memcache, etc.)"
|
CLI_COMPATIBILITY_HELP: "Ensures that only non-volatile Cache drivers are used (file, redis, memcache, etc.)"
|
||||||
|
REINSTALL_PLUGIN: "Reinstall Plugin"
|
||||||
|
REINSTALL_THEME: "Reinstall Theme"
|
||||||
|
REINSTALL_THE: "Reinstall the %"
|
||||||
|
CONFIRM_REINSTALL: "Are you sure you want to reinstall this %s?"
|
||||||
|
REINSTALLED_SUCCESSFULLY: "%s reinstalled successfully"
|
||||||
|
ERROR_REINSTALLING_THE: "Error reinstalling the %s"
|
||||||
|
PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Package %s reinstalled successfully"
|
||||||
|
REINSTALLATION_FAILED: "Reinstallation failed"
|
||||||
@@ -32,6 +32,11 @@ $(document).on('click', '[data-plugin-action="remove-package"]', (event) => {
|
|||||||
packages.handleRemovingPackage('plugin', event);
|
packages.handleRemovingPackage('plugin', event);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Reinstall plugin
|
||||||
|
$(document).on('click', '[data-plugin-action="reinstall-package"]', (event) => {
|
||||||
|
packages.handleReinstallPackage('plugin', event);
|
||||||
|
});
|
||||||
|
|
||||||
$(document).on('click', '[data-plugin-action="remove-dependency-package"]', (event) => {
|
$(document).on('click', '[data-plugin-action="remove-dependency-package"]', (event) => {
|
||||||
packages.handleRemovingDependency('plugin', event);
|
packages.handleRemovingDependency('plugin', event);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,6 +15,11 @@ $(document).on('click', '[data-theme-action="remove-package"]', (event) => {
|
|||||||
packages.handleRemovingPackage('theme', event);
|
packages.handleRemovingPackage('theme', event);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Reinstall theme
|
||||||
|
$(document).on('click', '[data-plugin-action="reinstall-package"]', (event) => {
|
||||||
|
packages.handleReinstallPackage('theme', event);
|
||||||
|
});
|
||||||
|
|
||||||
$(document).on('click', '[data-theme-action="remove-dependency-package"]', (event) => {
|
$(document).on('click', '[data-theme-action="remove-dependency-package"]', (event) => {
|
||||||
packages.handleRemovingDependency('theme', event);
|
packages.handleRemovingDependency('theme', event);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ export default class Updates {
|
|||||||
return this.maintenance('hide');
|
return this.maintenance('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let is_single_package_latest = true;
|
||||||
let map = ['plugins', 'themes'];
|
let map = ['plugins', 'themes'];
|
||||||
let singles = ['plugin', 'theme'];
|
let singles = ['plugin', 'theme'];
|
||||||
let { plugins, themes } = this.payload.resources;
|
let { plugins, themes } = this.payload.resources;
|
||||||
@@ -145,18 +146,24 @@ export default class Updates {
|
|||||||
if (details.length) {
|
if (details.length) {
|
||||||
let releaseType = resources[item].type === 'testing' ? '<span class="gpm-testing">test release</span>' : '';
|
let releaseType = resources[item].type === 'testing' ? '<span class="gpm-testing">test release</span>' : '';
|
||||||
details.html(`
|
details.html(`
|
||||||
<p>
|
<p>
|
||||||
<a href="#" class="button button-small secondary" data-remodal-target="update-packages" data-packages-slugs="${item}" data-${singles[index]}-action="start-package-installation">${translations.PLUGIN_ADMIN.UPDATE} ${singles[index].charAt(0).toUpperCase() + singles[index].substr(1).toLowerCase()}</a>
|
<a href="#" class="button button-small secondary" data-remodal-target="update-packages" data-packages-slugs="${item}" data-${singles[index]}-action="start-package-installation">${translations.PLUGIN_ADMIN.UPDATE} ${singles[index].charAt(0).toUpperCase() + singles[index].substr(1).toLowerCase()}</a>
|
||||||
<i class="fa fa-bullhorn"></i>
|
<i class="fa fa-bullhorn"></i>
|
||||||
<strong>v${resources[item].available}</strong> ${releaseType} ${translations.PLUGIN_ADMIN.OF_THIS} ${singles[index]} ${translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE}!
|
<strong>v${resources[item].available}</strong> ${releaseType} ${translations.PLUGIN_ADMIN.OF_THIS} ${singles[index]} ${translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE}!
|
||||||
</p>
|
</p>
|
||||||
`).css('display', 'block');
|
`).css('display', 'block');
|
||||||
|
|
||||||
|
is_single_package_latest = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$('[data-update-packages]').removeClass('hidden');
|
$('[data-update-packages]').removeClass('hidden');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (is_single_package_latest) {
|
||||||
|
$('.button-reinstall-package').removeClass('hidden');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,10 @@ class Packages {
|
|||||||
return `${Packages.getTaskUrl(type, 'removePackage')}`;
|
return `${Packages.getTaskUrl(type, 'removePackage')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getReinstallPackageUrl(type) {
|
||||||
|
return `${Packages.getTaskUrl(type, 'reinstallPackage')}`;
|
||||||
|
}
|
||||||
|
|
||||||
static getGetPackagesDependenciesUrl(type) {
|
static getGetPackagesDependenciesUrl(type) {
|
||||||
return `${Packages.getTaskUrl(type, 'getPackagesDependencies')}`;
|
return `${Packages.getTaskUrl(type, 'getPackagesDependencies')}`;
|
||||||
}
|
}
|
||||||
@@ -145,6 +149,30 @@ class Packages {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reinstallPackage(type, slug) {
|
||||||
|
let url = Packages.getReinstallPackageUrl(type);
|
||||||
|
|
||||||
|
request(url, {
|
||||||
|
method: 'post',
|
||||||
|
body: {
|
||||||
|
package: slug
|
||||||
|
}
|
||||||
|
}, (response) => {
|
||||||
|
if (response.status === 'success') {
|
||||||
|
$('.reinstall-package-confirm').addClass('hidden');
|
||||||
|
$('.reinstall-package-done').removeClass('hidden');
|
||||||
|
|
||||||
|
// The package was reinstalled. When the modal closes, move to the packages list
|
||||||
|
$(document).on('closing', '[data-remodal-id="reinstall-package"]', () => {
|
||||||
|
Packages.getBackToList(type);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('.reinstall-package-confirm').addClass('hidden');
|
||||||
|
$('.reinstall-package-error').removeClass('hidden');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
removeDependency(type, slug, button) {
|
removeDependency(type, slug, button) {
|
||||||
let url = Packages.getRemovePackageUrl(type);
|
let url = Packages.getRemovePackageUrl(type);
|
||||||
|
|
||||||
@@ -401,6 +429,14 @@ class Packages {
|
|||||||
this.removePackage(type, slug);
|
this.removePackage(type, slug);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleReinstallPackage(type, event) {
|
||||||
|
let slug = $(event.target).attr('data-packages-slugs');
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
this.reinstallPackage(type, slug);
|
||||||
|
}
|
||||||
|
|
||||||
handleRemovingDependency(type, event) {
|
handleRemovingDependency(type, event) {
|
||||||
let slug = $(event.target).attr('data-dependency-slug');
|
let slug = $(event.target).attr('data-dependency-slug');
|
||||||
let button = $(event.target);
|
let button = $(event.target);
|
||||||
|
|||||||
32
themes/grav/js/admin.min.js
vendored
32
themes/grav/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
44
themes/grav/js/vendor.min.js
vendored
44
themes/grav/js/vendor.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -0,0 +1,31 @@
|
|||||||
|
<div class="remodal"
|
||||||
|
data-remodal-id="reinstall-package"
|
||||||
|
data-remodal-options="hashTracking: false">
|
||||||
|
<form>
|
||||||
|
<div class="reinstall-package-confirm">
|
||||||
|
<h1>{{ "PLUGIN_ADMIN.REINSTALL_THE"|tu([("PLUGIN_ADMIN." ~ type|upper)|tu]) }}</h1>
|
||||||
|
<p class="bigger">
|
||||||
|
{{ "PLUGIN_ADMIN.CONFIRM_REINSTALL"|tu([("PLUGIN_ADMIN." ~ type|upper)|tu]) }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="button-bar">
|
||||||
|
<button data-remodal-action="cancel" class="button secondary remodal-cancel"><i class="fa fa-fw fa-close"></i> {{ "PLUGIN_ADMIN.CANCEL"|tu }}</button>
|
||||||
|
<button data-{{ type }}-action="reinstall-package" data-packages-slugs="{{ package.slug }}" class="button"><i class="fa fa-fw fa-check"></i> {{ "PLUGIN_ADMIN.CONTINUE"|tu }}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="reinstall-package-done hidden">
|
||||||
|
<h1>{{ "PLUGIN_ADMIN.REINSTALLED_SUCCESSFULLY"|tu([("PLUGIN_ADMIN." ~ type|upper)|tu]) }}</h1>
|
||||||
|
<div class="button-bar">
|
||||||
|
<a href="{{ base_url_relative ~ '/' ~ type ~ 's' }}" class="button secondary"><i class="fa fa-fw fa-close"></i> {{ "PLUGIN_ADMIN.CLOSE"|tu }}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="reinstall-package-error hidden">
|
||||||
|
<h1>{{ "PLUGIN_ADMIN.ERROR_REINSTALLING_THE"|tu([("PLUGIN_ADMIN." ~ type|upper)|tu]) }}</h1>
|
||||||
|
<div class="button-bar">
|
||||||
|
<button data-remodal-action="cancel" class="button secondary remodal-cancel"><i class="fa fa-fw fa-close"></i> {{ "PLUGIN_ADMIN.CANCEL"|tu }}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
@@ -34,6 +34,7 @@
|
|||||||
{% if (plugin.form.fields.enabled.type != 'hidden' and plugin.form.fields.tabs.fields.login.fields.enabled.type != 'hidden') %}
|
{% if (plugin.form.fields.enabled.type != 'hidden' and plugin.form.fields.tabs.fields.login.fields.enabled.type != 'hidden') %}
|
||||||
<div class="button-bar danger">
|
<div class="button-bar danger">
|
||||||
<span class="danger-zone"></span>
|
<span class="danger-zone"></span>
|
||||||
|
<a class="button hidden button-reinstall-package" href="#" data-remodal-target="reinstall-package"><i class="fa fa-fw fa-repeat"></i> {{ "PLUGIN_ADMIN.REINSTALL_PLUGIN"|tu }}</a>
|
||||||
<a class="button" href="#" data-remodal-target="remove-package"><i class="fa fa-fw fa-warning"></i> {{ "PLUGIN_ADMIN.REMOVE_PLUGIN"|tu }}</a>
|
<a class="button" href="#" data-remodal-target="remove-package"><i class="fa fa-fw fa-warning"></i> {{ "PLUGIN_ADMIN.REMOVE_PLUGIN"|tu }}</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -56,3 +57,4 @@
|
|||||||
{% include 'partials/modal-add-package.html.twig' with { type: 'plugin' } %}
|
{% include 'partials/modal-add-package.html.twig' with { type: 'plugin' } %}
|
||||||
{% include 'partials/modal-update-packages.html.twig' with { type: 'plugin' } %}
|
{% include 'partials/modal-update-packages.html.twig' with { type: 'plugin' } %}
|
||||||
{% include 'partials/modal-remove-package.html.twig' with { type: 'plugin', package: plugin } %}
|
{% include 'partials/modal-remove-package.html.twig' with { type: 'plugin', package: plugin } %}
|
||||||
|
{% include 'partials/modal-reinstall-package.html.twig' with { type: 'plugin', package: plugin } %}
|
||||||
|
|||||||
@@ -101,6 +101,7 @@
|
|||||||
{% if (config.get('system.pages.theme') != admin.route) %}
|
{% if (config.get('system.pages.theme') != admin.route) %}
|
||||||
<div class="button-bar danger">
|
<div class="button-bar danger">
|
||||||
<span class="danger-zone"></span>
|
<span class="danger-zone"></span>
|
||||||
|
<a class="button hidden button-reinstall-package" href="#" data-remodal-target="reinstall-package"><i class="fa fa-fw fa-repeat"></i> {{ "PLUGIN_ADMIN.REINSTALL_THEME"|tu }}</a>
|
||||||
<a class="button" href="#" data-remodal-target="remove-package"><i class="fa fa-fw fa-warning"></i> {{ "PLUGIN_ADMIN.REMOVE_THEME"|tu }}</a>
|
<a class="button" href="#" data-remodal-target="remove-package"><i class="fa fa-fw fa-warning"></i> {{ "PLUGIN_ADMIN.REMOVE_THEME"|tu }}</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -114,3 +115,4 @@
|
|||||||
{% include 'partials/modal-remove-package.html.twig' with { type: 'theme', package: theme } %}
|
{% include 'partials/modal-remove-package.html.twig' with { type: 'theme', package: theme } %}
|
||||||
{% include 'partials/modal-add-package.html.twig' with { type: 'theme' } %}
|
{% include 'partials/modal-add-package.html.twig' with { type: 'theme' } %}
|
||||||
{% include 'partials/modal-update-packages.html.twig' with { type: 'theme' } %}
|
{% include 'partials/modal-update-packages.html.twig' with { type: 'theme' } %}
|
||||||
|
{% include 'partials/modal-reinstall-package.html.twig' with { type: 'theme', package: theme } %}
|
||||||
|
|||||||
Reference in New Issue
Block a user