From 882e3016b3d0451bbdc43948aead794b3995e232 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Fri, 18 Jun 2021 15:58:05 -0700 Subject: [PATCH] msgtplui - Add workflow for transitioning between draft<=>current --- ext/msgtplui/ang/msgtplui/Edit.html | 13 ++++++++-- ext/msgtplui/ang/msgtplui/Edit.js | 38 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/ext/msgtplui/ang/msgtplui/Edit.html b/ext/msgtplui/ang/msgtplui/Edit.html index 2c0bd5e2b4..769645efef 100644 --- a/ext/msgtplui/ang/msgtplui/Edit.html +++ b/ext/msgtplui/ang/msgtplui/Edit.html @@ -20,6 +20,7 @@ +
+
+
+ + + + +
+
- +
diff --git a/ext/msgtplui/ang/msgtplui/Edit.js b/ext/msgtplui/ang/msgtplui/Edit.js index 3048a9901d..e110a95fa1 100644 --- a/ext/msgtplui/ang/msgtplui/Edit.js +++ b/ext/msgtplui/ang/msgtplui/Edit.js @@ -17,6 +17,9 @@ * An API call which replaces the translations ([entity,action,params]). */ function reqReplaceTranslations(id, lang, status, values) { + if (angular.equals({}, values)) { + return reqDeleteTranslations(id, lang, status); + } var records = []; angular.forEach(values, function(value, key) { records.push({"entity_field":key, "string":value}); @@ -86,6 +89,19 @@ }, {}); } + function copyTranslations(src, dest) { + dest.translations = []; + TRANSLATED.forEach(function(fld) { + if (src[fld] === undefined) { + delete dest[fld]; + } + else { + dest[fld] = src[fld]; + dest.translations.push({entity_field: fld, string: src[fld]}); + } + }); + } + angular.module('msgtplui').config(function($routeProvider) { $routeProvider.when('/edit', { controller: 'MsgtpluiEdit', @@ -145,6 +161,28 @@ ctrl.tab = 'main'; } + ctrl.switchTab = function switchTab(tgt) { + ctrl.tab = tgt; + $('html, body').animate({scrollTop: $("a[name=msgtplui-tabs]").offset().top}, 200); + }; + + ctrl.hasDraft = function hasDraft() { + return ctrl.lang && ctrl.records.txDraft && ctrl.records.txDraft.translations && ctrl.records.txDraft.translations.length > 0; + }; + ctrl.createDraft = function createDraft(src) { + copyTranslations(src, ctrl.records.txDraft); + ctrl.switchTab('txDraft'); + }; + ctrl.deleteDraft = function deleteDraft() { + copyTranslations({}, ctrl.records.txDraft); + ctrl.switchTab('txActive'); + }; + ctrl.activateDraft = function activateDraft() { + copyTranslations(ctrl.records.txDraft, ctrl.records.txActive); + copyTranslations({}, ctrl.records.txDraft); + ctrl.switchTab('txActive'); + }; + ctrl.save = function save() { var requests = {}; if (ctrl.lang) { -- 2.25.1