From cd4d6a15f0940b3a9e5376d02b5698ea33433fd2 Mon Sep 17 00:00:00 2001 From: "Martin@MBP" Date: Tue, 23 Jun 2015 21:13:58 +0200 Subject: [PATCH] Support js-cookie Close #443 --- CHANGELOG.md | 1 + demo/sample-api.html | 8 ++++---- demo/sample-ext-persist.html | 3 +++ src/jquery.fancytree.persist.js | 25 ++++++++++++++++++------- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2256b0cf..a7454850 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # 2.10.0-0 / Unreleased * [Changed] New dist folder layout: moved skin-* folders into src/ folder + * [Improved] #443 Support js-cookie (still compatible with jquery-cookie) * [Fixed] #415 selected and unselectable shows unchecked checkbox * [Fixed] #427 table + themeroller: apply color to TR * [Fixed] #442 filterBranches shall use opts to allow autoExpand diff --git a/demo/sample-api.html b/demo/sample-api.html index 6c227478..a5f1b9f9 100644 --- a/demo/sample-api.html +++ b/demo/sample-api.html @@ -40,12 +40,12 @@ }, lazyLoad: function(event, data){ // Simulate a slow ajax request - var dfd = new $.Deferred() - data.result = dfd; + var dfd = new $.Deferred(); + data.result = dfd.promise(); window.setTimeout(function(){ dfd.resolve([ - { title: 'Lazy node 1', lazy: true }, - { title: 'Simple node 2', select: true } + { title: "Lazy node 1", lazy: true }, + { title: "Simple node 2", select: true } ]); }, 1500); } diff --git a/demo/sample-ext-persist.html b/demo/sample-ext-persist.html index 79b9f7b2..4644c08c 100644 --- a/demo/sample-ext-persist.html +++ b/demo/sample-ext-persist.html @@ -6,7 +6,10 @@ + + diff --git a/src/jquery.fancytree.persist.js b/src/jquery.fancytree.persist.js index f8ce85b7..6bbfc96d 100644 --- a/src/jquery.fancytree.persist.js +++ b/src/jquery.fancytree.persist.js @@ -4,7 +4,7 @@ * Persist tree status in cookiesRemove or highlight tree nodes, based on a filter. * (Extension module for jquery.fancytree.js: https://github.com/mar10/fancytree/) * - * @depends: jquery.cookie.js + * @depends: js-cookie or jquery-cookie * * Copyright (c) 2008-2015, Martin Wendt (http://wwWendt.de) * @@ -18,17 +18,28 @@ ;(function($, window, document, undefined) { "use strict"; - +/* global Cookies:false */ /******************************************************************************* * Private functions and variables */ -var _assert = $.ui.fancytree.assert, +var cookieGetter, cookieRemover, cookieSetter, + _assert = $.ui.fancytree.assert, ACTIVE = "active", EXPANDED = "expanded", FOCUS = "focus", SELECTED = "selected"; +if( typeof Cookies === "function" ) { + // Assume https://github.com/js-cookie/js-cookie + cookieSetter = Cookies.set; + cookieGetter = Cookies.get; + cookieRemover = Cookies.remove; +} else { + // Fall back to https://github.com/carhartl/jquery-cookie + cookieSetter = cookieGetter = $.cookie; + cookieRemover = $.removeCookie; +} /* Recursively load lazy nodes * @param {string} mode 'load', 'expand', false @@ -163,18 +174,18 @@ $.ui.fancytree.registerExtension({ var ls = this._local.localStorage; // null, sessionStorage, or localStorage if( value === undefined ) { - return ls ? ls.getItem(key) : $.cookie(key); + return ls ? ls.getItem(key) : cookieGetter(key); } else if ( value === null ) { if( ls ) { ls.removeItem(key); } else { - $.removeCookie(key); + cookieRemover(key); } } else { if( ls ) { ls.setItem(key, value); } else { - $.cookie(key, value, this.options.persist.cookie); + cookieSetter(key, value, this.options.persist.cookie); } } }, @@ -207,7 +218,7 @@ $.ui.fancytree.registerExtension({ instOpts = this.options.persist; // For 'auto' or 'cookie' mode, the cookie plugin must be available - _assert(instOpts.store === "localStore" || $.cookie, "Missing required plugin for 'persist' extension: jquery.cookie.js"); + _assert(instOpts.store === "localStore" || cookieGetter, "Missing required plugin for 'persist' extension: js.cookie.js or jquery.cookie.js"); local.cookiePrefix = instOpts.cookiePrefix || ("fancytree-" + tree._id + "-"); local.storeActive = instOpts.types.indexOf(ACTIVE) >= 0;