]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - tpl/default/js/shaarli.js
Fix delete buttons issues
[github/shaarli/Shaarli.git] / tpl / default / js / shaarli.js
index d73bd29beadd7f4aac23498882a91fff4d3b3b57..a3d40b0ddf32647006a8b5f3fcd4045d23594f84 100644 (file)
@@ -53,49 +53,172 @@ function getParentByClass(el, className) {
     window.addEventListener(WINDOW_CHANGE_EVENT, closeMenu);
 })(this, this.document);
 
+/**
+ * Fold/Expand shaares description and thumbnail.
+ */
+(function (window, document) {
+    var foldAllButtons = document.getElementsByClassName('fold-all');
+    var foldButtons = document.getElementsByClassName('fold-button');
+
+    [].forEach.call(foldButtons, function (foldButton) {
+        // Retrieve description
+        var description = null;
+        var thumbnail = null;
+        var linklistItem = getParentByClass(foldButton, 'linklist-item');
+        if (linklistItem != null) {
+            description = linklistItem.querySelector('.linklist-item-description');
+            thumbnail = linklistItem.querySelector('.linklist-item-thumbnail');
+            if (description != null || thumbnail != null) {
+                foldButton.style.display = 'inline';
+            }
+        }
+
+        foldButton.addEventListener('click', function (event) {
+            event.preventDefault();
+            toggleFold(event.target, description, thumbnail);
+        });
+    });
+
+    if (foldAllButtons != null) {
+        [].forEach.call(foldAllButtons, function (foldAllButton) {
+            foldAllButton.addEventListener('click', function (event) {
+                event.preventDefault();
+                [].forEach.call(foldButtons, function (foldButton) {
+                    // Retrieve description
+                    var description = null;
+                    var thumbnail = null;
+                    var linklistItem = getParentByClass(foldButton, 'linklist-item');
+                    if (linklistItem != null) {
+                        description = linklistItem.querySelector('.linklist-item-description');
+                        thumbnail = linklistItem.querySelector('.linklist-item-thumbnail');
+                        if (description != null || thumbnail != null) {
+                            foldButton.style.display = 'inline';
+                        }
+                    }
+
+                    toggleFold(foldButton.firstElementChild, description, thumbnail);
+                });
+                foldAllButton.firstElementChild.classList.toggle('fa-chevron-down');
+                foldAllButton.firstElementChild.classList.toggle('fa-chevron-up');
+            });
+        });
+    }
+})(this, this.document);
+
+function toggleFold(button, description, thumb)
+{
+    // Switch fold/expand - up = fold
+    if (button.classList.contains('fa-chevron-up')) {
+        button.title = 'Expand';
+        if (description != null) {
+            description.style.display = 'none';
+        }
+        if (thumb != null) {
+            thumb.style.display = 'none';
+        }
+    }
+    else {
+        button.title = 'Fold';
+        if (description != null) {
+            description.style.display = 'block';
+        }
+        if (thumb != null) {
+            thumb.style.display = 'block';
+        }
+    }
+    button.classList.toggle('fa-chevron-down');
+    button.classList.toggle('fa-chevron-up');
+}
 
 /**
- * Expend search fields on focus.
+ * Confirmation message before deletion.
  */
-var searchInputs = document.querySelectorAll('#search input[type="text"]');
-[].forEach.call(searchInputs, function(searchInput) {
-    searchInput.addEventListener('focus', function(event) {
-        event.target.style.width = '250px';
+var deleteLinks = document.querySelectorAll('.confirm-delete');
+[].forEach.call(deleteLinks, function(deleteLink) {
+    deleteLink.addEventListener('click', function(event) {
+        if(! confirm('Are you sure you want to delete this link ?')) {
+            event.preventDefault();
+        }
     });
-    searchInput.addEventListener('blur', function(event) {
-        event.target.style.width = '140px';
+});
+
+/**
+ * Close alerts
+ */
+var closeLinks = document.querySelectorAll('.pure-alert-close');
+[].forEach.call(closeLinks, function(closeLink) {
+    closeLink.addEventListener('click', function(event) {
+        var alert = getParentByClass(event.target, 'pure-alert-closable');
+        alert.style.display = 'none';
     });
 });
 
 /**
- * Fold/Expand shaares description.
+ * New version dismiss.
+ * Hide the message for one week using localStorage.
  */
-var foldButtons = document.querySelectorAll('.fold-button');
-[].forEach.call(foldButtons, function(foldButton) {
-    // Retrieve description
-    var description = null;
-    var linklistItem = getParentByClass(foldButton, 'linklist-item');
-    if (linklistItem != null) {
-        description = linklistItem.querySelector('.linklist-item-description');
-        if (description != null) {
-            foldButton.style.display = 'inline';
-        }
-    }
+var newVersionDismiss = document.getElementById('new-version-dismiss');
+var newVersionMessage = document.querySelector('.new-version-message');
+if (newVersionMessage != null
+    && localStorage.getItem('newVersionDismiss') != null
+    && parseInt(localStorage.getItem('newVersionDismiss')) + 7*24*60*60*1000 > (new Date()).getTime()
+) {
+    newVersionMessage.style.display = 'none';
+}
+if (newVersionDismiss != null) {
+    newVersionDismiss.addEventListener('click', function () {
+        localStorage.setItem('newVersionDismiss', (new Date()).getTime());
+    });
+}
 
-    foldButton.addEventListener('click', function(event) {
-        event.preventDefault();
+var hiddenReturnurl = document.getElementsByName('returnurl');
+if (hiddenReturnurl != null) {
+    hiddenReturnurl.value = window.location.href;
+}
 
-        // Switch fold/expand - up = fold
-        if (event.target.classList.contains('fa-chevron-up')) {
+/**
+ * Autofocus text fields
+ */
+var autofocusElements = document.querySelector('.autofocus');
+if (autofocusElements != null) {
+    autofocusElements.focus();
+}
 
-            event.target.title = 'Expand';
-            description.style.display = 'none';
-        }
-        else {
-            event.target.title = 'Fold';
-            description.style.display = 'block';
-        }
-        event.target.classList.toggle('fa-chevron-down');
-        event.target.classList.toggle('fa-chevron-up');
+/**
+ * Handle sub menus/forms
+ */
+var openers = document.getElementsByClassName('subheader-opener');
+if (openers != null) {
+    [].forEach.call(openers, function(opener) {
+         opener.addEventListener('click', function(event) {
+             event.preventDefault();
+
+             var id = opener.getAttribute('data-open-id');
+             var sub = document.getElementById(id);
+
+             if (sub != null) {
+                [].forEach.call(document.getElementsByClassName('subheader-form'), function (element) {
+                    if (element != sub) {
+                        removeClass(element, 'open')
+                    }
+                 });
+
+                 sub.classList.toggle('open');
+             }
+         });
     });
-});
\ No newline at end of file
+}
+
+function removeClass(element, classname) {
+    element.className = element.className.replace(new RegExp('(?:^|\\s)'+ classname + '(?:\\s|$)'), ' ');
+}
+
+/**
+ * Remove CSS target padding (for fixed bar)
+ */
+var anchor = document.querySelector('.anchor:target');
+if (anchor != null) {
+    var padsize = anchor.clientHeight;
+    this.window.scroll(0, this.window.scrollY - padsize);
+    anchor.style.paddingTop = 0;
+}