diff --git a/src/js/yunohost/controllers/tools.js b/src/js/yunohost/controllers/tools.js
index 3b11c342..dad87a23 100644
--- a/src/js/yunohost/controllers/tools.js
+++ b/src/js/yunohost/controllers/tools.js
@@ -260,6 +260,10 @@
// Get rid of _ in the raw name of migrations (cosmetic)
for(var i = 0; i < pending_migrations.length; i++) {
pending_migrations[i].name = pending_migrations[i].name.replace(/_/g, " ")
+ if (pending_migrations[i].disclaimer)
+ {
+ pending_migrations[i].disclaimer = pending_migrations[i].disclaimer.replace(/\n/g, "
");
+ }
}
for(var i = 0; i < done_migrations.length; i++) {
done_migrations[i].name = done_migrations[i].name.replace(/_/g, " ")
@@ -274,45 +278,43 @@
});
app.get('#/tools/migrations/run', function (c) {
- c.api('/migrations?pending', function(pending_migrations) {
- pending_migrations = pending_migrations.migrations;
- var disclaimers = [];
- var migrationsLength = pending_migrations.length;
- for(var i = 0; i < migrationsLength; i++) {
- var m = pending_migrations[i];
- if (m.disclaimer)
- {
- disclaimers.push("
"+m.number+". "+m.name+"
"
- +m.disclaimer.replace(/\n/g, "
"));
- }
- };
- if (disclaimers.length)
+ var disclaimerAcks = $(".disclaimer-ack");
+ var withAcceptDisclaimerFlag = false;
+ for (var i = 0 ; i < disclaimerAcks.length ; i++)
+ {
+ console.log($(disclaimerAcks[i]).find("input:checked").val());
+ if (! $(disclaimerAcks[i]).find("input:checked").val())
{
- c.confirm(
- y18n.t('migrations'),
- disclaimers.join('
'),
- function(){
- c.api('/migrations/migrate?accept_disclaimer',
- function (data) {
- store.clear('slide');
- c.redirect('#/tools/migrations');
- }, 'POST')
- },
- function(){
- store.clear('slide');
- c.redirect('#/tools/migrations');
- }
- );
+ // FIXME / TODO i18n
+ c.flash('fail', "Some of these migrations require you to acknowledge a disclaimer before running them.");
+ c.redirect('#/tools/migrations');
+ return;
}
else
{
- c.api('/migrations/migrate',
+ withAcceptDisclaimerFlag = true;
+ }
+ };
+
+ // Not sure if necessary, but this distinction is to avoid accidentally
+ // triggering a migration with a disclaimer if one goes to the
+ // /tools/migrations/run page "directly" somehow ...
+ if (withAcceptDisclaimerFlag)
+ {
+ c.api('/migrations/migrate?accept_disclaimer',
function (data) {
store.clear('slide');
c.redirect('#/tools/migrations');
- }, 'POST');
- }
- });
+ }, 'POST')
+ }
+ else
+ {
+ c.api('/migrations/migrate',
+ function (data) {
+ store.clear('slide');
+ c.redirect('#/tools/migrations');
+ }, 'POST')
+ }
});
app.get('#/tools/migrations/skip', function (c) {
diff --git a/src/views/tools/tools_migrations.ms b/src/views/tools/tools_migrations.ms
index 56db0f09..83863395 100644
--- a/src/views/tools/tools_migrations.ms
+++ b/src/views/tools/tools_migrations.ms
@@ -28,6 +28,17 @@
{{ description }}
+ {{#if disclaimer }}
+
+
+ {{ disclaimer }}
+
+
+
+
+ {{/if}}
{{/pending_migrations}}