From 677cf7f0958dfc0b48fcefa7cc9a596fd2fc66b4 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Sat, 29 Mar 2014 10:09:34 +0000 Subject: [PATCH] Adding bower-angular-translate Sources: https://github.com/angular-translate/bower-angular-translate/releases/*. zip 1 of 4 libraries required to fix #2714 --- .../0.4.2/angular-translate.js | 129 +++ .../0.4.2/angular-translate.min.js | 1 + .../0.4.3/angular-translate.js | 136 +++ .../0.4.3/angular-translate.min.js | 1 + .../0.4.4/angular-translate.js | 136 +++ .../0.4.4/angular-translate.min.js | 1 + .../0.5.1/angular-translate.js | 136 +++ .../0.5.1/angular-translate.min.js | 1 + .../0.5.2/angular-translate.js | 138 +++ .../0.5.2/angular-translate.min.js | 1 + .../0.6.0/angular-translate.js | 227 +++++ .../0.6.0/angular-translate.min.js | 1 + .../0.7.0/angular-translate.js | 349 ++++++++ .../0.7.0/angular-translate.min.js | 1 + .../0.8.0/angular-translate.js | 349 ++++++++ .../0.8.0/angular-translate.min.js | 1 + .../0.8.1/angular-translate.js | 355 ++++++++ .../0.8.1/angular-translate.min.js | 1 + .../0.9.0/angular-translate.js | 241 ++++++ .../0.9.0/angular-translate.min.js | 1 + .../0.9.1/angular-translate.js | 233 +++++ .../0.9.1/angular-translate.min.js | 1 + .../0.9.3/angular-translate.js | 257 ++++++ .../0.9.3/angular-translate.min.js | 1 + .../0.9.4/angular-translate.js | 259 ++++++ .../0.9.4/angular-translate.min.js | 1 + .../1.0.0/angular-translate.js | 337 ++++++++ .../1.0.0/angular-translate.min.js | 1 + .../1.0.1/angular-translate.js | 353 ++++++++ .../1.0.1/angular-translate.min.js | 1 + .../1.0.2/angular-translate.js | 359 ++++++++ .../1.0.2/angular-translate.min.js | 1 + .../1.1.0/angular-translate.js | 419 +++++++++ .../1.1.0/angular-translate.min.js | 1 + .../1.1.1/angular-translate.js | 505 +++++++++++ .../1.1.1/angular-translate.min.js | 1 + .../2.0.0/angular-translate.js | 800 +++++++++++++++++ .../2.0.0/angular-translate.min.js | 1 + .../2.0.1/angular-translate.js | 814 ++++++++++++++++++ .../2.0.1/angular-translate.min.js | 1 + .../libs/bower-angular-translate/package.json | 37 + 41 files changed, 6589 insertions(+) create mode 100755 ajax/libs/bower-angular-translate/0.4.2/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.4.2/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.4.3/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.4.3/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.4.4/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.4.4/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.5.1/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.5.1/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.5.2/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.5.2/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.6.0/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.6.0/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.7.0/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.7.0/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.8.0/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.8.0/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.8.1/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.8.1/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.9.0/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.9.0/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.9.1/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.9.1/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.9.3/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.9.3/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/0.9.4/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/0.9.4/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/1.0.0/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/1.0.0/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/1.0.1/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/1.0.1/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/1.0.2/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/1.0.2/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/1.1.0/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/1.1.0/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/1.1.1/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/1.1.1/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/2.0.0/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/2.0.0/angular-translate.min.js create mode 100755 ajax/libs/bower-angular-translate/2.0.1/angular-translate.js create mode 100755 ajax/libs/bower-angular-translate/2.0.1/angular-translate.min.js create mode 100644 ajax/libs/bower-angular-translate/package.json diff --git a/ajax/libs/bower-angular-translate/0.4.2/angular-translate.js b/ajax/libs/bower-angular-translate/0.4.2/angular-translate.js new file mode 100755 index 000000000..332e7928a --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.4.2/angular-translate.js @@ -0,0 +1,129 @@ +angular.module('ngTranslate', ['ng', 'ngCookies']) + +.run(['$translate', '$COOKIE_KEY', '$cookieStore', function ($translate, $COOKIE_KEY, $cookieStore) { + + if ($translate.rememberLanguage()) { + if (!$cookieStore.get($COOKIE_KEY)) { + $cookieStore.put($COOKIE_KEY, $translate.uses()); + } else { + $translate.uses($cookieStore.get($COOKIE_KEY)); + } + } +}]); + +angular.module('ngTranslate') + +.directive('translate', ['$filter', '$interpolate', function ($filter, $interpolate) { + + var translate = $filter('translate'); + + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId , '')) { + scope.translationId = $interpolate(element.text())(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + + scope.$watch('translationId + interpolateParams', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + } + }; +}]); + +angular.module('ngTranslate') + +.filter('translate', ['$parse', '$translate', function ($parse, $translate) { + return function (translationId, interpolateParams) { + + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; +}]); + +angular.module('ngTranslate').constant('$COOKIE_KEY', 'NG_TRANSLATE_LANG_KEY'); + +angular.module('ngTranslate').provider('$translate', function () { + + var $translationTable = {}, + $uses, + $rememberLanguage = false; + + this.translations = function (langKey, translationTable) { + + if (!langKey && !translationTable) { + return $translationTable; + } + + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + $translationTable = langKey; + } + } else { + $translationTable[langKey] = translationTable; + } + }; + + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey]) { + throw new Error("$translateProvider couldn't find translationTable for langKey: '" + langKey + "'"); + } + $uses = langKey; + } else { + return $uses; + } + }; + + this.rememberLanguage = function (boolVal) { + if (angular.isUndefined(boolVal)) { + return $rememberLanguage; + } + $rememberLanguage = boolVal; + }; + + this.$get = ['$interpolate', '$log', '$cookieStore', '$COOKIE_KEY', function ($interpolate, $log, $cookieStore, $COOKIE_KEY) { + + $translate = function (translationId, interpolateParams) { + var translation = ($uses) ? + $translationTable[$uses][translationId] : + $translationTable[translationId]; + + if (translation) { + return $interpolate(translation)(interpolateParams); + } + $log.warn("Translation for " + translationId + " doesn't exist"); + return translationId; + }; + + $translate.uses = function (key) { + if (!key) { + return $uses; + } + $uses = key; + if ($rememberLanguage) { + $cookieStore.put($COOKIE_KEY, $uses); + } + }; + + $translate.rememberLanguage = function () { + return $rememberLanguage; + }; + + return $translate; + }]; +}); diff --git a/ajax/libs/bower-angular-translate/0.4.2/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.4.2/angular-translate.min.js new file mode 100755 index 000000000..ece587702 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.4.2/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("ngTranslate",["ng","ngCookies"]).run(["$translate","$COOKIE_KEY","$cookieStore",function(n,t,r){n.rememberLanguage()&&(r.get(t)?n.uses(r.get(t)):r.put(t,n.uses()))}]),angular.module("ngTranslate").directive("translate",["$filter","$interpolate",function(n,t){var r=n("translate");return{restrict:"A",scope:!0,link:function(n,a,e){e.$observe("translate",function(r){n.translationId=angular.equals(r,"")?t(a.text())(n.$parent):r}),e.$observe("values",function(t){n.interpolateParams=t}),n.$watch("translationId + interpolateParams",function(){a.html(r(n.translationId,n.interpolateParams))})}}}]),angular.module("ngTranslate").filter("translate",["$parse","$translate",function(n,t){return function(r,a){return angular.isObject(a)||(a=n(a)()),t(r,a)}}]),angular.module("ngTranslate").constant("$COOKIE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("ngTranslate").provider("$translate",function(){var n,t={},r=!1;this.translations=function(n,r){if(!n&&!r)return t;if(n&&!r){if(angular.isString(n))return t[n];t=n}else t[n]=r},this.uses=function(r){if(!r)return n;if(!t[r])throw Error("$translateProvider couldn't find translationTable for langKey: '"+r+"'");n=r},this.rememberLanguage=function(n){return angular.isUndefined(n)?r:(r=n,void 0)},this.$get=["$interpolate","$log","$cookieStore","$COOKIE_KEY",function(a,e,i,o){return $translate=function(r,i){var o=n?t[n][r]:t[r];return o?a(o)(i):(e.warn("Translation for "+r+" doesn't exist"),r)},$translate.uses=function(t){return t?(n=t,r&&i.put(o,n),void 0):n},$translate.rememberLanguage=function(){return r},$translate}]}); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.4.3/angular-translate.js b/ajax/libs/bower-angular-translate/0.4.3/angular-translate.js new file mode 100755 index 000000000..947cc62b8 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.4.3/angular-translate.js @@ -0,0 +1,136 @@ +angular.module('ngTranslate', ['ng', 'ngCookies']) + +.run(['$translate', '$COOKIE_KEY', '$cookieStore', function ($translate, $COOKIE_KEY, $cookieStore) { + + if ($translate.rememberLanguage()) { + if (!$cookieStore.get($COOKIE_KEY)) { + $cookieStore.put($COOKIE_KEY, $translate.uses()); + } else { + $translate.uses($cookieStore.get($COOKIE_KEY)); + } + } +}]); + +angular.module('ngTranslate') + +.directive('translate', ['$filter', '$interpolate', function ($filter, $interpolate) { + + var translate = $filter('translate'); + + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId , '')) { + scope.translationId = $interpolate(element.text())(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + + scope.$watch('translationId + interpolateParams', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + } + }; +}]); + +angular.module('ngTranslate') + +.filter('translate', ['$parse', '$translate', function ($parse, $translate) { + return function (translationId, interpolateParams) { + + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; +}]); + +angular.module('ngTranslate').constant('$COOKIE_KEY', 'NG_TRANSLATE_LANG_KEY'); + +angular.module('ngTranslate').provider('$translate', function () { + + var $translationTable = {}, + $uses, + $rememberLanguage = false; + + this.translations = function (langKey, translationTable) { + + if (!langKey && !translationTable) { + return $translationTable; + } + + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + $translationTable = langKey; + } + } else { + $translationTable[langKey] = translationTable; + } + }; + + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey]) { + throw new Error("$translateProvider couldn't find translationTable for langKey: '" + langKey + "'"); + } + $uses = langKey; + } else { + return $uses; + } + }; + + this.rememberLanguage = function (boolVal) { + if (angular.isUndefined(boolVal)) { + return $rememberLanguage; + } + $rememberLanguage = boolVal; + }; + + this.$get = ['$interpolate', '$log', '$cookieStore', '$rootScope', '$COOKIE_KEY', function ($interpolate, $log, $cookieStore, $rootScope, $COOKIE_KEY) { + + $translate = function (translationId, interpolateParams) { + var translation = ($uses) ? + $translationTable[$uses][translationId] : + $translationTable[translationId]; + + if (translation) { + return $interpolate(translation)(interpolateParams); + } + $log.warn("Translation for " + translationId + " doesn't exist"); + return translationId; + }; + + $translate.uses = function (key) { + if (!key) { + return $uses; + } + if ($uses !== key) { + $uses = key; + if ($rememberLanguage) { + $cookieStore.put($COOKIE_KEY, $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + } + }; + + $translate.rememberLanguage = function () { + return $rememberLanguage; + }; + + return $translate; + }]; +}); diff --git a/ajax/libs/bower-angular-translate/0.4.3/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.4.3/angular-translate.min.js new file mode 100755 index 000000000..5faa946cd --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.4.3/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("ngTranslate",["ng","ngCookies"]).run(["$translate","$COOKIE_KEY","$cookieStore",function(n,t,a){n.rememberLanguage()&&(a.get(t)?n.uses(a.get(t)):a.put(t,n.uses()))}]),angular.module("ngTranslate").directive("translate",["$filter","$interpolate",function(n,t){var a=n("translate");return{restrict:"A",scope:!0,link:function(n,r,e){e.$observe("translate",function(a){n.translationId=angular.equals(a,"")?t(r.text())(n.$parent):a}),e.$observe("values",function(t){n.interpolateParams=t}),n.$on("translationChangeSuccess",function(){r.html(a(n.translationId,n.interpolateParams))}),n.$watch("translationId + interpolateParams",function(){r.html(a(n.translationId,n.interpolateParams))})}}}]),angular.module("ngTranslate").filter("translate",["$parse","$translate",function(n,t){return function(a,r){return angular.isObject(r)||(r=n(r)()),t(a,r)}}]),angular.module("ngTranslate").constant("$COOKIE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("ngTranslate").provider("$translate",function(){var n,t={},a=!1;this.translations=function(n,a){if(!n&&!a)return t;if(n&&!a){if(angular.isString(n))return t[n];t=n}else t[n]=a},this.uses=function(a){if(!a)return n;if(!t[a])throw Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");n=a},this.rememberLanguage=function(n){return angular.isUndefined(n)?a:(a=n,void 0)},this.$get=["$interpolate","$log","$cookieStore","$rootScope","$COOKIE_KEY",function(r,e,o,s,i){return $translate=function(a,o){var s=n?t[n][a]:t[a];return s?r(s)(o):(e.warn("Translation for "+a+" doesn't exist"),a)},$translate.uses=function(t){return t?(n!==t&&(n=t,a&&o.put(i,n),s.$broadcast("translationChangeSuccess")),void 0):n},$translate.rememberLanguage=function(){return a},$translate}]}); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.4.4/angular-translate.js b/ajax/libs/bower-angular-translate/0.4.4/angular-translate.js new file mode 100755 index 000000000..947cc62b8 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.4.4/angular-translate.js @@ -0,0 +1,136 @@ +angular.module('ngTranslate', ['ng', 'ngCookies']) + +.run(['$translate', '$COOKIE_KEY', '$cookieStore', function ($translate, $COOKIE_KEY, $cookieStore) { + + if ($translate.rememberLanguage()) { + if (!$cookieStore.get($COOKIE_KEY)) { + $cookieStore.put($COOKIE_KEY, $translate.uses()); + } else { + $translate.uses($cookieStore.get($COOKIE_KEY)); + } + } +}]); + +angular.module('ngTranslate') + +.directive('translate', ['$filter', '$interpolate', function ($filter, $interpolate) { + + var translate = $filter('translate'); + + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId , '')) { + scope.translationId = $interpolate(element.text())(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + + scope.$watch('translationId + interpolateParams', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + } + }; +}]); + +angular.module('ngTranslate') + +.filter('translate', ['$parse', '$translate', function ($parse, $translate) { + return function (translationId, interpolateParams) { + + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; +}]); + +angular.module('ngTranslate').constant('$COOKIE_KEY', 'NG_TRANSLATE_LANG_KEY'); + +angular.module('ngTranslate').provider('$translate', function () { + + var $translationTable = {}, + $uses, + $rememberLanguage = false; + + this.translations = function (langKey, translationTable) { + + if (!langKey && !translationTable) { + return $translationTable; + } + + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + $translationTable = langKey; + } + } else { + $translationTable[langKey] = translationTable; + } + }; + + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey]) { + throw new Error("$translateProvider couldn't find translationTable for langKey: '" + langKey + "'"); + } + $uses = langKey; + } else { + return $uses; + } + }; + + this.rememberLanguage = function (boolVal) { + if (angular.isUndefined(boolVal)) { + return $rememberLanguage; + } + $rememberLanguage = boolVal; + }; + + this.$get = ['$interpolate', '$log', '$cookieStore', '$rootScope', '$COOKIE_KEY', function ($interpolate, $log, $cookieStore, $rootScope, $COOKIE_KEY) { + + $translate = function (translationId, interpolateParams) { + var translation = ($uses) ? + $translationTable[$uses][translationId] : + $translationTable[translationId]; + + if (translation) { + return $interpolate(translation)(interpolateParams); + } + $log.warn("Translation for " + translationId + " doesn't exist"); + return translationId; + }; + + $translate.uses = function (key) { + if (!key) { + return $uses; + } + if ($uses !== key) { + $uses = key; + if ($rememberLanguage) { + $cookieStore.put($COOKIE_KEY, $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + } + }; + + $translate.rememberLanguage = function () { + return $rememberLanguage; + }; + + return $translate; + }]; +}); diff --git a/ajax/libs/bower-angular-translate/0.4.4/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.4.4/angular-translate.min.js new file mode 100755 index 000000000..5faa946cd --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.4.4/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("ngTranslate",["ng","ngCookies"]).run(["$translate","$COOKIE_KEY","$cookieStore",function(n,t,a){n.rememberLanguage()&&(a.get(t)?n.uses(a.get(t)):a.put(t,n.uses()))}]),angular.module("ngTranslate").directive("translate",["$filter","$interpolate",function(n,t){var a=n("translate");return{restrict:"A",scope:!0,link:function(n,r,e){e.$observe("translate",function(a){n.translationId=angular.equals(a,"")?t(r.text())(n.$parent):a}),e.$observe("values",function(t){n.interpolateParams=t}),n.$on("translationChangeSuccess",function(){r.html(a(n.translationId,n.interpolateParams))}),n.$watch("translationId + interpolateParams",function(){r.html(a(n.translationId,n.interpolateParams))})}}}]),angular.module("ngTranslate").filter("translate",["$parse","$translate",function(n,t){return function(a,r){return angular.isObject(r)||(r=n(r)()),t(a,r)}}]),angular.module("ngTranslate").constant("$COOKIE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("ngTranslate").provider("$translate",function(){var n,t={},a=!1;this.translations=function(n,a){if(!n&&!a)return t;if(n&&!a){if(angular.isString(n))return t[n];t=n}else t[n]=a},this.uses=function(a){if(!a)return n;if(!t[a])throw Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");n=a},this.rememberLanguage=function(n){return angular.isUndefined(n)?a:(a=n,void 0)},this.$get=["$interpolate","$log","$cookieStore","$rootScope","$COOKIE_KEY",function(r,e,o,s,i){return $translate=function(a,o){var s=n?t[n][a]:t[a];return s?r(s)(o):(e.warn("Translation for "+a+" doesn't exist"),a)},$translate.uses=function(t){return t?(n!==t&&(n=t,a&&o.put(i,n),s.$broadcast("translationChangeSuccess")),void 0):n},$translate.rememberLanguage=function(){return a},$translate}]}); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.5.1/angular-translate.js b/ajax/libs/bower-angular-translate/0.5.1/angular-translate.js new file mode 100755 index 000000000..947cc62b8 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.5.1/angular-translate.js @@ -0,0 +1,136 @@ +angular.module('ngTranslate', ['ng', 'ngCookies']) + +.run(['$translate', '$COOKIE_KEY', '$cookieStore', function ($translate, $COOKIE_KEY, $cookieStore) { + + if ($translate.rememberLanguage()) { + if (!$cookieStore.get($COOKIE_KEY)) { + $cookieStore.put($COOKIE_KEY, $translate.uses()); + } else { + $translate.uses($cookieStore.get($COOKIE_KEY)); + } + } +}]); + +angular.module('ngTranslate') + +.directive('translate', ['$filter', '$interpolate', function ($filter, $interpolate) { + + var translate = $filter('translate'); + + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId , '')) { + scope.translationId = $interpolate(element.text())(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + + scope.$watch('translationId + interpolateParams', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + } + }; +}]); + +angular.module('ngTranslate') + +.filter('translate', ['$parse', '$translate', function ($parse, $translate) { + return function (translationId, interpolateParams) { + + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; +}]); + +angular.module('ngTranslate').constant('$COOKIE_KEY', 'NG_TRANSLATE_LANG_KEY'); + +angular.module('ngTranslate').provider('$translate', function () { + + var $translationTable = {}, + $uses, + $rememberLanguage = false; + + this.translations = function (langKey, translationTable) { + + if (!langKey && !translationTable) { + return $translationTable; + } + + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + $translationTable = langKey; + } + } else { + $translationTable[langKey] = translationTable; + } + }; + + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey]) { + throw new Error("$translateProvider couldn't find translationTable for langKey: '" + langKey + "'"); + } + $uses = langKey; + } else { + return $uses; + } + }; + + this.rememberLanguage = function (boolVal) { + if (angular.isUndefined(boolVal)) { + return $rememberLanguage; + } + $rememberLanguage = boolVal; + }; + + this.$get = ['$interpolate', '$log', '$cookieStore', '$rootScope', '$COOKIE_KEY', function ($interpolate, $log, $cookieStore, $rootScope, $COOKIE_KEY) { + + $translate = function (translationId, interpolateParams) { + var translation = ($uses) ? + $translationTable[$uses][translationId] : + $translationTable[translationId]; + + if (translation) { + return $interpolate(translation)(interpolateParams); + } + $log.warn("Translation for " + translationId + " doesn't exist"); + return translationId; + }; + + $translate.uses = function (key) { + if (!key) { + return $uses; + } + if ($uses !== key) { + $uses = key; + if ($rememberLanguage) { + $cookieStore.put($COOKIE_KEY, $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + } + }; + + $translate.rememberLanguage = function () { + return $rememberLanguage; + }; + + return $translate; + }]; +}); diff --git a/ajax/libs/bower-angular-translate/0.5.1/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.5.1/angular-translate.min.js new file mode 100755 index 000000000..5faa946cd --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.5.1/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("ngTranslate",["ng","ngCookies"]).run(["$translate","$COOKIE_KEY","$cookieStore",function(n,t,a){n.rememberLanguage()&&(a.get(t)?n.uses(a.get(t)):a.put(t,n.uses()))}]),angular.module("ngTranslate").directive("translate",["$filter","$interpolate",function(n,t){var a=n("translate");return{restrict:"A",scope:!0,link:function(n,r,e){e.$observe("translate",function(a){n.translationId=angular.equals(a,"")?t(r.text())(n.$parent):a}),e.$observe("values",function(t){n.interpolateParams=t}),n.$on("translationChangeSuccess",function(){r.html(a(n.translationId,n.interpolateParams))}),n.$watch("translationId + interpolateParams",function(){r.html(a(n.translationId,n.interpolateParams))})}}}]),angular.module("ngTranslate").filter("translate",["$parse","$translate",function(n,t){return function(a,r){return angular.isObject(r)||(r=n(r)()),t(a,r)}}]),angular.module("ngTranslate").constant("$COOKIE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("ngTranslate").provider("$translate",function(){var n,t={},a=!1;this.translations=function(n,a){if(!n&&!a)return t;if(n&&!a){if(angular.isString(n))return t[n];t=n}else t[n]=a},this.uses=function(a){if(!a)return n;if(!t[a])throw Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");n=a},this.rememberLanguage=function(n){return angular.isUndefined(n)?a:(a=n,void 0)},this.$get=["$interpolate","$log","$cookieStore","$rootScope","$COOKIE_KEY",function(r,e,o,s,i){return $translate=function(a,o){var s=n?t[n][a]:t[a];return s?r(s)(o):(e.warn("Translation for "+a+" doesn't exist"),a)},$translate.uses=function(t){return t?(n!==t&&(n=t,a&&o.put(i,n),s.$broadcast("translationChangeSuccess")),void 0):n},$translate.rememberLanguage=function(){return a},$translate}]}); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.5.2/angular-translate.js b/ajax/libs/bower-angular-translate/0.5.2/angular-translate.js new file mode 100755 index 000000000..910d88b92 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.5.2/angular-translate.js @@ -0,0 +1,138 @@ +angular.module('ngTranslate', ['ng', 'ngCookies']) + +.run(['$translate', '$COOKIE_KEY', '$cookieStore', function ($translate, $COOKIE_KEY, $cookieStore) { + + if ($translate.rememberLanguage()) { + if (!$cookieStore.get($COOKIE_KEY)) { + $cookieStore.put($COOKIE_KEY, $translate.uses()); + } else { + $translate.uses($cookieStore.get($COOKIE_KEY)); + } + } +}]); + +angular.module('ngTranslate') + +.directive('translate', ['$filter', '$interpolate', function ($filter, $interpolate) { + + var translate = $filter('translate'); + + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId , '')) { + scope.translationId = $interpolate(element.text())(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; +}]); + +angular.module('ngTranslate') + +.filter('translate', ['$parse', '$translate', function ($parse, $translate) { + return function (translationId, interpolateParams) { + + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; +}]); + +angular.module('ngTranslate').constant('$COOKIE_KEY', 'NG_TRANSLATE_LANG_KEY'); + +angular.module('ngTranslate').provider('$translate', function () { + + var $translationTable = {}, + $uses, + $rememberLanguage = false; + + this.translations = function (langKey, translationTable) { + + if (!langKey && !translationTable) { + return $translationTable; + } + + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + $translationTable = langKey; + } + } else { + $translationTable[langKey] = translationTable; + } + }; + + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey]) { + throw new Error("$translateProvider couldn't find translationTable for langKey: '" + langKey + "'"); + } + $uses = langKey; + } else { + return $uses; + } + }; + + this.rememberLanguage = function (boolVal) { + if (angular.isUndefined(boolVal)) { + return $rememberLanguage; + } + $rememberLanguage = boolVal; + }; + + this.$get = ['$interpolate', '$log', '$cookieStore', '$rootScope', '$COOKIE_KEY', function ($interpolate, $log, $cookieStore, $rootScope, $COOKIE_KEY) { + + $translate = function (translationId, interpolateParams) { + var translation = ($uses) ? + $translationTable[$uses][translationId] : + $translationTable[translationId]; + + if (translation) { + return $interpolate(translation)(interpolateParams); + } + $log.warn("Translation for " + translationId + " doesn't exist"); + return translationId; + }; + + $translate.uses = function (key) { + if (!key) { + return $uses; + } + if ($uses !== key) { + $uses = key; + if ($rememberLanguage) { + $cookieStore.put($COOKIE_KEY, $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + } + }; + + $translate.rememberLanguage = function () { + return $rememberLanguage; + }; + + return $translate; + }]; +}); diff --git a/ajax/libs/bower-angular-translate/0.5.2/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.5.2/angular-translate.min.js new file mode 100755 index 000000000..751d4acc4 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.5.2/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("ngTranslate",["ng","ngCookies"]).run(["$translate","$COOKIE_KEY","$cookieStore",function(n,t,a){n.rememberLanguage()&&(a.get(t)?n.uses(a.get(t)):a.put(t,n.uses()))}]),angular.module("ngTranslate").directive("translate",["$filter","$interpolate",function(n,t){var a=n("translate");return{restrict:"A",scope:!0,link:function(n,r,e){e.$observe("translate",function(a){n.translationId=angular.equals(a,"")?t(r.text())(n.$parent):a}),e.$observe("values",function(t){n.interpolateParams=t}),n.$on("translationChangeSuccess",function(){r.html(a(n.translationId,n.interpolateParams))}),n.$watch("translationId + interpolateParams",function(t){t&&r.html(a(n.translationId,n.interpolateParams))})}}}]),angular.module("ngTranslate").filter("translate",["$parse","$translate",function(n,t){return function(a,r){return angular.isObject(r)||(r=n(r)()),t(a,r)}}]),angular.module("ngTranslate").constant("$COOKIE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("ngTranslate").provider("$translate",function(){var n,t={},a=!1;this.translations=function(n,a){if(!n&&!a)return t;if(n&&!a){if(angular.isString(n))return t[n];t=n}else t[n]=a},this.uses=function(a){if(!a)return n;if(!t[a])throw Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");n=a},this.rememberLanguage=function(n){return angular.isUndefined(n)?a:(a=n,void 0)},this.$get=["$interpolate","$log","$cookieStore","$rootScope","$COOKIE_KEY",function(r,e,o,s,i){return $translate=function(a,o){var s=n?t[n][a]:t[a];return s?r(s)(o):(e.warn("Translation for "+a+" doesn't exist"),a)},$translate.uses=function(t){return t?(n!==t&&(n=t,a&&o.put(i,n),s.$broadcast("translationChangeSuccess")),void 0):n},$translate.rememberLanguage=function(){return a},$translate}]}); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.6.0/angular-translate.js b/ajax/libs/bower-angular-translate/0.6.0/angular-translate.js new file mode 100755 index 000000000..43b2f12a9 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.6.0/angular-translate.js @@ -0,0 +1,227 @@ +angular.module('ngTranslate', [ + 'ng', + 'ngCookies' +]).run([ + '$translate', + '$COOKIE_KEY', + '$cookieStore', + function ($translate, $COOKIE_KEY, $cookieStore) { + if ($translate.rememberLanguage()) { + if (!$cookieStore.get($COOKIE_KEY)) { + $cookieStore.put($COOKIE_KEY, $translate.uses()); + } else { + $translate.uses($cookieStore.get($COOKIE_KEY)); + } + } + } +]); +angular.module('ngTranslate').constant('$COOKIE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('ngTranslate').provider('$translate', function () { + var $translationTable = {}, $uses, $rememberLanguage = false, $asyncLoaders = []; + var LoaderGenerator = { + forUrl: function (url) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: url, + params: { lang: key }, + method: 'GET' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + }, + byStaticFiles: function (prefix, suffix) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: [ + prefix, + key, + suffix + ].join(''), + method: 'GET', + params: '' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + } + }; + this.translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + $translationTable = langKey; + } + } else { + $translationTable[langKey] = translationTable; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$asyncLoaders.length) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + this.rememberLanguage = function (boolVal) { + if (angular.isUndefined(boolVal)) { + return $rememberLanguage; + } + $rememberLanguage = boolVal; + }; + this.registerLoader = function (loader) { + var $loader; + if (!(angular.isFunction(loader) || angular.isArray(loader))) { + if (angular.isString(loader)) { + loader = { + type: 'url', + url: loader + }; + } + switch (loader.type) { + case 'url': + $loader = LoaderGenerator.forUrl(loader.url); + break; + case 'static-files': + $loader = LoaderGenerator.byStaticFiles(loader.prefix, loader.suffix); + break; + } + } else { + $loader = loader; + } + $asyncLoaders.push($loader); + }; + var invokeLoading = function ($injector, key) { + var deferred = $injector.get('$q').defer(), loaderFn = $injector.invoke($asyncLoaders[0]); + loaderFn(key).then(function (data) { + $translationTable[key] = data; + deferred.resolve(data); + }, function (key) { + deferred.reject(key); + }); + return deferred.promise; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$cookieStore', + '$rootScope', + '$q', + '$COOKIE_KEY', + function ($interpolate, $log, $injector, $cookieStore, $rootScope, $q, $COOKIE_KEY) { + $translate = function (translationId, interpolateParams) { + var translation = $uses ? $translationTable[$uses] ? $translationTable[$uses][translationId] : translationId : $translationTable[translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + $log.warn('Translation for ' + translationId + ' doesn\'t exist'); + return translationId; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + invokeLoading($injector, key).then(function (data) { + $uses = key; + if ($rememberLanguage) { + $cookieStore.put($COOKIE_KEY, $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($rememberLanguage) { + $cookieStore.put($COOKIE_KEY, $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.rememberLanguage = function () { + return $rememberLanguage; + }; + if ($asyncLoaders.length && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; +}); +angular.module('ngTranslate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text())(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('ngTranslate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.6.0/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.6.0/angular-translate.min.js new file mode 100755 index 000000000..498eb0353 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.6.0/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("ngTranslate",["ng","ngCookies"]).run(["$translate","$COOKIE_KEY","$cookieStore",function(n,r,t){n.rememberLanguage()&&(t.get(r)?n.uses(t.get(r)):t.put(r,n.uses()))}]),angular.module("ngTranslate").constant("$COOKIE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("ngTranslate").provider("$translate",function(){var n,r={},t=!1,e=[],a={forUrl:function(n){return["$http","$q",function(r,t){return function(e){var a=t.defer();return r({url:n,params:{lang:e},method:"GET"}).success(function(n){a.resolve(n)}).error(function(){a.reject(e)}),a.promise}}]},byStaticFiles:function(n,r){return["$http","$q",function(t,e){return function(a){var s=e.defer();return t({url:[n,a,r].join(""),method:"GET",params:""}).success(function(n){s.resolve(n)}).error(function(){s.reject(a)}),s.promise}}]}};this.translations=function(n,t){if(!n&&!t)return r;if(n&&!t){if(angular.isString(n))return r[n];r=n}else r[n]=t},this.uses=function(t){if(!t)return n;if(!r[t]&&!e.length)throw Error("$translateProvider couldn't find translationTable for langKey: '"+t+"'");n=t},this.rememberLanguage=function(n){return angular.isUndefined(n)?t:(t=n,void 0)},this.registerLoader=function(n){var r;if(angular.isFunction(n)||angular.isArray(n))r=n;else switch(angular.isString(n)&&(n={type:"url",url:n}),n.type){case"url":r=a.forUrl(n.url);break;case"static-files":r=a.byStaticFiles(n.prefix,n.suffix)}e.push(r)};var s=function(n,t){var a=n.get("$q").defer(),s=n.invoke(e[0]);return s(t).then(function(n){r[t]=n,a.resolve(n)},function(n){a.reject(n)}),a.promise};this.$get=["$interpolate","$log","$injector","$cookieStore","$rootScope","$q","$COOKIE_KEY",function(a,o,i,u,l,c,f){return $translate=function(t,e){var s=n?r[n]?r[n][t]:t:r[t];return s?a(s)(e):(o.warn("Translation for "+t+" doesn't exist"),t)},$translate.uses=function(e){if(!e)return n;var a=c.defer();return r[e]?(n=e,t&&u.put(f,n),a.resolve(n),l.$broadcast("translationChangeSuccess"),a.promise):(s(i,e).then(function(){n=e,t&&u.put(f,n),l.$broadcast("translationChangeSuccess"),a.resolve(n)},function(n){l.$broadcast("translationChangeError"),a.reject(n)}),a.promise)},$translate.rememberLanguage=function(){return t},e.length&&angular.equals(r,{})&&$translate.uses($translate.uses()),$translate}]}),angular.module("ngTranslate").directive("translate",["$filter","$interpolate",function(n,r){var t=n("translate");return{restrict:"A",scope:!0,link:function(n,e,a){a.$observe("translate",function(t){n.translationId=angular.equals(t,"")?r(e.text())(n.$parent):t}),a.$observe("values",function(r){n.interpolateParams=r}),n.$on("translationChangeSuccess",function(){e.html(t(n.translationId,n.interpolateParams))}),n.$watch("translationId + interpolateParams",function(r){r&&e.html(t(n.translationId,n.interpolateParams))})}}}]),angular.module("ngTranslate").filter("translate",["$parse","$translate",function(n,r){return function(t,e){return angular.isObject(e)||(e=n(e)()),r(t,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.7.0/angular-translate.js b/ajax/libs/bower-angular-translate/0.7.0/angular-translate.js new file mode 100755 index 000000000..df131a5a6 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.7.0/angular-translate.js @@ -0,0 +1,349 @@ +angular.module('ngTranslate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('ngTranslate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('ngTranslate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $uses, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandler, $asyncLoaders = [], NESTED_OBJECT_DELIMITER = '.'; + var LoaderGenerator = { + forUrl: function (url) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: url, + params: { lang: key }, + method: 'GET' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + }, + byStaticFiles: function (prefix, suffix) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: [ + prefix, + key, + suffix + ].join(''), + method: 'GET', + params: '' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + } + }; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + var invokeLoading = function ($injector, key) { + var deferred = $injector.get('$q').defer(), loaderFnBuilder = $asyncLoaders[0], loaderFn; + if (loaderFnBuilder) { + loaderFn = $injector.invoke(loaderFnBuilder); + if (angular.isFunction(loaderFn)) { + loaderFn(key).then(function (data) { + translations(key, data); + deferred.resolve(data); + }, function (key) { + deferred.reject(key); + }); + } else { + deferred.reject(key); + } + } else { + deferred.reject(key); + } + return deferred.promise; + }; + this.translations = translations; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$asyncLoaders.length) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.missingTranslationHandler = function (functionHandler) { + if (angular.isUndefined(functionHandler)) { + return $missingTranslationHandler; + } + $missingTranslationHandler = functionHandler; + }; + this.registerLoader = function (loader) { + if (!loader) { + throw new Error('Please define a valid loader!'); + } + var $loader; + if (!(angular.isFunction(loader) || angular.isArray(loader))) { + if (angular.isString(loader)) { + loader = { + type: 'url', + url: loader + }; + } + switch (loader.type) { + case 'url': + $loader = LoaderGenerator.forUrl(loader.url); + break; + case 'static-files': + $loader = LoaderGenerator.byStaticFiles(loader.prefix, loader.suffix); + break; + } + } else { + $loader = loader; + } + $asyncLoaders.push($loader); + }; + this.useLoaderFactory = function (loader) { + this.registerLoader(loader); + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$rootScope', + '$q', + function ($interpolate, $log, $injector, $rootScope, $q) { + var Storage; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + var $translate = function (translationId, interpolateParams) { + var translation = $uses ? $translationTable[$uses] ? $translationTable[$uses][translationId] : translationId : $translationTable[translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + if (!angular.isUndefined($missingTranslationHandler)) { + $missingTranslationHandler(translationId); + } else { + $log.warn('Translation for ' + translationId + ' doesn\'t exist'); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + invokeLoading($injector, key).then(function (data) { + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($asyncLoaders.length && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('ngTranslate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('ngTranslate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); +angular.module('ngTranslate').factory('$translateCookieStorage', [ + '$cookieStore', + function ($cookieStore) { + var $translateCookieStorage = { + get: function (name) { + return $cookieStore.get(name); + }, + set: function (name, value) { + $cookieStore.put(name, value); + } + }; + return $translateCookieStorage; + } +]); +angular.module('ngTranslate').factory('$translateLocalStorage', [ + '$window', + '$translateCookieStorage', + function ($window, $translateCookieStorage) { + var localStorageAdapter = { + get: function (name) { + return $window.localStorage.getItem(name); + }, + set: function (name, value) { + $window.localStorage.setItem(name, value); + } + }; + var $translateLocalStorage = 'localStorage' in $window && $window.localStorage !== null ? localStorageAdapter : $translateCookieStorage; + return $translateLocalStorage; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.7.0/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.7.0/angular-translate.min.js new file mode 100755 index 000000000..3a3fba7d3 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.7.0/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("ngTranslate",["ng"]).run(["$translate",function(e){var r=e.storageKey(),t=e.storage();t?t.get(r)?e.uses(t.get(r)):angular.isString(e.preferredLanguage())?e.uses(e.preferredLanguage()):t.set(r,e.uses()):angular.isString(e.preferredLanguage())&&e.uses(e.preferredLanguage())}]),angular.module("ngTranslate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("ngTranslate").provider("$translate",["$STORAGE_KEY",function(e){var r,t,n,a,o,s={},i=e,u=[],l=".",c={forUrl:function(e){return["$http","$q",function(r,t){return function(n){var a=t.defer();return r({url:e,params:{lang:n},method:"GET"}).success(function(e){a.resolve(e)}).error(function(){a.reject(n)}),a.promise}}]},byStaticFiles:function(e,r){return["$http","$q",function(t,n){return function(a){var o=n.defer();return t({url:[e,a,r].join(""),method:"GET",params:""}).success(function(e){o.resolve(e)}).error(function(){o.reject(a)}),o.promise}}]}},g=function(e,r){if(!e&&!r)return s;if(e&&!r){if(angular.isString(e))return s[e];angular.extend(s,f(e))}else angular.isObject(s[e])||(s[e]={}),angular.extend(s[e],f(r))},f=function(e,r,t){var n,a,o;r||(r=[]),t||(t={});for(n in e)e.hasOwnProperty(n)&&(o=e[n],angular.isObject(o)?f(o,r.concat(n),t):(a=r.length?""+r.join(l)+l+n:n,t[a]=o));return t},d=function(e,r){var t,n=e.get("$q").defer(),a=u[0];return a?(t=e.invoke(a),angular.isFunction(t)?t(r).then(function(e){g(r,e),n.resolve(e)},function(e){n.reject(e)}):n.reject(r)):n.reject(r),n.promise};this.translations=g,this.preferredLanguage=function(e){return e?(r=e,void 0):r},this.uses=function(e){if(!e)return t;if(!s[e]&&!u.length)throw Error("$translateProvider couldn't find translationTable for langKey: '"+e+"'");t=e};var h=function(e){return e?(i=e,void 0):a?a+i:i};this.storageKey=h,this.missingTranslationHandler=function(e){return angular.isUndefined(e)?o:(o=e,void 0)},this.registerLoader=function(e){if(!e)throw Error("Please define a valid loader!");var r;if(angular.isFunction(e)||angular.isArray(e))r=e;else switch(angular.isString(e)&&(e={type:"url",url:e}),e.type){case"url":r=c.forUrl(e.url);break;case"static-files":r=c.byStaticFiles(e.prefix,e.suffix)}u.push(r)},this.useLoaderFactory=function(e){this.registerLoader(e)},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(e){n=e},this.storagePrefix=function(e){return e?(a=e,void 0):e},this.$get=["$interpolate","$log","$injector","$rootScope","$q",function(e,a,i,l,c){var g;if(n&&(g=i.get(n),!g.get||!g.set))throw Error("Couldn't use storage '"+n+"', missing get() or set() method!");var f=function(r,n){var i=t?s[t]?s[t][r]:r:s[r];return i?e(i)(n):(angular.isUndefined(o)?a.warn("Translation for "+r+" doesn't exist"):o(r),r)};return f.preferredLanguage=function(){return r},f.storage=function(){return g},f.uses=function(e){if(!e)return t;var r=c.defer();return s[e]?(t=e,n&&g.set(f.storageKey(),t),r.resolve(t),l.$broadcast("translationChangeSuccess"),r.promise):(d(i,e).then(function(){t=e,n&&g.set(f.storageKey(),t),l.$broadcast("translationChangeSuccess"),r.resolve(t)},function(e){l.$broadcast("translationChangeError"),r.reject(e)}),r.promise)},f.storageKey=function(){return h()},u.length&&angular.equals(s,{})&&f.uses(f.uses()),f}]}]),angular.module("ngTranslate").directive("translate",["$filter","$interpolate",function(e,r){var t=e("translate");return{restrict:"A",scope:!0,link:function(e,n,a){a.$observe("translate",function(t){e.translationId=angular.equals(t,"")?r(n.text().replace(/^\s+|\s+$/g,""))(e.$parent):t}),a.$observe("values",function(r){e.interpolateParams=r}),e.$on("translationChangeSuccess",function(){n.html(t(e.translationId,e.interpolateParams))}),e.$watch("translationId + interpolateParams",function(r){r&&n.html(t(e.translationId,e.interpolateParams))})}}}]),angular.module("ngTranslate").filter("translate",["$parse","$translate",function(e,r){return function(t,n){return angular.isObject(n)||(n=e(n)()),r(t,n)}}]),angular.module("ngTranslate").factory("$translateCookieStorage",["$cookieStore",function(e){var r={get:function(r){return e.get(r)},set:function(r,t){e.put(r,t)}};return r}]),angular.module("ngTranslate").factory("$translateLocalStorage",["$window","$translateCookieStorage",function(e,r){var t={get:function(r){return e.localStorage.getItem(r)},set:function(r,t){e.localStorage.setItem(r,t)}},n="localStorage"in e&&null!==e.localStorage?t:r;return n}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.8.0/angular-translate.js b/ajax/libs/bower-angular-translate/0.8.0/angular-translate.js new file mode 100755 index 000000000..dbeb1c159 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.8.0/angular-translate.js @@ -0,0 +1,349 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $uses, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandler, $asyncLoaders = [], NESTED_OBJECT_DELIMITER = '.'; + var LoaderGenerator = { + forUrl: function (url) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: url, + params: { lang: key }, + method: 'GET' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + }, + byStaticFiles: function (prefix, suffix) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: [ + prefix, + key, + suffix + ].join(''), + method: 'GET', + params: '' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + } + }; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + var invokeLoading = function ($injector, key) { + var deferred = $injector.get('$q').defer(), loaderFnBuilder = $asyncLoaders[0], loaderFn; + if (loaderFnBuilder) { + loaderFn = $injector.invoke(loaderFnBuilder); + if (angular.isFunction(loaderFn)) { + loaderFn(key).then(function (data) { + translations(key, data); + deferred.resolve(data); + }, function (key) { + deferred.reject(key); + }); + } else { + deferred.reject(key); + } + } else { + deferred.reject(key); + } + return deferred.promise; + }; + this.translations = translations; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$asyncLoaders.length) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.missingTranslationHandler = function (functionHandler) { + if (angular.isUndefined(functionHandler)) { + return $missingTranslationHandler; + } + $missingTranslationHandler = functionHandler; + }; + this.registerLoader = function (loader) { + if (!loader) { + throw new Error('Please define a valid loader!'); + } + var $loader; + if (!(angular.isFunction(loader) || angular.isArray(loader))) { + if (angular.isString(loader)) { + loader = { + type: 'url', + url: loader + }; + } + switch (loader.type) { + case 'url': + $loader = LoaderGenerator.forUrl(loader.url); + break; + case 'static-files': + $loader = LoaderGenerator.byStaticFiles(loader.prefix, loader.suffix); + break; + } + } else { + $loader = loader; + } + $asyncLoaders.push($loader); + }; + this.useLoaderFactory = function (loader) { + this.registerLoader(loader); + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$rootScope', + '$q', + function ($interpolate, $log, $injector, $rootScope, $q) { + var Storage; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + var $translate = function (translationId, interpolateParams) { + var translation = $uses ? $translationTable[$uses] ? $translationTable[$uses][translationId] : translationId : $translationTable[translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + if (!angular.isUndefined($missingTranslationHandler)) { + $missingTranslationHandler(translationId); + } else { + $log.warn('Translation for ' + translationId + ' doesn\'t exist'); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + invokeLoading($injector, key).then(function (data) { + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($asyncLoaders.length && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); +angular.module('pascalprecht.translate').factory('$translateCookieStorage', [ + '$cookieStore', + function ($cookieStore) { + var $translateCookieStorage = { + get: function (name) { + return $cookieStore.get(name); + }, + set: function (name, value) { + $cookieStore.put(name, value); + } + }; + return $translateCookieStorage; + } +]); +angular.module('pascalprecht.translate').factory('$translateLocalStorage', [ + '$window', + '$translateCookieStorage', + function ($window, $translateCookieStorage) { + var localStorageAdapter = { + get: function (name) { + return $window.localStorage.getItem(name); + }, + set: function (name, value) { + $window.localStorage.setItem(name, value); + } + }; + var $translateLocalStorage = 'localStorage' in $window && $window.localStorage !== null ? localStorageAdapter : $translateCookieStorage; + return $translateLocalStorage; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.8.0/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.8.0/angular-translate.min.js new file mode 100755 index 000000000..83e47551b --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.8.0/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(t){var e=t.storageKey(),r=t.storage();r?r.get(e)?t.uses(r.get(e)):angular.isString(t.preferredLanguage())?t.uses(t.preferredLanguage()):r.set(e,t.uses()):angular.isString(t.preferredLanguage())&&t.uses(t.preferredLanguage())}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(t){var e,r,n,a,o,s={},i=t,u=[],l=".",c={forUrl:function(t){return["$http","$q",function(e,r){return function(n){var a=r.defer();return e({url:t,params:{lang:n},method:"GET"}).success(function(t){a.resolve(t)}).error(function(){a.reject(n)}),a.promise}}]},byStaticFiles:function(t,e){return["$http","$q",function(r,n){return function(a){var o=n.defer();return r({url:[t,a,e].join(""),method:"GET",params:""}).success(function(t){o.resolve(t)}).error(function(){o.reject(a)}),o.promise}}]}},g=function(t,e){if(!t&&!e)return s;if(t&&!e){if(angular.isString(t))return s[t];angular.extend(s,f(t))}else angular.isObject(s[t])||(s[t]={}),angular.extend(s[t],f(e))},f=function(t,e,r){var n,a,o;e||(e=[]),r||(r={});for(n in t)t.hasOwnProperty(n)&&(o=t[n],angular.isObject(o)?f(o,e.concat(n),r):(a=e.length?""+e.join(l)+l+n:n,r[a]=o));return r},d=function(t,e){var r,n=t.get("$q").defer(),a=u[0];return a?(r=t.invoke(a),angular.isFunction(r)?r(e).then(function(t){g(e,t),n.resolve(t)},function(t){n.reject(t)}):n.reject(e)):n.reject(e),n.promise};this.translations=g,this.preferredLanguage=function(t){return t?(e=t,void 0):e},this.uses=function(t){if(!t)return r;if(!s[t]&&!u.length)throw Error("$translateProvider couldn't find translationTable for langKey: '"+t+"'");r=t};var p=function(t){return t?(i=t,void 0):a?a+i:i};this.storageKey=p,this.missingTranslationHandler=function(t){return angular.isUndefined(t)?o:(o=t,void 0)},this.registerLoader=function(t){if(!t)throw Error("Please define a valid loader!");var e;if(angular.isFunction(t)||angular.isArray(t))e=t;else switch(angular.isString(t)&&(t={type:"url",url:t}),t.type){case"url":e=c.forUrl(t.url);break;case"static-files":e=c.byStaticFiles(t.prefix,t.suffix)}u.push(e)},this.useLoaderFactory=function(t){this.registerLoader(t)},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(t){n=t},this.storagePrefix=function(t){return t?(a=t,void 0):t},this.$get=["$interpolate","$log","$injector","$rootScope","$q",function(t,a,i,l,c){var g;if(n&&(g=i.get(n),!g.get||!g.set))throw Error("Couldn't use storage '"+n+"', missing get() or set() method!");var f=function(e,n){var i=r?s[r]?s[r][e]:e:s[e];return i?t(i)(n):(angular.isUndefined(o)?a.warn("Translation for "+e+" doesn't exist"):o(e),e)};return f.preferredLanguage=function(){return e},f.storage=function(){return g},f.uses=function(t){if(!t)return r;var e=c.defer();return s[t]?(r=t,n&&g.set(f.storageKey(),r),e.resolve(r),l.$broadcast("translationChangeSuccess"),e.promise):(d(i,t).then(function(){r=t,n&&g.set(f.storageKey(),r),l.$broadcast("translationChangeSuccess"),e.resolve(r)},function(t){l.$broadcast("translationChangeError"),e.reject(t)}),e.promise)},f.storageKey=function(){return p()},u.length&&angular.equals(s,{})&&f.uses(f.uses()),f}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(t,e){var r=t("translate");return{restrict:"A",scope:!0,link:function(t,n,a){a.$observe("translate",function(r){t.translationId=angular.equals(r,"")?e(n.text().replace(/^\s+|\s+$/g,""))(t.$parent):r}),a.$observe("values",function(e){t.interpolateParams=e}),t.$on("translationChangeSuccess",function(){n.html(r(t.translationId,t.interpolateParams))}),t.$watch("translationId + interpolateParams",function(e){e&&n.html(r(t.translationId,t.interpolateParams))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(t,e){return function(r,n){return angular.isObject(n)||(n=t(n)()),e(r,n)}}]),angular.module("pascalprecht.translate").factory("$translateCookieStorage",["$cookieStore",function(t){var e={get:function(e){return t.get(e)},set:function(e,r){t.put(e,r)}};return e}]),angular.module("pascalprecht.translate").factory("$translateLocalStorage",["$window","$translateCookieStorage",function(t,e){var r={get:function(e){return t.localStorage.getItem(e)},set:function(e,r){t.localStorage.setItem(e,r)}},n="localStorage"in t&&null!==t.localStorage?r:e;return n}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.8.1/angular-translate.js b/ajax/libs/bower-angular-translate/0.8.1/angular-translate.js new file mode 100755 index 000000000..deb3599a2 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.8.1/angular-translate.js @@ -0,0 +1,355 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $uses, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $asyncLoaders = [], NESTED_OBJECT_DELIMITER = '.'; + var LoaderGenerator = { + forUrl: function (url) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: url, + params: { lang: key }, + method: 'GET' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + }, + byStaticFiles: function (prefix, suffix) { + return [ + '$http', + '$q', + function ($http, $q) { + return function (key) { + var deferred = $q.defer(); + $http({ + url: [ + prefix, + key, + suffix + ].join(''), + method: 'GET', + params: '' + }).success(function (data, status) { + deferred.resolve(data); + }).error(function (data, status) { + deferred.reject(key); + }); + return deferred.promise; + }; + } + ]; + } + }; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + var invokeLoading = function ($injector, key) { + var deferred = $injector.get('$q').defer(), loaderFnBuilder = $asyncLoaders[0], loaderFn; + if (loaderFnBuilder) { + loaderFn = $injector.invoke(loaderFnBuilder); + if (angular.isFunction(loaderFn)) { + loaderFn(key).then(function (data) { + translations(key, data); + deferred.resolve(data); + }, function (key) { + deferred.reject(key); + }); + } else { + deferred.reject(key); + } + } else { + deferred.reject(key); + } + return deferred.promise; + }; + this.translations = translations; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$asyncLoaders.length) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.registerLoader = function (loader) { + if (!loader) { + throw new Error('Please define a valid loader!'); + } + var $loader; + if (!(angular.isFunction(loader) || angular.isArray(loader))) { + if (angular.isString(loader)) { + loader = { + type: 'url', + url: loader + }; + } + switch (loader.type) { + case 'url': + $loader = LoaderGenerator.forUrl(loader.url); + break; + case 'static-files': + $loader = LoaderGenerator.byStaticFiles(loader.prefix, loader.suffix); + break; + } + } else { + $loader = loader; + } + $asyncLoaders.push($loader); + }; + this.useLoaderFactory = function (loader) { + this.registerLoader(loader); + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$rootScope', + '$q', + function ($interpolate, $log, $injector, $rootScope, $q) { + var Storage; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + var $translate = function (translationId, interpolateParams) { + var translation = $uses ? $translationTable[$uses] ? $translationTable[$uses][translationId] : translationId : $translationTable[translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + if ($missingTranslationHandlerFactory) { + $injector.get($missingTranslationHandlerFactory)(translationId); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + invokeLoading($injector, key).then(function (data) { + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($asyncLoaders.length && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); +angular.module('pascalprecht.translate').factory('$translateCookieStorage', [ + '$cookieStore', + function ($cookieStore) { + var $translateCookieStorage = { + get: function (name) { + return $cookieStore.get(name); + }, + set: function (name, value) { + $cookieStore.put(name, value); + } + }; + return $translateCookieStorage; + } +]); +angular.module('pascalprecht.translate').factory('$translateLocalStorage', [ + '$window', + '$translateCookieStorage', + function ($window, $translateCookieStorage) { + var localStorageAdapter = { + get: function (name) { + return $window.localStorage.getItem(name); + }, + set: function (name, value) { + $window.localStorage.setItem(name, value); + } + }; + var $translateLocalStorage = 'localStorage' in $window && $window.localStorage !== null ? localStorageAdapter : $translateCookieStorage; + return $translateLocalStorage; + } +]); +angular.module('pascalprecht.translate').factory('$translateMissingTranslationHandlerLog', [ + '$log', + function ($log) { + return function (translationId) { + $log.warn('Translation for ' + translationId + ' doesn\'t exist'); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.8.1/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.8.1/angular-translate.min.js new file mode 100755 index 000000000..1b6349d5e --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.8.1/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(t){var r=t.storageKey(),e=t.storage();e?e.get(r)?t.uses(e.get(r)):angular.isString(t.preferredLanguage())?t.uses(t.preferredLanguage()):e.set(r,t.uses()):angular.isString(t.preferredLanguage())&&t.uses(t.preferredLanguage())}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(t){var r,e,n,a,o,s={},i=t,u=[],l=".",c={forUrl:function(t){return["$http","$q",function(r,e){return function(n){var a=e.defer();return r({url:t,params:{lang:n},method:"GET"}).success(function(t){a.resolve(t)}).error(function(){a.reject(n)}),a.promise}}]},byStaticFiles:function(t,r){return["$http","$q",function(e,n){return function(a){var o=n.defer();return e({url:[t,a,r].join(""),method:"GET",params:""}).success(function(t){o.resolve(t)}).error(function(){o.reject(a)}),o.promise}}]}},g=function(t,r){if(!t&&!r)return s;if(t&&!r){if(angular.isString(t))return s[t];angular.extend(s,f(t))}else angular.isObject(s[t])||(s[t]={}),angular.extend(s[t],f(r))},f=function(t,r,e){var n,a,o;r||(r=[]),e||(e={});for(n in t)t.hasOwnProperty(n)&&(o=t[n],angular.isObject(o)?f(o,r.concat(n),e):(a=r.length?""+r.join(l)+l+n:n,e[a]=o));return e},d=function(t,r){var e,n=t.get("$q").defer(),a=u[0];return a?(e=t.invoke(a),angular.isFunction(e)?e(r).then(function(t){g(r,t),n.resolve(t)},function(t){n.reject(t)}):n.reject(r)):n.reject(r),n.promise};this.translations=g,this.preferredLanguage=function(t){return t?(r=t,void 0):r},this.uses=function(t){if(!t)return e;if(!s[t]&&!u.length)throw Error("$translateProvider couldn't find translationTable for langKey: '"+t+"'");e=t};var p=function(t){return t?(i=t,void 0):a?a+i:i};this.storageKey=p,this.registerLoader=function(t){if(!t)throw Error("Please define a valid loader!");var r;if(angular.isFunction(t)||angular.isArray(t))r=t;else switch(angular.isString(t)&&(t={type:"url",url:t}),t.type){case"url":r=c.forUrl(t.url);break;case"static-files":r=c.byStaticFiles(t.prefix,t.suffix)}u.push(r)},this.useLoaderFactory=function(t){this.registerLoader(t)},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(t){n=t},this.storagePrefix=function(t){return t?(a=t,void 0):t},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(t){o=t},this.$get=["$interpolate","$log","$injector","$rootScope","$q",function(t,a,i,l,c){var g;if(n&&(g=i.get(n),!g.get||!g.set))throw Error("Couldn't use storage '"+n+"', missing get() or set() method!");var f=function(r,n){var a=e?s[e]?s[e][r]:r:s[r];return a?t(a)(n):(o&&i.get(o)(r),r)};return f.preferredLanguage=function(){return r},f.storage=function(){return g},f.uses=function(t){if(!t)return e;var r=c.defer();return s[t]?(e=t,n&&g.set(f.storageKey(),e),r.resolve(e),l.$broadcast("translationChangeSuccess"),r.promise):(d(i,t).then(function(){e=t,n&&g.set(f.storageKey(),e),l.$broadcast("translationChangeSuccess"),r.resolve(e)},function(t){l.$broadcast("translationChangeError"),r.reject(t)}),r.promise)},f.storageKey=function(){return p()},u.length&&angular.equals(s,{})&&f.uses(f.uses()),f}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(t,r){var e=t("translate");return{restrict:"A",scope:!0,link:function(t,n,a){a.$observe("translate",function(e){t.translationId=angular.equals(e,"")?r(n.text().replace(/^\s+|\s+$/g,""))(t.$parent):e}),a.$observe("values",function(r){t.interpolateParams=r}),t.$on("translationChangeSuccess",function(){n.html(e(t.translationId,t.interpolateParams))}),t.$watch("translationId + interpolateParams",function(r){r&&n.html(e(t.translationId,t.interpolateParams))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(t,r){return function(e,n){return angular.isObject(n)||(n=t(n)()),r(e,n)}}]),angular.module("pascalprecht.translate").factory("$translateCookieStorage",["$cookieStore",function(t){var r={get:function(r){return t.get(r)},set:function(r,e){t.put(r,e)}};return r}]),angular.module("pascalprecht.translate").factory("$translateLocalStorage",["$window","$translateCookieStorage",function(t,r){var e={get:function(r){return t.localStorage.getItem(r)},set:function(r,e){t.localStorage.setItem(r,e)}},n="localStorage"in t&&null!==t.localStorage?e:r;return n}]),angular.module("pascalprecht.translate").factory("$translateMissingTranslationHandlerLog",["$log",function(t){return function(r){t.warn("Translation for "+r+" doesn't exist")}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.0/angular-translate.js b/ajax/libs/bower-angular-translate/0.9.0/angular-translate.js new file mode 100755 index 000000000..ebfca0c64 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.0/angular-translate.js @@ -0,0 +1,241 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $uses, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $loaderFactory, $loaderOptions, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options; + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$rootScope', + '$q', + function ($interpolate, $log, $injector, $rootScope, $q) { + var Storage; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + var $translate = function (translationId, interpolateParams) { + var translation = $uses ? $translationTable[$uses] ? $translationTable[$uses][translationId] : translationId : $translationTable[translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + if ($missingTranslationHandlerFactory) { + $injector.get($missingTranslationHandlerFactory)(translationId); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + $uses = key; + translations(key, data); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($loaderFactory && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); +angular.module('pascalprecht.translate').factory('$translateMissingTranslationHandlerLog', [ + '$log', + function ($log) { + return function (translationId) { + $log.warn('Translation for ' + translationId + ' doesn\'t exist'); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.0/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.9.0/angular-translate.min.js new file mode 100755 index 000000000..691fd4cc8 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.0/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(t){var e=t.storageKey(),r=t.storage();r?r.get(e)?t.uses(r.get(e)):angular.isString(t.preferredLanguage())?t.uses(t.preferredLanguage()):r.set(e,t.uses()):angular.isString(t.preferredLanguage())&&t.uses(t.preferredLanguage())}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(t){var e,r,a,n,s,o,i,u={},l=t,c=".",g=function(t,e){if(!t&&!e)return u;if(t&&!e){if(angular.isString(t))return u[t];angular.extend(u,f(t))}else angular.isObject(u[t])||(u[t]={}),angular.extend(u[t],f(e))},f=function(t,e,r){var a,n,s;e||(e=[]),r||(r={});for(a in t)t.hasOwnProperty(a)&&(s=t[a],angular.isObject(s)?f(s,e.concat(a),r):(n=e.length?""+e.join(c)+c+a:a,r[n]=s));return r};this.translations=g,this.preferredLanguage=function(t){return t?(e=t,void 0):e},this.uses=function(t){if(!t)return r;if(!u[t]&&!o)throw Error("$translateProvider couldn't find translationTable for langKey: '"+t+"'");r=t};var d=function(t){return t?(l=t,void 0):n?n+l:l};this.storageKey=d,this.useUrlLoader=function(t){this.useLoader("$translateUrlLoader",{url:t})},this.useStaticFilesLoader=function(t){this.useLoader("$translateStaticFilesLoader",t)},this.useLoader=function(t,e){o=t,i=e},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(t){a=t},this.storagePrefix=function(t){return t?(n=t,void 0):t},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(t){s=t},this.$get=["$interpolate","$log","$injector","$rootScope","$q",function(t,n,l,c,f){var h;if(a&&(h=l.get(a),!h.get||!h.set))throw Error("Couldn't use storage '"+a+"', missing get() or set() method!");var p=function(e,a){var n=r?u[r]?u[r][e]:e:u[e];return n?t(n)(a):(s&&l.get(s)(e),e)};return p.preferredLanguage=function(){return e},p.storage=function(){return h},p.uses=function(t){if(!t)return r;var e=f.defer();return u[t]?(r=t,a&&h.set(p.storageKey(),r),e.resolve(r),c.$broadcast("translationChangeSuccess"),e.promise):(l.get(o)(angular.extend(i,{key:t})).then(function(n){r=t,g(t,n),a&&h.set(p.storageKey(),r),c.$broadcast("translationChangeSuccess"),e.resolve(r)},function(t){c.$broadcast("translationChangeError"),e.reject(t)}),e.promise)},p.storageKey=function(){return d()},o&&angular.equals(u,{})&&p.uses(p.uses()),p}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(t,e){var r=t("translate");return{restrict:"A",scope:!0,link:function(t,a,n){n.$observe("translate",function(r){t.translationId=angular.equals(r,"")?e(a.text().replace(/^\s+|\s+$/g,""))(t.$parent):r}),n.$observe("values",function(e){t.interpolateParams=e}),t.$on("translationChangeSuccess",function(){a.html(r(t.translationId,t.interpolateParams))}),t.$watch("translationId + interpolateParams",function(e){e&&a.html(r(t.translationId,t.interpolateParams))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(t,e){return function(r,a){return angular.isObject(a)||(a=t(a)()),e(r,a)}}]),angular.module("pascalprecht.translate").factory("$translateMissingTranslationHandlerLog",["$log",function(t){return function(e){t.warn("Translation for "+e+" doesn't exist")}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.1/angular-translate.js b/ajax/libs/bower-angular-translate/0.9.1/angular-translate.js new file mode 100755 index 000000000..917c2eb5f --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.1/angular-translate.js @@ -0,0 +1,233 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $uses, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $loaderFactory, $loaderOptions, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options; + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$rootScope', + '$q', + function ($interpolate, $log, $injector, $rootScope, $q) { + var Storage; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + var $translate = function (translationId, interpolateParams) { + var translation = $uses ? $translationTable[$uses] ? $translationTable[$uses][translationId] : translationId : $translationTable[translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + if ($missingTranslationHandlerFactory) { + $injector.get($missingTranslationHandlerFactory)(translationId); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + $uses = key; + translations(key, data); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($loaderFactory && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.1/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.9.1/angular-translate.min.js new file mode 100755 index 000000000..717e330c7 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.1/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(t){var e=t.storageKey(),r=t.storage();r?r.get(e)?t.uses(r.get(e)):angular.isString(t.preferredLanguage())?t.uses(t.preferredLanguage()):r.set(e,t.uses()):angular.isString(t.preferredLanguage())&&t.uses(t.preferredLanguage())}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(t){var e,r,a,n,s,o,i,u={},l=t,g=".",c=function(t,e){if(!t&&!e)return u;if(t&&!e){if(angular.isString(t))return u[t];angular.extend(u,f(t))}else angular.isObject(u[t])||(u[t]={}),angular.extend(u[t],f(e))},f=function(t,e,r){var a,n,s;e||(e=[]),r||(r={});for(a in t)t.hasOwnProperty(a)&&(s=t[a],angular.isObject(s)?f(s,e.concat(a),r):(n=e.length?""+e.join(g)+g+a:a,r[n]=s));return r};this.translations=c,this.preferredLanguage=function(t){return t?(e=t,void 0):e},this.uses=function(t){if(!t)return r;if(!u[t]&&!o)throw Error("$translateProvider couldn't find translationTable for langKey: '"+t+"'");r=t};var d=function(t){return t?(l=t,void 0):n?n+l:l};this.storageKey=d,this.useUrlLoader=function(t){this.useLoader("$translateUrlLoader",{url:t})},this.useStaticFilesLoader=function(t){this.useLoader("$translateStaticFilesLoader",t)},this.useLoader=function(t,e){o=t,i=e},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(t){a=t},this.storagePrefix=function(t){return t?(n=t,void 0):t},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(t){s=t},this.$get=["$interpolate","$log","$injector","$rootScope","$q",function(t,n,l,g,f){var h;if(a&&(h=l.get(a),!h.get||!h.set))throw Error("Couldn't use storage '"+a+"', missing get() or set() method!");var p=function(e,a){var n=r?u[r]?u[r][e]:e:u[e];return n?t(n)(a):(s&&l.get(s)(e),e)};return p.preferredLanguage=function(){return e},p.storage=function(){return h},p.uses=function(t){if(!t)return r;var e=f.defer();return u[t]?(r=t,a&&h.set(p.storageKey(),r),e.resolve(r),g.$broadcast("translationChangeSuccess"),e.promise):(l.get(o)(angular.extend(i,{key:t})).then(function(n){r=t,c(t,n),a&&h.set(p.storageKey(),r),g.$broadcast("translationChangeSuccess"),e.resolve(r)},function(t){g.$broadcast("translationChangeError"),e.reject(t)}),e.promise)},p.storageKey=function(){return d()},o&&angular.equals(u,{})&&p.uses(p.uses()),p}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(t,e){var r=t("translate");return{restrict:"A",scope:!0,link:function(t,a,n){n.$observe("translate",function(r){t.translationId=angular.equals(r,"")?e(a.text().replace(/^\s+|\s+$/g,""))(t.$parent):r}),n.$observe("values",function(e){t.interpolateParams=e}),t.$on("translationChangeSuccess",function(){a.html(r(t.translationId,t.interpolateParams))}),t.$watch("translationId + interpolateParams",function(e){e&&a.html(r(t.translationId,t.interpolateParams))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(t,e){return function(r,a){return angular.isObject(a)||(a=t(a)()),e(r,a)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.3/angular-translate.js b/ajax/libs/bower-angular-translate/0.9.3/angular-translate.js new file mode 100755 index 000000000..f7fa61812 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.3/angular-translate.js @@ -0,0 +1,257 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $fallbackLanguage, $uses, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $loaderFactory, $loaderOptions, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.fallbackLanguage = function (langKey) { + if (langKey) { + $fallbackLanguage = langKey; + } else { + return $fallbackLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options; + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$rootScope', + '$q', + function ($interpolate, $log, $injector, $rootScope, $q) { + var Storage; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + var $translate = function (translationId, interpolateParams) { + var table = $uses ? $translationTable[$uses] : $translationTable; + if (table && table.hasOwnProperty(translationId)) { + return $interpolate(table[translationId])(interpolateParams); + } + if ($missingTranslationHandlerFactory) { + $injector.get($missingTranslationHandlerFactory)(translationId); + } + if ($uses && $fallbackLanguage && $uses !== $fallbackLanguage) { + var translation = $translationTable[$fallbackLanguage][translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.fallbackLanguage = function () { + return $fallbackLanguage; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + var translationTable = {}; + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, table); + }); + } else { + angular.extend(translationTable, data); + } + translations(key, translationTable); + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($loaderFactory && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.3/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.9.3/angular-translate.min.js new file mode 100755 index 000000000..e68bc4b56 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.3/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.uses(c.get(b)):angular.isString(a.preferredLanguage())?a.uses(a.preferredLanguage()):c.set(b,a.uses()):angular.isString(a.preferredLanguage())&&a.uses(a.preferredLanguage())}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j={},k=a,l=".",m=function(a,b){if(!a&&!b)return j;if(a&&!b){if(angular.isString(a))return j[a];angular.extend(j,n(a))}else angular.isObject(j[a])||(j[a]={}),angular.extend(j[a],n(b))},n=function(a,b,c){var d,e,f;b||(b=[]),c||(c={});for(d in a)a.hasOwnProperty(d)&&(f=a[d],angular.isObject(f)?n(f,b.concat(d),c):(e=b.length?""+b.join(l)+l+d:d,c[e]=f));return c};this.translations=m,this.preferredLanguage=function(a){return a?(b=a,void 0):b},this.fallbackLanguage=function(a){return a?(c=a,void 0):c},this.uses=function(a){if(!a)return d;if(!j[a]&&!h)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");d=a};var o=function(a){return a?(k=a,void 0):f?f+k:k};this.storageKey=o,this.useUrlLoader=function(a){this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){h=a,i=b},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(a){e=a},this.storagePrefix=function(a){return a?(f=a,void 0):a},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){g=a},this.$get=["$interpolate","$log","$injector","$rootScope","$q",function(a,f,k,l,n){var p;if(e&&(p=k.get(e),!p.get||!p.set))throw new Error("Couldn't use storage '"+e+"', missing get() or set() method!");var q=function(b,e){var f=d?j[d]:j;if(f&&f.hasOwnProperty(b))return a(f[b])(e);if(g&&k.get(g)(b),d&&c&&d!==c){var h=j[c][b];if(h)return a(h)(e)}return b};return q.preferredLanguage=function(){return b},q.fallbackLanguage=function(){return c},q.storage=function(){return p},q.uses=function(a){if(!a)return d;var b=n.defer();return j[a]?(d=a,e&&p.set(q.storageKey(),d),b.resolve(d),l.$broadcast("translationChangeSuccess"),b.promise):(k.get(h)(angular.extend(i,{key:a})).then(function(c){var f={};angular.isArray(c)?angular.forEach(c,function(a){angular.extend(f,a)}):angular.extend(f,c),m(a,f),d=a,e&&p.set(q.storageKey(),d),l.$broadcast("translationChangeSuccess"),b.resolve(d)},function(a){l.$broadcast("translationChangeError"),b.reject(a)}),b.promise)},q.storageKey=function(){return o()},h&&angular.equals(j,{})&&q.uses(q.uses()),q}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(a,b){var c=a("translate");return{restrict:"A",scope:!0,link:function(a,d,e){e.$observe("translate",function(c){a.translationId=angular.equals(c,"")?b(d.text().replace(/^\s+|\s+$/g,""))(a.$parent):c}),e.$observe("values",function(b){a.interpolateParams=b}),a.$on("translationChangeSuccess",function(){d.html(c(a.translationId,a.interpolateParams))}),a.$watch("translationId + interpolateParams",function(b){b&&d.html(c(a.translationId,a.interpolateParams))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d){return angular.isObject(d)||(d=a(d)()),b(c,d)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.4/angular-translate.js b/ajax/libs/bower-angular-translate/0.9.4/angular-translate.js new file mode 100755 index 000000000..a59de977a --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.4/angular-translate.js @@ -0,0 +1,259 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $fallbackLanguage, $uses, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $loaderFactory, $loaderOptions, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.fallbackLanguage = function (langKey) { + if (langKey) { + $fallbackLanguage = langKey; + } else { + return $fallbackLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$interpolate', + '$log', + '$injector', + '$rootScope', + '$q', + function ($interpolate, $log, $injector, $rootScope, $q) { + var Storage, pendingLoader = false; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + var $translate = function (translationId, interpolateParams) { + var table = $uses ? $translationTable[$uses] : $translationTable; + if (table && table.hasOwnProperty(translationId)) { + return $interpolate(table[translationId])(interpolateParams); + } + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId); + } + if ($uses && $fallbackLanguage && $uses !== $fallbackLanguage) { + var translation = $translationTable[$fallbackLanguage][translationId]; + if (translation) { + return $interpolate(translation)(interpolateParams); + } + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.fallbackLanguage = function () { + return $fallbackLanguage; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + pendingLoader = true; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + var translationTable = {}; + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, table); + }); + } else { + angular.extend(translationTable, data); + } + translations(key, translationTable); + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + pendingLoader = false; + $rootScope.$broadcast('translationChangeSuccess'); + deferred.resolve($uses); + }, function (key) { + $rootScope.$broadcast('translationChangeError'); + deferred.reject(key); + }); + return deferred.promise; + } + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + deferred.resolve($uses); + $rootScope.$broadcast('translationChangeSuccess'); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($loaderFactory && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('values', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/0.9.4/angular-translate.min.js b/ajax/libs/bower-angular-translate/0.9.4/angular-translate.min.js new file mode 100755 index 000000000..998376356 --- /dev/null +++ b/ajax/libs/bower-angular-translate/0.9.4/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.uses(c.get(b)):angular.isString(a.preferredLanguage())?a.uses(a.preferredLanguage()):c.set(b,a.uses()):angular.isString(a.preferredLanguage())&&a.uses(a.preferredLanguage())}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j={},k=a,l=".",m=function(a,b){if(!a&&!b)return j;if(a&&!b){if(angular.isString(a))return j[a];angular.extend(j,n(a))}else angular.isObject(j[a])||(j[a]={}),angular.extend(j[a],n(b))},n=function(a,b,c){var d,e,f;b||(b=[]),c||(c={});for(d in a)a.hasOwnProperty(d)&&(f=a[d],angular.isObject(f)?n(f,b.concat(d),c):(e=b.length?""+b.join(l)+l+d:d,c[e]=f));return c};this.translations=m,this.preferredLanguage=function(a){return a?(b=a,void 0):b},this.fallbackLanguage=function(a){return a?(c=a,void 0):c},this.uses=function(a){if(!a)return d;if(!j[a]&&!h)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");d=a};var o=function(a){return a?(k=a,void 0):f?f+k:k};this.storageKey=o,this.useUrlLoader=function(a){this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){h=a,i=b||{}},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(a){e=a},this.storagePrefix=function(a){return a?(f=a,void 0):a},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){g=a},this.$get=["$interpolate","$log","$injector","$rootScope","$q",function(a,f,k,l,n){var p,q=!1;if(e&&(p=k.get(e),!p.get||!p.set))throw new Error("Couldn't use storage '"+e+"', missing get() or set() method!");var r=function(b,e){var f=d?j[d]:j;if(f&&f.hasOwnProperty(b))return a(f[b])(e);if(g&&!q&&k.get(g)(b),d&&c&&d!==c){var h=j[c][b];if(h)return a(h)(e)}return b};return r.preferredLanguage=function(){return b},r.fallbackLanguage=function(){return c},r.storage=function(){return p},r.uses=function(a){if(!a)return d;var b=n.defer();return j[a]?(d=a,e&&p.set(r.storageKey(),d),b.resolve(d),l.$broadcast("translationChangeSuccess"),b.promise):(q=!0,k.get(h)(angular.extend(i,{key:a})).then(function(c){var f={};angular.isArray(c)?angular.forEach(c,function(a){angular.extend(f,a)}):angular.extend(f,c),m(a,f),d=a,e&&p.set(r.storageKey(),d),q=!1,l.$broadcast("translationChangeSuccess"),b.resolve(d)},function(a){l.$broadcast("translationChangeError"),b.reject(a)}),b.promise)},r.storageKey=function(){return o()},h&&angular.equals(j,{})&&r.uses(r.uses()),r}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(a,b){var c=a("translate");return{restrict:"A",scope:!0,link:function(a,d,e){e.$observe("translate",function(c){a.translationId=angular.equals(c,"")?b(d.text().replace(/^\s+|\s+$/g,""))(a.$parent):c}),e.$observe("values",function(b){a.interpolateParams=b}),a.$on("translationChangeSuccess",function(){d.html(c(a.translationId,a.interpolateParams))}),a.$watch("translationId + interpolateParams",function(b){b&&d.html(c(a.translationId,a.interpolateParams))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d){return angular.isObject(d)||(d=a(d)()),b(c,d)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.0.0/angular-translate.js b/ajax/libs/bower-angular-translate/1.0.0/angular-translate.js new file mode 100755 index 000000000..37d34ff59 --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.0.0/angular-translate.js @@ -0,0 +1,337 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else { + if (angular.isString($translate.fallbackLanguage()) && $translate.fallbackLanguage() !== $translate.preferredLanguage()) { + $translate.load($translate.fallbackLanguage()); + } + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $fallbackLanguage, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $loaderFactory, $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + }; + this.useMessageFormatInterpolation = function () { + this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + }; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + }; + this.fallbackLanguage = function (langKey) { + if (langKey) { + $fallbackLanguage = langKey; + } else { + return $fallbackLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'); + pendingLoader = false, interpolatorHashMap = {}; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if ($interpolatorFactories.length > 0) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var $translate = function (translationId, interpolateParams, interpolationId) { + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + return Interpolator.interpolate(table[translationId], interpolateParams); + } + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $uses !== $fallbackLanguage) { + var translation = $translationTable[$fallbackLanguage][translationId]; + if (translation) { + var returnVal; + Interpolator.setLocale($fallbackLanguage); + returnVal = Interpolator.interpolate(translation, interpolateParams); + Interpolator.setLocale($uses); + return returnVal; + } + } + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.fallbackLanguage = function () { + return $fallbackLanguage; + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var success = function () { + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + $rootScope.$broadcast('translationChangeSuccess'); + }; + var error = function () { + $rootScope.$broadcast('translationChangeError'); + }; + return $translate.load(key, success, error); + }; + $translate.load = function (key, success, error) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + pendingLoader = true; + $nextLang = key; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + var translationTable = {}; + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, table); + }); + } else { + angular.extend(translationTable, data); + } + translations(key, translationTable); + if (angular.isFunction(success)) { + success(); + } + pendingLoader = false; + deferred.resolve(key); + }, function (key) { + if (angular.isFunction(error)) { + error(); + } + deferred.reject(key); + }); + return deferred.promise; + } + if (angular.isFunction(success)) { + success(); + } + deferred.resolve(key); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($loaderFactory && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + if (attr.translateInterpolation) { + scope.interpolation = attr.translateInterpolation; + } + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('translateValues', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams, interpolation); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.0.0/angular-translate.min.js b/ajax/libs/bower-angular-translate/1.0.0/angular-translate.min.js new file mode 100755 index 000000000..a84294945 --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.0.0/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.uses(c.get(b)):angular.isString(a.preferredLanguage())?a.uses(a.preferredLanguage()):c.set(b,a.uses()):(angular.isString(a.fallbackLanguage())&&a.fallbackLanguage()!==a.preferredLanguage()&&a.load(a.fallbackLanguage()),angular.isString(a.preferredLanguage())&&a.uses(a.preferredLanguage()))}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n={},o=a,p=[],q=".",r=function(a,b){if(!a&&!b)return n;if(a&&!b){if(angular.isString(a))return n[a];angular.extend(n,s(a))}else angular.isObject(n[a])||(n[a]={}),angular.extend(n[a],s(b))},s=function(a,b,c){var d,e,f;b||(b=[]),c||(c={});for(d in a)a.hasOwnProperty(d)&&(f=a[d],angular.isObject(f)?s(f,b.concat(d),c):(e=b.length?""+b.join(q)+q+d:d,c[e]=f));return c};this.translations=r,this.addInterpolation=function(a){p.push(a)},this.useMessageFormatInterpolation=function(){this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){i=a},this.preferredLanguage=function(a){return a?(b=a,void 0):b},this.translationNotFoundIndicator=function(a){this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a)},this.translationNotFoundIndicatorLeft=function(a){return a?(l=a,void 0):l},this.translationNotFoundIndicatorRight=function(a){return a?(m=a,void 0):m},this.fallbackLanguage=function(a){return a?(c=a,void 0):c},this.uses=function(a){if(!a)return d;if(!n[a]&&!j)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");d=a};var t=function(a){return a?(o=a,void 0):g?g+o:o};this.storageKey=t,this.useUrlLoader=function(a){this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){j=a,k=b||{}},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(a){f=a},this.storagePrefix=function(a){return a?(g=a,void 0):a},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){h=a},this.$get=["$log","$injector","$rootScope","$q",function(a,g,o,q){var s,u=g.get(i||"$translateDefaultInterpolation");if(pendingLoader=!1,interpolatorHashMap={},f&&(s=g.get(f),!s.get||!s.set))throw new Error("Couldn't use storage '"+f+"', missing get() or set() method!");p.length>0&&angular.forEach(p,function(a){var c=g.get(a);c.setLocale(b||d),interpolatorHashMap[c.getInterpolationIdentifier()]=c});var v=function(a,b,e){var f=d?n[d]:n,i=e?interpolatorHashMap[e]:u;if(f&&f.hasOwnProperty(a))return i.interpolate(f[a],b);if(h&&!pendingLoader&&g.get(h)(a,d),d&&c&&d!==c){var j=n[c][a];if(j){var k;return i.setLocale(c),k=i.interpolate(j,b),i.setLocale(d),k}}return l&&(a=[l,a].join(" ")),m&&(a=[a,m].join(" ")),a};return v.preferredLanguage=function(){return b},v.fallbackLanguage=function(){return c},v.proposedLanguage=function(){return e},v.storage=function(){return s},v.uses=function(a){if(!a)return d;var b=function(){d=a,f&&s.set(v.storageKey(),d),u.setLocale(d),angular.forEach(interpolatorHashMap,function(a,b){interpolatorHashMap[b].setLocale(d)}),o.$broadcast("translationChangeSuccess")},c=function(){o.$broadcast("translationChangeError")};return v.load(a,b,c)},v.load=function(a,b,c){if(!a)throw"No language key specified for loading.";var d=q.defer();return n[a]?(angular.isFunction(b)&&b(),d.resolve(a),d.promise):(pendingLoader=!0,e=a,g.get(j)(angular.extend(k,{key:a})).then(function(c){var e={};angular.isArray(c)?angular.forEach(c,function(a){angular.extend(e,a)}):angular.extend(e,c),r(a,e),angular.isFunction(b)&&b(),pendingLoader=!1,d.resolve(a)},function(a){angular.isFunction(c)&&c(),d.reject(a)}),d.promise)},v.storageKey=function(){return t()},j&&angular.equals(n,{})&&v.uses(v.uses()),v}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(a,b){var c=a("translate");return{restrict:"A",scope:!0,link:function(a,d,e){e.translateInterpolation&&(a.interpolation=e.translateInterpolation),e.$observe("translate",function(c){a.translationId=angular.equals(c,"")?b(d.text().replace(/^\s+|\s+$/g,""))(a.$parent):c}),e.$observe("translateValues",function(b){a.interpolateParams=b}),a.$on("translationChangeSuccess",function(){d.html(c(a.translationId,a.interpolateParams,a.interpolation))}),a.$watch("translationId + interpolateParams",function(b){b&&d.html(c(a.translationId,a.interpolateParams,a.interpolation))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)()),b(c,d,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.0.1/angular-translate.js b/ajax/libs/bower-angular-translate/1.0.1/angular-translate.js new file mode 100755 index 000000000..62bf8ea06 --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.0.1/angular-translate.js @@ -0,0 +1,353 @@ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else { + if (angular.isString($translate.fallbackLanguage()) && $translate.fallbackLanguage() !== $translate.preferredLanguage()) { + $translate.load($translate.fallbackLanguage()); + } + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [ + '$interpolate', + function ($interpolate) { + var $translateInterpolator = {}, $locale, $identifier = 'default'; + $translateInterpolator.setLocale = function (locale) { + $locale = locale; + }; + $translateInterpolator.getInterpolationIdentifier = function () { + return $identifier; + }; + $translateInterpolator.interpolate = function (string, interpolateParams) { + return $interpolate(string)(interpolateParams); + }; + return $translateInterpolator; + } +]); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $fallbackLanguage, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $loaderFactory, $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + }; + this.useMessageFormatInterpolation = function () { + this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + }; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + }; + this.fallbackLanguage = function (langKey) { + if (langKey) { + $fallbackLanguage = langKey; + } else { + return $fallbackLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'); + pendingLoader = false, interpolatorHashMap = {}; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if ($interpolatorFactories.length > 0) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var $translate = function (translationId, interpolateParams, interpolationId) { + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + return Interpolator.interpolate(table[translationId], interpolateParams); + } + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $uses !== $fallbackLanguage) { + var translation = $translationTable[$fallbackLanguage][translationId]; + if (translation) { + var returnVal; + Interpolator.setLocale($fallbackLanguage); + returnVal = Interpolator.interpolate(translation, interpolateParams); + Interpolator.setLocale($uses); + return returnVal; + } + } + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.fallbackLanguage = function () { + return $fallbackLanguage; + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var success = function () { + $uses = key; + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + $rootScope.$broadcast('translationChangeSuccess'); + }; + var error = function () { + $rootScope.$broadcast('translationChangeError'); + }; + return $translate.load(key, success, error); + }; + $translate.load = function (key, success, error) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + if (!$translationTable[key]) { + pendingLoader = true; + $nextLang = key; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + var translationTable = {}; + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, table); + }); + } else { + angular.extend(translationTable, data); + } + translations(key, translationTable); + if (angular.isFunction(success)) { + success(); + } + pendingLoader = false; + deferred.resolve(key); + }, function (key) { + if (angular.isFunction(error)) { + error(); + } + deferred.reject(key); + }); + return deferred.promise; + } + if (angular.isFunction(success)) { + success(); + } + deferred.resolve(key); + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($loaderFactory && angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'A', + scope: true, + link: function linkFn(scope, element, attr) { + if (attr.translateInterpolation) { + scope.interpolation = attr.translateInterpolation; + } + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '')) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('translateValues', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('translationChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams, interpolation); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.0.1/angular-translate.min.js b/ajax/libs/bower-angular-translate/1.0.1/angular-translate.min.js new file mode 100755 index 000000000..0fa82f393 --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.0.1/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.uses(c.get(b)):angular.isString(a.preferredLanguage())?a.uses(a.preferredLanguage()):c.set(b,a.uses()):(angular.isString(a.fallbackLanguage())&&a.fallbackLanguage()!==a.preferredLanguage()&&a.load(a.fallbackLanguage()),angular.isString(a.preferredLanguage())&&a.uses(a.preferredLanguage()))}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,c={},d="default";return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.interpolate=function(b,c){return a(b)(c)},c}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n={},o=a,p=[],q=".",r=function(a,b){if(!a&&!b)return n;if(a&&!b){if(angular.isString(a))return n[a];angular.extend(n,s(a))}else angular.isObject(n[a])||(n[a]={}),angular.extend(n[a],s(b))},s=function(a,b,c){var d,e,f;b||(b=[]),c||(c={});for(d in a)a.hasOwnProperty(d)&&(f=a[d],angular.isObject(f)?s(f,b.concat(d),c):(e=b.length?""+b.join(q)+q+d:d,c[e]=f));return c};this.translations=r,this.addInterpolation=function(a){p.push(a)},this.useMessageFormatInterpolation=function(){this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){i=a},this.preferredLanguage=function(a){return a?(b=a,void 0):b},this.translationNotFoundIndicator=function(a){this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a)},this.translationNotFoundIndicatorLeft=function(a){return a?(l=a,void 0):l},this.translationNotFoundIndicatorRight=function(a){return a?(m=a,void 0):m},this.fallbackLanguage=function(a){return a?(c=a,void 0):c},this.uses=function(a){if(!a)return d;if(!n[a]&&!j)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");d=a};var t=function(a){return a?(o=a,void 0):g?g+o:o};this.storageKey=t,this.useUrlLoader=function(a){this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){j=a,k=b||{}},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(a){f=a},this.storagePrefix=function(a){return a?(g=a,void 0):a},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){h=a},this.$get=["$log","$injector","$rootScope","$q",function(a,g,o,q){var s,u=g.get(i||"$translateDefaultInterpolation");if(pendingLoader=!1,interpolatorHashMap={},f&&(s=g.get(f),!s.get||!s.set))throw new Error("Couldn't use storage '"+f+"', missing get() or set() method!");p.length>0&&angular.forEach(p,function(a){var c=g.get(a);c.setLocale(b||d),interpolatorHashMap[c.getInterpolationIdentifier()]=c});var v=function(a,b,e){var f=d?n[d]:n,i=e?interpolatorHashMap[e]:u;if(f&&f.hasOwnProperty(a))return i.interpolate(f[a],b);if(h&&!pendingLoader&&g.get(h)(a,d),d&&c&&d!==c){var j=n[c][a];if(j){var k;return i.setLocale(c),k=i.interpolate(j,b),i.setLocale(d),k}}return l&&(a=[l,a].join(" ")),m&&(a=[a,m].join(" ")),a};return v.preferredLanguage=function(){return b},v.fallbackLanguage=function(){return c},v.proposedLanguage=function(){return e},v.storage=function(){return s},v.uses=function(a){if(!a)return d;var b=function(){d=a,f&&s.set(v.storageKey(),d),u.setLocale(d),angular.forEach(interpolatorHashMap,function(a,b){interpolatorHashMap[b].setLocale(d)}),o.$broadcast("translationChangeSuccess")},c=function(){o.$broadcast("translationChangeError")};return v.load(a,b,c)},v.load=function(a,b,c){if(!a)throw"No language key specified for loading.";var d=q.defer();return n[a]?(angular.isFunction(b)&&b(),d.resolve(a),d.promise):(pendingLoader=!0,e=a,g.get(j)(angular.extend(k,{key:a})).then(function(c){var e={};angular.isArray(c)?angular.forEach(c,function(a){angular.extend(e,a)}):angular.extend(e,c),r(a,e),angular.isFunction(b)&&b(),pendingLoader=!1,d.resolve(a)},function(a){angular.isFunction(c)&&c(),d.reject(a)}),d.promise)},v.storageKey=function(){return t()},j&&angular.equals(n,{})&&v.uses(v.uses()),v}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(a,b){var c=a("translate");return{restrict:"A",scope:!0,link:function(a,d,e){e.translateInterpolation&&(a.interpolation=e.translateInterpolation),e.$observe("translate",function(c){a.translationId=angular.equals(c,"")?b(d.text().replace(/^\s+|\s+$/g,""))(a.$parent):c}),e.$observe("translateValues",function(b){a.interpolateParams=b}),a.$on("translationChangeSuccess",function(){d.html(c(a.translationId,a.interpolateParams,a.interpolation))}),a.$watch("translationId + interpolateParams",function(b){b&&d.html(c(a.translationId,a.interpolateParams,a.interpolation))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)()),b(c,d,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.0.2/angular-translate.js b/ajax/libs/bower-angular-translate/1.0.2/angular-translate.js new file mode 100755 index 000000000..8d67d1993 --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.0.2/angular-translate.js @@ -0,0 +1,359 @@ +/** + * angular-translate - v1.0.2 - 2013-08-07 + * http://github.com/PascalPrecht/angular-translate + * Copyright (c) 2013 ; Licensed + */ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [ + '$interpolate', + function ($interpolate) { + var $translateInterpolator = {}, $locale, $identifier = 'default'; + $translateInterpolator.setLocale = function (locale) { + $locale = locale; + }; + $translateInterpolator.getInterpolationIdentifier = function () { + return $identifier; + }; + $translateInterpolator.interpolate = function (string, interpolateParams) { + return $interpolate(string)(interpolateParams); + }; + return $translateInterpolator; + } +]); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $fallbackLanguage, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $loaderFactory, $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + }; + this.useMessageFormatInterpolation = function () { + this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + }; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } else { + return $preferredLanguage; + } + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + }; + this.fallbackLanguage = function (langKey) { + if (langKey) { + $fallbackLanguage = langKey; + } else { + return $fallbackLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + }; + this.useLocalStorage = function () { + this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + }; + this.useMissingTranslationHandlerLog = function () { + this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false, interpolatorHashMap = {}; + var loadAsync = function (key) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + $rootScope.$broadcast('$translateLoadingStart'); + pendingLoader = true; + $nextLang = key; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + $rootScope.$broadcast('$translateLoadingSuccess'); + var translationTable = {}; + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, table); + }); + } else { + angular.extend(translationTable, data); + } + translations(key, translationTable); + pendingLoader = false; + deferred.resolve(key); + $rootScope.$broadcast('$translateLoadingEnd'); + }, function (key) { + $rootScope.$broadcast('$translateLoadingError'); + deferred.reject(key); + $rootScope.$broadcast('$translateLoadingEnd'); + }); + return deferred.promise; + }; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if ($interpolatorFactories.length > 0) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var $translate = function (translationId, interpolateParams, interpolationId) { + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + return Interpolator.interpolate(table[translationId], interpolateParams); + } + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $uses !== $fallbackLanguage) { + var translation = $translationTable[$fallbackLanguage][translationId]; + if (translation) { + var returnVal; + Interpolator.setLocale($fallbackLanguage); + returnVal = Interpolator.interpolate(translation, interpolateParams); + Interpolator.setLocale($uses); + return returnVal; + } + } + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.fallbackLanguage = function () { + return $fallbackLanguage; + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + $rootScope.$broadcast('$translateChangeStart'); + function useLanguage(key) { + $uses = key; + $rootScope.$broadcast('$translateChangeSuccess'); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + deferred.resolve(key); + $rootScope.$broadcast('$translateChangeEnd'); + } + if (!$translationTable[key] && $loaderFactory) { + loadAsync(key).then(useLanguage, function (key) { + $rootScope.$broadcast('$translateChangeError'); + deferred.reject(key); + $rootScope.$broadcast('$translateChangeEnd'); + }); + } else { + useLanguage(key); + } + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + if ($loaderFactory) { + if (angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + if ($fallbackLanguage && !$translationTable[$fallbackLanguage]) { + loadAsync($fallbackLanguage); + } + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'AE', + scope: true, + link: function linkFn(scope, element, attr) { + if (attr.translateInterpolation) { + scope.interpolation = attr.translateInterpolation; + } + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '') || translationId === undefined) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('translateValues', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('$translateChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams, interpolation); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.0.2/angular-translate.min.js b/ajax/libs/bower-angular-translate/1.0.2/angular-translate.min.js new file mode 100755 index 000000000..56dcfec4a --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.0.2/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.uses(c.get(b)):angular.isString(a.preferredLanguage())?a.uses(a.preferredLanguage()):c.set(b,a.uses()):angular.isString(a.preferredLanguage())&&a.uses(a.preferredLanguage())}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,c={},d="default";return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.interpolate=function(b,c){return a(b)(c)},c}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n={},o=a,p=[],q=".",r=function(a,b){if(!a&&!b)return n;if(a&&!b){if(angular.isString(a))return n[a];angular.extend(n,s(a))}else angular.isObject(n[a])||(n[a]={}),angular.extend(n[a],s(b))},s=function(a,b,c){var d,e,f;b||(b=[]),c||(c={});for(d in a)a.hasOwnProperty(d)&&(f=a[d],angular.isObject(f)?s(f,b.concat(d),c):(e=b.length?""+b.join(q)+q+d:d,c[e]=f));return c};this.translations=r,this.addInterpolation=function(a){p.push(a)},this.useMessageFormatInterpolation=function(){this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){i=a},this.preferredLanguage=function(a){return a?(b=a,void 0):b},this.translationNotFoundIndicator=function(a){this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a)},this.translationNotFoundIndicatorLeft=function(a){return a?(l=a,void 0):l},this.translationNotFoundIndicatorRight=function(a){return a?(m=a,void 0):m},this.fallbackLanguage=function(a){return a?(c=a,void 0):c},this.uses=function(a){if(!a)return d;if(!n[a]&&!j)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");d=a};var t=function(a){return a?(o=a,void 0):g?g+o:o};this.storageKey=t,this.useUrlLoader=function(a){this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){j=a,k=b||{}},this.useLocalStorage=function(){this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){this.useStorage("$translateCookieStorage")},this.useStorage=function(a){f=a},this.storagePrefix=function(a){return a?(g=a,void 0):a},this.useMissingTranslationHandlerLog=function(){this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){h=a},this.$get=["$log","$injector","$rootScope","$q",function(a,g,o,q){var s,u=g.get(i||"$translateDefaultInterpolation"),v=!1,w={},x=function(a){if(!a)throw"No language key specified for loading.";var b=q.defer();return o.$broadcast("$translateLoadingStart"),v=!0,e=a,g.get(j)(angular.extend(k,{key:a})).then(function(c){o.$broadcast("$translateLoadingSuccess");var d={};angular.isArray(c)?angular.forEach(c,function(a){angular.extend(d,a)}):angular.extend(d,c),r(a,d),v=!1,b.resolve(a),o.$broadcast("$translateLoadingEnd")},function(a){o.$broadcast("$translateLoadingError"),b.reject(a),o.$broadcast("$translateLoadingEnd")}),b.promise};if(f&&(s=g.get(f),!s.get||!s.set))throw new Error("Couldn't use storage '"+f+"', missing get() or set() method!");p.length>0&&angular.forEach(p,function(a){var c=g.get(a);c.setLocale(b||d),w[c.getInterpolationIdentifier()]=c});var y=function(a,b,e){var f=d?n[d]:n,i=e?w[e]:u;if(f&&f.hasOwnProperty(a))return i.interpolate(f[a],b);if(h&&!v&&g.get(h)(a,d),d&&c&&d!==c){var j=n[c][a];if(j){var k;return i.setLocale(c),k=i.interpolate(j,b),i.setLocale(d),k}}return l&&(a=[l,a].join(" ")),m&&(a=[a,m].join(" ")),a};return y.preferredLanguage=function(){return b},y.fallbackLanguage=function(){return c},y.proposedLanguage=function(){return e},y.storage=function(){return s},y.uses=function(a){function b(a){d=a,o.$broadcast("$translateChangeSuccess"),f&&s.set(y.storageKey(),d),u.setLocale(d),angular.forEach(w,function(a,b){w[b].setLocale(d)}),c.resolve(a),o.$broadcast("$translateChangeEnd")}if(!a)return d;var c=q.defer();return o.$broadcast("$translateChangeStart"),!n[a]&&j?x(a).then(b,function(a){o.$broadcast("$translateChangeError"),c.reject(a),o.$broadcast("$translateChangeEnd")}):b(a),c.promise},y.storageKey=function(){return t()},j&&(angular.equals(n,{})&&y.uses(y.uses()),c&&!n[c]&&x(c)),y}]}]),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(a,b){var c=a("translate");return{restrict:"AE",scope:!0,link:function(a,d,e){e.translateInterpolation&&(a.interpolation=e.translateInterpolation),e.$observe("translate",function(c){a.translationId=angular.equals(c,"")||void 0===c?b(d.text().replace(/^\s+|\s+$/g,""))(a.$parent):c}),e.$observe("translateValues",function(b){a.interpolateParams=b}),a.$on("$translateChangeSuccess",function(){d.html(c(a.translationId,a.interpolateParams,a.interpolation))}),a.$watch("translationId + interpolateParams",function(b){b&&d.html(c(a.translationId,a.interpolateParams,a.interpolation))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)()),b(c,d,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.1.0/angular-translate.js b/ajax/libs/bower-angular-translate/1.1.0/angular-translate.js new file mode 100755 index 000000000..84a539bc8 --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.1.0/angular-translate.js @@ -0,0 +1,419 @@ +/** + * angular-translate - v1.1.0 - 2013-09-02 + * http://github.com/PascalPrecht/angular-translate + * Copyright (c) 2013 ; Licensed + */ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $fallbackLanguage, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $loaderFactory, $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + return this; + }; + var flatObject = function (data, path, result) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + return this; + }; + this.useMessageFormatInterpolation = function () { + return this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + return this; + }; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + return this; + } else { + return $preferredLanguage; + } + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + return this; + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + return this; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + return this; + }; + this.fallbackLanguage = function (langKey) { + if (langKey) { + $fallbackLanguage = langKey; + return this; + } else { + return $fallbackLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + return this; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + return this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + return this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + return this; + }; + this.useLocalStorage = function () { + return this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + return this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + return this; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + return this; + }; + this.useMissingTranslationHandlerLog = function () { + return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + return this; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false, interpolatorHashMap = {}; + var loadAsync = function (key) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + $rootScope.$broadcast('$translateLoadingStart'); + pendingLoader = true; + $nextLang = key; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + $rootScope.$broadcast('$translateLoadingSuccess'); + var translationTable = {}; + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, table); + }); + } else { + angular.extend(translationTable, data); + } + translations(key, translationTable); + pendingLoader = false; + $nextLang = undefined; + deferred.resolve(key); + $rootScope.$broadcast('$translateLoadingEnd'); + }, function (key) { + $rootScope.$broadcast('$translateLoadingError'); + deferred.reject(key); + $nextLang = undefined; + $rootScope.$broadcast('$translateLoadingEnd'); + }); + return deferred.promise; + }; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if ($interpolatorFactories.length > 0) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var $translate = function (translationId, interpolateParams, interpolationId) { + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + return Interpolator.interpolate(table[translationId], interpolateParams); + } + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $uses !== $fallbackLanguage) { + var translation = $translationTable[$fallbackLanguage][translationId]; + if (translation) { + var returnVal; + Interpolator.setLocale($fallbackLanguage); + returnVal = Interpolator.interpolate(translation, interpolateParams); + Interpolator.setLocale($uses); + return returnVal; + } + } + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.fallbackLanguage = function () { + return $fallbackLanguage; + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + $rootScope.$broadcast('$translateChangeStart'); + function useLanguage(key) { + $uses = key; + $rootScope.$broadcast('$translateChangeSuccess'); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + deferred.resolve(key); + $rootScope.$broadcast('$translateChangeEnd'); + } + if (!$translationTable[key] && $loaderFactory) { + loadAsync(key).then(useLanguage, function (key) { + $rootScope.$broadcast('$translateChangeError'); + deferred.reject(key); + $rootScope.$broadcast('$translateChangeEnd'); + }); + } else { + useLanguage(key); + } + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + $translate.refresh = function (langKey) { + var deferred = $q.defer(); + function onLoadSuccess() { + deferred.resolve(); + $rootScope.$broadcast('$translateRefreshEnd'); + } + function onLoadFailure() { + deferred.reject(); + $rootScope.$broadcast('$translateRefreshEnd'); + } + if (!$loaderFactory) { + throw new Error('Couldn\'t refresh translation table, no loader registered!'); + } + if (!langKey) { + $rootScope.$broadcast('$translateRefreshStart'); + for (var lang in $translationTable) { + if ($translationTable.hasOwnProperty(lang)) { + delete $translationTable[lang]; + } + } + var loaders = []; + if ($fallbackLanguage) { + loaders.push(loadAsync($fallbackLanguage)); + } + if ($uses) { + loaders.push($translate.uses($uses)); + } + if (loaders.length > 0) { + $q.all(loaders).then(onLoadSuccess, onLoadFailure); + } else + onLoadSuccess(); + } else if ($translationTable.hasOwnProperty(langKey)) { + $rootScope.$broadcast('$translateRefreshStart'); + delete $translationTable[langKey]; + var loader = null; + if (langKey === $uses) { + loader = $translate.uses($uses); + } else { + loader = loadAsync(langKey); + } + loader.then(onLoadSuccess, onLoadFailure); + } else + deferred.reject(); + return deferred.promise; + }; + if ($loaderFactory) { + if (angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + if ($fallbackLanguage && !$translationTable[$fallbackLanguage]) { + loadAsync($fallbackLanguage); + } + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [ + '$interpolate', + function ($interpolate) { + var $translateInterpolator = {}, $locale, $identifier = 'default'; + $translateInterpolator.setLocale = function (locale) { + $locale = locale; + }; + $translateInterpolator.getInterpolationIdentifier = function () { + return $identifier; + }; + $translateInterpolator.interpolate = function (string, interpolateParams) { + return $interpolate(string)(interpolateParams); + }; + return $translateInterpolator; + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + function ($filter, $interpolate) { + var translate = $filter('translate'); + return { + restrict: 'AE', + scope: true, + link: function linkFn(scope, element, attr) { + if (attr.translateInterpolation) { + scope.interpolation = attr.translateInterpolation; + } + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '') || translationId === undefined) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('translateValues', function (interpolateParams) { + scope.interpolateParams = interpolateParams; + }); + scope.$on('$translateChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + }); + scope.$watch('translationId + interpolateParams', function (nValue) { + if (nValue) { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + } + }); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams, interpolation); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.1.0/angular-translate.min.js b/ajax/libs/bower-angular-translate/1.1.0/angular-translate.min.js new file mode 100755 index 000000000..b1f84dc5e --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.1.0/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.uses(c.get(b)):angular.isString(a.preferredLanguage())?a.uses(a.preferredLanguage()):c.set(b,a.uses()):angular.isString(a.preferredLanguage())&&a.uses(a.preferredLanguage())}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n={},o=a,p=[],q=".",r=function(a,b){if(!a&&!b)return n;if(a&&!b){if(angular.isString(a))return n[a];angular.extend(n,s(a))}else angular.isObject(n[a])||(n[a]={}),angular.extend(n[a],s(b));return this},s=function(a,b,c){var d,e,f;b||(b=[]),c||(c={});for(d in a)a.hasOwnProperty(d)&&(f=a[d],angular.isObject(f)?s(f,b.concat(d),c):(e=b.length?""+b.join(q)+q+d:d,c[e]=f));return c};this.translations=r,this.addInterpolation=function(a){return p.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return i=a,this},this.preferredLanguage=function(a){return a?(b=a,this):b},this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(l=a,this):l},this.translationNotFoundIndicatorRight=function(a){return a?(m=a,this):m},this.fallbackLanguage=function(a){return a?(c=a,this):c},this.uses=function(a){if(a){if(!n[a]&&!j)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return d=a,this}return d};var t=function(a){return a?(o=a,void 0):g?g+o:o};this.storageKey=t,this.useUrlLoader=function(a){return this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return j=a,k=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(a){return f=a,this},this.storagePrefix=function(a){return a?(g=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return h=a,this},this.$get=["$log","$injector","$rootScope","$q",function(a,g,o,q){var s,u=g.get(i||"$translateDefaultInterpolation"),v=!1,w={},x=function(a){if(!a)throw"No language key specified for loading.";var b=q.defer();return o.$broadcast("$translateLoadingStart"),v=!0,e=a,g.get(j)(angular.extend(k,{key:a})).then(function(c){o.$broadcast("$translateLoadingSuccess");var d={};angular.isArray(c)?angular.forEach(c,function(a){angular.extend(d,a)}):angular.extend(d,c),r(a,d),v=!1,e=void 0,b.resolve(a),o.$broadcast("$translateLoadingEnd")},function(a){o.$broadcast("$translateLoadingError"),b.reject(a),e=void 0,o.$broadcast("$translateLoadingEnd")}),b.promise};if(f&&(s=g.get(f),!s.get||!s.set))throw new Error("Couldn't use storage '"+f+"', missing get() or set() method!");p.length>0&&angular.forEach(p,function(a){var c=g.get(a);c.setLocale(b||d),w[c.getInterpolationIdentifier()]=c});var y=function(a,b,e){var f=d?n[d]:n,i=e?w[e]:u;if(f&&f.hasOwnProperty(a))return i.interpolate(f[a],b);if(h&&!v&&g.get(h)(a,d),d&&c&&d!==c){var j=n[c][a];if(j){var k;return i.setLocale(c),k=i.interpolate(j,b),i.setLocale(d),k}}return l&&(a=[l,a].join(" ")),m&&(a=[a,m].join(" ")),a};return y.preferredLanguage=function(){return b},y.fallbackLanguage=function(){return c},y.proposedLanguage=function(){return e},y.storage=function(){return s},y.uses=function(a){function b(a){d=a,o.$broadcast("$translateChangeSuccess"),f&&s.set(y.storageKey(),d),u.setLocale(d),angular.forEach(w,function(a,b){w[b].setLocale(d)}),c.resolve(a),o.$broadcast("$translateChangeEnd")}if(!a)return d;var c=q.defer();return o.$broadcast("$translateChangeStart"),!n[a]&&j?x(a).then(b,function(a){o.$broadcast("$translateChangeError"),c.reject(a),o.$broadcast("$translateChangeEnd")}):b(a),c.promise},y.storageKey=function(){return t()},y.refresh=function(a){function b(){f.resolve(),o.$broadcast("$translateRefreshEnd")}function e(){f.reject(),o.$broadcast("$translateRefreshEnd")}var f=q.defer();if(!j)throw new Error("Couldn't refresh translation table, no loader registered!");if(a)if(n.hasOwnProperty(a)){o.$broadcast("$translateRefreshStart"),delete n[a];var g=null;g=a===d?y.uses(d):x(a),g.then(b,e)}else f.reject();else{o.$broadcast("$translateRefreshStart");for(var h in n)n.hasOwnProperty(h)&&delete n[h];var i=[];c&&i.push(x(c)),d&&i.push(y.uses(d)),i.length>0?q.all(i).then(b,e):b()}return f.promise},j&&(angular.equals(n,{})&&y.uses(y.uses()),c&&!n[c]&&x(c)),y}]}]),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,c={},d="default";return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.interpolate=function(b,c){return a(b)(c)},c}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate",function(a,b){var c=a("translate");return{restrict:"AE",scope:!0,link:function(a,d,e){e.translateInterpolation&&(a.interpolation=e.translateInterpolation),e.$observe("translate",function(c){a.translationId=angular.equals(c,"")||void 0===c?b(d.text().replace(/^\s+|\s+$/g,""))(a.$parent):c}),e.$observe("translateValues",function(b){a.interpolateParams=b}),a.$on("$translateChangeSuccess",function(){d.html(c(a.translationId,a.interpolateParams,a.interpolation))}),a.$watch("translationId + interpolateParams",function(b){b&&d.html(c(a.translationId,a.interpolateParams,a.interpolation))})}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)()),b(c,d,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.1.1/angular-translate.js b/ajax/libs/bower-angular-translate/1.1.1/angular-translate.js new file mode 100755 index 000000000..4c89de8f2 --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.1.1/angular-translate.js @@ -0,0 +1,505 @@ +/** + * angular-translate - v1.1.1 - 2013-11-24 + * http://github.com/PascalPrecht/angular-translate + * Copyright (c) 2013 ; Licensed + */ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } else { + storage.set(key, $translate.uses()); + } + } else { + $translate.uses(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.uses($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $fallbackLanguage, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $loaderFactory, $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, NESTED_OBJECT_DELIMITER = '.'; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } else { + angular.extend($translationTable, flatObject(langKey)); + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + return this; + }; + var flatObject = function (data, path, result, prevKey) { + var key, keyWithPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) + continue; + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result, key); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + if (path.length && key === prevKey) { + keyWithShortPath = '' + path.join(NESTED_OBJECT_DELIMITER); + result[keyWithShortPath] = '@:' + keyWithPath; + } + result[keyWithPath] = val; + } + } + return result; + }; + this.translations = translations; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + return this; + }; + this.useMessageFormatInterpolation = function () { + return this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + return this; + }; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + return this; + } else { + return $preferredLanguage; + } + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + return this; + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + return this; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + return this; + }; + this.fallbackLanguage = function (langKey) { + if (langKey) { + if (typeof langKey === 'string' || angular.isArray(langKey)) { + $fallbackLanguage = langKey; + } else { + } + return this; + } else { + return $fallbackLanguage; + } + }; + this.uses = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + return this; + } else { + return $uses; + } + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + return this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + return this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + return this; + }; + this.useLocalStorage = function () { + return this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + return this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + return this; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + return this; + }; + this.useMissingTranslationHandlerLog = function () { + return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + return this; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false, interpolatorHashMap = {}; + var loadAsync = function (key) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + $rootScope.$broadcast('$translateLoadingStart'); + pendingLoader = true; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + $rootScope.$broadcast('$translateLoadingSuccess'); + var translationTable = {}; + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, table); + }); + } else { + angular.extend(translationTable, data); + } + pendingLoader = false; + deferred.resolve({ + key: key, + table: translationTable + }); + $rootScope.$broadcast('$translateLoadingEnd'); + }, function (key) { + $rootScope.$broadcast('$translateLoadingError'); + deferred.reject(key); + $rootScope.$broadcast('$translateLoadingEnd'); + }); + return deferred.promise; + }; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if ($interpolatorFactories.length > 0) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var checkValidFallback = function (usesLang) { + if (usesLang && $fallbackLanguage) { + if (angular.isArray($fallbackLanguage)) { + var fallbackLanguagesSize = $fallbackLanguage.length; + for (var current = 0; current < fallbackLanguagesSize; current++) { + if ($uses === $translationTable[$fallbackLanguage[current]]) { + return false; + } + } + return true; + } else { + return usesLang !== $fallbackLanguage; + } + } else { + return false; + } + return false; + }; + var $translate = function (translationId, interpolateParams, interpolationId) { + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + if (angular.isString(table[translationId]) && table[translationId].substr(0, 2) === '@:') { + return $translate(table[translationId].substr(2), interpolateParams, interpolationId); + } + return Interpolator.interpolate(table[translationId], interpolateParams); + } + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + var normatedLanguages; + if ($uses && $fallbackLanguage && checkValidFallback($uses)) { + if (typeof $fallbackLanguage === 'string') { + normatedLanguages = []; + normatedLanguages.push($fallbackLanguage); + } else { + normatedLanguages = $fallbackLanguage; + } + var fallbackLanguagesSize = normatedLanguages.length; + for (var current = 0; current < fallbackLanguagesSize; current++) { + if ($uses !== $translationTable[normatedLanguages[current]]) { + var translationFromList = $translationTable[normatedLanguages[current]][translationId]; + if (translationFromList) { + var returnValFromList; + Interpolator.setLocale(normatedLanguages[current]); + returnValFromList = Interpolator.interpolate(translationFromList, interpolateParams); + Interpolator.setLocale($uses); + return returnValFromList; + } + } + } + } + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.fallbackLanguage = function () { + return $fallbackLanguage; + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.uses = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + $rootScope.$broadcast('$translateChangeStart'); + function useLanguage(key) { + $uses = key; + $rootScope.$broadcast('$translateChangeSuccess'); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + deferred.resolve(key); + $rootScope.$broadcast('$translateChangeEnd'); + } + if (!$translationTable[key] && $loaderFactory) { + $nextLang = key; + loadAsync(key).then(function (translation) { + $nextLang = undefined; + translations(translation.key, translation.table); + useLanguage(translation.key); + }, function (key) { + $nextLang = undefined; + $rootScope.$broadcast('$translateChangeError'); + deferred.reject(key); + $rootScope.$broadcast('$translateChangeEnd'); + }); + } else { + useLanguage(key); + } + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + $translate.refresh = function (langKey) { + if (!$loaderFactory) { + throw new Error('Couldn\'t refresh translation table, no loader registered!'); + } + var deferred = $q.defer(); + function onLoadSuccess() { + deferred.resolve(); + $rootScope.$broadcast('$translateRefreshEnd'); + } + function onLoadFailure() { + deferred.reject(); + $rootScope.$broadcast('$translateRefreshEnd'); + } + if (!langKey) { + $rootScope.$broadcast('$translateRefreshStart'); + var loaders = []; + if ($fallbackLanguage) { + if (typeof $fallbackLanguage === 'string') { + loaders.push(loadAsync($fallbackLanguage)); + } else { + var fallbackLanguagesSize = $fallbackLanguage.length; + for (var current = 0; current < fallbackLanguagesSize; current++) { + loaders.push(loadAsync($fallbackLanguage[current])); + } + } + } + if ($uses) { + loaders.push(loadAsync($uses)); + } + if (loaders.length > 0) { + $q.all(loaders).then(function (newTranslations) { + for (var lang in $translationTable) { + if ($translationTable.hasOwnProperty(lang)) { + delete $translationTable[lang]; + } + } + for (var i = 0, len = newTranslations.length; i < len; i++) { + translations(newTranslations[i].key, newTranslations[i].table); + } + if ($uses) { + $translate.uses($uses); + } + onLoadSuccess(); + }, function (key) { + if (key === $uses) { + $rootScope.$broadcast('$translateChangeError'); + } + onLoadFailure(); + }); + } else + onLoadSuccess(); + } else if ($translationTable.hasOwnProperty(langKey)) { + $rootScope.$broadcast('$translateRefreshStart'); + var loader = loadAsync(langKey); + if (langKey === $uses) { + loader.then(function (newTranslation) { + $translationTable[langKey] = newTranslation.table; + $translate.uses($uses); + onLoadSuccess(); + }, function () { + $rootScope.$broadcast('$translateChangeError'); + onLoadFailure(); + }); + } else { + loader.then(function (newTranslation) { + $translationTable[langKey] = newTranslation.table; + onLoadSuccess(); + }, onLoadFailure); + } + } else + deferred.reject(); + return deferred.promise; + }; + if ($loaderFactory) { + if (angular.equals($translationTable, {})) { + $translate.uses($translate.uses()); + } + if ($fallbackLanguage) { + if (typeof $fallbackLanguage === 'string' && !$translationTable[$fallbackLanguage]) { + loadAsync($fallbackLanguage); + } else { + var fallbackLanguagesSize = $fallbackLanguage.length; + for (var current = 0; current < fallbackLanguagesSize; current++) { + if (!$translationTable[$fallbackLanguage[current]]) { + loadAsync($fallbackLanguage[current]); + } + } + } + } + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [ + '$interpolate', + function ($interpolate) { + var $translateInterpolator = {}, $locale, $identifier = 'default'; + $translateInterpolator.setLocale = function (locale) { + $locale = locale; + }; + $translateInterpolator.getInterpolationIdentifier = function () { + return $identifier; + }; + $translateInterpolator.interpolate = function (string, interpolateParams) { + return $interpolate(string)(interpolateParams); + }; + return $translateInterpolator; + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').directive('translate', [ + '$filter', + '$interpolate', + '$parse', + function ($filter, $interpolate, $parse) { + var translate = $filter('translate'); + return { + restrict: 'AE', + scope: true, + link: function linkFn(scope, element, attr) { + if (attr.translateInterpolation) { + scope.interpolation = attr.translateInterpolation; + } + attr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '') || translationId === undefined) { + scope.translationId = $interpolate(element.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + attr.$observe('translateValues', function (interpolateParams) { + if (interpolateParams) + scope.$parent.$watch(function () { + scope.interpolateParams = $parse(interpolateParams)(scope.$parent); + }); + }); + scope.$on('$translateChangeSuccess', function () { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + }); + scope.$watch('[translationId, interpolateParams]', function (nValue) { + if (scope.translationId) { + element.html(translate(scope.translationId, scope.interpolateParams, scope.interpolation)); + } + }, true); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate(translationId, interpolateParams, interpolation); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/1.1.1/angular-translate.min.js b/ajax/libs/bower-angular-translate/1.1.1/angular-translate.min.js new file mode 100755 index 000000000..89dc080dc --- /dev/null +++ b/ajax/libs/bower-angular-translate/1.1.1/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.uses(c.get(b)):angular.isString(a.preferredLanguage())?a.uses(a.preferredLanguage()):c.set(b,a.uses()):angular.isString(a.preferredLanguage())&&a.uses(a.preferredLanguage())}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n={},o=a,p=[],q=".",r=function(a,b){if(!a&&!b)return n;if(a&&!b){if(angular.isString(a))return n[a];angular.extend(n,s(a))}else angular.isObject(n[a])||(n[a]={}),angular.extend(n[a],s(b));return this},s=function(a,b,c,d){var e,f,g;b||(b=[]),c||(c={});for(e in a)a.hasOwnProperty(e)&&(g=a[e],angular.isObject(g)?s(g,b.concat(e),c,e):(f=b.length?""+b.join(q)+q+e:e,b.length&&e===d&&(keyWithShortPath=""+b.join(q),c[keyWithShortPath]="@:"+f),c[f]=g));return c};this.translations=r,this.addInterpolation=function(a){return p.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return i=a,this},this.preferredLanguage=function(a){return a?(b=a,this):b},this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(l=a,this):l},this.translationNotFoundIndicatorRight=function(a){return a?(m=a,this):m},this.fallbackLanguage=function(a){return a?(("string"==typeof a||angular.isArray(a))&&(c=a),this):c},this.uses=function(a){if(a){if(!n[a]&&!j)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return d=a,this}return d};var t=function(a){return a?(o=a,void 0):g?g+o:o};this.storageKey=t,this.useUrlLoader=function(a){return this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return j=a,k=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(a){return f=a,this},this.storagePrefix=function(a){return a?(g=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return h=a,this},this.$get=["$log","$injector","$rootScope","$q",function(a,g,o,q){var s,u=g.get(i||"$translateDefaultInterpolation"),v=!1,w={},x=function(a){if(!a)throw"No language key specified for loading.";var b=q.defer();return o.$broadcast("$translateLoadingStart"),v=!0,g.get(j)(angular.extend(k,{key:a})).then(function(c){o.$broadcast("$translateLoadingSuccess");var d={};angular.isArray(c)?angular.forEach(c,function(a){angular.extend(d,a)}):angular.extend(d,c),v=!1,b.resolve({key:a,table:d}),o.$broadcast("$translateLoadingEnd")},function(a){o.$broadcast("$translateLoadingError"),b.reject(a),o.$broadcast("$translateLoadingEnd")}),b.promise};if(f&&(s=g.get(f),!s.get||!s.set))throw new Error("Couldn't use storage '"+f+"', missing get() or set() method!");p.length>0&&angular.forEach(p,function(a){var c=g.get(a);c.setLocale(b||d),w[c.getInterpolationIdentifier()]=c});var y=function(a){if(a&&c){if(angular.isArray(c)){for(var b=c.length,e=0;b>e;e++)if(d===n[c[e]])return!1;return!0}return a!==c}return!1},z=function(a,b,e){var f=d?n[d]:n,i=e?w[e]:u;if(f&&f.hasOwnProperty(a))return angular.isString(f[a])&&"@:"===f[a].substr(0,2)?z(f[a].substr(2),b,e):i.interpolate(f[a],b);h&&!v&&g.get(h)(a,d);var j;if(d&&c&&y(d)){"string"==typeof c?(j=[],j.push(c)):j=c;for(var k=j.length,o=0;k>o;o++)if(d!==n[j[o]]){var p=n[j[o]][a];if(p){var q;return i.setLocale(j[o]),q=i.interpolate(p,b),i.setLocale(d),q}}}return l&&(a=[l,a].join(" ")),m&&(a=[a,m].join(" ")),a};if(z.preferredLanguage=function(){return b},z.fallbackLanguage=function(){return c},z.proposedLanguage=function(){return e},z.storage=function(){return s},z.uses=function(a){function b(a){d=a,o.$broadcast("$translateChangeSuccess"),f&&s.set(z.storageKey(),d),u.setLocale(d),angular.forEach(w,function(a,b){w[b].setLocale(d)}),c.resolve(a),o.$broadcast("$translateChangeEnd")}if(!a)return d;var c=q.defer();return o.$broadcast("$translateChangeStart"),!n[a]&&j?(e=a,x(a).then(function(a){e=void 0,r(a.key,a.table),b(a.key)},function(a){e=void 0,o.$broadcast("$translateChangeError"),c.reject(a),o.$broadcast("$translateChangeEnd")})):b(a),c.promise},z.storageKey=function(){return t()},z.refresh=function(a){function b(){f.resolve(),o.$broadcast("$translateRefreshEnd")}function e(){f.reject(),o.$broadcast("$translateRefreshEnd")}if(!j)throw new Error("Couldn't refresh translation table, no loader registered!");var f=q.defer();if(a)if(n.hasOwnProperty(a)){o.$broadcast("$translateRefreshStart");var g=x(a);a===d?g.then(function(c){n[a]=c.table,z.uses(d),b()},function(){o.$broadcast("$translateChangeError"),e()}):g.then(function(c){n[a]=c.table,b()},e)}else f.reject();else{o.$broadcast("$translateRefreshStart");var h=[];if(c)if("string"==typeof c)h.push(x(c));else for(var i=c.length,k=0;i>k;k++)h.push(x(c[k]));d&&h.push(x(d)),h.length>0?q.all(h).then(function(a){for(var c in n)n.hasOwnProperty(c)&&delete n[c];for(var e=0,f=a.length;f>e;e++)r(a[e].key,a[e].table);d&&z.uses(d),b()},function(a){a===d&&o.$broadcast("$translateChangeError"),e()}):b()}return f.promise},j&&(angular.equals(n,{})&&z.uses(z.uses()),c))if("string"!=typeof c||n[c])for(var A=c.length,B=0;A>B;B++)n[c[B]]||x(c[B]);else x(c);return z}]}]),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,c={},d="default";return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.interpolate=function(b,c){return a(b)(c)},c}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",["$filter","$interpolate","$parse",function(a,b,c){var d=a("translate");return{restrict:"AE",scope:!0,link:function(a,e,f){f.translateInterpolation&&(a.interpolation=f.translateInterpolation),f.$observe("translate",function(c){a.translationId=angular.equals(c,"")||void 0===c?b(e.text().replace(/^\s+|\s+$/g,""))(a.$parent):c}),f.$observe("translateValues",function(b){b&&a.$parent.$watch(function(){a.interpolateParams=c(b)(a.$parent)})}),a.$on("$translateChangeSuccess",function(){e.html(d(a.translationId,a.interpolateParams,a.interpolation))}),a.$watch("[translationId, interpolateParams]",function(){a.translationId&&e.html(d(a.translationId,a.interpolateParams,a.interpolation))},!0)}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)()),b(c,d,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/2.0.0/angular-translate.js b/ajax/libs/bower-angular-translate/2.0.0/angular-translate.js new file mode 100755 index 000000000..3d604c8b1 --- /dev/null +++ b/ajax/libs/bower-angular-translate/2.0.0/angular-translate.js @@ -0,0 +1,800 @@ +/** + * angular-translate - v2.0.0 - 2014-02-16 + * http://github.com/PascalPrecht/angular-translate + * Copyright (c) 2014 ; Licensed + */ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.use($translate.preferredLanguage()); + } else { + storage.set(key, $translate.use()); + } + } else { + $translate.use(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.use($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $availableLanguageKeys = [], $languageKeyAliases, $fallbackLanguage, $fallbackWasString, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $interpolationSanitizationStrategy = false, $loaderFactory, $cloakClassName = 'translate-cloak', $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, $postCompilingEnabled = false, NESTED_OBJECT_DELIMITER = '.'; + var getLocale = function () { + var nav = window.navigator; + return (nav.language || nav.browserLanguage || nav.systemLanguage || nav.userLanguage || '').split('-').join('_'); + }; + var negotiateLocale = function (preferred) { + var avail = [], locale = angular.lowercase(preferred), i = 0, n = $availableLanguageKeys.length; + for (; i < n; i++) { + avail.push(angular.lowercase($availableLanguageKeys[i])); + } + if (avail.indexOf(locale) > -1) { + return locale; + } + if ($languageKeyAliases) { + if ($languageKeyAliases[preferred]) { + var alias = $languageKeyAliases[preferred]; + if (avail.indexOf(angular.lowercase(alias)) > -1) { + return alias; + } + } + } + var parts = preferred.split('_'); + if (parts.length > 1 && avail.indexOf(angular.lowercase(parts[0])) > 1) { + return parts[0]; + } + }; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + return this; + }; + this.translations = translations; + this.cloakClassName = function (name) { + if (!name) { + return $cloakClassName; + } + $cloakClassName = name; + return this; + }; + var flatObject = function (data, path, result, prevKey) { + var key, keyWithPath, keyWithShortPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) { + continue; + } + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result, key); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + if (path.length && key === prevKey) { + keyWithShortPath = '' + path.join(NESTED_OBJECT_DELIMITER); + result[keyWithShortPath] = '@:' + keyWithPath; + } + result[keyWithPath] = val; + } + } + return result; + }; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + return this; + }; + this.useMessageFormatInterpolation = function () { + return this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + return this; + }; + this.useSanitizeValueStrategy = function (value) { + $interpolationSanitizationStrategy = value; + return this; + }; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + return this; + } + return $preferredLanguage; + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + return this; + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + return this; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + return this; + }; + this.fallbackLanguage = function (langKey) { + fallbackStack(langKey); + return this; + }; + var fallbackStack = function (langKey) { + if (langKey) { + if (angular.isString(langKey)) { + $fallbackWasString = true; + $fallbackLanguage = [langKey]; + } else if (angular.isArray(langKey)) { + $fallbackWasString = false; + $fallbackLanguage = langKey; + } + if (angular.isString($preferredLanguage)) { + $fallbackLanguage.push($preferredLanguage); + } + return this; + } else { + if ($fallbackWasString) { + return $fallbackLanguage[0]; + } else { + return $fallbackLanguage; + } + } + }; + this.use = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + return this; + } + return $uses; + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + return this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + return this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + return this; + }; + this.useLocalStorage = function () { + return this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + return this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + return this; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + return this; + }; + this.useMissingTranslationHandlerLog = function () { + return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + return this; + }; + this.usePostCompiling = function (value) { + $postCompilingEnabled = !!value; + return this; + }; + this.determinePreferredLanguage = function (fn) { + var locale = fn && angular.isFunction(fn) ? fn() : getLocale(); + if (!$availableLanguageKeys.length) { + $preferredLanguage = locale; + return this; + } else { + $preferredLanguage = negotiateLocale(locale); + } + }; + this.registerAvailableLanguageKeys = function (languageKeys, aliases) { + if (languageKeys) { + $availableLanguageKeys = languageKeys; + if (aliases) { + $languageKeyAliases = aliases; + } + return this; + } + return $availableLanguageKeys; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false, interpolatorHashMap = {}, langPromises = {}, fallbackIndex, startFallbackIteration; + var $translate = function (translationId, interpolateParams, interpolationId) { + var deferred = $q.defer(); + translationId = translationId.trim(); + var promiseToWaitFor = function () { + var promise = $preferredLanguage ? langPromises[$preferredLanguage] : langPromises[$uses]; + fallbackIndex = 0; + if ($storageFactory && !promise) { + var langKey = Storage.get($storageKey); + promise = langPromises[langKey]; + if ($fallbackLanguage && $fallbackLanguage.length) { + var index = indexOf($fallbackLanguage, langKey); + fallbackIndex = index > -1 ? index += 1 : 0; + $fallbackLanguage.push($preferredLanguage); + } + } + return promise; + }(); + if (!promiseToWaitFor) { + determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + } else { + promiseToWaitFor.then(function () { + determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + }, deferred.reject); + } + return deferred.promise; + }; + var indexOf = function (array, searchElement) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === searchElement) { + return i; + } + } + return -1; + }; + var applyNotFoundIndicators = function (translationId) { + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + var useLanguage = function (key) { + $uses = key; + $rootScope.$emit('$translateChangeSuccess'); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + $rootScope.$emit('$translateChangeEnd'); + }; + var loadAsync = function (key) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + $rootScope.$emit('$translateLoadingStart'); + pendingLoader = true; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + var translationTable = {}; + $rootScope.$emit('$translateLoadingSuccess'); + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, flatObject(table)); + }); + } else { + angular.extend(translationTable, flatObject(data)); + } + pendingLoader = false; + deferred.resolve({ + key: key, + table: translationTable + }); + $rootScope.$emit('$translateLoadingEnd'); + }, function (key) { + $rootScope.$emit('$translateLoadingError'); + deferred.reject(key); + $rootScope.$emit('$translateLoadingEnd'); + }); + return deferred.promise; + }; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if (angular.isFunction(defaultInterpolator.useSanitizeValueStrategy)) { + defaultInterpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy); + } + if ($interpolatorFactories.length) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + if (angular.isFunction(interpolator.useSanitizeValueStrategy)) { + interpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy); + } + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var getTranslationTable = function (langKey) { + var deferred = $q.defer(); + if ($translationTable.hasOwnProperty(langKey)) { + deferred.resolve($translationTable[langKey]); + return deferred.promise; + } else { + langPromises[langKey].then(function (data) { + translations(data.key, data.table); + deferred.resolve(data.table); + }, deferred.reject); + } + return deferred.promise; + }; + var getFallbackTranslation = function (langKey, translationId, interpolateParams, Interpolator) { + var deferred = $q.defer(); + getTranslationTable(langKey).then(function (translationTable) { + if (translationTable.hasOwnProperty(translationId)) { + Interpolator.setLocale(langKey); + deferred.resolve(Interpolator.interpolate(translationTable[translationId], interpolateParams)); + Interpolator.setLocale($uses); + } else { + deferred.reject(); + } + }, deferred.reject); + return deferred.promise; + }; + var getFallbackTranslationInstant = function (langKey, translationId, interpolateParams, Interpolator) { + var result, translationTable = $translationTable[langKey]; + if (translationTable.hasOwnProperty(translationId)) { + Interpolator.setLocale(langKey); + result = Interpolator.interpolate(translationTable[translationId], interpolateParams); + Interpolator.setLocale($uses); + } + return result; + }; + var resolveForFallbackLanguage = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) { + var deferred = $q.defer(); + if (fallbackLanguageIndex < $fallbackLanguage.length) { + var langKey = $fallbackLanguage[fallbackLanguageIndex]; + getFallbackTranslation(langKey, translationId, interpolateParams, Interpolator).then(function (translation) { + deferred.resolve(translation); + }, function () { + var nextFallbackLanguagePromise = resolveForFallbackLanguage(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator); + deferred.resolve(nextFallbackLanguagePromise); + }); + } else { + deferred.resolve(translationId); + } + return deferred.promise; + }; + var resolveForFallbackLanguageInstant = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) { + var result; + if (fallbackLanguageIndex < $fallbackLanguage.length) { + var langKey = $fallbackLanguage[fallbackLanguageIndex]; + result = getFallbackTranslationInstant(langKey, translationId, interpolateParams, Interpolator); + if (!result) { + result = resolveForFallbackLanguageInstant(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator); + } + } + return result; + }; + var fallbackTranslation = function (translationId, interpolateParams, Interpolator) { + return resolveForFallbackLanguage(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator); + }; + var fallbackTranslationInstant = function (translationId, interpolateParams, Interpolator) { + return resolveForFallbackLanguageInstant(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator); + }; + var determineTranslation = function (translationId, interpolateParams, interpolationId) { + var deferred = $q.defer(); + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + var translation = table[translationId]; + if (translation.substr(0, 2) === '@:') { + $translate(translation.substr(2), interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + } else { + deferred.resolve(Interpolator.interpolate(translation, interpolateParams)); + } + } else { + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $fallbackLanguage.length) { + fallbackTranslation(translationId, interpolateParams, Interpolator).then(function (translation) { + deferred.resolve(translation); + }, function (_translationId) { + deferred.reject(applyNotFoundIndicators(_translationId)); + }); + } else { + deferred.reject(applyNotFoundIndicators(translationId)); + } + } + return deferred.promise; + }; + var determineTranslationInstant = function (translationId, interpolateParams, interpolationId) { + var result, table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + var translation = table[translationId]; + if (translation.substr(0, 2) === '@:') { + result = determineTranslationInstant(translation.substr(2), interpolateParams, interpolationId); + } else { + result = Interpolator.interpolate(translation, interpolateParams); + } + } else { + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $fallbackLanguage.length) { + fallbackIndex = 0; + result = fallbackTranslationInstant(translationId, interpolateParams, Interpolator); + } else { + result = applyNotFoundIndicators(translationId); + } + } + return result; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.cloakClassName = function () { + return $cloakClassName; + }; + $translate.fallbackLanguage = function (langKey) { + if (langKey !== undefined && langKey !== null) { + fallbackStack(langKey); + if ($loaderFactory) { + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + if (!langPromises[$fallbackLanguage[i]]) { + langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]); + } + } + } + } + $translate.use($translate.use()); + } + if ($fallbackWasString) { + return $fallbackLanguage[0]; + } else { + return $fallbackLanguage; + } + }; + $translate.useFallbackLanguage = function (langKey) { + if (langKey !== undefined && langKey !== null) { + if (!langKey) { + startFallbackIteration = 0; + } else { + var langKeyPosition = indexOf($fallbackLanguage, langKey); + if (langKeyPosition > -1) { + startFallbackIteration = langKeyPosition; + } + } + } + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.use = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + $rootScope.$emit('$translateChangeStart'); + if (!$translationTable[key] && $loaderFactory) { + $nextLang = key; + langPromises[key] = loadAsync(key).then(function (translation) { + $nextLang = undefined; + translations(translation.key, translation.table); + deferred.resolve(translation.key); + useLanguage(translation.key); + }, function (key) { + $nextLang = undefined; + $rootScope.$emit('$translateChangeError'); + deferred.reject(key); + $rootScope.$emit('$translateChangeEnd'); + }); + } else { + deferred.resolve(key); + useLanguage(key); + } + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + $translate.isPostCompilingEnabled = function () { + return $postCompilingEnabled; + }; + $translate.refresh = function (langKey) { + if (!$loaderFactory) { + throw new Error('Couldn\'t refresh translation table, no loader registered!'); + } + var deferred = $q.defer(); + function resolve() { + deferred.resolve(); + $rootScope.$emit('$translateRefreshEnd'); + } + function reject() { + deferred.reject(); + $rootScope.$emit('$translateRefreshEnd'); + } + $rootScope.$emit('$translateRefreshStart'); + if (!langKey) { + var tables = []; + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + tables.push(loadAsync($fallbackLanguage[i])); + } + } + if ($uses) { + tables.push(loadAsync($uses)); + } + $q.all(tables).then(function (tableData) { + angular.forEach(tableData, function (data) { + if ($translationTable[data.key]) { + delete $translationTable[data.key]; + } + translations(data.key, data.table); + }); + resolve(); + }); + } else if ($translationTable[langKey]) { + loadAsync(langKey).then(function (data) { + translations(data.key, data.table); + if (langKey === $uses) { + useLanguage($uses); + } + resolve(); + }, reject); + } else { + reject(); + } + return deferred.promise; + }; + $translate.instant = function (translationId, interpolateParams, interpolationId) { + translationId = translationId.trim(); + var result, possibleLangKeys = []; + if ($preferredLanguage) { + possibleLangKeys.push($preferredLanguage); + } + if ($uses) { + possibleLangKeys.push($uses); + } + if ($fallbackLanguage && $fallbackLanguage.length) { + possibleLangKeys = possibleLangKeys.concat($fallbackLanguage); + } + for (var i = 0, c = possibleLangKeys.length; i < c; i++) { + var possibleLangKey = possibleLangKeys[i]; + if ($translationTable[possibleLangKey]) { + if ($translationTable[possibleLangKey][translationId]) { + result = determineTranslationInstant(translationId, interpolateParams, interpolationId); + } + } + } + if (!result) { + result = translationId; + } + return result; + }; + if ($loaderFactory) { + if (angular.equals($translationTable, {})) { + $translate.use($translate.use()); + } + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]); + } + } + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [ + '$interpolate', + function ($interpolate) { + var $translateInterpolator = {}, $locale, $identifier = 'default', $sanitizeValueStrategy = null, sanitizeValueStrategies = { + escaped: function (params) { + var result = {}; + for (var key in params) { + if (params.hasOwnProperty(key)) { + result[key] = angular.element('
').text(params[key]).html(); + } + } + return result; + } + }; + var sanitizeParams = function (params) { + var result; + if (angular.isFunction(sanitizeValueStrategies[$sanitizeValueStrategy])) { + result = sanitizeValueStrategies[$sanitizeValueStrategy](params); + } else { + result = params; + } + return result; + }; + $translateInterpolator.setLocale = function (locale) { + $locale = locale; + }; + $translateInterpolator.getInterpolationIdentifier = function () { + return $identifier; + }; + $translateInterpolator.useSanitizeValueStrategy = function (value) { + $sanitizeValueStrategy = value; + return this; + }; + $translateInterpolator.interpolate = function (string, interpolateParams) { + if ($sanitizeValueStrategy) { + interpolateParams = sanitizeParams(interpolateParams); + } + return $interpolate(string)(interpolateParams); + }; + return $translateInterpolator; + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').directive('translate', [ + '$translate', + '$q', + '$interpolate', + '$compile', + '$parse', + '$rootScope', + function ($translate, $q, $interpolate, $compile, $parse, $rootScope) { + return { + restrict: 'AE', + scope: true, + compile: function (tElement, tAttr) { + var translateValuesExist = tAttr.translateValues ? tAttr.translateValues : undefined; + var translateInterpolation = tAttr.translateInterpolation ? tAttr.translateInterpolation : undefined; + var translateValueExist = tElement[0].outerHTML.match(/translate-value-+/i); + return function linkFn(scope, iElement, iAttr) { + scope.interpolateParams = {}; + iAttr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '') || !angular.isDefined(translationId)) { + scope.translationId = $interpolate(iElement.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + if (translateValuesExist) { + iAttr.$observe('translateValues', function (interpolateParams) { + if (interpolateParams) { + scope.$parent.$watch(function () { + angular.extend(scope.interpolateParams, $parse(interpolateParams)(scope.$parent)); + }); + } + }); + } + if (translateValueExist) { + var fn = function (attrName) { + iAttr.$observe(attrName, function (value) { + scope.interpolateParams[angular.lowercase(attrName.substr(14))] = value; + }); + }; + for (var attr in iAttr) { + if (iAttr.hasOwnProperty(attr) && attr.substr(0, 14) === 'translateValue' && attr !== 'translateValues') { + fn(attr); + } + } + } + var applyElementContent = function (value, scope) { + iElement.html(value); + var globallyEnabled = $translate.isPostCompilingEnabled(); + var locallyDefined = typeof tAttr.translateCompile !== 'undefined'; + var locallyEnabled = locallyDefined && tAttr.translateCompile !== 'false'; + if (globallyEnabled && !locallyDefined || locallyEnabled) { + $compile(iElement.contents())(scope); + } + }; + var updateTranslationFn = function () { + if (!translateValuesExist && !translateValueExist) { + return function () { + var unwatch = scope.$watch('translationId', function (value) { + if (scope.translationId && value) { + $translate(value, {}, translateInterpolation).then(function (translation) { + applyElementContent(translation, scope); + unwatch(); + }, function (translationId) { + applyElementContent(translationId, scope); + unwatch(); + }); + } + }, true); + }; + } else { + return function () { + scope.$watch('interpolateParams', function (value) { + if (scope.translationId && value) { + $translate(scope.translationId, value, translateInterpolation).then(function (translation) { + applyElementContent(translation, scope); + }, function (translationId) { + applyElementContent(translationId, scope); + }); + } + }, true); + }; + } + }(); + var unbind = $rootScope.$on('$translateChangeSuccess', updateTranslationFn); + updateTranslationFn(); + scope.$on('$destroy', unbind); + }; + } + }; + } +]); +angular.module('pascalprecht.translate').directive('translateCloak', [ + '$rootScope', + '$translate', + function ($rootScope, $translate) { + return { + compile: function (tElement) { + $rootScope.$on('$translateLoadingSuccess', function () { + tElement.removeClass($translate.cloakClassName()); + }); + tElement.addClass($translate.cloakClassName()); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate.instant(translationId, interpolateParams, interpolation); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/2.0.0/angular-translate.min.js b/ajax/libs/bower-angular-translate/2.0.0/angular-translate.min.js new file mode 100755 index 000000000..f94d5bd2b --- /dev/null +++ b/ajax/libs/bower-angular-translate/2.0.0/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.use(c.get(b)):angular.isString(a.preferredLanguage())?a.use(a.preferredLanguage()):c.set(b,a.use()):angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p={},q=[],r=a,s=[],t=!1,u="translate-cloak",v=!1,w=".",x=function(){var a=window.navigator;return(a.language||a.browserLanguage||a.systemLanguage||a.userLanguage||"").split("-").join("_")},y=function(a){for(var b=[],d=angular.lowercase(a),e=0,f=q.length;f>e;e++)b.push(angular.lowercase(q[e]));if(b.indexOf(d)>-1)return d;if(c&&c[a]){var g=c[a];if(b.indexOf(angular.lowercase(g))>-1)return g}var h=a.split("_");return h.length>1&&b.indexOf(angular.lowercase(h[0]))>1?h[0]:void 0},z=function(a,b){if(!a&&!b)return p;if(a&&!b){if(angular.isString(a))return p[a]}else angular.isObject(p[a])||(p[a]={}),angular.extend(p[a],A(b));return this};this.translations=z,this.cloakClassName=function(a){return a?(u=a,this):u};var A=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)a.hasOwnProperty(e)&&(h=a[e],angular.isObject(h)?A(h,b.concat(e),c,e):(f=b.length?""+b.join(w)+w+e:e,b.length&&e===d&&(g=""+b.join(w),c[g]="@:"+f),c[f]=h));return c};this.addInterpolation=function(a){return s.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return k=a,this},this.useSanitizeValueStrategy=function(a){return t=a,this},this.preferredLanguage=function(a){return a?(b=a,this):b},this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(n=a,this):n},this.translationNotFoundIndicatorRight=function(a){return a?(o=a,this):o},this.fallbackLanguage=function(a){return B(a),this};var B=function(a){return a?(angular.isString(a)?(e=!0,d=[a]):angular.isArray(a)&&(e=!1,d=a),angular.isString(b)&&d.push(b),this):e?d[0]:d};this.use=function(a){if(a){if(!p[a]&&!l)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return f=a,this}return f};var C=function(a){return a?(r=a,void 0):i?i+r:r};this.storageKey=C,this.useUrlLoader=function(a){return this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return l=a,m=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(a){return h=a,this},this.storagePrefix=function(a){return a?(i=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return j=a,this},this.usePostCompiling=function(a){return v=!!a,this},this.determinePreferredLanguage=function(a){var c=a&&angular.isFunction(a)?a():x();return q.length?(b=y(c),void 0):(b=c,this)},this.registerAvailableLanguageKeys=function(a,b){return a?(q=a,b&&(c=b),this):q},this.$get=["$log","$injector","$rootScope","$q",function(a,c,i,q){var w,x,y,D=c.get(k||"$translateDefaultInterpolation"),E=!1,F={},G={},H=function(a,c,e){var g=q.defer();a=a.trim();var i=function(){var a=b?G[b]:G[f];if(x=0,h&&!a){var c=w.get(r);if(a=G[c],d&&d.length){var e=I(d,c);x=e>-1?e+=1:0,d.push(b)}}return a}();return i?i.then(function(){T(a,c,e).then(g.resolve,g.reject)},g.reject):T(a,c,e).then(g.resolve,g.reject),g.promise},I=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},J=function(a){return n&&(a=[n,a].join(" ")),o&&(a=[a,o].join(" ")),a},K=function(a){f=a,i.$emit("$translateChangeSuccess"),h&&w.set(H.storageKey(),f),D.setLocale(f),angular.forEach(F,function(a,b){F[b].setLocale(f)}),i.$emit("$translateChangeEnd")},L=function(a){if(!a)throw"No language key specified for loading.";var b=q.defer();return i.$emit("$translateLoadingStart"),E=!0,c.get(l)(angular.extend(m,{key:a})).then(function(c){var d={};i.$emit("$translateLoadingSuccess"),angular.isArray(c)?angular.forEach(c,function(a){angular.extend(d,A(a))}):angular.extend(d,A(c)),E=!1,b.resolve({key:a,table:d}),i.$emit("$translateLoadingEnd")},function(a){i.$emit("$translateLoadingError"),b.reject(a),i.$emit("$translateLoadingEnd")}),b.promise};if(h&&(w=c.get(h),!w.get||!w.set))throw new Error("Couldn't use storage '"+h+"', missing get() or set() method!");angular.isFunction(D.useSanitizeValueStrategy)&&D.useSanitizeValueStrategy(t),s.length&&angular.forEach(s,function(a){var d=c.get(a);d.setLocale(b||f),angular.isFunction(d.useSanitizeValueStrategy)&&d.useSanitizeValueStrategy(t),F[d.getInterpolationIdentifier()]=d});var M=function(a){var b=q.defer();return p.hasOwnProperty(a)?(b.resolve(p[a]),b.promise):(G[a].then(function(a){z(a.key,a.table),b.resolve(a.table)},b.reject),b.promise)},N=function(a,b,c,d){var e=q.defer();return M(a).then(function(g){g.hasOwnProperty(b)?(d.setLocale(a),e.resolve(d.interpolate(g[b],c)),d.setLocale(f)):e.reject()},e.reject),e.promise},O=function(a,b,c,d){var e,g=p[a];return g.hasOwnProperty(b)&&(d.setLocale(a),e=d.interpolate(g[b],c),d.setLocale(f)),e},P=function(a,b,c,e){var f=q.defer();if(a0?y:x,a,b,c)},S=function(a,b,c){return Q(y>0?y:x,a,b,c)},T=function(a,b,e){var g=q.defer(),h=f?p[f]:p,i=e?F[e]:D;if(h&&h.hasOwnProperty(a)){var k=h[a];"@:"===k.substr(0,2)?H(k.substr(2),b,e).then(g.resolve,g.reject):g.resolve(i.interpolate(k,b))}else j&&!E&&c.get(j)(a,f),f&&d&&d.length?R(a,b,i).then(function(a){g.resolve(a)},function(a){g.reject(J(a))}):g.reject(J(a));return g.promise},U=function(a,b,e){var g,h=f?p[f]:p,i=e?F[e]:D;if(h&&h.hasOwnProperty(a)){var k=h[a];g="@:"===k.substr(0,2)?U(k.substr(2),b,e):i.interpolate(k,b)}else j&&!E&&c.get(j)(a,f),f&&d&&d.length?(x=0,g=S(a,b,i)):g=J(a);return g};if(H.preferredLanguage=function(){return b},H.cloakClassName=function(){return u},H.fallbackLanguage=function(a){if(void 0!==a&&null!==a){if(B(a),l&&d&&d.length)for(var b=0,c=d.length;c>b;b++)G[d[b]]||(G[d[b]]=L(d[b]));H.use(H.use())}return e?d[0]:d},H.useFallbackLanguage=function(a){if(void 0!==a&&null!==a)if(a){var b=I(d,a);b>-1&&(y=b)}else y=0},H.proposedLanguage=function(){return g},H.storage=function(){return w},H.use=function(a){if(!a)return f;var b=q.defer();return i.$emit("$translateChangeStart"),!p[a]&&l?(g=a,G[a]=L(a).then(function(a){g=void 0,z(a.key,a.table),b.resolve(a.key),K(a.key)},function(a){g=void 0,i.$emit("$translateChangeError"),b.reject(a),i.$emit("$translateChangeEnd")})):(b.resolve(a),K(a)),b.promise},H.storageKey=function(){return C()},H.isPostCompilingEnabled=function(){return v},H.refresh=function(a){function b(){e.resolve(),i.$emit("$translateRefreshEnd")}function c(){e.reject(),i.$emit("$translateRefreshEnd")}if(!l)throw new Error("Couldn't refresh translation table, no loader registered!");var e=q.defer();if(i.$emit("$translateRefreshStart"),a)p[a]?L(a).then(function(c){z(c.key,c.table),a===f&&K(f),b()},c):c();else{var g=[];if(d&&d.length)for(var h=0,j=d.length;j>h;h++)g.push(L(d[h]));f&&g.push(L(f)),q.all(g).then(function(a){angular.forEach(a,function(a){p[a.key]&&delete p[a.key],z(a.key,a.table)}),b()})}return e.promise},H.instant=function(a,c,e){a=a.trim();var g,h=[];b&&h.push(b),f&&h.push(f),d&&d.length&&(h=h.concat(d));for(var i=0,j=h.length;j>i;i++){var k=h[i];p[k]&&p[k][a]&&(g=U(a,c,e))}return g||(g=a),g},l&&(angular.equals(p,{})&&H.use(H.use()),d&&d.length))for(var V=0,W=d.length;W>V;V++)G[d[V]]=L(d[V]);return H}]}]),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,c={},d="default",e=null,f={escaped:function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=angular.element("
").text(a[c]).html());return b}},g=function(a){var b;return b=angular.isFunction(f[e])?f[e](a):a};return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.useSanitizeValueStrategy=function(a){return e=a,this},c.interpolate=function(b,c){return e&&(c=g(c)),a(b)(c)},c}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",["$translate","$q","$interpolate","$compile","$parse","$rootScope",function(a,b,c,d,e,f){return{restrict:"AE",scope:!0,compile:function(b,g){var h=g.translateValues?g.translateValues:void 0,i=g.translateInterpolation?g.translateInterpolation:void 0,j=b[0].outerHTML.match(/translate-value-+/i);return function(b,k,l){if(b.interpolateParams={},l.$observe("translate",function(a){b.translationId=angular.equals(a,"")||!angular.isDefined(a)?c(k.text().replace(/^\s+|\s+$/g,""))(b.$parent):a}),h&&l.$observe("translateValues",function(a){a&&b.$parent.$watch(function(){angular.extend(b.interpolateParams,e(a)(b.$parent))})}),j){var m=function(a){l.$observe(a,function(c){b.interpolateParams[angular.lowercase(a.substr(14))]=c})};for(var n in l)l.hasOwnProperty(n)&&"translateValue"===n.substr(0,14)&&"translateValues"!==n&&m(n)}var o=function(b,c){k.html(b);var e=a.isPostCompilingEnabled(),f="undefined"!=typeof g.translateCompile,h=f&&"false"!==g.translateCompile;(e&&!f||h)&&d(k.contents())(c)},p=function(){return h||j?function(){b.$watch("interpolateParams",function(c){b.translationId&&c&&a(b.translationId,c,i).then(function(a){o(a,b)},function(a){o(a,b)})},!0)}:function(){var c=b.$watch("translationId",function(d){b.translationId&&d&&a(d,{},i).then(function(a){o(a,b),c()},function(a){o(a,b),c()})},!0)}}(),q=f.$on("$translateChangeSuccess",p);p(),b.$on("$destroy",q)}}}}]),angular.module("pascalprecht.translate").directive("translateCloak",["$rootScope","$translate",function(a,b){return{compile:function(c){a.$on("$translateLoadingSuccess",function(){c.removeClass(b.cloakClassName())}),c.addClass(b.cloakClassName())}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)()),b.instant(c,d,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/2.0.1/angular-translate.js b/ajax/libs/bower-angular-translate/2.0.1/angular-translate.js new file mode 100755 index 000000000..e6a131ea1 --- /dev/null +++ b/ajax/libs/bower-angular-translate/2.0.1/angular-translate.js @@ -0,0 +1,814 @@ +/** + * angular-translate - v2.0.1 - 2014-02-25 + * http://github.com/PascalPrecht/angular-translate + * Copyright (c) 2014 ; Licensed + */ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.use($translate.preferredLanguage()); + } else { + storage.set(key, $translate.use()); + } + } else { + $translate.use(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.use($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $availableLanguageKeys = [], $languageKeyAliases, $fallbackLanguage, $fallbackWasString, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $interpolationSanitizationStrategy = false, $loaderFactory, $cloakClassName = 'translate-cloak', $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, $postCompilingEnabled = false, NESTED_OBJECT_DELIMITER = '.'; + var getLocale = function () { + var nav = window.navigator; + return (nav.language || nav.browserLanguage || nav.systemLanguage || nav.userLanguage || '').split('-').join('_'); + }; + var negotiateLocale = function (preferred) { + var avail = [], locale = angular.lowercase(preferred), i = 0, n = $availableLanguageKeys.length; + for (; i < n; i++) { + avail.push(angular.lowercase($availableLanguageKeys[i])); + } + if (avail.indexOf(locale) > -1) { + return locale; + } + if ($languageKeyAliases) { + if ($languageKeyAliases[preferred]) { + var alias = $languageKeyAliases[preferred]; + if (avail.indexOf(angular.lowercase(alias)) > -1) { + return alias; + } + } + } + var parts = preferred.split('_'); + if (parts.length > 1 && avail.indexOf(angular.lowercase(parts[0])) > 1) { + return parts[0]; + } + }; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + return this; + }; + this.translations = translations; + this.cloakClassName = function (name) { + if (!name) { + return $cloakClassName; + } + $cloakClassName = name; + return this; + }; + var flatObject = function (data, path, result, prevKey) { + var key, keyWithPath, keyWithShortPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!data.hasOwnProperty(key)) { + continue; + } + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result, key); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + if (path.length && key === prevKey) { + keyWithShortPath = '' + path.join(NESTED_OBJECT_DELIMITER); + result[keyWithShortPath] = '@:' + keyWithPath; + } + result[keyWithPath] = val; + } + } + return result; + }; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + return this; + }; + this.useMessageFormatInterpolation = function () { + return this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + return this; + }; + this.useSanitizeValueStrategy = function (value) { + $interpolationSanitizationStrategy = value; + return this; + }; + this.preferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + return this; + } + return $preferredLanguage; + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + return this; + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + return this; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + return this; + }; + this.fallbackLanguage = function (langKey) { + fallbackStack(langKey); + return this; + }; + var fallbackStack = function (langKey) { + if (langKey) { + if (angular.isString(langKey)) { + $fallbackWasString = true; + $fallbackLanguage = [langKey]; + } else if (angular.isArray(langKey)) { + $fallbackWasString = false; + $fallbackLanguage = langKey; + } + if (angular.isString($preferredLanguage)) { + $fallbackLanguage.push($preferredLanguage); + } + return this; + } else { + if ($fallbackWasString) { + return $fallbackLanguage[0]; + } else { + return $fallbackLanguage; + } + } + }; + this.use = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + return this; + } + return $uses; + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url) { + return this.useLoader('$translateUrlLoader', { url: url }); + }; + this.useStaticFilesLoader = function (options) { + return this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + return this; + }; + this.useLocalStorage = function () { + return this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + return this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + return this; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + return this; + }; + this.useMissingTranslationHandlerLog = function () { + return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + return this; + }; + this.usePostCompiling = function (value) { + $postCompilingEnabled = !!value; + return this; + }; + this.determinePreferredLanguage = function (fn) { + var locale = fn && angular.isFunction(fn) ? fn() : getLocale(); + if (!$availableLanguageKeys.length) { + $preferredLanguage = locale; + return this; + } else { + $preferredLanguage = negotiateLocale(locale); + } + }; + this.registerAvailableLanguageKeys = function (languageKeys, aliases) { + if (languageKeys) { + $availableLanguageKeys = languageKeys; + if (aliases) { + $languageKeyAliases = aliases; + } + return this; + } + return $availableLanguageKeys; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false, interpolatorHashMap = {}, langPromises = {}, fallbackIndex, startFallbackIteration; + var $translate = function (translationId, interpolateParams, interpolationId) { + var deferred = $q.defer(); + translationId = translationId.trim(); + var promiseToWaitFor = function () { + var promise = $preferredLanguage ? langPromises[$preferredLanguage] : langPromises[$uses]; + fallbackIndex = 0; + if ($storageFactory && !promise) { + var langKey = Storage.get($storageKey); + promise = langPromises[langKey]; + if ($fallbackLanguage && $fallbackLanguage.length) { + var index = indexOf($fallbackLanguage, langKey); + fallbackIndex = index > -1 ? index += 1 : 0; + $fallbackLanguage.push($preferredLanguage); + } + } + return promise; + }(); + if (!promiseToWaitFor) { + determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + } else { + promiseToWaitFor.then(function () { + determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + }, deferred.reject); + } + return deferred.promise; + }; + var indexOf = function (array, searchElement) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === searchElement) { + return i; + } + } + return -1; + }; + var applyNotFoundIndicators = function (translationId) { + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + var useLanguage = function (key) { + $uses = key; + $rootScope.$emit('$translateChangeSuccess'); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + $rootScope.$emit('$translateChangeEnd'); + }; + var loadAsync = function (key) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + $rootScope.$emit('$translateLoadingStart'); + pendingLoader = true; + $injector.get($loaderFactory)(angular.extend($loaderOptions, { key: key })).then(function (data) { + var translationTable = {}; + $rootScope.$emit('$translateLoadingSuccess'); + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, flatObject(table)); + }); + } else { + angular.extend(translationTable, flatObject(data)); + } + pendingLoader = false; + deferred.resolve({ + key: key, + table: translationTable + }); + $rootScope.$emit('$translateLoadingEnd'); + }, function (key) { + $rootScope.$emit('$translateLoadingError'); + deferred.reject(key); + $rootScope.$emit('$translateLoadingEnd'); + }); + return deferred.promise; + }; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if (angular.isFunction(defaultInterpolator.useSanitizeValueStrategy)) { + defaultInterpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy); + } + if ($interpolatorFactories.length) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + if (angular.isFunction(interpolator.useSanitizeValueStrategy)) { + interpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy); + } + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var getTranslationTable = function (langKey) { + var deferred = $q.defer(); + if ($translationTable.hasOwnProperty(langKey)) { + deferred.resolve($translationTable[langKey]); + return deferred.promise; + } else { + langPromises[langKey].then(function (data) { + translations(data.key, data.table); + deferred.resolve(data.table); + }, deferred.reject); + } + return deferred.promise; + }; + var getFallbackTranslation = function (langKey, translationId, interpolateParams, Interpolator) { + var deferred = $q.defer(); + getTranslationTable(langKey).then(function (translationTable) { + if (translationTable.hasOwnProperty(translationId)) { + Interpolator.setLocale(langKey); + deferred.resolve(Interpolator.interpolate(translationTable[translationId], interpolateParams)); + Interpolator.setLocale($uses); + } else { + deferred.reject(); + } + }, deferred.reject); + return deferred.promise; + }; + var getFallbackTranslationInstant = function (langKey, translationId, interpolateParams, Interpolator) { + var result, translationTable = $translationTable[langKey]; + if (translationTable.hasOwnProperty(translationId)) { + Interpolator.setLocale(langKey); + result = Interpolator.interpolate(translationTable[translationId], interpolateParams); + Interpolator.setLocale($uses); + } + return result; + }; + var resolveForFallbackLanguage = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) { + var deferred = $q.defer(); + if (fallbackLanguageIndex < $fallbackLanguage.length) { + var langKey = $fallbackLanguage[fallbackLanguageIndex]; + getFallbackTranslation(langKey, translationId, interpolateParams, Interpolator).then(function (translation) { + deferred.resolve(translation); + }, function () { + var nextFallbackLanguagePromise = resolveForFallbackLanguage(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator); + deferred.resolve(nextFallbackLanguagePromise); + }); + } else { + deferred.resolve(translationId); + } + return deferred.promise; + }; + var resolveForFallbackLanguageInstant = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) { + var result; + if (fallbackLanguageIndex < $fallbackLanguage.length) { + var langKey = $fallbackLanguage[fallbackLanguageIndex]; + result = getFallbackTranslationInstant(langKey, translationId, interpolateParams, Interpolator); + if (!result) { + result = resolveForFallbackLanguageInstant(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator); + } + } + return result; + }; + var fallbackTranslation = function (translationId, interpolateParams, Interpolator) { + return resolveForFallbackLanguage(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator); + }; + var fallbackTranslationInstant = function (translationId, interpolateParams, Interpolator) { + return resolveForFallbackLanguageInstant(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator); + }; + var determineTranslation = function (translationId, interpolateParams, interpolationId) { + var deferred = $q.defer(); + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + var translation = table[translationId]; + if (translation.substr(0, 2) === '@:') { + $translate(translation.substr(2), interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + } else { + deferred.resolve(Interpolator.interpolate(translation, interpolateParams)); + } + } else { + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $fallbackLanguage.length) { + fallbackTranslation(translationId, interpolateParams, Interpolator).then(function (translation) { + deferred.resolve(translation); + }, function (_translationId) { + deferred.reject(applyNotFoundIndicators(_translationId)); + }); + } else { + deferred.reject(applyNotFoundIndicators(translationId)); + } + } + return deferred.promise; + }; + var determineTranslationInstant = function (translationId, interpolateParams, interpolationId) { + var result, table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && table.hasOwnProperty(translationId)) { + var translation = table[translationId]; + if (translation.substr(0, 2) === '@:') { + result = determineTranslationInstant(translation.substr(2), interpolateParams, interpolationId); + } else { + result = Interpolator.interpolate(translation, interpolateParams); + } + } else { + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + if ($uses && $fallbackLanguage && $fallbackLanguage.length) { + fallbackIndex = 0; + result = fallbackTranslationInstant(translationId, interpolateParams, Interpolator); + } else { + result = applyNotFoundIndicators(translationId); + } + } + return result; + }; + $translate.preferredLanguage = function () { + return $preferredLanguage; + }; + $translate.cloakClassName = function () { + return $cloakClassName; + }; + $translate.fallbackLanguage = function (langKey) { + if (langKey !== undefined && langKey !== null) { + fallbackStack(langKey); + if ($loaderFactory) { + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + if (!langPromises[$fallbackLanguage[i]]) { + langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]); + } + } + } + } + $translate.use($translate.use()); + } + if ($fallbackWasString) { + return $fallbackLanguage[0]; + } else { + return $fallbackLanguage; + } + }; + $translate.useFallbackLanguage = function (langKey) { + if (langKey !== undefined && langKey !== null) { + if (!langKey) { + startFallbackIteration = 0; + } else { + var langKeyPosition = indexOf($fallbackLanguage, langKey); + if (langKeyPosition > -1) { + startFallbackIteration = langKeyPosition; + } + } + } + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.use = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + $rootScope.$emit('$translateChangeStart'); + if (!$translationTable[key] && $loaderFactory) { + $nextLang = key; + langPromises[key] = loadAsync(key).then(function (translation) { + translations(translation.key, translation.table); + deferred.resolve(translation.key); + if ($nextLang === key) { + useLanguage(translation.key); + $nextLang = undefined; + } + }, function (key) { + $nextLang = undefined; + $rootScope.$emit('$translateChangeError'); + deferred.reject(key); + $rootScope.$emit('$translateChangeEnd'); + }); + } else { + deferred.resolve(key); + useLanguage(key); + } + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + $translate.isPostCompilingEnabled = function () { + return $postCompilingEnabled; + }; + $translate.refresh = function (langKey) { + if (!$loaderFactory) { + throw new Error('Couldn\'t refresh translation table, no loader registered!'); + } + var deferred = $q.defer(); + function resolve() { + deferred.resolve(); + $rootScope.$emit('$translateRefreshEnd'); + } + function reject() { + deferred.reject(); + $rootScope.$emit('$translateRefreshEnd'); + } + $rootScope.$emit('$translateRefreshStart'); + if (!langKey) { + var tables = []; + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + tables.push(loadAsync($fallbackLanguage[i])); + } + } + if ($uses) { + tables.push(loadAsync($uses)); + } + $q.all(tables).then(function (tableData) { + angular.forEach(tableData, function (data) { + if ($translationTable[data.key]) { + delete $translationTable[data.key]; + } + translations(data.key, data.table); + }); + if ($uses) { + useLanguage($uses); + } + resolve(); + }); + } else if ($translationTable[langKey]) { + loadAsync(langKey).then(function (data) { + translations(data.key, data.table); + if (langKey === $uses) { + useLanguage($uses); + } + resolve(); + }, reject); + } else { + reject(); + } + return deferred.promise; + }; + $translate.instant = function (translationId, interpolateParams, interpolationId) { + if (typeof translationId === 'undefined' || translationId === '') { + return translationId; + } + translationId = translationId.trim(); + var result, possibleLangKeys = []; + if ($preferredLanguage) { + possibleLangKeys.push($preferredLanguage); + } + if ($uses) { + possibleLangKeys.push($uses); + } + if ($fallbackLanguage && $fallbackLanguage.length) { + possibleLangKeys = possibleLangKeys.concat($fallbackLanguage); + } + for (var i = 0, c = possibleLangKeys.length; i < c; i++) { + var possibleLangKey = possibleLangKeys[i]; + if ($translationTable[possibleLangKey]) { + if ($translationTable[possibleLangKey][translationId]) { + result = determineTranslationInstant(translationId, interpolateParams, interpolationId); + } + } + if (typeof result !== 'undefined') { + break; + } + } + if (!result) { + result = translationId; + if ($missingTranslationHandlerFactory && !pendingLoader) { + $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + } + } + return result; + }; + if ($loaderFactory) { + if (angular.equals($translationTable, {})) { + $translate.use($translate.use()); + } + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]); + } + } + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [ + '$interpolate', + function ($interpolate) { + var $translateInterpolator = {}, $locale, $identifier = 'default', $sanitizeValueStrategy = null, sanitizeValueStrategies = { + escaped: function (params) { + var result = {}; + for (var key in params) { + if (params.hasOwnProperty(key)) { + result[key] = angular.element('
').text(params[key]).html(); + } + } + return result; + } + }; + var sanitizeParams = function (params) { + var result; + if (angular.isFunction(sanitizeValueStrategies[$sanitizeValueStrategy])) { + result = sanitizeValueStrategies[$sanitizeValueStrategy](params); + } else { + result = params; + } + return result; + }; + $translateInterpolator.setLocale = function (locale) { + $locale = locale; + }; + $translateInterpolator.getInterpolationIdentifier = function () { + return $identifier; + }; + $translateInterpolator.useSanitizeValueStrategy = function (value) { + $sanitizeValueStrategy = value; + return this; + }; + $translateInterpolator.interpolate = function (string, interpolateParams) { + if ($sanitizeValueStrategy) { + interpolateParams = sanitizeParams(interpolateParams); + } + return $interpolate(string)(interpolateParams); + }; + return $translateInterpolator; + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').directive('translate', [ + '$translate', + '$q', + '$interpolate', + '$compile', + '$parse', + '$rootScope', + function ($translate, $q, $interpolate, $compile, $parse, $rootScope) { + return { + restrict: 'AE', + scope: true, + compile: function (tElement, tAttr) { + var translateValuesExist = tAttr.translateValues ? tAttr.translateValues : undefined; + var translateInterpolation = tAttr.translateInterpolation ? tAttr.translateInterpolation : undefined; + var translateValueExist = tElement[0].outerHTML.match(/translate-value-+/i); + return function linkFn(scope, iElement, iAttr) { + scope.interpolateParams = {}; + iAttr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '') || !angular.isDefined(translationId)) { + scope.translationId = $interpolate(iElement.text().replace(/^\s+|\s+$/g, ''))(scope.$parent); + } else { + scope.translationId = translationId; + } + }); + if (translateValuesExist) { + iAttr.$observe('translateValues', function (interpolateParams) { + if (interpolateParams) { + scope.$parent.$watch(function () { + angular.extend(scope.interpolateParams, $parse(interpolateParams)(scope.$parent)); + }); + } + }); + } + if (translateValueExist) { + var fn = function (attrName) { + iAttr.$observe(attrName, function (value) { + scope.interpolateParams[angular.lowercase(attrName.substr(14))] = value; + }); + }; + for (var attr in iAttr) { + if (iAttr.hasOwnProperty(attr) && attr.substr(0, 14) === 'translateValue' && attr !== 'translateValues') { + fn(attr); + } + } + } + var applyElementContent = function (value, scope) { + iElement.html(value); + var globallyEnabled = $translate.isPostCompilingEnabled(); + var locallyDefined = typeof tAttr.translateCompile !== 'undefined'; + var locallyEnabled = locallyDefined && tAttr.translateCompile !== 'false'; + if (globallyEnabled && !locallyDefined || locallyEnabled) { + $compile(iElement.contents())(scope); + } + }; + var updateTranslationFn = function () { + if (!translateValuesExist && !translateValueExist) { + return function () { + var unwatch = scope.$watch('translationId', function (value) { + if (scope.translationId && value) { + $translate(value, {}, translateInterpolation).then(function (translation) { + applyElementContent(translation, scope); + unwatch(); + }, function (translationId) { + applyElementContent(translationId, scope); + unwatch(); + }); + } + }, true); + }; + } else { + return function () { + scope.$watch('interpolateParams', function (value) { + if (scope.translationId && value) { + $translate(scope.translationId, value, translateInterpolation).then(function (translation) { + applyElementContent(translation, scope); + }, function (translationId) { + applyElementContent(translationId, scope); + }); + } + }, true); + }; + } + }(); + var unbind = $rootScope.$on('$translateChangeSuccess', updateTranslationFn); + updateTranslationFn(); + scope.$on('$destroy', unbind); + }; + } + }; + } +]); +angular.module('pascalprecht.translate').directive('translateCloak', [ + '$rootScope', + '$translate', + function ($rootScope, $translate) { + return { + compile: function (tElement) { + $rootScope.$on('$translateLoadingSuccess', function () { + tElement.removeClass($translate.cloakClassName()); + }); + tElement.addClass($translate.cloakClassName()); + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + return function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(); + } + return $translate.instant(translationId, interpolateParams, interpolation); + }; + } +]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/2.0.1/angular-translate.min.js b/ajax/libs/bower-angular-translate/2.0.1/angular-translate.min.js new file mode 100755 index 000000000..f265a638d --- /dev/null +++ b/ajax/libs/bower-angular-translate/2.0.1/angular-translate.min.js @@ -0,0 +1 @@ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.use(c.get(b)):angular.isString(a.preferredLanguage())?a.use(a.preferredLanguage()):c.set(b,a.use()):angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p={},q=[],r=a,s=[],t=!1,u="translate-cloak",v=!1,w=".",x=function(){var a=window.navigator;return(a.language||a.browserLanguage||a.systemLanguage||a.userLanguage||"").split("-").join("_")},y=function(a){for(var b=[],d=angular.lowercase(a),e=0,f=q.length;f>e;e++)b.push(angular.lowercase(q[e]));if(b.indexOf(d)>-1)return d;if(c&&c[a]){var g=c[a];if(b.indexOf(angular.lowercase(g))>-1)return g}var h=a.split("_");return h.length>1&&b.indexOf(angular.lowercase(h[0]))>1?h[0]:void 0},z=function(a,b){if(!a&&!b)return p;if(a&&!b){if(angular.isString(a))return p[a]}else angular.isObject(p[a])||(p[a]={}),angular.extend(p[a],A(b));return this};this.translations=z,this.cloakClassName=function(a){return a?(u=a,this):u};var A=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)a.hasOwnProperty(e)&&(h=a[e],angular.isObject(h)?A(h,b.concat(e),c,e):(f=b.length?""+b.join(w)+w+e:e,b.length&&e===d&&(g=""+b.join(w),c[g]="@:"+f),c[f]=h));return c};this.addInterpolation=function(a){return s.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return k=a,this},this.useSanitizeValueStrategy=function(a){return t=a,this},this.preferredLanguage=function(a){return a?(b=a,this):b},this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(n=a,this):n},this.translationNotFoundIndicatorRight=function(a){return a?(o=a,this):o},this.fallbackLanguage=function(a){return B(a),this};var B=function(a){return a?(angular.isString(a)?(e=!0,d=[a]):angular.isArray(a)&&(e=!1,d=a),angular.isString(b)&&d.push(b),this):e?d[0]:d};this.use=function(a){if(a){if(!p[a]&&!l)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return f=a,this}return f};var C=function(a){return a?(r=a,void 0):i?i+r:r};this.storageKey=C,this.useUrlLoader=function(a){return this.useLoader("$translateUrlLoader",{url:a})},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return l=a,m=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(a){return h=a,this},this.storagePrefix=function(a){return a?(i=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return j=a,this},this.usePostCompiling=function(a){return v=!!a,this},this.determinePreferredLanguage=function(a){var c=a&&angular.isFunction(a)?a():x();return q.length?(b=y(c),void 0):(b=c,this)},this.registerAvailableLanguageKeys=function(a,b){return a?(q=a,b&&(c=b),this):q},this.$get=["$log","$injector","$rootScope","$q",function(a,c,i,q){var w,x,y,D=c.get(k||"$translateDefaultInterpolation"),E=!1,F={},G={},H=function(a,c,e){var g=q.defer();a=a.trim();var i=function(){var a=b?G[b]:G[f];if(x=0,h&&!a){var c=w.get(r);if(a=G[c],d&&d.length){var e=I(d,c);x=e>-1?e+=1:0,d.push(b)}}return a}();return i?i.then(function(){T(a,c,e).then(g.resolve,g.reject)},g.reject):T(a,c,e).then(g.resolve,g.reject),g.promise},I=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},J=function(a){return n&&(a=[n,a].join(" ")),o&&(a=[a,o].join(" ")),a},K=function(a){f=a,i.$emit("$translateChangeSuccess"),h&&w.set(H.storageKey(),f),D.setLocale(f),angular.forEach(F,function(a,b){F[b].setLocale(f)}),i.$emit("$translateChangeEnd")},L=function(a){if(!a)throw"No language key specified for loading.";var b=q.defer();return i.$emit("$translateLoadingStart"),E=!0,c.get(l)(angular.extend(m,{key:a})).then(function(c){var d={};i.$emit("$translateLoadingSuccess"),angular.isArray(c)?angular.forEach(c,function(a){angular.extend(d,A(a))}):angular.extend(d,A(c)),E=!1,b.resolve({key:a,table:d}),i.$emit("$translateLoadingEnd")},function(a){i.$emit("$translateLoadingError"),b.reject(a),i.$emit("$translateLoadingEnd")}),b.promise};if(h&&(w=c.get(h),!w.get||!w.set))throw new Error("Couldn't use storage '"+h+"', missing get() or set() method!");angular.isFunction(D.useSanitizeValueStrategy)&&D.useSanitizeValueStrategy(t),s.length&&angular.forEach(s,function(a){var d=c.get(a);d.setLocale(b||f),angular.isFunction(d.useSanitizeValueStrategy)&&d.useSanitizeValueStrategy(t),F[d.getInterpolationIdentifier()]=d});var M=function(a){var b=q.defer();return p.hasOwnProperty(a)?(b.resolve(p[a]),b.promise):(G[a].then(function(a){z(a.key,a.table),b.resolve(a.table)},b.reject),b.promise)},N=function(a,b,c,d){var e=q.defer();return M(a).then(function(g){g.hasOwnProperty(b)?(d.setLocale(a),e.resolve(d.interpolate(g[b],c)),d.setLocale(f)):e.reject()},e.reject),e.promise},O=function(a,b,c,d){var e,g=p[a];return g.hasOwnProperty(b)&&(d.setLocale(a),e=d.interpolate(g[b],c),d.setLocale(f)),e},P=function(a,b,c,e){var f=q.defer();if(a0?y:x,a,b,c)},S=function(a,b,c){return Q(y>0?y:x,a,b,c)},T=function(a,b,e){var g=q.defer(),h=f?p[f]:p,i=e?F[e]:D;if(h&&h.hasOwnProperty(a)){var k=h[a];"@:"===k.substr(0,2)?H(k.substr(2),b,e).then(g.resolve,g.reject):g.resolve(i.interpolate(k,b))}else j&&!E&&c.get(j)(a,f),f&&d&&d.length?R(a,b,i).then(function(a){g.resolve(a)},function(a){g.reject(J(a))}):g.reject(J(a));return g.promise},U=function(a,b,e){var g,h=f?p[f]:p,i=e?F[e]:D;if(h&&h.hasOwnProperty(a)){var k=h[a];g="@:"===k.substr(0,2)?U(k.substr(2),b,e):i.interpolate(k,b)}else j&&!E&&c.get(j)(a,f),f&&d&&d.length?(x=0,g=S(a,b,i)):g=J(a);return g};if(H.preferredLanguage=function(){return b},H.cloakClassName=function(){return u},H.fallbackLanguage=function(a){if(void 0!==a&&null!==a){if(B(a),l&&d&&d.length)for(var b=0,c=d.length;c>b;b++)G[d[b]]||(G[d[b]]=L(d[b]));H.use(H.use())}return e?d[0]:d},H.useFallbackLanguage=function(a){if(void 0!==a&&null!==a)if(a){var b=I(d,a);b>-1&&(y=b)}else y=0},H.proposedLanguage=function(){return g},H.storage=function(){return w},H.use=function(a){if(!a)return f;var b=q.defer();return i.$emit("$translateChangeStart"),!p[a]&&l?(g=a,G[a]=L(a).then(function(c){z(c.key,c.table),b.resolve(c.key),g===a&&(K(c.key),g=void 0)},function(a){g=void 0,i.$emit("$translateChangeError"),b.reject(a),i.$emit("$translateChangeEnd")})):(b.resolve(a),K(a)),b.promise},H.storageKey=function(){return C()},H.isPostCompilingEnabled=function(){return v},H.refresh=function(a){function b(){e.resolve(),i.$emit("$translateRefreshEnd")}function c(){e.reject(),i.$emit("$translateRefreshEnd")}if(!l)throw new Error("Couldn't refresh translation table, no loader registered!");var e=q.defer();if(i.$emit("$translateRefreshStart"),a)p[a]?L(a).then(function(c){z(c.key,c.table),a===f&&K(f),b()},c):c();else{var g=[];if(d&&d.length)for(var h=0,j=d.length;j>h;h++)g.push(L(d[h]));f&&g.push(L(f)),q.all(g).then(function(a){angular.forEach(a,function(a){p[a.key]&&delete p[a.key],z(a.key,a.table)}),f&&K(f),b()})}return e.promise},H.instant=function(a,e,g){if("undefined"==typeof a||""===a)return a;a=a.trim();var h,i=[];b&&i.push(b),f&&i.push(f),d&&d.length&&(i=i.concat(d));for(var k=0,l=i.length;l>k;k++){var m=i[k];if(p[m]&&p[m][a]&&(h=U(a,e,g)),"undefined"!=typeof h)break}return h||(h=a,j&&!E&&c.get(j)(a,f)),h},l&&(angular.equals(p,{})&&H.use(H.use()),d&&d.length))for(var V=0,W=d.length;W>V;V++)G[d[V]]=L(d[V]);return H}]}]),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,c={},d="default",e=null,f={escaped:function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=angular.element("
").text(a[c]).html());return b}},g=function(a){var b;return b=angular.isFunction(f[e])?f[e](a):a};return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.useSanitizeValueStrategy=function(a){return e=a,this},c.interpolate=function(b,c){return e&&(c=g(c)),a(b)(c)},c}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",["$translate","$q","$interpolate","$compile","$parse","$rootScope",function(a,b,c,d,e,f){return{restrict:"AE",scope:!0,compile:function(b,g){var h=g.translateValues?g.translateValues:void 0,i=g.translateInterpolation?g.translateInterpolation:void 0,j=b[0].outerHTML.match(/translate-value-+/i);return function(b,k,l){if(b.interpolateParams={},l.$observe("translate",function(a){b.translationId=angular.equals(a,"")||!angular.isDefined(a)?c(k.text().replace(/^\s+|\s+$/g,""))(b.$parent):a}),h&&l.$observe("translateValues",function(a){a&&b.$parent.$watch(function(){angular.extend(b.interpolateParams,e(a)(b.$parent))})}),j){var m=function(a){l.$observe(a,function(c){b.interpolateParams[angular.lowercase(a.substr(14))]=c})};for(var n in l)l.hasOwnProperty(n)&&"translateValue"===n.substr(0,14)&&"translateValues"!==n&&m(n)}var o=function(b,c){k.html(b);var e=a.isPostCompilingEnabled(),f="undefined"!=typeof g.translateCompile,h=f&&"false"!==g.translateCompile;(e&&!f||h)&&d(k.contents())(c)},p=function(){return h||j?function(){b.$watch("interpolateParams",function(c){b.translationId&&c&&a(b.translationId,c,i).then(function(a){o(a,b)},function(a){o(a,b)})},!0)}:function(){var c=b.$watch("translationId",function(d){b.translationId&&d&&a(d,{},i).then(function(a){o(a,b),c()},function(a){o(a,b),c()})},!0)}}(),q=f.$on("$translateChangeSuccess",p);p(),b.$on("$destroy",q)}}}}]),angular.module("pascalprecht.translate").directive("translateCloak",["$rootScope","$translate",function(a,b){return{compile:function(c){a.$on("$translateLoadingSuccess",function(){c.removeClass(b.cloakClassName())}),c.addClass(b.cloakClassName())}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){return function(c,d,e){return angular.isObject(d)||(d=a(d)()),b.instant(c,d,e)}}]); \ No newline at end of file diff --git a/ajax/libs/bower-angular-translate/package.json b/ajax/libs/bower-angular-translate/package.json new file mode 100644 index 000000000..41edcb9e9 --- /dev/null +++ b/ajax/libs/bower-angular-translate/package.json @@ -0,0 +1,37 @@ +{ + "name": "bower-angular-translate", + "filename": "angular-translate.min.js", + "description": "i18n for your Angular apps, made easy", + "version": "2.0.1", + "homepage": "http://angular-translate.github.io", + "keywords": [ + "framework", + "mvc", + "AngularJS", + "angular", + "angular.js", + "angular-translate" + ], + "contributors": [ + { + "name": "Pascal Precht" + }, + { + "name": "Max Prychynenko" + }, + { + "name": "Jan Philipp" + } + ], + "repositories": [{ + "type": "git", + "url": "https://github.com/angular-translate/bower-angular-translate" + }], + "bugs": "https://github.com/angular-translate/bower-angular-translate/issues", + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/angular-translate/bower-angular-translate/blob/master/LICENSE" + } + ] +}