From d2e45d03a368550cf7bf313a8159bb9b73764352 Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Tue, 17 Nov 2020 15:13:43 +0000
Subject: [PATCH] erp5_run_my_doc: allow to delete a slide directly from the
 list

---
 .../slideeditor.gadget.css.css                | 17 +++++---
 .../erp5_run_my_doc/slideeditor.gadget.js.js  | 43 ++++++++++++++++---
 .../slideeditor.gadget.less.txt               | 16 ++++---
 3 files changed, 56 insertions(+), 20 deletions(-)

diff --git a/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.css.css b/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.css.css
index d1938db98d..5732a407f7 100644
--- a/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.css.css
+++ b/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.css.css
@@ -13,12 +13,8 @@ div[data-gadget-url$="slideeditor.gadget.html"] > .slide_list > section {
   background-color: #FFFFFF;
   border: 1px solid #000000;
   padding: 0.5em;
-  vertical-align: middle;
-  text-align: center;
   margin-right: 2em;
   margin-bottom: 2em;
-  display: flex;
-  flex-direction: column;
 }
 div[data-gadget-url$="slideeditor.gadget.html"] > .slide_list > section[data-slide-index] {
   cursor: move;
@@ -38,21 +34,28 @@ div[data-gadget-url$="slideeditor.gadget.html"] > .slide_list > section > img {
   z-index: 1;
   border-radius: 0.325em;
 }
+div[data-gadget-url$="slideeditor.gadget.html"] > .slide_list > section > h1 {
+  text-align: center;
+  padding-top: 2.5em;
+}
 div[data-gadget-url$="slideeditor.gadget.html"] > .slide_list > section button {
   padding: 3pt;
+  float: right;
   border: 1px solid rgba(0, 0, 0, 0.14);
   border-radius: 0.325em;
   background-color: #FFFFFF;
   width: 2em;
-  heigth: 2em;
-  min-height: 2em;
+  height: 2em;
   overflow: hidden;
   text-indent: -9999px;
   white-space: nowrap;
   position: relative;
   z-index: 2;
 }
+div[data-gadget-url$="slideeditor.gadget.html"] > .slide_list > section button:first-of-type {
+  float: left;
+}
 div[data-gadget-url$="slideeditor.gadget.html"] > .slide_list > section button::before {
   float: left;
   text-indent: 0;
-}
\ No newline at end of file
+}
diff --git a/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.js.js b/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.js.js
index da0dab79d9..653310d8b4 100644
--- a/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.js.js
+++ b/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.js.js
@@ -439,7 +439,9 @@
       section_list = getSlideElementList(gadget.state.value),
       draggable_element_list = [],
       i,
-      content;
+      content,
+      edit_element,
+      delete_element;
 
     // Clone listbox header structure to reuse the css
     header_element = domsugar('div', {'class': 'document_table'}, [
@@ -450,12 +452,23 @@
     ]);
 
     for (i = 0; i < section_list.length; i += 1) {
+      edit_element = domsugar('button', {
+        type: 'button',
+        text: translation_dict.Edit,
+        'class': 'display-slide ui-icon-pencil ui-btn-icon-left',
+        'data-slide-index': i
+      });
+      delete_element = domsugar('button', {
+        type: 'button',
+        text: translation_dict.Delete,
+        'class': 'delete-slide ui-icon-trash-o ui-btn-icon-left',
+        'data-slide-index': i
+      });
       // If slide type is sreenshot/illustration, show image instead of title
       if (getSlideDictFromSlideElement(section_list[i]).image_url) {
         content = [
-          domsugar('button', {type: 'button', text: translation_dict.Edit,
-                   'class': 'display-slide ui-icon-pencil ui-btn-icon-left',
-                   'data-slide-index': i}),
+          edit_element,
+          delete_element,
           domsugar('img', {
             src: getSlideDictFromSlideElement(section_list[i]).image_url,
             draggable: false
@@ -463,9 +476,8 @@
         ];
       } else {
         content = [
-          domsugar('button', {type: 'button', text: translation_dict.Edit,
-                   'class': 'display-slide ui-icon-pencil ui-btn-icon-left',
-                   'data-slide-index': i}),
+          edit_element,
+          delete_element,
           domsugar('h1', {
             html: getSlideDictFromSlideElement(section_list[i]).title_html
           })
@@ -745,6 +757,23 @@
           });
       }
 
+      if (evt.target.className.indexOf("delete-slide") !== -1) {
+        return queue
+          .push(function () {
+            var slide_list = getSlideElementList(gadget.state.value);
+            slide_list.splice(parseInt(
+                evt.target.getAttribute('data-slide-index'),
+                10
+              ), 1);
+            return RSVP.all([
+              gadget.changeState({
+                value: slideListAsHTML(slide_list)
+              }),
+              gadget.notifyChange()
+            ]);
+          });
+      }
+
       if (evt.target.className.indexOf("dialog-comment") !== -1) {
         return queue
           .push(function () {
diff --git a/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.less.txt b/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.less.txt
index 5130ee2756..7ead0fbd3f 100644
--- a/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.less.txt
+++ b/bt5/erp5_run_my_doc/SkinTemplateItem/portal_skins/erp5_run_my_doc/slideeditor.gadget.less.txt
@@ -23,8 +23,6 @@ div[data-gadget-url$="slideeditor.gadget.html"] {
       background-color:#FFFFFF;
       border: 1px solid #000000;
       padding: 0.5em;
-      vertical-align: middle;
-      text-align: center;
       // color:#000000;
 
       &.drag {
@@ -43,22 +41,28 @@ div[data-gadget-url$="slideeditor.gadget.html"] {
         z-index: 1;
         border-radius: 0.325em;
       }
+      & > h1 {
+        text-align: center;
+        padding-top: 2.5em;
+      }
 
       // Spacing between every section
       margin-right: 2em;
       margin-bottom: 2em;
 
-      display: flex;
-      flex-direction: column;
       button {
         padding: 3pt;
+        float: right;
+        &:first-of-type {
+          float: left;
+        }
+
         border: 1px solid rgba(0, 0, 0, 0.14);
         border-radius: 0.325em;
         background-color: #FFFFFF;
 
         width: 2em;
-        heigth: 2em;
-        min-height: 2em;
+        height: 2em;
         overflow: hidden;
         text-indent: -9999px;
         white-space: nowrap;
-- 
2.30.9