From 3326ad52ce53569ed55f36425e5edbc4a92fbd92 Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Wed, 7 Jun 2017 19:25:38 +0200 Subject: [PATCH] Work on template plugin (basic template impl, modal tweaks) --- Resources/Plugins/templates/browser.js | 46 +++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/Resources/Plugins/templates/browser.js b/Resources/Plugins/templates/browser.js index a4c0bffb..67d418ea 100644 --- a/Resources/Plugins/templates/browser.js +++ b/Resources/Plugins/templates/browser.js @@ -80,6 +80,25 @@ enabled(){ this.css.insert(".invisible { display: none !important; }"); + // template implementation + + var useTemplate = (contents, append) => { + let ele = $(".js-compose-text"); + + if (ele.length === 0){ + return; + } + + // TODO + + ele.val(append ? ele.val()+contents : contents); + ele.focus(); + + if (!append){ + hideTemplateModal(); + } + }; + // modal dialog this.editingTemplate = null; @@ -138,6 +157,11 @@ enabled(){ let ele = $(".templates-modal-wrap").first(); + ele.on("click", "li[data-template]", function(e){ + let template = me.config.templates[$(this).attr("data-template")]; + useTemplate(template.contents, e.shiftKey); + }); + ele.on("click", "li[data-template] i[data-action]", function(e){ let identifier = $(this).closest("li").attr("data-template"); @@ -178,6 +202,7 @@ enabled(){ ele.on("click", "button", function(e){ switch($(this).attr("data-action")){ case "new-template": + toggleEditor(); break; @@ -200,6 +225,8 @@ enabled(){ contents: $("[name='template-contents']", editor).val() }; + // TODO check validity + toggleEditor(); onTemplatesUpdated(true); break; @@ -211,6 +238,10 @@ enabled(){ onTemplatesUpdated(false); }; + var hideTemplateModal = function(){ + $(".templates-modal-wrap").remove(); + }; + var toggleEditor = function(){ let editor = $(".template-editor"); $("[name]", editor).val(""); @@ -244,10 +275,8 @@ enabled(){ // event handlers this.manageTemplatesButtonClickEvent = function(e){ - let wrap = $(".templates-modal-wrap"); - - if (wrap.length){ - wrap.remove(); + if ($(".templates-modal-wrap").length){ + hideTemplateModal(); } else{ showTemplateModal(); @@ -255,10 +284,17 @@ enabled(){ $(this).blur(); }; + + this.drawerToggleEvent = function(e, data){ + if (data.activeDrawer === null){ + hideTemplateModal(); + } + }; } ready(){ $(".manage-templates-btn").on("click", this.manageTemplatesButtonClickEvent); + $(document).on("uiDrawerActive", this.drawerToggleEvent); } disabled(){ @@ -267,5 +303,7 @@ disabled(){ $(".manage-templates-btn").remove(); $(".templates-modal-wrap").remove(); + $(document).off("uiDrawerActive", this.drawerToggleEvent); + TD.mustaches["compose/docked_compose.mustache"] = this.prevComposeMustache; }