Thomas Bruederli
2013-11-23 f52efbd5cde3bdd7733d1318de06cce3386b62b2
Save Larry skin UI settings in local storage instead of cookies
2 files modified
40 ■■■■ changed files
skins/larry/templates/mail.html 4 ●●●● patch | view | raw | blame | history
skins/larry/ui.js 36 ●●●● patch | view | raw | blame | history
skins/larry/templates/mail.html
@@ -5,8 +5,8 @@
<roundcube:include file="/includes/links.html" />
<style type="text/css">
<roundcube:if condition="config:preview_pane == true" />
    #mailview-top { height: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter-48 : 276" />px; }
    #mailview-bottom { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+6 : 330" />px; height: auto; display: block; }
    #mailview-top { height: 276px; }
    #mailview-bottom { top: 330px; height: auto; display: block; }
    #mailpreviewframe { display: block; }
<roundcube:endif />
</style>
skins/larry/ui.js
@@ -31,6 +31,7 @@
  var me = this;
  var mailviewsplit;
  var compose_headers = {};
  var prefs;
  // export public methods
  this.set = setenv;
@@ -74,7 +75,25 @@
   */
  function get_pref(key)
  {
    return rcmail.get_cookie(key);
    if (!prefs) {
      prefs = window.localStorage ? rcmail.local_storage_get_item('prefs.larry', {}) : {};
    }
    // fall-back to cookies
    if (prefs[key] == null) {
      var cookie = rcmail.get_cookie(key);
      if (cookie != null) {
        prefs[key] = cookie;
        // copy value to local storage and remove cookie
        if (window.localStorage) {
          rcmail.local_storage_set_item('prefs.larry', prefs);
          rcmail.set_cookie(key, cookie, new Date());  // expire cookie
        }
      }
    }
    return prefs[key];
  }
  /**
@@ -82,9 +101,18 @@
   */
  function save_pref(key, val)
  {
    var exp = new Date();
    exp.setYear(exp.getFullYear() + 1);
    rcmail.set_cookie(key, val, exp);
    prefs[key] = val;
    // write prefs to local storage
    if (window.localStorage) {
      rcmail.local_storage_set_item('prefs.larry', prefs);
    }
    else {
      // store value in cookie
      var exp = new Date();
      exp.setYear(exp.getFullYear() + 1);
      rcmail.set_cookie(key, val, exp);
    }
  }
  /**