plugin updater: show changes before updating
This commit is contained in:
parent
7f2fe465b0
commit
e2cbb54b2c
|
@ -1174,7 +1174,7 @@ class Pref_Prefs extends Handler_Protected {
|
||||||
$root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
|
$root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
|
||||||
|
|
||||||
if (!empty($plugin_name)) {
|
if (!empty($plugin_name)) {
|
||||||
$rv = ["plugin" => $plugin_name, "rv" => self::_plugin_needs_update($root_dir, $plugin_name)];
|
$rv = [["plugin" => $plugin_name, "rv" => self::_plugin_needs_update($root_dir, $plugin_name)]];
|
||||||
} else {
|
} else {
|
||||||
$rv = self::_get_updated_plugins();
|
$rv = self::_get_updated_plugins();
|
||||||
}
|
}
|
||||||
|
|
|
@ -323,39 +323,30 @@ const Helpers = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
update: function(name = null) {
|
update: function(name = null) {
|
||||||
const msg = name ? __("Update %p using git?").replace("%p", name) :
|
|
||||||
__("Update all local plugins using git?");
|
|
||||||
|
|
||||||
if (confirm(msg)) {
|
const dialog = new fox.SingleUseDialog({
|
||||||
|
title: __("Plugin Updater"),
|
||||||
const dialog = new fox.SingleUseDialog({
|
need_refresh: false,
|
||||||
title: __("Plugin Updater"),
|
onHide: function() {
|
||||||
execute: function() {
|
if (this.need_refresh) {
|
||||||
Helpers.Prefs.refresh();
|
Helpers.Prefs.refresh();
|
||||||
},
|
}
|
||||||
content: `
|
},
|
||||||
<ul class="panel panel-scrollable update-results">
|
performUpdate: function() {
|
||||||
<li>${__("Loading, please wait...")}</li>
|
const container = dialog.domNode.querySelector(".update-results");
|
||||||
</ul>
|
|
||||||
|
|
||||||
<footer class="text-center">
|
container.innerHTML = `<li>${__("Loading, please wait...")}</li>`;
|
||||||
${App.FormFields.submit_tag(__("Reload preferences"))}
|
|
||||||
</footer>
|
|
||||||
`,
|
|
||||||
});
|
|
||||||
|
|
||||||
const tmph = dojo.connect(dialog, 'onShow', function () {
|
|
||||||
dojo.disconnect(tmph);
|
|
||||||
|
|
||||||
xhr.json("backend.php", {op: "pref-prefs", method: "updateLocalPlugins", name: name}, (reply) => {
|
xhr.json("backend.php", {op: "pref-prefs", method: "updateLocalPlugins", name: name}, (reply) => {
|
||||||
const container = dialog.domNode.querySelector(".update-results");
|
|
||||||
|
|
||||||
if (!reply) {
|
if (!reply) {
|
||||||
container.innerHTML = __("Operation failed: check event log.");
|
container.innerHTML = `<li>${__("Operation failed: check event log.")}</li>`;
|
||||||
} else {
|
} else {
|
||||||
container.innerHTML = "";
|
container.innerHTML = "";
|
||||||
|
|
||||||
reply.forEach((p) => {
|
reply.forEach((p) => {
|
||||||
|
if (p.rv.s == 0) dialog.need_refresh = true;
|
||||||
|
|
||||||
container.innerHTML +=
|
container.innerHTML +=
|
||||||
`
|
`
|
||||||
<li><h3 style="margin-top: 0">${p.plugin}</h3>
|
<li><h3 style="margin-top: 0">${p.plugin}</h3>
|
||||||
|
@ -369,11 +360,48 @@ const Helpers = {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
content: `
|
||||||
|
<ul class="panel panel-scrollable update-results">
|
||||||
|
<li>${__("Loading, please wait...")}</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
${App.FormFields.button_tag(__("Update"), "", {class: "alt-primary", onclick: "App.dialogOf(this).performUpdate()"})}
|
||||||
|
${App.FormFields.cancel_dialog_tag(__("Close"))}
|
||||||
|
</footer>
|
||||||
|
`,
|
||||||
|
});
|
||||||
|
|
||||||
|
const tmph = dojo.connect(dialog, 'onShow', function () {
|
||||||
|
dojo.disconnect(tmph);
|
||||||
|
|
||||||
|
xhr.json("backend.php", {op: "pref-prefs", method: "checkForPluginUpdates", name: name}, (reply) => {
|
||||||
|
const container = dialog.domNode.querySelector(".update-results");
|
||||||
|
|
||||||
|
if (!reply) {
|
||||||
|
container.innerHTML = `<li>${__("Operation failed: check event log.")}</li>`;
|
||||||
|
} else {
|
||||||
|
container.innerHTML = "";
|
||||||
|
|
||||||
|
reply.forEach((p) => {
|
||||||
|
container.innerHTML +=
|
||||||
|
`
|
||||||
|
<li><h3 style="margin-top: 0">${p.plugin}</h3>
|
||||||
|
${p.rv.e ? `<pre class="small text-error">${p.rv.e}</pre>` : ''}
|
||||||
|
${p.rv.o ? `<pre class="small text-success">${p.rv.o}</pre>` : ''}
|
||||||
|
<p class="small">
|
||||||
|
${p.rv.s ? __("Exited with RC: %d").replace("%d", p.rv.s) : __("OK")}
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
`
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog.show();
|
});
|
||||||
}
|
|
||||||
|
dialog.show();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
OPML: {
|
OPML: {
|
||||||
|
|
Loading…
Reference in New Issue