changeset 354:425c3047394d

Replace `localStorage` with cookies for the menu state. This fixes the issue on page load where the menu would pop-up/animate instead of being in the right state right away.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 20 Sep 2015 08:21:40 -0700
parents ae6760f34eb1
children 890d89e0a2fc
files wikked/assets/js/wikked/app.js wikked/templates/index.html wikked/templates/nav.html wikked/templates/special-nav.html wikked/views/__init__.py
diffstat 5 files changed, 12 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/wikked/assets/js/wikked/app.js	Sun Sep 20 08:20:54 2015 -0700
+++ b/wikked/assets/js/wikked/app.js	Sun Sep 20 08:21:40 2015 -0700
@@ -30,14 +30,6 @@
             this.isMenuActive = (this.wikiMenu.css('left') == '0px');
             this.isMenuActiveLocked = false;
 
-            // Apply local settings.
-            var ima = localStorage.getItem('wikked.nav.isMenuActive');
-            if (ima == 'true') {
-                this.wikiMenuAndWrapper.addClass('wiki-menu-active');
-                this.isMenuActive = true;
-                this._toggleWikiMenuPin(true);
-            }
-
             // Hookup events.
             this.listen("#wiki-menu-shortcut", 'click', '_onMenuShortcutClick');
             this.listen("#wiki-menu-pin", 'click', '_onMenuShortcutClick');
@@ -59,7 +51,10 @@
         },
         _onMenuShortcutClick: function(e) {
             this.isMenuActive = !this.isMenuActive;
-            localStorage.setItem('wikked.nav.isMenuActive', this.isMenuActive);
+            var val = this.isMenuActive ? "1" : "0";
+            document.cookie = (
+                    "wiki-menu-active=" + val + "; " +
+                    "path=/; expires=31 Dec 2100 UTC");
             this._toggleWikiMenuPin(this.isMenuActive);
         },
         _onMenuShortcutHover: function(e) {
--- a/wikked/templates/index.html	Sun Sep 20 08:20:54 2015 -0700
+++ b/wikked/templates/index.html	Sun Sep 20 08:21:40 2015 -0700
@@ -11,7 +11,7 @@
             <div class="nav-wrapper">
                 {% block nav %}{% include 'nav.html' %}{% endblock %}
             </div>
-            <div class="wrapper{%if is_special_page%} special{%endif%}">
+            <div class="wrapper{%if nav.is_menu_active%} wiki-menu-active{%endif%}{%if is_special_page%} special{%endif%}">
                 {% block content %}{% endblock %}
             </div>
             <div class="footer-wrapper">
--- a/wikked/templates/nav.html	Sun Sep 20 08:20:54 2015 -0700
+++ b/wikked/templates/nav.html	Sun Sep 20 08:21:40 2015 -0700
@@ -1,7 +1,7 @@
 <a id="wiki-menu-shortcut" class="wiki-logo">
     <span>W</span>
 </a>
-<nav id="wiki-menu" role="navigation" class="pure-menu pure-menu-open">
+<nav id="wiki-menu" role="navigation" class="pure-menu pure-menu-open{%if nav.is_menu_active%} wiki-menu-active{%endif%}">
     <div id="wiki-menu-pin" title="Pin/unpin the wiki menu.">
         <span class="fa fa-lock"></span>
     </div>
--- a/wikked/templates/special-nav.html	Sun Sep 20 08:20:54 2015 -0700
+++ b/wikked/templates/special-nav.html	Sun Sep 20 08:21:40 2015 -0700
@@ -1,7 +1,7 @@
 <a id="wiki-menu-shortcut" class="wiki-logo">
     <span>W</span>
 </a>
-<nav id="wiki-menu" role="navigation" class="pure-menu pure-menu-open wiki-menu-active">
+<nav id="wiki-menu" role="navigation" class="pure-menu pure-menu-open{% if nav.is_menu_active%} wiki-menu-active{%endif%}">
     <div id="wiki-menu-pin" title="Pin/unpin the wiki menu.">
         <span class="fa fa-lock"></span>
     </div>
--- a/wikked/views/__init__.py	Sun Sep 20 08:20:54 2015 -0700
+++ b/wikked/views/__init__.py	Sun Sep 20 08:21:40 2015 -0700
@@ -1,3 +1,4 @@
+from flask import request
 from flask.ext.login import current_user
 from wikked.web import app
 
@@ -30,6 +31,10 @@
         raise Exception("Default navigation entries require a valid URL.")
 
     nav = {'home': '/', 'extras': [], 'footers': []}
+
+    nav['is_menu_active'] = (
+            request.cookies.get('wiki-menu-active') == '1')
+
     if read:
         nav['url_read'] = '/read/%s' % url
     if edit: