diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/AngularPublic.js | 2 | ||||
| -rw-r--r-- | src/ng/cookieStore.js | 64 | ||||
| -rw-r--r-- | src/ng/cookies.js | 94 | ||||
| -rw-r--r-- | src/ngCookies/cookies.js | 163 | 
4 files changed, 163 insertions, 160 deletions
| diff --git a/src/AngularPublic.js b/src/AngularPublic.js index ec307962..8597de9c 100644 --- a/src/AngularPublic.js +++ b/src/AngularPublic.js @@ -110,8 +110,6 @@ function publishExternalAPI(angular){          $browser: $BrowserProvider,          $cacheFactory: $CacheFactoryProvider,          $controller: $ControllerProvider, -        $cookies: $CookiesProvider, -        $cookieStore: $CookieStoreProvider,          $defer: $DeferProvider,          $document: $DocumentProvider,          $exceptionHandler: $ExceptionHandlerProvider, diff --git a/src/ng/cookieStore.js b/src/ng/cookieStore.js deleted file mode 100644 index e6b7cd21..00000000 --- a/src/ng/cookieStore.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -/** - * @ngdoc object - * @name angular.module.ng.$cookieStore - * @requires $cookies - * - * @description - * Provides a key-value (string-object) storage, that is backed by session cookies. - * Objects put or retrieved from this storage are automatically serialized or - * deserialized by angular's toJson/fromJson. - * @example - */ -function $CookieStoreProvider(){ -  this.$get = ['$cookies', function($cookies) { - -    return { -      /** -       * @ngdoc method -       * @name angular.module.ng.$cookieStore#get -       * @methodOf angular.module.ng.$cookieStore -       * -       * @description -       * Returns the value of given cookie key -       * -       * @param {string} key Id to use for lookup. -       * @returns {Object} Deserialized cookie value. -       */ -      get: function(key) { -        return fromJson($cookies[key]); -      }, - -      /** -       * @ngdoc method -       * @name angular.module.ng.$cookieStore#put -       * @methodOf angular.module.ng.$cookieStore -       * -       * @description -       * Sets a value for given cookie key -       * -       * @param {string} key Id for the `value`. -       * @param {Object} value Value to be stored. -       */ -      put: function(key, value) { -        $cookies[key] = toJson(value); -      }, - -      /** -       * @ngdoc method -       * @name angular.module.ng.$cookieStore#remove -       * @methodOf angular.module.ng.$cookieStore -       * -       * @description -       * Remove given cookie -       * -       * @param {string} key Id of the key-value pair to delete. -       */ -      remove: function(key) { -        delete $cookies[key]; -      } -    }; - -  }]; -} diff --git a/src/ng/cookies.js b/src/ng/cookies.js deleted file mode 100644 index cd953eb1..00000000 --- a/src/ng/cookies.js +++ /dev/null @@ -1,94 +0,0 @@ -'use strict'; - -/** - * @ngdoc object - * @name angular.module.ng.$cookies - * @requires $browser - * - * @description - * Provides read/write access to browser's cookies. - * - * Only a simple Object is exposed and by adding or removing properties to/from - * this object, new cookies are created/deleted at the end of current $eval. - * - * @example - */ -function $CookiesProvider() { -  this.$get = ['$rootScope', '$browser', function ($rootScope, $browser) { -    var cookies = {}, -        lastCookies = {}, -        lastBrowserCookies, -        runEval = false; - -    //creates a poller fn that copies all cookies from the $browser to service & inits the service -    $browser.addPollFn(function() { -      var currentCookies = $browser.cookies(); -      if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl -        lastBrowserCookies = currentCookies; -        copy(currentCookies, lastCookies); -        copy(currentCookies, cookies); -        if (runEval) $rootScope.$apply(); -      } -    })(); - -    runEval = true; - -    //at the end of each eval, push cookies -    //TODO: this should happen before the "delayed" watches fire, because if some cookies are not -    //      strings or browser refuses to store some cookies, we update the model in the push fn. -    $rootScope.$watch(push); - -    return cookies; - - -    /** -     * Pushes all the cookies from the service to the browser and verifies if all cookies were stored. -     */ -    function push() { -      var name, -          value, -          browserCookies, -          updated; - -      //delete any cookies deleted in $cookies -      for (name in lastCookies) { -        if (isUndefined(cookies[name])) { -          $browser.cookies(name, undefined); -        } -      } - -      //update all cookies updated in $cookies -      for(name in cookies) { -        value = cookies[name]; -        if (!isString(value)) { -          if (isDefined(lastCookies[name])) { -            cookies[name] = lastCookies[name]; -          } else { -            delete cookies[name]; -          } -        } else if (value !== lastCookies[name]) { -          $browser.cookies(name, value); -          updated = true; -        } -      } - -      //verify what was actually stored -      if (updated){ -        updated = false; -        browserCookies = $browser.cookies(); - -        for (name in cookies) { -          if (cookies[name] !== browserCookies[name]) { -            //delete or reset all cookies that the browser dropped from $cookies -            if (isUndefined(browserCookies[name])) { -              delete cookies[name]; -            } else { -              cookies[name] = browserCookies[name]; -            } -            updated = true; -          } -        } -      } -    } -  }]; -} diff --git a/src/ngCookies/cookies.js b/src/ngCookies/cookies.js new file mode 100644 index 00000000..f6446db1 --- /dev/null +++ b/src/ngCookies/cookies.js @@ -0,0 +1,163 @@ +'use strict'; + +/** + * @ngdoc overview + * @name angular.module.ngCookies + */ + + +angular.module('ngCookies', ['ng']). +  /** +   * @ngdoc object +   * @name angular.module.ng.$cookies +   * @requires $browser +   * +   * @description +   * Provides read/write access to browser's cookies. +   * +   * Only a simple Object is exposed and by adding or removing properties to/from +   * this object, new cookies are created/deleted at the end of current $eval. +   * +   * @example +   */ +   factory('$cookies', ['$rootScope', '$browser', function ($rootScope, $browser) { +      var cookies = {}, +          lastCookies = {}, +          lastBrowserCookies, +          runEval = false, +          copy = angular.copy, +          isUndefined = angular.isUndefined; + +      //creates a poller fn that copies all cookies from the $browser to service & inits the service +      $browser.addPollFn(function() { +        var currentCookies = $browser.cookies(); +        if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl +          lastBrowserCookies = currentCookies; +          copy(currentCookies, lastCookies); +          copy(currentCookies, cookies); +          if (runEval) $rootScope.$apply(); +        } +      })(); + +      runEval = true; + +      //at the end of each eval, push cookies +      //TODO: this should happen before the "delayed" watches fire, because if some cookies are not +      //      strings or browser refuses to store some cookies, we update the model in the push fn. +      $rootScope.$watch(push); + +      return cookies; + + +      /** +       * Pushes all the cookies from the service to the browser and verifies if all cookies were stored. +       */ +      function push() { +        var name, +            value, +            browserCookies, +            updated; + +        //delete any cookies deleted in $cookies +        for (name in lastCookies) { +          if (isUndefined(cookies[name])) { +            $browser.cookies(name, undefined); +          } +        } + +        //update all cookies updated in $cookies +        for(name in cookies) { +          value = cookies[name]; +          if (!angular.isString(value)) { +            if (angular.isDefined(lastCookies[name])) { +              cookies[name] = lastCookies[name]; +            } else { +              delete cookies[name]; +            } +          } else if (value !== lastCookies[name]) { +            $browser.cookies(name, value); +            updated = true; +          } +        } + +        //verify what was actually stored +        if (updated){ +          updated = false; +          browserCookies = $browser.cookies(); + +          for (name in cookies) { +            if (cookies[name] !== browserCookies[name]) { +              //delete or reset all cookies that the browser dropped from $cookies +              if (isUndefined(browserCookies[name])) { +                delete cookies[name]; +              } else { +                cookies[name] = browserCookies[name]; +              } +              updated = true; +            } +          } +        } +      } +    }]). + + +  /** +   * @ngdoc object +   * @name angular.module.ng.$cookieStore +   * @requires $cookies +   * +   * @description +   * Provides a key-value (string-object) storage, that is backed by session cookies. +   * Objects put or retrieved from this storage are automatically serialized or +   * deserialized by angular's toJson/fromJson. +   * @example +   */ +   factory('$cookieStore', ['$cookies', function($cookies) { + +      return { +        /** +         * @ngdoc method +         * @name angular.module.ng.$cookieStore#get +         * @methodOf angular.module.ng.$cookieStore +         * +         * @description +         * Returns the value of given cookie key +         * +         * @param {string} key Id to use for lookup. +         * @returns {Object} Deserialized cookie value. +         */ +        get: function(key) { +          return angular.fromJson($cookies[key]); +        }, + +        /** +         * @ngdoc method +         * @name angular.module.ng.$cookieStore#put +         * @methodOf angular.module.ng.$cookieStore +         * +         * @description +         * Sets a value for given cookie key +         * +         * @param {string} key Id for the `value`. +         * @param {Object} value Value to be stored. +         */ +        put: function(key, value) { +          $cookies[key] = angular.toJson(value); +        }, + +        /** +         * @ngdoc method +         * @name angular.module.ng.$cookieStore#remove +         * @methodOf angular.module.ng.$cookieStore +         * +         * @description +         * Remove given cookie +         * +         * @param {string} key Id of the key-value pair to delete. +         */ +        remove: function(key) { +          delete $cookies[key]; +        } +      }; + +    }]); | 
