From 5c8fc1d13686f310e01ae91f459f9625d403af1f Mon Sep 17 00:00:00 2001
From: chylex <contact@chylex.com>
Date: Fri, 27 Apr 2018 21:13:38 +0200
Subject: [PATCH] Fix clear-columns plugin button disappearing when
 adding/removing columns

---
 Resources/Plugins/clear-columns/browser.js | 61 +++++++++++-----------
 1 file changed, 30 insertions(+), 31 deletions(-)

diff --git a/Resources/Plugins/clear-columns/browser.js b/Resources/Plugins/clear-columns/browser.js
index c3eb6571..56c16271 100644
--- a/Resources/Plugins/clear-columns/browser.js
+++ b/Resources/Plugins/clear-columns/browser.js
@@ -38,7 +38,7 @@ enabled(){
         $(document).off("mousemove", this.eventKeyUp);
       }
       
-      $("#clear-columns-btn-all-1,#clear-columns-btn-all-2").text(pressed ? "Restore columns" : "Clear columns");
+      $(".clear-columns-btn-all").text(pressed ? "Restore columns" : "Clear columns");
     }
   };
   
@@ -78,28 +78,36 @@ enabled(){
     }
   };
   
-  // add column buttons and keyboard shortcut info to UI
-  replaceMustache("column/column_header.mustache", "</header>", [
-    '{{^isTemporary}}',
-    '<a class="column-header-link td-clear-column-shortcut" href="#" data-action="td-clearcolumns-dosingle" style="right:34px">',
-    '<i class="icon icon-clear-timeline js-show-tip" data-placement="bottom" data-original-title="Clear column (hold Shift to restore)"></i>',
-    '</a>',
-    '{{/isTemporary}}',
-    '</header>'
-  ].join(""));
+  // setup clear all button
+  this.btnClearAllHTML = `
+<a class="clear-columns-btn-all-parent js-header-action link-clean cf app-nav-link padding-h--10" data-title="Clear columns (hold Shift to restore)" data-action="td-clearcolumns-doall">
+  <div class="obj-left margin-l--2"><i class="icon icon-medium icon-clear-timeline"></i></div>
+  <div class="clear-columns-btn-all nbfc padding-ts hide-condensed txt-size--16 app-nav-link-text">Clear columns</div>
+</a>`;
   
-  replaceMustache("keyboard_shortcut_list.mustache", "</dl>  <dl", [
-    '<dd class="keyboard-shortcut-definition" style="white-space:nowrap">',
-    '<span class="text-like-keyboard-key">1</span> … <span class="text-like-keyboard-key">9</span> + <span class="text-like-keyboard-key">Del</span> Clear column 1-9',
-    '</dd><dd class="keyboard-shortcut-definition">',
-    '<span class="text-like-keyboard-key">Alt</span> + <span class="text-like-keyboard-key">Del</span> Clear all columns',
-    '</dd></dl><dl'
-  ].join(""));
+  // add column buttons and keyboard shortcut info to UI
+  replaceMustache("column/column_header.mustache", "</header>", `
+{{^isTemporary}}
+  <a class="column-header-link td-clear-column-shortcut" href="#" data-action="td-clearcolumns-dosingle" style="right:34px">
+    <i class="icon icon-clear-timeline js-show-tip" data-placement="bottom" data-original-title="Clear column (hold Shift to restore)"></i>
+  </a>
+{{/isTemporary}}
+</header>`);
+  
+  replaceMustache("keyboard_shortcut_list.mustache", "</dl>  <dl", `
+<dd class="keyboard-shortcut-definition" style="white-space:nowrap">
+  <span class="text-like-keyboard-key">1</span> … <span class="text-like-keyboard-key">9</span> + <span class="text-like-keyboard-key">Del</span> Clear column 1-9
+</dd><dd class="keyboard-shortcut-definition">
+  <span class="text-like-keyboard-key">Alt</span> + <span class="text-like-keyboard-key">Del</span> Clear all columns
+</dd></dl><dl`);
+  
+  replaceMustache("menus/column_nav_menu.mustache", "{{_i}}Add column{{/i}}</div> </a> </div>", `{{_i}}Add column{{/i}}</div></a>${this.btnClearAllHTML}</div>`)
   
   // load custom style
   var css = window.TDPF_createCustomStyle(this);
-  css.insert(".js-app-add-column.is-hidden + #clear-columns-btn-all-parent-1 { display: none; }");
-  css.insert(".column-navigator-overflow #clear-columns-btn-all-parent-2 { display: none; }");
+  css.insert(".js-app-add-column.is-hidden + .clear-columns-btn-all-parent { display: none; }");
+  css.insert(".column-navigator-overflow .clear-columns-btn-all-parent { display: none !important; }");
+  css.insert(".column-navigator-overflow { bottom: 224px !important; }");
   css.insert(".column-title { margin-right: 60px !important; }");
   css.insert(".mark-all-read-link { right: 59px !important; }");
   css.insert(".open-compose-dm-link { right: 90px !important; }");
@@ -116,23 +124,14 @@ ready(){
   $(document).on("keydown", this.eventKeyDown);
   $(document).on("keyup", this.eventKeyUp);
   
-  // add clear all button
-  const generateButton = (idParent, idButton) => {
-    return `
-<a id="${idParent}" class="js-header-action link-clean cf app-nav-link padding-h--10" data-title="Clear columns (hold Shift to restore)" data-action="td-clearcolumns-doall">
-  <div class="obj-left margin-l--2"><i class="icon icon-medium icon-clear-timeline"></i></div>
-  <div id="${idButton}" class="nbfc padding-ts hide-condensed txt-size--16 app-nav-link-text">Clear columns</div>
-</a>`;
-  };
-  
-  $(".js-app-add-column").first().after(generateButton("clear-columns-btn-all-parent-1", "clear-columns-btn-all-1"));
-  $(".js-column-nav-list").first().append(generateButton("clear-columns-btn-all-parent-2", "clear-columns-btn-all-2"));
+  // setup clear all button for nav overflow
+  $(".js-app-add-column").first().after(this.btnClearAllHTML);
   
   // setup tooltip handling
   var tooltipEvents = $._data($(".js-header-action")[0]).events;
   
   if (tooltipEvents.mouseover && tooltipEvents.mouseover.length && tooltipEvents.mouseout && tooltipEvents.mouseout.length){
-    $("#clear-columns-btn-all-parent-1,#clear-columns-btn-all-parent-2").on("mouseover", tooltipEvents.mouseover[0].handler).on("mouseout", tooltipEvents.mouseout[0].handler);
+    $(".clear-columns-btn-all-parent").on("mouseover", tooltipEvents.mouseover[0].handler).on("mouseout", tooltipEvents.mouseout[0].handler);
   }
 }