]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Remove inline JS and add LibreJS headers in JS files 809/head
authorArthurHoaro <arthur@hoa.ro>
Sun, 12 Mar 2017 11:45:32 +0000 (12:45 +0100)
committerArthurHoaro <arthur@hoa.ro>
Sun, 12 Mar 2017 11:45:32 +0000 (12:45 +0100)
Fixes #33 (wow!)
Relates to #395

14 files changed:
COPYING
inc/awesomplete-multiple-tags.js
inc/plugin_admin.js
plugins/piwik/piwik.html
plugins/playvideos/youtube_playlist.js
plugins/qrcode/shaarli-qrcode.js
tpl/default/configure.html
tpl/default/editlink.html
tpl/default/install.html
tpl/default/js/shaarli.js
tpl/default/loginform.html
tpl/default/picwall.html
tpl/default/pluginsadmin.html
tpl/default/tools.html

diff --git a/COPYING b/COPYING
index 4bbdf2b3c95bb18bf984bb0f6084793231bb40fb..0520215247e0c49e9d0e9e0dfcb17b227240a6c5 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -46,6 +46,10 @@ Files: plugins/wallabag/wallabag.png
 License: MIT License (http://opensource.org/licenses/MIT)
 Copyright: (C) 2015 Nicolas Lœuillet - https://github.com/wallabag/wallabag
 
+Files: tpl/default/sad_star.png
+License: MIT License (http://opensource.org/licenses/MIT)
+Copyright: (C) 2015 kalvn - https://github.com/kalvn/Shaarli-Material
+
 ----------------------------------------------------
 ZLIB/LIBPNG LICENSE
 
index faecb417858e3dd05487d5f3e7000f4d602a7bda..c38dc38ee809099531aa6a92a5c9d8385eece6da 100644 (file)
@@ -1,3 +1,31 @@
+/** @licstart  The following is the entire license notice for the
+ *  JavaScript code in this page.
+ *
+ *   Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
+ *              (c) 2011-2017 The Shaarli Community, see AUTHORS
+ *
+ *   This software is provided 'as-is', without any express or implied warranty.
+ *   In no event will the authors be held liable for any damages arising from
+ *   the use of this software.
+ *
+ *   Permission is granted to anyone to use this software for any purpose,
+ *   including commercial applications, and to alter it and redistribute it
+ *   freely, subject to the following restrictions:
+ *
+ *   1. The origin of this software must not be misrepresented; you must not
+ *   claim that you wrote the original software. If you use this software
+ *   in a product, an acknowledgment in the product documentation would
+ *   be appreciated but is not required.
+ *
+ *   2. Altered source versions must be plainly marked as such, and must
+ *   not be misrepresented as being the original software.
+ *
+ *   3. This notice may not be removed or altered from any source distribution.
+ *
+ *  @licend  The above is the entire license notice
+ *  for the JavaScript code in this page.
+ */
+
 var awp = Awesomplete.$;
 var autocompleteFields = document.querySelectorAll('input[data-multiple]');
 [].forEach.call(autocompleteFields, function(autocompleteField) {
index 055ac285a966c4203d588ee0e0f4a39537b3f1e3..4b55e0f3388d67a86d8ea6d6611a8abc288083d0 100644 (file)
@@ -1,3 +1,31 @@
+/** @licstart  The following is the entire license notice for the
+ *  JavaScript code in this page.
+ *
+ *   Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
+ *              (c) 2011-2017 The Shaarli Community, see AUTHORS
+ *
+ *   This software is provided 'as-is', without any express or implied warranty.
+ *   In no event will the authors be held liable for any damages arising from
+ *   the use of this software.
+ *
+ *   Permission is granted to anyone to use this software for any purpose,
+ *   including commercial applications, and to alter it and redistribute it
+ *   freely, subject to the following restrictions:
+ *
+ *   1. The origin of this software must not be misrepresented; you must not
+ *   claim that you wrote the original software. If you use this software
+ *   in a product, an acknowledgment in the product documentation would
+ *   be appreciated but is not required.
+ *
+ *   2. Altered source versions must be plainly marked as such, and must
+ *   not be misrepresented as being the original software.
+ *
+ *   3. This notice may not be removed or altered from any source distribution.
+ *
+ *  @licend  The above is the entire license notice
+ *  for the JavaScript code in this page.
+ */
+
 /**
  * Change the position counter of a row.
  *
index 0881d7c8fbd49fe5225667a0a0f65f7be7ad1529..f4bc358a7f7e2ead9c7c48a1aaaa1b3eb6c58f48 100644 (file)
@@ -1,5 +1,33 @@
 <!-- Piwik -->
 <script type="text/javascript">
+  /** @licstart  The following is the entire license notice for the
+   *  JavaScript code in this page.
+   *
+   *   Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
+   *              (c) 2011-2017 The Shaarli Community, see AUTHORS
+   *
+   *   This software is provided 'as-is', without any express or implied warranty.
+   *   In no event will the authors be held liable for any damages arising from
+   *   the use of this software.
+   *
+   *   Permission is granted to anyone to use this software for any purpose,
+   *   including commercial applications, and to alter it and redistribute it
+   *   freely, subject to the following restrictions:
+   *
+   *   1. The origin of this software must not be misrepresented; you must not
+   *   claim that you wrote the original software. If you use this software
+   *   in a product, an acknowledgment in the product documentation would
+   *   be appreciated but is not required.
+   *
+   *   2. Altered source versions must be plainly marked as such, and must
+   *   not be misrepresented as being the original software.
+   *
+   *   3. This notice may not be removed or altered from any source distribution.
+   *
+   *  @licend  The above is the entire license notice
+   *  for the JavaScript code in this page.
+   */
+
   var _paq = _paq || [];
   _paq.push(['trackPageView']);
   _paq.push(['enableLinkTracking']);
index be8d63afa49c751c9a6557e618abc7d619140ecf..3b608a5dfbf97549973ffb3170803b082e988249 100644 (file)
@@ -1,3 +1,31 @@
+/** @licstart  The following is the entire license notice for the
+ *  JavaScript code in this page.
+ *
+ *   Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
+ *              (c) 2011-2017 The Shaarli Community, see AUTHORS
+ *
+ *   This software is provided 'as-is', without any express or implied warranty.
+ *   In no event will the authors be held liable for any damages arising from
+ *   the use of this software.
+ *
+ *   Permission is granted to anyone to use this software for any purpose,
+ *   including commercial applications, and to alter it and redistribute it
+ *   freely, subject to the following restrictions:
+ *
+ *   1. The origin of this software must not be misrepresented; you must not
+ *   claim that you wrote the original software. If you use this software
+ *   in a product, an acknowledgment in the product documentation would
+ *   be appreciated but is not required.
+ *
+ *   2. Altered source versions must be plainly marked as such, and must
+ *   not be misrepresented as being the original software.
+ *
+ *   3. This notice may not be removed or altered from any source distribution.
+ *
+ *  @licend  The above is the entire license notice
+ *  for the JavaScript code in this page.
+ */
+
 var run_playideos = (function () {
     var e, n, t, o, r, i = [].indexOf || function (e) {
             for (var n = 0, t = this.length; n < t; n++) {
index 615f54c72c3cfe42e3a8df6b8d3aa3bfc9a46c1b..fe77c4cdc47cbb4ae36471513908e950adfe8d6d 100644 (file)
@@ -1,3 +1,31 @@
+/** @licstart  The following is the entire license notice for the
+ *  JavaScript code in this page.
+ *
+ *   Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
+ *              (c) 2011-2017 The Shaarli Community, see AUTHORS
+ *
+ *   This software is provided 'as-is', without any express or implied warranty.
+ *   In no event will the authors be held liable for any damages arising from
+ *   the use of this software.
+ *
+ *   Permission is granted to anyone to use this software for any purpose,
+ *   including commercial applications, and to alter it and redistribute it
+ *   freely, subject to the following restrictions:
+ *
+ *   1. The origin of this software must not be misrepresented; you must not
+ *   claim that you wrote the original software. If you use this software
+ *   in a product, an acknowledgment in the product documentation would
+ *   be appreciated but is not required.
+ *
+ *   2. Altered source versions must be plainly marked as such, and must
+ *   not be misrepresented as being the original software.
+ *
+ *   3. This notice may not be removed or altered from any source distribution.
+ *
+ *  @licend  The above is the entire license notice
+ *  for the JavaScript code in this page.
+ */
+
 // Show the QR-Code of a permalink (when the QR-Code icon is clicked).
 function showQrCode(caller,loading)
 { 
index 2f54a0851157ff01d37903fbf8878924936a0cff..f24ac43533fc4ea512de2a3cb81269ff29c35b29 100644 (file)
 </form>
 
 {include="page.footer"}
-
-<script>
-  (function (window, document) {
-    var toRemove = document.getElementById('timezone-remove');
-    var firstSelect = toRemove.getElementsByTagName('select')[0];
-    var secondSelect = toRemove.getElementsByTagName('select')[1];
-    toRemove.parentNode.removeChild(toRemove);
-    var toAdd = document.getElementById('timezone-add');
-    var newTimezone = '<span class="timezone-continent">Continent ' + firstSelect.outerHTML + '</span>';
-    newTimezone += ' <span class="timezone-country">Country ' + secondSelect.outerHTML + '</span>';
-    toAdd.innerHTML = newTimezone;
-  })(this, this.document);
-</script>
 </body>
 </html>
 
index 2180c080aa4467f8ba5fd8ffc5e489f107c5f056..491f1da0a31cbed9ea3f80a3824a6f8aba43a34e 100644 (file)
@@ -4,11 +4,7 @@
   {include="includes"}
 </head>
 <body>
-  {if="$source !== 'firefoxsocialapi' && $source !== 'bookmarklet'"}
-    {include="page.header"}
-  {else}
-    <div class="center">Shaare to: {$shaarlititle}</div>
-  {/if}
+  {include="page.header"}
   <div id="editlinkform" class="pure-g">
     <div class="pure-u-lg-1-5 pure-u-1-24"></div>
     <form method="post" name="linkform" class="page-form pure-u-lg-3-5 pure-u-22-24 page-form page-form-light">
         <label for="lf_url">{'URL'|t}</label>
       </div>
       <div>
-        <input type="text" name="lf_url" id="lf_url" value="{$link.url}" class="lf_input">
+        <input type="text" name="lf_url" id="lf_url" value="{$link.url}" class="lf_input autofocus">
       </div>
       <div>
       <label for="lf_title">{'Title'|t}</label>
       </div>
       <div>
-        <input type="text" name="lf_title" id="lf_title" value="{$link.title}" class="lf_input">
+        <input type="text" name="lf_title" id="lf_title" value="{$link.title}" class="lf_input autofocus">
       </div>
       <div>
         <label for="lf_description">{'Description'|t}</label>
       </div>
       <div>
-        <textarea name="lf_description" id="lf_description">{$link.description}</textarea>
+        <textarea name="lf_description" id="lf_description" class="autofocus">{$link.description}</textarea>
       </div>
       <div>
         <label for="lf_tags">{'Tags'|t}</label>
       </div>
       <div>
-        <input type="text" name="lf_tags" id="lf_tags" value="{$link.tags}" class="lf_input"
+        <input type="text" name="lf_tags" id="lf_tags" value="{$link.tags}" class="lf_input autofocus"
           data-list="{loop="$tags"}{$key}, {/loop}" data-multiple autocomplete="off" >
       </div>
 
       {/if}
     </form>
   </div>
-  {if="$source !== 'firefoxsocialapi' && $source !== 'bookmarklet'"}
-    {include="page.footer"}
-  {/if}
-<script>
-  awesompleteUniqueTag('#lf_tags');
-  if (!document.linkform.lf_title.value) {
-    document.linkform.lf_title.focus();
-  } else if (!document.linkform.lf_description.value) {
-    document.linkform.lf_description.focus();
-  } else {
-    document.linkform.lf_tags.focus();
-  }
-</script>
+  {include="page.footer"}
 </body>
 </html>
index 0bd8a63559b1b5146132fedea3f3d6f69d287f6c..33f8a45336c4a448505001dbce93d55f88261f34 100644 (file)
 </div>
 </form>
 {include="page.footer"}
-<script>
-  // FIXME!
-  (function (window, document) {
-    var toRemove = document.getElementById('timezone-remove');
-    var firstSelect = toRemove.getElementsByTagName('select')[0];
-    var secondSelect = toRemove.getElementsByTagName('select')[1];
-    toRemove.parentNode.removeChild(toRemove);
-    var toAdd = document.getElementById('timezone-add');
-    var newTimezone = '<span class="timezone-continent">Continent ' + firstSelect.outerHTML + '</span>';
-    newTimezone += ' <span class="timezone-country">Country ' + secondSelect.outerHTML + '</span>';
-    toAdd.innerHTML = newTimezone;
-  })(this, this.document);
-</script>
 </body>
 </html>
index f7de0a49894ae84a35e68cb48f34829b349deddc..30d8ed6ff73482f9502e03268e321c3643aa0726 100644 (file)
@@ -1,3 +1,31 @@
+/** @licstart  The following is the entire license notice for the
+ *  JavaScript code in this page.
+ *
+ *   Copyright: (c) 2011-2015 Sébastien SAUVAGE <sebsauvage@sebsauvage.net>
+ *              (c) 2011-2017 The Shaarli Community, see AUTHORS
+ *
+ *   This software is provided 'as-is', without any express or implied warranty.
+ *   In no event will the authors be held liable for any damages arising from
+ *   the use of this software.
+ *
+ *   Permission is granted to anyone to use this software for any purpose,
+ *   including commercial applications, and to alter it and redistribute it
+ *   freely, subject to the following restrictions:
+ *
+ *   1. The origin of this software must not be misrepresented; you must not
+ *   claim that you wrote the original software. If you use this software
+ *   in a product, an acknowledgment in the product documentation would
+ *   be appreciated but is not required.
+ *
+ *   2. Altered source versions must be plainly marked as such, and must
+ *   not be misrepresented as being the original software.
+ *
+ *   3. This notice may not be removed or altered from any source distribution.
+ *
+ *  @licend  The above is the entire license notice
+ *  for the JavaScript code in this page.
+ */
+
 window.onload = function () {
 
     /**
@@ -185,9 +213,13 @@ window.onload = function () {
     /**
      * Autofocus text fields
      */
-    var autofocusElements = document.querySelector('.autofocus');
-    if (autofocusElements != null) {
-        autofocusElements.focus();
+    // ES6 syntax
+    let autofocusElements = document.querySelectorAll('.autofocus');
+    for (let autofocusElement of autofocusElements) {
+        if (autofocusElement.value == '') {
+            autofocusElement.focus();
+            break;
+        }
     }
 
     /**
@@ -266,4 +298,96 @@ window.onload = function () {
             }
         });
     }
+
+    /**
+     * TimeZome select
+     * FIXME! way too hackish
+     */
+    var toRemove = document.getElementById('timezone-remove');
+    if (toRemove != null) {
+        var firstSelect = toRemove.getElementsByTagName('select')[0];
+        var secondSelect = toRemove.getElementsByTagName('select')[1];
+        toRemove.parentNode.removeChild(toRemove);
+        var toAdd = document.getElementById('timezone-add');
+        var newTimezone = '<span class="timezone-continent">Continent ' + firstSelect.outerHTML + '</span>';
+        newTimezone += ' <span class="timezone-country">Country ' + secondSelect.outerHTML + '</span>';
+        toAdd.innerHTML = newTimezone;
+    }
+
+    /**
+     * Awesomplete trigger.
+     */
+    var tags = document.getElementById('lf_tags');
+    if (tags != null) {
+        awesompleteUniqueTag('#lf_tags');
+    }
+
+    /**
+     * bLazy trigger
+     */
+    var picwall = document.getElementById('picwall_container');
+    if (picwall != null) {
+        var bLazy = new Blazy();
+    }
+
+    /**
+     * Bookmarklet alert
+     */
+    var bookmarkletLinks = document.querySelectorAll('.bookmarklet-link');
+    var bkmMessage = document.getElementById('bookmarklet-alert');
+    [].forEach.call(bookmarkletLinks, function(link) {
+        link.addEventListener('click', function(event) {
+            event.preventDefault();
+            alert(bkmMessage.value);
+        });
+    });
+
+    /**
+     * Firefox Social
+     */
+    var ffButton = document.getElementById('ff-social-button');
+    if (ffButton != null) {
+        ffButton.addEventListener('click', function(event) {
+            activateFirefoxSocial(event.target);
+        });
+    }
+
+    /**
+     * Plugin admin order
+     */
+    var orderPA = document.querySelectorAll('.order');
+    [].forEach.call(orderPA, function(link) {
+        link.addEventListener('click', function(event) {
+            event.preventDefault();
+            if (event.target.classList.contains('order-up')) {
+                return orderUp(event.target.parentNode.parentNode.getAttribute('data-order'));
+            } else if (event.target.classList.contains('order-down')) {
+                return orderDown(event.target.parentNode.parentNode.getAttribute('data-order'));
+            }
+        });
+    });
 };
+
+function activateFirefoxSocial(node) {
+    var loc = location.href;
+    var baseURL = loc.substring(0, loc.lastIndexOf("/"));
+
+    // Keeping the data separated (ie. not in the DOM) so that it's maintainable and diffable.
+    var data = {
+        name: "{$shaarlititle}",
+        description: "The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community.",
+        author: "Shaarli",
+        version: "1.0.0",
+
+        iconURL: baseURL + "/images/favicon.ico",
+        icon32URL: baseURL + "/images/favicon.ico",
+        icon64URL: baseURL + "/images/favicon.ico",
+
+        shareURL: baseURL + "{noparse}?post=%{url}&title=%{title}&description=%{text}&source=firefoxsocialapi{/noparse}",
+        homepageURL: baseURL
+    };
+    node.setAttribute("data-service", JSON.stringify(data));
+
+    var activate = new CustomEvent("ActivateSocialFeature");
+    node.dispatchEvent(activate);
+}
index 2ad3fe9cdc8e5e0813895d7527126f1bb010e442..eb6d83781817690374ad593d4457eaf0fdd60401 100644 (file)
@@ -26,7 +26,7 @@
              {if="!empty($username)"}value="{$username}"{/if} class="autofocus" tabindex="20">
         </div>
         <div>
-          <input type="password" name="password" placeholder="{'Password'|t}" tabindex="21">
+          <input type="password" name="password" placeholder="{'Password'|t}" class="autofocus" tabindex="21">
         </div>
         <div class="remember-me">
           <input type="checkbox" name="longlastingsession" id="longlastingsessionform"
 {/if}
 
 {include="page.footer"}
-<script>
-  {if="ban_canLogin($conf) && ! empty($username)"}
-    // Focus password on load if the username is set.
-    var passwords = document.getElementsByName('password');
-    if (passwords.length == 2) {
-        passwords[1].focus();
-    }
-  {/if}
-</script>
 </body>
 </html>
 
index b9ae2f2e5d2f007acc33c6e018d8e2d2c8e5dd9d..248e56df78345029b8439b335911b27bf56ad2e3 100644 (file)
 
 {include="page.footer"}
 <script src="inc/blazy-1.3.1.min.js#"></script>
-<script>
-  window.onload = function() {
-    var bLazy = new Blazy();
-  }
-</script>
 </body>
 </html>
 
index 92af2eefd63bf9ccf6a7f558b5455a9bc8de8383..5cc1802f77dff26790ced7d1c77ce52c176c7438 100644 (file)
                   <td><div class="pure-u-0 pure-u-lg-visible"><label for="{$key}">{$value.description}</label></div></td>
                   <td class="center">
                     {if="count($enabledPlugins)>1"}
-                    <a href="#" class="order"
-                       onclick="return orderUp(this.parentNode.parentNode.getAttribute('data-order'));">
-                      ▲
-                    </a>
-                    <a href="#" class="order"
-                       onclick="return orderDown(this.parentNode.parentNode.getAttribute('data-order'));">
-                      ▼
-                    </a>
+                    <a href="#" class="order order-up">▲</a>
+                    <a href="#" class="order order-down">▼</a>
                     {/if}
                     <input type="hidden" name="order_{$key}" value="{$counter}">
                   </td>
index b9df32d9ee31ca8bdd386f58a5c60ef253e976a4..baa033aff7cb0b22cbaed714b2b04f99fd17052f 100644 (file)
@@ -67,7 +67,7 @@
     <div class="tools-item">
       <a title="{'Drag this link to your bookmarks toolbar or right-click it and Bookmark This Link'|t},
                 {'then click ✚Shaare link button in any page you want to share'|t}"
-         onclick="return alertBookmarklet();"
+         class="bookmarklet-link"
          href="javascript:(
           function(){
             var%20url%20=%20location.href;
@@ -86,8 +86,8 @@
     <div class="tools-item">
       <a title="{'Drag this link to your bookmarks toolbar or right-click it and Bookmark This Link'|t},
                 {'Then click ✚Add Note button anytime to start composing a private Note (text post) to your Shaarli'|t}"
-         onclick="return alertBookmarklet();"
-         href="?private=1&amp;post=">
+         href="?private=1&amp;post="
+         class="bookmarklet-link">
         <span class="pure-button pure-u-lg-2-3 pure-u-3-4">✚ {'Add Note'|t}</span>
       </a>
     </div>
 
       <div class="tools-item">
         <a title="{'Click on this button to add Shaarli to the 'Share this page' button in Firefox"
-           onclick="activateFirefoxSocial(this)">
+           id="ff-social-button">
         <span class="pure-button pure-u-lg-2-3 pure-u-3-4">✚ {'Add to'|t} Firefox Social</span>
         </a>
       </div>
 </div>
 
 {include="page.footer"}
-
-<script>
-  {if="$sslenabled"}
-    function activateFirefoxSocial(node) {
-      var loc = location.href;
-      var baseURL = loc.substring(0, loc.lastIndexOf("/"));
-
-      // Keeping the data separated (ie. not in the DOM) so that it's maintainable and diffable.
-      var data = {
-        name: "{$shaarlititle}",
-        description: "The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community.",
-        author: "Shaarli",
-        version: "1.0.0",
-
-        iconURL: baseURL + "/images/favicon.ico",
-        icon32URL: baseURL + "/images/favicon.ico",
-        icon64URL: baseURL + "/images/favicon.ico",
-
-        shareURL: baseURL + "{noparse}?post=%{url}&title=%{title}&description=%{text}&source=firefoxsocialapi{/noparse}",
-        homepageURL: baseURL
-      };
-      node.setAttribute("data-service", JSON.stringify(data));
-
-      var activate = new CustomEvent("ActivateSocialFeature");
-      node.dispatchEvent(activate);
-    }
-  {/if}
-  function alertBookmarklet() {
-    alert({"'Drag this link to your bookmarks toolbar, or right-click it and choose Bookmark This Link'"|t});
-    return false;
-  }
-</script>
+<input type="hidden" id="bookmarklet-alert"
+       value="{'Drag this link to your bookmarks toolbar, or right-click it and choose Bookmark This Link'|t}">
 </body>
 </html>