From 28f6f27a15b16837ec2aa1d7f4f0e540637dbad7 Mon Sep 17 00:00:00 2001 From: Antikon Date: Fri, 27 Aug 2021 07:47:01 +0300 Subject: [PATCH 1/8] SelectArrayGently first run --- composer.json | 2 +- src/ngrest/plugins/SelectArrayGently.php | 95 ++++++++++++++++++++++++ src/resources/js/directives.js | 41 ++++++++++ 3 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 src/ngrest/plugins/SelectArrayGently.php diff --git a/composer.json b/composer.json index 3a06eb2b0..53de54110 100644 --- a/composer.json +++ b/composer.json @@ -85,4 +85,4 @@ "url": "https://asset-packagist.org" } ] -} \ No newline at end of file +} diff --git a/src/ngrest/plugins/SelectArrayGently.php b/src/ngrest/plugins/SelectArrayGently.php new file mode 100644 index 000000000..2263a8deb --- /dev/null +++ b/src/ngrest/plugins/SelectArrayGently.php @@ -0,0 +1,95 @@ + ['selectArray', 'data' => [1 => 'Male', 2 => 'Female']], + * } + * ``` + * Or use a closure for lazy data load: + * + * ```php + * public function ngRestAttributeTypes() + * { + * return [ + * 'genres' => ['selectArray', 'data' => function () { + * return new Query()->all(); + * }], + * ]; + * } + * ``` + * + * @property array $data Setter/Getter for the dropdown values. + * + * @author Anton Ikonnikov + * @since 4.1.0 + */ +class SelectArrayGently extends Select +{ + use LazyDataLoadTrait; + + private $_data; + + + public $assignAfterFind = false; + + /** + * @inheritdoc + */ + public function renderList($id, $ngModel) + { + if ($this->scheduling && $this->renderContext->canUpdate()) { + return $this->createSchedulerListTag($ngModel, $this->getData(), 'item'); + } + + $options = Angular::optionsFilter([ + 'options' => $this->getServiceName('selectdata'), + ]); + + return $this->createTag('select-array-gently', null, ArrayHelper::merge(['model' => $ngModel], $options)); + } + + /** + * Setter method for Data. + * + * @param array $data + */ + public function setData(array $data) + { + $this->_data = $data; + } + + /** + * + * {@inheritDoc} + * @see \luya\admin\ngrest\plugins\Select::getData() + */ + public function getData() + { + $cleandata = []; + + foreach ($this->lazyLoadData($this->_data) as $key => $value) { + $cleandata[] = [ + 'value' => $key, + 'label' => $value, + ]; + } + + return ArrayHelper::typeCast($cleandata); + } +} diff --git a/src/resources/js/directives.js b/src/resources/js/directives.js index fca10d137..d9ef8a8fd 100755 --- a/src/resources/js/directives.js +++ b/src/resources/js/directives.js @@ -3925,3 +3925,44 @@ zaa.directive('pagination', function () { `, }; }); + +/** + * Supporting directive to SelectArrayGently plugin + * + */ +zaa.directive('selectArrayGently', function () { + return { + restrict: 'E', + scope: { + 'model': '=', + 'options': '=', + 'optionsvalue': '@optionsvalue', + 'optionslabel': '@optionslabel', + }, + controller: ['$rootScope', '$scope', function ($rootScope, $scope) { + if ($scope.optionsvalue === undefined) { + $scope.optionsvalue = 'value'; + } + if ($scope.optionslabel === undefined) { + $scope.optionslabel = 'label'; + } + + $scope.getSelectedLabel = function () { + // Keep raw value by default + var selectedLabel = $scope.model; + angular.forEach($scope.options, function (item) { + if ($scope.model === item[$scope.optionsvalue]) { + selectedLabel = item[$scope.optionslabel]; + } + }); + + return selectedLabel; + }; + }], + + + template: function () { + return '{{getSelectedLabel()}}'; + } + }; +}); From a55646f10816ada29d1819893c6b4444eefbbf9b Mon Sep 17 00:00:00 2001 From: Antikon Date: Fri, 27 Aug 2021 07:48:50 +0300 Subject: [PATCH 2/8] docs --- src/ngrest/plugins/SelectArrayGently.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ngrest/plugins/SelectArrayGently.php b/src/ngrest/plugins/SelectArrayGently.php index 2263a8deb..a141b8684 100644 --- a/src/ngrest/plugins/SelectArrayGently.php +++ b/src/ngrest/plugins/SelectArrayGently.php @@ -18,7 +18,7 @@ * ```php * public function ngRestAttributeTypes() * { - * 'genres' => ['selectArray', 'data' => [1 => 'Male', 2 => 'Female']], + * 'genres' => ['selectArrayGently', 'data' => [1 => 'Male', 2 => 'Female']], * } * ``` * Or use a closure for lazy data load: @@ -27,7 +27,7 @@ * public function ngRestAttributeTypes() * { * return [ - * 'genres' => ['selectArray', 'data' => function () { + * 'genres' => ['selectArrayGently', 'data' => function () { * return new Query()->all(); * }], * ]; From e18627b17b478b2896adfca75e7cca7a99b53575 Mon Sep 17 00:00:00 2001 From: Antikon Date: Fri, 27 Aug 2021 08:18:58 +0300 Subject: [PATCH 3/8] minor --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 53de54110..3a06eb2b0 100644 --- a/composer.json +++ b/composer.json @@ -85,4 +85,4 @@ "url": "https://asset-packagist.org" } ] -} +} \ No newline at end of file From 82fa471fbc47eea098f2dec0c2bd82e0b1d0f131 Mon Sep 17 00:00:00 2001 From: Antikon Date: Sun, 29 Aug 2021 16:20:13 +0300 Subject: [PATCH 4/8] Some tests --- phpunit.xml.bak | 28 ++++++++++++ src/resources/dist/main.js | 2 +- .../ngrest/plugins/SelectArrayGentlyTest.php | 44 +++++++++++++++++++ 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 phpunit.xml.bak create mode 100644 tests/admin/ngrest/plugins/SelectArrayGentlyTest.php diff --git a/phpunit.xml.bak b/phpunit.xml.bak new file mode 100644 index 000000000..e6247d250 --- /dev/null +++ b/phpunit.xml.bak @@ -0,0 +1,28 @@ + + + + + tests + + + + + ./src + + ./vendor + + + + + + + + + \ No newline at end of file diff --git a/src/resources/dist/main.js b/src/resources/dist/main.js index 8e58c5f59..a0cb28be6 100644 --- a/src/resources/dist/main.js +++ b/src/resources/dist/main.js @@ -1 +1 @@ -function guid(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}function i18nParam(e,t){var n=i18n[e];return angular.forEach(t,function(e,t){n=n.replace("%"+t+"%",e)}),n}function typeCastValue(e){return angular.isNumber(e)?parseInt(e):e}angular.module("dnd",[]).factory("dndFactory",function(){return{data:{content:null,pos:null,element:null},getElement:function(){return this.data.element},setElement:function(e){this.data.element=e},setContent:function(e){this.data.content=e},getContent:function(){return this.data.content},setPos:function(e){this.data.pos=e},getPos:function(){return this.data.pos}}}).directive("dnd",["dndFactory","AdminClassService",function(r,e){return{restrict:"A",transclude:!1,replace:!1,template:!1,templateURL:!1,scope:{dndModel:"=",dndCss:"=",dndOndrop:"&",dndIsvalid:"&"},link:function(i,a,e){var o=!0,l=e.hasOwnProperty("dndDisableDragMiddle");e.hasOwnProperty("dndDragDisabled")||a.attr("draggable","true"),i.addClass=function(e){a.addClass(e)},i.removeClass=function(e,t){a.removeClass(e)},a.on("dragstart",function(e){if((e=e.originalEvent||e).stopPropagation(),"false"==a.attr("draggable"))return!0;o=!0,r.setContent(i.dndModel),r.setElement(a[0]),i.addClass(i.dndCss.onDrag);try{e.dataTransfer.setData("text","1")}catch(e){try{e.dataTransfer.setData("application/json","1")}catch(e){e.dataTransfer.setData("Text","1")}}}),a.on("dragend",function(e){e=e.originalEvent||e,i.removeClass(i.dndCss.onDrag),e.stopPropagation()}),a.on("dragover",function(e){e=e.originalEvent||e;try{e.dataTransfer.dropEffect="move"}catch(e){}if(e.preventDefault(),e.stopPropagation(),!i.dndIsvalid({hover:i.dndModel,dragged:r.getContent()}))return o=!1;var t=a[0].getBoundingClientRect(),n=100/t.height*(e.clientY-t.top);return l?n<=50?(i.addClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.removeClass(i.dndCss.onHoverBottom),r.setPos("top")):(i.removeClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.addClass(i.dndCss.onHoverBottom),r.setPos("bottom")):n<=25?(i.addClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.removeClass(i.dndCss.onHoverBottom),r.setPos("top")):65<=n?(i.removeClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.addClass(i.dndCss.onHoverBottom),r.setPos("bottom")):(i.removeClass(i.dndCss.onHoverTop),i.addClass(i.dndCss.onHoverMiddle),i.removeClass(i.dndCss.onHoverBottom),r.setPos("middle")),i.addClass(i.dndCss.onHover),!1}),a.on("dragenter",function(e){e=e.originalEvent||e,i.addClass(i.dndCss.onHover),e.preventDefault()}),a.on("dragleave",function(e){i.removeClass(i.dndCss.onHover,!0),i.removeClass(i.dndCss.onHoverTop,!0),i.removeClass(i.dndCss.onHoverMiddle,!0),i.removeClass(i.dndCss.onHoverBottom,!0)}),e.hasOwnProperty("dndDropDisabled")||a.on("drop",function(e){return(e=e.originalEvent||e).preventDefault(),e.stopPropagation(),i.removeClass(i.dndCss.onHover,!0),i.removeClass(i.dndCss.onHoverTop,!0),i.removeClass(i.dndCss.onHoverMiddle,!0),i.removeClass(i.dndCss.onHoverBottom,!0),!!o&&(i.$apply(function(){i.dndOndrop({dragged:r.getContent(),dropped:i.dndModel,position:r.getPos(),element:r.getElement()})}),!0)})}}}]);var zaa=angular.module("zaa",["ui.router","dnd","angular-loading-bar","ngFileUpload","ngWig","flow","angular.filter","720kb.datepicker","directive.ngColorwheel","uiCropper"]);zaa.config(["$httpProvider","$stateProvider","$controllerProvider","$urlMatcherFactoryProvider",function(e,t,n,i){e.interceptors.push("authInterceptor"),zaa.bootstrap=n,i.strictMode(!1),t.state("default",{url:"/default/:moduleId",templateUrl:function(e){return"admin/template/default"}}).state("default.route",{url:"/:moduleRouteId/:controllerId/:actionId",templateUrl:function(e){return e.moduleRouteId+"/"+e.controllerId+"/"+e.actionId},parent:"default",resolve:{adminServiceResolver:adminServiceResolver}}).state("custom",{url:"/template/:templateId",templateUrl:function(e){return e.templateId},resolve:{adminServiceResolver:adminServiceResolver,resolverProvider:["resolver",function(e){return e.then}]}}).state("home",{url:"",templateUrl:"admin/default/dashboard",controller:["$scope",function(e){e.$parent.currentItem={icon:"home",alias:i18n.menu_dashboard}}]}).state("default.route.detail",{url:"/:id",parent:"default.route",template:"",controller:["$scope","$stateParams",function(e,t){e.crud=e.$parent,e.init=function(){e.crud.config.inline||e.crud.data.updateId!=t.id&&e.crud.toggleUpdate(t.id)},e.init()}]})}]),zaa.provider("resolver",[function(){var a=[];this.addCallback=function(e){a.push(e)},this.$get=["$injector","$q","$state",function(i,e,t){return e(function(e,t){for(var n in a)i.invoke(a[n])})}]}]),zaa.factory("LuyaLoading",["$timeout",function(t){var n=!1,i=null,a=null;return{start:function(e){i=null==e?i18n.js_zaa_server_proccess:e,t.cancel(a),n=!0,a=t(function(){n=!0},1e3)},stop:function(){t.cancel(a),n=!1},getStateMessage:function(){return i},getState:function(){return n}}}]),zaa.factory("AdminClassService",function(){var n=[];return n.vars={},n.getClassSpace=function(e){if(n.vars.hasOwnProperty(e))return n.vars[e]},n.hasClassSpace=function(e){return!!n.vars.hasOwnProperty(e)},n.setClassSpace=function(e,t){n.vars[e]=t},n.clearSpace=function(e){n.vars.hasOwnProperty(e)&&(n.vars[e]=null)},n.removeSpace=function(e){n.hasClassSpace(e)&&delete n.vars[e]},n.stack=0,n.modalStackPush=function(){n.stack+=1},n.modalStackRemove=function(){n.stack<=1?n.stack=0:n.stack-=1},n.modalStackRemoveAll=function(){n.stack=0},n.modalStackIsEmpty=function(){return 0==n.stack},n}),zaa.factory("CacheReloadService",["$http","$window",function(e,t){var n=[];return n.reload=function(){e.get("admin/api-admin-common/cache").then(function(e){t.location.reload()})},n}]),zaa.factory("authInterceptor",["$rootScope","$q","AdminToastService","AdminDebugBar",function(i,a,t,o){return{request:function(e){if(e.hasOwnProperty("ignoreLoadingBar")||(e.debugId=o.pushRequest(e)),e.hasOwnProperty("authToken"))var t=e.authToken;else t=i.luyacfg.authToken;e.headers=e.headers||{},e.headers.Authorization="Bearer "+t;var n=document.head.querySelector("[name=csrf-token]");return null!==n&&(e.headers["X-CSRF-Token"]=n.content),e||a.when(e)},response:function(e){return e.hasOwnProperty("ignoreLoadingBar")||o.pushResponse(e),e||a.when(e)},responseError:function(e){if(401==e.status||403==e.status||405==e.status)e.config.hasOwnProperty("authToken")||(window.location="admin/default/logout?autologout=1");else if(404==e.status){e.data.hasOwnProperty("message")?t.info(e.data.message,1e4):t.info("Response Error: "+e.status+" "+e.statusText,1e4)}else if(422!=e.status){e.data.hasOwnProperty("message")?t.error(e.data.message,1e4):t.error("Response Error: "+e.status+" "+e.statusText,1e4)}return a.reject(e)}}}]),adminServiceResolver=["ServiceFoldersData","ServiceFiltersData","ServiceLanguagesData","ServicePropertiesData","AdminLangService","ServiceFoldersDirecotryId",function(e,t,n,i,a,o){t.load(),e.load(),n.load(),i.load(),a.load(),o.load()}],zaa.factory("ServiceQueueWaiting",["$http","$q","$timeout",function(t,a,e){var o={ids:[],waitFor:function(i){return a(function(t,e){if(0==i.length)t();else{i.forEach(function(e){return o.ids.push(e)});var n=[];i.forEach(function(e){n.push(o.waitForJobId(e))}),a.all(n).then(function(e){t()})}})},waitForJobId:function(i){return a(function(n,e){t.get("admin/api-admin-common/queue-job?jobId="+i,{ignoreLoadingBar:!0}).then(function(e){if(e.data.is_done){var t=o.ids.indexOf(i);-1t.name.toLowerCase()?1:-1}),i}}),zaa.filter("findthumbnail",function(){return function(e,n,i){var a=!1;return angular.forEach(e,function(e,t){a||e.fileId==n&&e.filterId==i&&(a=e)}),a}}),zaa.filter("findidfilter",function(){return function(e,n){var i=!1;return angular.forEach(e,function(e,t){e.id==n&&(i=e)}),i}}),zaa.filter("filemanagerfilesfilter",function(){return function(e,t,n){var i=[];return angular.forEach(e,function(e){n?e.folderId==t&&1==e.isImage&&i.push(e):e.folderId==t&&i.push(e)}),i}}),zaa.filter("trustAsUnsafe",["$sce",function(n){return function(e,t){return n.trustAsHtml(e)}}]),zaa.filter("srcbox",function(){return function(e,t){if(!e)return e;if(!t)return e;var a=(""+t).toLowerCase(),o={};return angular.forEach(e,function(n,i){angular.forEach(n,function(e,t){-1!==(""+e).toLowerCase().indexOf(a)&&(o[i]=n)})}),o}}),zaa.filter("trustAsResourceUrl",["$sce",function(n){return function(e,t){return t?n.trustAsResourceUrl(e):null}}]),zaa.filter("truncateMiddle",function(){return function(e,t,n){if(t=t||30,n=n||"...",e.length<=t)return e;var i=(t-n.length)/2;return e.substring(0,i)+n+e.substring(e.length-i,e.length)}}),zaa.directive("echarts",[function(){return{scope:{id:"@",theme:"@",data:"="},restrict:"E",template:'
',replace:!0,controller:["$scope",function(e){e.theme&&(e.theme="macarons")}],link:function(e){var t=echarts.init(document.getElementById(e.id),e.theme);e.$watch("data",function(e){e&&null!=e&&t.setOption(angular.fromJson(e))}),angular.element(window).bind("resize",function(){t.resize()})}}}]),zaa.directive("compileHtml",["$compile","$parse",function(a,o){return{restrict:"A",link:function(e,t,n){var i=o(n.ngBindHtml);e.$watch(function(){return(i(e)||"").toString()},function(){a(t,null,-9999)(e)})}}}]),zaa.directive("selectOnClick",function(){return function(e,t,n){t.bind("click",function(){this.select()})}}),zaa.directive("zaaEsc",["$document",function(i){return function(t,e,n){i.on("keyup",function(e){27==e.keyCode&&t.$apply(function(){t.$eval(n.zaaEsc)})})}}]),zaa.directive("linkObjectToString",function(){return{restrict:"E",relace:!0,scope:{link:"="},template:function(){return'{{link.value}}{{link.value}}{{link.value}}'}}}),zaa.directive("tooltip",["$document","$http",function(r,s){return{restrict:"A",scope:{tooltipText:"@",tooltipExpression:"=",tooltipPosition:"@",tooltipOffsetTop:"@",tooltipOffsetLeft:"@",tooltipImageUrl:"@",tooltipPreviewUrl:"@",tooltipDisabled:"="},link:function(i,a,e){function o(){var e={};e="function"==typeof l[i.tooltipPosition]?l[i.tooltipPosition]():l.right();var t=parseInt(i.tooltipOffsetTop);t&&(e.top=e.top+t);var n=parseInt(i.tooltipOffsetLeft);n&&(e.left=e.left+n),i.pop.css(e)}var l={top:function(){var e=a[0].getBoundingClientRect();return{top:e.top-i.pop.outerHeight(),left:e.left+e.width/2-i.pop.outerWidth()/2}},bottom:function(){var e=a[0].getBoundingClientRect();return{top:e.top+e.height,left:e.left+e.width/2-i.pop.outerWidth()/2}},right:function(){var e=a[0].getBoundingClientRect();return{top:e.top+e.height/2-i.pop.outerHeight()/2,left:e.left+e.width}},left:function(){var e=a[0].getBoundingClientRect();return{top:e.top+e.height/2-i.pop.outerHeight()/2,left:e.left-i.pop.outerWidth()}}};a.on("mouseenter",function(){if(!i.pop&&(void 0===i.tooltipDisabled||!1===i.tooltipDisabled)){i.tooltipExpression&&(i.tooltipText=i.tooltipExpression);var e='",t=$(e);if(i.tooltipImageUrl){var n=new Image;n.onload=function(){o()},n.src=i.tooltipImageUrl,t.find(".tooltip-inner").append(n)}i.tooltipPreviewUrl&&s.get(i.tooltipPreviewUrl).then(function(e){t.find(".tooltip-inner").append('
'+e.data+"
")}),i.pop=t,r.find("body").append(i.pop),i.pop.hide()}!i.pop||void 0!==i.tooltipDisabled&&!1!==i.tooltipDisabled||(o(),a.parents().on("scroll",o),i.pop.show())}),a.on("mouseleave",function(){a.parents().off("scroll",o),i.pop&&i.pop.hide()}),i.$on("$destroy",function(){i.pop&&i.pop.remove()})}}}]),zaa.directive("convertToNumber",function(){return{require:"ngModel",link:function(e,t,n,i){i.$parsers.push(function(e){return null!=e?parseInt(e,10):null}),i.$formatters.push(function(e){return null!=e?""+e:null})}}}),zaa.directive("autoGrow",function(){return function(e,t,n){function i(){null==a&&(a=angular.element("
").css({position:"absolute",top:-1e4,left:-1e4,resize:"none"}),angular.element(document.body).append(a)),a.css({fontSize:t.css("font-size"),fontFamily:t.css("font-family"),lineHeight:t.css("line-height"),width:t.width(),paddingTop:t.css("padding-top"),paddingBottom:t.css("padding-bottom")});var e=t.val().replace(//g,">").replace(/&/g,"&").replace(/\n$/,"
 ").replace(/\n/g,"
").replace(/\s{2,}/g,function(e){return function(e,t){for(var n=0,i="";n
keyboard_arrow_down{{icon}}{{title}}
'}}}]),zaa.directive("crudLoader",["$http","$sce",function(t,i){return{restrict:"E",replace:!0,transclude:!1,scope:{api:"@",alias:"@",modelSelection:"@",modelSetter:"="},controller:["$scope",function(n){n.input={showWindow:!0},n.content=null,n.toggleWindow=function(){if(n.input.showWindow){if(-1'}}}]),zaa.directive("crudRelationLoader",["$http","$sce",function(n,i){return{restrict:"E",replace:!0,transclude:!1,scope:{api:"@api",arrayIndex:"@arrayIndex",modelClass:"@modelClass",id:"@id"},controller:["$scope",function(t){if(t.content=null,-1'}}}]),zaa.directive("zaaInjector",["$compile",function(i){return{restrict:"E",replace:!0,transclude:!1,scope:{dir:"=",model:"=",options:"=",label:"@label",grid:"@grid",fieldid:"@fieldid",placeholder:"@placeholder",initvalue:"@initvalue",autocomplete:"@autocomplete"},link:function(e,t){var n=i(angular.element("<"+e.dir+' options="options" initvalue="{{initvalue}}" fieldid="{{fieldid}}" placeholder="{{placeholder}}" autocomplete="{{autocomplete}}" model="model" label="{{label}}" i18n="{{grid}}" />'))(e);t.replaceWith(n)}}}]),zaa.directive("zaaSortRelationArray",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$filter",function(a,e){a.searchString,a.sourceData=[],a.dropdownOpen=!1,a.$watch(function(){return a.model},function(e,t){null==e&&(a.model=[])}),a.$watch(function(){return a.options},function(e,t){null!=e&&(a.sourceData=e.sourceData)}),a.getSourceOptions=function(){return a.sourceData},a.getModelItems=function(){return a.model},a.addToModel=function(n){var i=!1;angular.forEach(a.model,function(e,t){e.value==n.value&&(i=!0)}),i||a.model.push({value:n.value,label:n.label})},a.removeFromModel=function(e){a.model.splice(e,1)},a.moveUp=function(e){e=parseInt(e);var t=a.model[e];a.model[e]=a.model[e-1],a.model[e-1]=t},a.moveDown=function(e){e=parseInt(e);var t=a.model[e];a.model[e]=a.model[e+1],a.model[e+1]=t},a.elementInModel=function(n){var i=!1;return angular.forEach(a.model,function(e,t){e.value==n.value&&(i=!0)}),!i}}],template:function(){return'
play_arrowplay_arrow
{{item.label}}
delete
  • add_circle{{ option.label }}
arrow_drop_uparrow_drop_down
'}}}),zaa.directive("zaaTagArray",function(){return{restrict:"E",scope:{model:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$http",function(n,e){n.tags=[],e.get("admin/api-admin-common/tags").then(function(e){angular.forEach(e.data,function(e){e.id=parseInt(e.id),n.tags.push(e)})}),null==n.model?n.model=[]:angular.forEach(n.model,function(e,t){n.model[t]=parseInt(e)}),n.isInSelection=function(e){return e=parseInt(e),-1!=n.model.indexOf(e)},n.toggleSelection=function(e){var t=n.model.indexOf(e);-1
{{tag.name}}
'}}}),zaa.directive("zaaLink",["$filter",function(t){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(n){n.unset=function(){n.model=!1,n.data.model=null},n.data={modalState:1,model:null},n.$watch("model",function(e,t){e&&(n.data.model=e)},!0),n.$watch("data.model",function(e,t){e&&(n.model=e)},!0),n.isEmpty=function(e){return!e||t("isEmpty")(e)}}],template:function(){return'
{{label}}
"}}}]),zaa.directive("zaaLinkOptions",function(){return{restrict:"EA",scope:{data:"=",uid:"="},templateUrl:"linkoptions.html",controller:["$scope",function(n){n.$watch(function(){return n.data},function(e,t){angular.isArray(e)&&(n.data={})})}]}}),zaa.directive("zaaSlug",function(){return{restrict:"E",scope:{model:"=",options:"=",listener:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$filter",function(n,i){n.$watch("listener",function(e,t){void 0!==e&&(n.model=i("slugify")(e))}),n.$watch("model",function(e,t){e!=t&&(n.model=i("slugify")(e))})}],template:function(){return'
'}}}),zaa.directive("zaaColor",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(n){function i(){if(void 0===n.model||!n.model)return"#000";var e=n.model;if("string"==typeof n.model&&(e=e.substr(1)),3===e.length){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,n,i){return t+t+n+n+i+i})}return 6!==e.length?"#000":128<=(299*parseInt(e.substr(0,2),16)+587*parseInt(e.substr(2,2),16)+114*parseInt(e.substr(4,2),16))/1e3?"#000":"#fff"}n.textColor=i(),n.$watch(function(){return n.model},function(e,t){n.textColor=i()})}],template:function(){return'
'}}}),zaa.directive("zaaWysiwyg",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},template:function(){return'
'}}}),zaa.directive("zaaNumber",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder",initvalue:"@initvalue"},link:function(n){n.$watch(function(){return n.model},function(e,t){null==e&&(n.model=parseInt(n.initvalue)),angular.isNumber(n.model)?n.isValid=!0:n.isValid=!1})},template:function(){return'
'}}}),zaa.directive("zaaDecimal",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder"},controller:["$scope",function(e){null===e.options?e.steps=.01:e.steps=e.options.steps}],link:function(n){n.$watch(function(){return n.model},function(e,t){angular.isNumber(n.model)?n.isValid=!0:n.isValid=!1})},template:function(){return'
'}}}),zaa.directive("zaaText",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder",autocomplete:"@autocomplete"},template:function(){return'
'}}}),zaa.directive("zaaReadonly",function(){return{restrict:"E",scope:{model:"=",label:"@label",i18n:"@i18n"},template:function(){return'
{{model}}
'}}}),zaa.directive("zaaAsyncValue",function(){return{restrict:"E",scope:{model:"=",api:"@",fields:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$timeout","$http",function(e,t,n){e.resetValue=function(){e.model=0,e.value=null}}],template:function(){return'
'}}}),zaa.directive("asyncValue",function(){return{restrict:"E",scope:{model:"=",api:"@",fields:"="},controller:["$scope","$timeout","$http",function(n,e,i){e(function(){n.$watch("model",function(e,t){e&&(n.value="",i.get(n.api+"/"+e+"?fields="+n.fields.join()).then(function(e){n.value,angular.forEach(e.data,function(e){e&&(n.value=n.value+e+" ")})}))})})}],template:function(){return''}}}),zaa.directive("zaaTextarea",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder"},template:function(){return'
'}}}),zaa.directive("zaaPassword",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",autocomplete:"@autocomplete"},template:function(){return'
'}}}),zaa.directive("zaaRadio",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue"},controller:["$scope","$timeout",function(t,e){t.setModelValue=function(e){t.model=e},t.init=function(){null!=t.model&&null!=t.model||(t.model=typeCastValue(t.initvalue))},e(function(){t.init()})}],template:function(){return'
'}}}),zaa.directive("zaaSelect",function(){return{restrict:"E",scope:{model:"=",options:"=",optionsvalue:"@optionsvalue",optionslabel:"@optionslabel",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue",clearable:"<"},controller:["$scope","$timeout","$rootScope",function(e,t,n){null==e.optionsvalue&&(e.optionsvalue="value"),null==e.optionslabel&&(e.optionslabel="label"),null==e.clearable&&(e.clearable=!0)}],template:function(){return'
'}}}),zaa.directive("zaaAsyncApiSelect",function(){return{restrict:"E",scope:{model:"=",api:"@api",optionsvalue:"@optionsvalue",optionslabel:"@optionslabel",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue"},controller:["$scope","$http","$timeout",function(n,t,e){n.options=[],null==n.optionsvalue&&(n.optionsvalue="id"),null==n.optionslabel&&(n.optionslabel="title"),n.$watch("api",function(e){t.get(e).then(function(e){var t=[];angular.forEach(e.data,function(e){t.push({label:e[n.optionslabel],value:e[n.optionsvalue]})}),n.options=t})})}],template:function(){return'
'}}}),zaa.directive("zaaSelectCrud",function(){return{restrict:"E",scope:{model:"=",options:"=",api:"@api",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue"},template:function(){return'
'}}}),zaa.directive("luyaSelect",function(){return{restrict:"E",scope:{model:"=ngModel",options:"=",optionsvalue:"@optionsvalue",optionslabel:"@optionslabel",id:"@fieldid",initvalue:"@initvalue",clearable:"<",ngChange:"&"},controller:["$scope","$timeout","$rootScope",function(i,t,e){i.isOpen=0,null!=i.optionsvalue&&""!=i.optionsvalue||(i.optionsvalue="value"),null!=i.optionslabel&&""!=i.optionslabel||(i.optionslabel="label"),angular.isNumber(i.model)&&(i.model=typeCastValue(i.model)),i.$on("closeAllSelects",function(){i.isOpen&&i.closeSelect()}),t(function(){i.$watch(function(){return i.model},function(e,t){null!=e&&null!=e&&""!=e||(angular.isNumber(i.initvalue)&&(i.initvalue=typeCastValue(i.initvalue)),i.valueExistsInOptions(e)||(i.model=i.initvalue))}),null==i.clearable&&(i.clearable=!0)}),i.valueExistsInOptions=function(t){var n=!1;return angular.forEach(i.options,function(e){t==e[i.optionsvalue]&&(n=!0)}),n},i.toggleIsOpen=function(){i.isOpen||e.$broadcast("closeAllSelects"),i.isOpen=!i.isOpen},i.closeSelect=function(){i.isOpen=0},i.setModelValue=function(e){i.model=angular.isObject(e)?e[i.optionsvalue]:e,t(i.ngChange,0),i.closeSelect()},i.getSelectedLabel=function(){var t=i18n.ngrest_select_no_selection;return angular.forEach(i.options,function(e){i.model==e[i.optionsvalue]&&(t=e[i.optionslabel])}),t},i.hasSelectedValue=function(){var e=i.model;return!(!i.valueExistsInOptions(e)||e==i.initvalue)}}],template:function(){return'
{{getSelectedLabel()}}clearkeyboard_arrow_down
{{opt[optionslabel]}}
'}}}),zaa.directive("zaaCheckbox",function(){return{restrict:"E",scope:{model:"=",options:"=",i18n:"@i18n",id:"@fieldid",label:"@label",initvalue:"@initvalue"},controller:["$scope","$timeout",function(e,t){null===e.options||void 0===e.options?(e.valueTrue=1,e.valueFalse=0):(e.valueTrue=e.options["true-value"],e.valueFalse=e.options["false-value"]),e.init=function(){null!=e.model&&null!=e.model||(e.model=typeCastValue(e.initvalue))},t(function(){e.init()}),e.clicker=function(){e.model==e.valueTrue?e.model=e.valueFalse:e.model=e.valueTrue}}],template:function(){return'
'}}}),zaa.directive("zaaCheckboxArray",function(){return{restrict:"E",scope:{model:"=",options:"=",i18n:"@i18n",id:"@fieldid",label:"@label",preselect:"@preselect"},controller:["$scope","$filter",function(n,i){null==n.model&&(n.model=[]),n.preselectOptionValuesToModel=function(e){angular.forEach(e,function(e){n.model.push({value:e.value})})},n.searchString="",n.$watch("options",function(e,t){null!=e&&e.hasOwnProperty("items")&&(n.optionitems=i("orderBy")(e.items,"label"),n.preselect&&n.preselectOptionValuesToModel(e.items))}),n.filtering=function(){n.optionitems=i("filter")(n.options.items,n.searchString)},n.toggleSelection=function(e){for(var t in null==n.model&&(n.model=[]),n.model)if(n.model[t].value==e.value)return void n.model.splice(t,1);n.model.push({value:e.value})},n.isChecked=function(e){for(var t in n.model)if(n.model[t].value==e.value)return!0;return!1}}],link:function(e){e.random=Math.random().toString(36).substring(7)},template:function(){return'
search
{{optionitems.length}} '+i18n.js_dir_till+' {{options.items.length}}
'}}}),zaa.directive("zaaDatetime",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",id:"@fieldid",i18n:"@i18n",resetable:"@resetable"},controller:["$scope","$filter",function(i,a){i.isNumeric=function(e){return!isNaN(e)},i.$watch(function(){return i.model},function(e,t){if(null!=e&&null!=e){var n=new Date(1e3*e);i.pickerPreselect=n,i.date=a("date")(n,"dd.MM.yyyy"),i.hour=a("date")(n,"HH"),i.min=a("date")(n,"mm")}else i.date=null,i.model=null}),i.refactor=function(e){if(i.isNumeric(i.hour)&&""!=i.hour||(i.hour="0"),i.isNumeric(i.min)&&""!=i.min||(i.min="0"),"Invalid Date"==e||""==e||"NaN"==e)i.date=null,i.model=null;else{var t=e.split(".");if(3==t.length&&4==t[2].length){23
date_rangeclose
:
'}}}),zaa.directive("zaaDate",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",id:"@fieldid",i18n:"@i18n",resetable:"@resetable"},controller:["$scope","$filter",function(i,a){i.$watch(function(){return i.model},function(e,t){if(null!=e&&null!=e){var n=new Date(1e3*e);i.pickerPreselect=n,i.date=a("date")(n,"dd.MM.yyyy")}else i.date=null,i.model=null}),i.refactor=function(e){if("Invalid Date"==e||""==e)i.date=null,i.model=null;else{var t=e.split(".");if(3==t.length&&4==t[2].length){var n=t[1]+"/"+t[0]+"/"+t[2];i.model=Date.parse(n)/1e3,i.datePickerToggler=!1}}},i.$watch(function(){return i.date},function(e,t){e!=t&&null!=e&&null!=e&&i.refactor(e)}),i.autoRefactor=function(){i.refactor(i.date)},i.datePickerToggler=!1,i.toggleDatePicker=function(){i.datePickerToggler=!i.datePickerToggler},i.openDatePicker=function(){i.datePickerToggler=!0},i.closeDatePicker=function(){i.datePickerToggler=!1},i.reset=function(){i.model=null},i.getIsResetable=function(){return!i.resetable||parseInt(i.resetable)}}],template:function(){return'
date_rangeclose
'}}}),zaa.directive("zaaTable",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(i){null==i.model&&(i.model=[{0:""}]),i.addColumn=function(){var e=0;for(var t in i.model[0])e++;for(var n in i.model)i.model[n][e]=""},i.addRow=function(){var e=i.model[0],t={};for(var n in e)t[n]="";i.model.push(t)},i.removeColumn=function(e){for(var t in i.model){var n=i.model[t];n instanceof Array?n.splice(e,1):delete n[e]}},i.moveLeft=function(e){for(var t in e=parseInt(e),i.model){var n=i.model[t][e];i.model[t][e]=i.model[t][e-1],i.model[t][e-1]=n}},i.moveRight=function(e){for(var t in e=parseInt(e),i.model){var n=i.model[t][e];i.model[t][e]=i.model[t][e+1],i.model[t][e+1]=n}},i.moveUp=function(e){e=parseInt(e);var t=i.model[e];i.model[e]=i.model[e-1],i.model[e-1]=t},i.moveDown=function(e){e=parseInt(e);var t=i.model[e];i.model[e]=i.model[e+1],i.model[e+1]=t},i.removeRow=function(e){i.model.splice(e,1)},i.showRightButton=function(e){return parseInt(e)
'}}}),zaa.directive("zaaFileUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},template:function(){return'
'}}}),zaa.directive("zaaImageUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},template:function(){return'
'}}}),zaa.directive("zaaImageArrayUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},link:function(e,n,t){e.$watch("model",function(e,t){1<=e.length?$(n).removeClass("is-empty").addClass("is-not-empty"):$(n).removeClass("is-not-empty").addClass("is-empty")},!0)},controller:["$scope",function(n){null==n.model&&(n.model=[]),n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({imageId:0,caption:""})},n.remove=function(e){n.model.splice(e,1)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("zaaFileArrayUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$element","$timeout",function(n,e,t){null==n.model&&(n.model=[]),n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({fileId:0,caption:""})},n.remove=function(e){n.model.splice(e,1)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("zaaMultipleInputs",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$timeout",function(n,e){n.init=function(){null==n.model||null==n.model?n.model=[]:angular.forEach(n.model,function(e,t){0==Object.keys(e).length&&(n.model[t]={})})},n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({})},n.remove=function(e){n.model.splice(e,1)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("zaaJsonObject",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(t){t.$watch("model",function(e){angular.isArray(e)&&(t.model={}),null==e&&(t.model={})}),t.add=function(e){t.model[e]=""},t.remove=function(e){delete t.model[e]}}],template:function(){return'
{{key}}
add
'}}}),zaa.directive("zaaListArray",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$element","$timeout",function(n,t,e){n.init=function(){null!=n.model&&null!=n.model||(n.model=[])},n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({value:""}),n.setFocus()},n.remove=function(e){n.model.splice(e,1)},n.refactor=function(e,t){e!==n.model.length-1&&""==t.value&&n.remove(e)},n.setFocus=function(){e(function(){var e=t.children(".list").children(".list__item:last-of-type").children(".list__left").children("input");1==e.length&&e[0].focus()},50)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("storageFileDisplay",function(){return{restrict:"E",scope:{fileId:"@fileId"},controller:["$scope","$filter","ServiceFilesData",function(n,e,i){n.fileId=0,n.fileinfo=null,n.$watch("fileId",function(e,t){0!=e&&null!=e&&null!=e&&i.getFile(e).then(function(e){n.fileinfo=e},function(){n.fileinfo=null})})}],template:function(){return'{{ fileinfo.name_original }}'}}}),zaa.directive("storageImageCrudList",function(){return{restrict:"E",scope:{imageId:"@imageId"},controller:["$scope","ServiceImagesData",function(n,t){n.imageSrc=null,n.$watch("imageId",function(e,t){e!=t&&(n.imageSrc=null),e&&n.evaluateImages()}),n.$on("requestImageSourceReady",function(){n.evaluateImages()}),n.evaluateImages=function(){0==n.imageId||n.imageSrc||t.getImage(n.imageId).then(function(e){e.tinyCropImage?n.imageSrc=e.tinyCropImage.source:t.getImage(n.imageId,!0).then(function(e){e.tinyCropImage&&(n.imageSrc=e.tinyCropImage.source)})})}}],template:function(){return'{{imageSrc}}'}}}),zaa.directive("storageImageThumbnailDisplay",function(){return{restrict:"E",scope:{imageId:"@imageId"},controller:["$scope","$filter","ServiceImagesData","ServiceFilesData",function(n,e,i,t){n.$watch("imageId",function(e,t){e!=t&&(n.imageSrc=null)}),n.$watch(function(){return n.imageId},function(e,t){null==e&&null==e||i.getImage(e).then(function(e){n.imageSrc=e.tinyCropImage.source},function(){n.imageSrc=null})}),n.imageSrc=null}],template:function(){return'
{{imageSrc}}
'}}}),zaa.directive("storageFileUpload",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope","$filter","ServiceFilesData",function(t,e,n){t.modal={state:1},t.modalContainer=!1,t.fileinfo=null,t.select=function(e){t.toggleModal(),t.ngModel=e},t.reset=function(){t.ngModel=0,t.fileinfo=null},t.toggleModal=function(){t.modalContainer=!t.modalContainer,t.modal.state=!t.modal.state},t.$watch(function(){return t.ngModel},function(e){if(null==e||null==e||!angular.isNumber(e))return null;n.getFile(e).then(function(e){t.fileinfo=e},function(){t.fileinfo=null})})}],templateUrl:"storageFileUpload"}}),zaa.directive("storageImageUpload",function(){return{restrict:"E",scope:{ngModel:"=",options:"="},controller:["$scope","$http","$filter","ServiceFiltersData","ServiceImagesData","AdminToastService","ServiceFilesData",function(n,i,a,e,o,l,t){n.filtersData=e.data,n.$on("service:FiltersData",function(e,t){n.filtersData=t}),n.noFilters=function(){if(n.options)return n.options.no_filter},n.thumbnailfilter=null,n.imageLoading=!1,n.fileId=0,n.filterId=0,n.imageinfo=null,n.imageNotFoundError=!1,n.thumb=!1,n.filterApply=function(){n.imageLoading=!0,t.getFile(n.fileId).then(function(e){var t=a("filter")(e.images,{filter_id:n.filterId});0==t.length?i.post("admin/api-admin-storage/image-filter",{fileId:n.fileId,filterId:n.filterId}).then(function(e){n.ngModel=e.data.id,l.success(i18n.js_dir_image_upload_ok),n.imageLoading=!1},function(e){l.error(i18n.js_dir_image_filter_error),n.imageLoading=!1}):(n.ngModel=t[0].id,n.imageLoading=!1)},function(){n.imageinfo=null,n.thumb=!1,n.ngModel=0})},n.changeFilter=function(){n.filterApply()},n.$watch(function(){return n.fileId},function(e,t){null!=e&&null!=e&&n.filterApply()}),n.$watch(function(){return n.ngModel},function(e,t){null!=e&&null!=e&&0!=e&&o.getImage(e).then(function(e){n.applyImageDetails(e),n.fileId=e.file_id,n.filterId=e.filter_id},function(){n.fileId=0,n.filterId=0,n.imageinfo=null,n.thumb=!1})}),n.applyImageDetails=function(e){n.imageinfo=e,n.thumb=e}}],templateUrl:"storageImageUpload"}}),zaa.directive("storageFileManager",function(){return{restrict:"E",transclude:!1,scope:{allowSelection:"@selection",onlyImages:"@onlyImages"},controller:["$scope","$http","$filter","$timeout","$q","HtmlStorage","cfpLoadingBar","Upload","ServiceFoldersData","ServiceFilesData","LuyaLoading","AdminToastService","ServiceFoldersDirecotryId","ServiceAdminTags","ServiceQueueWaiting",function(a,o,t,e,l,r,n,i,s,c,d,u,p,f,m){a.foldersData=s.data,a.$on("service:FoldersData",function(e,t){a.foldersData=t}),a.foldersDataReload=function(){return s.load(!0)},a.tags=[],f.load().then(function(e){a.tags=e}),a.filesData=[],a.totalFiles=0,a.pageCount=0,a.currentPageId=parseInt(r.getValue("filemanager.pageId",1)),a.$watch("currentPageId",function(e,t){void 0!==e&&e!=t&&a.getFilesForCurrentPage()},!0),a.$watch("currentFolderId",function(e,t){void 0!==e&&(a.generateFolderInheritance(e),a.getFilesForPageAndFolder(e,1))},!0),a.folderInheritance=[],a.generateFolderInheritance=function(e){a.folderInheritance=[],a.findFolderInheritance(e)},a.findFolderInheritance=function(e){if(a.foldersData&&a.foldersData.hasOwnProperty(e)){var t=a.foldersData[e];a.folderInheritance.push(t),t&&t.parentId&&a.findFolderInheritance(t.parentId)}},a.hasFolderActiveChild=function(t){var n=!1;return angular.forEach(a.folderInheritance,function(e){e.id==t&&(n=!0)}),n},a.getFilesForPageAndFolder=function(n,i){return l(function(t,e){o.get(a.createUrl(n,i,a.sortField,a.searchQuery)).then(function(e){return r.setValue("filemanager.sortField",a.sortField),r.setValue("filemanager.pageId",parseInt(i)),a.filesResponseToVars(e),t(!0)})})},a.createUrl=function(e,t,n,i){return"admin/api-admin-storage/data-files?folderId="+e+"&page="+t+"&expand=createThumbnail,createThumbnailMedium,isImage,sizeReadable&sort="+n+"&search="+i},a.filesResponseToVars=function(e){a.filesData=e.data,a.pageCount=e.headers("X-Pagination-Page-Count"),a.currentPageId=parseInt(e.headers("X-Pagination-Current-Page")),a.totalFiles=e.headers("X-Pagination-Total-Count")},a.filesMetaToPagination=function(e){a.pageCount=e.totalPages},a.getFilesForCurrentPage=function(){return a.getFilesForPageAndFolder(a.currentFolderId,a.currentPageId)},a.currentFolderId=p.folderId,a.foldersDirecotryIdReload=function(){return p.load(!0)},a.folderCountMessage=function(e){return i18nParam("js_filemanager_count_files_overlay",{count:e.filesCount})},a.errorMsg=null,a.replaceFile=function(e,t){(a.replaceFiled=e)&&(d.start(),i.upload({url:"admin/api-admin-storage/file-replace",data:{file:e,fileId:a.fileDetail.id,pageId:a.currentPageId}}).then(function(e){d.stop(),200==e.status&&(a.getFilesForCurrentPage().then(function(){u.success(i18n.js_dir_manager_file_replace_ok)}),a.openFileDetail(a.fileDetail,!0))},function(){d.stop()}))},a.$watch("uploadingfiles",function(e){if(null!=e){a.uploadResults=0,d.start(i18n.js_dir_upload_wait);for(var t=0;t\n
\n

'+i18n.crop_source_image+'

\n
\n \n
\n
    \n
  • crop_free
    '+i18n.crop_size_free+'
  • \n
  • crop_square
    '+i18n.crop_size_1to1+'
  • \n
  • crop_16_9
    '+i18n.crop_size_desktop+'
  • \n
  • crop_portrait
    '+i18n.crop_size_mobile+'
  • \n
\n
\n
\n

'+i18n.crop_preview+'

\n \n\n
    \n
  • looks_one
    '+i18n.crop_quality_high+'
  • \n
  • looks_two
    '+i18n.crop_quality_medium+'
  • \n
  • looks_3
    '+i18n.crop_quality_low+'
  • \n
\n\n
\n \n \n '+i18n.crop_btn_as_copy_hint+'\n
\n\n \n \n
\n \n "}}),zaa.directive("pagination",function(){return{restrict:"E",scope:{currentPage:"=",pageCount:"="},controller:["$scope","$timeout",function(t,e){t.pageNumberInputVal=t.currentPage,t.$watch("currentPage",function(e){t.pageNumberInputVal=e}),t.$watch("pageNumberInputVal",function(){t.inputWidth=25+10*(t.pageNumberInputVal.toString().length<=0?1:t.pageNumberInputVal.toString().length)});var n=null;t.pageNumberInputChange=function(){n&&e.cancel(n),n=e(function(){isNaN(t.pageNumberInputVal)?t.pageNumberInputVal=t.currentPage:parseInt(t.pageNumberInputVal)>parseInt(t.pageCount)||parseInt(t.pageNumberInputVal)<=0?t.pageNumberInputVal=t.currentPage:t.currentPage=t.pageNumberInputVal},500)},t.next=function(){t.currentPage\n \n \n
\n \n /\n {{pageCount}}\n
\n \n \n \n '}}),zaa.controller("DefaultDashboardObjectController",["$scope","$http","$sce",function(t,n,e){t.data,t.loadData=function(e){n.get(e).then(function(e){t.data=e.data})}}]),zaa.controller("CrudController",["cfpLoadingBar","$scope","$rootScope","$filter","$http","$sce","$state","$timeout","$injector","$q","AdminLangService","AdminToastService","CrudTabService","ServiceImagesData",function(t,r,e,n,s,i,a,o,l,c,d,u,p,f){r.toast=u,r.AdminLangService=d,r.tabService=p,r.clearData=function(){u.confirm(i18n.ngrest_delete_all_button_confirm_message,i18n.ngrest_delete_all_button_label,function(){var e=this;s.get(r.config.apiEndpoint+"/truncate").then(function(){e.close(),r.loadList()})})},r.crudSwitchType=0,r.switchToTab=function(e){angular.forEach(r.tabService.tabs,function(e){e.active=!1}),e.active=!0,r.switchTo(4)},r.addAndswitchToTab=function(e,t,n,i,a){r.tabService.addTab(e,t,n,i,a),r.switchTo(4)},r.closeTab=function(e,t){r.tabService.remove(t,r)},r.switchTo=function(e,t){r.config.relationCall?r.crudSwitchType=e:(t&&r.resetData(),0==e&&s.get(r.config.apiEndpoint+"/unlock",{ignoreLoadingBar:!0}),0!=e&&1!=e||r.config.inline||a.go("default.route"),4===(r.crudSwitchType=e)||r.config.inline||angular.forEach(r.tabService.tabs,function(e){e.active=!1}))},r.closeUpdate=function(){r.switchTo(0,!0)},r.closeCreate=function(){r.switchTo(0,!0)},r.activeWindowModal=!0,r.openActiveWindow=function(){r.activeWindowModal=!1},r.closeActiveWindow=function(){r.activeWindowModal=!0},r.changeGroupByField=function(){0==r.config.groupByField?r.config.groupBy=0:r.config.groupBy=1},r.isSettingsVisible=!1,r.toggleSettingsMenu=function(){r.isSettingsVisible=!r.isSettingsVisible},r.hiddeSettingsMenu=function(){r.isSettingsVisible=!1},r.isExportModalHidden=!0,r.exportdata={header:1,type:"xlsx"},r.toggleExportModal=function(){r.exportdata.filter=r.config.filter,r.isExportModalHidden=!r.isExportModalHidden},r.exportResponse=!1,r.generateExport=function(){s.post(r.config.apiEndpoint+"/export?"+r.config.apiExportQueryString,r.exportdata).then(function(e){r.exportResponse=e.data})},r.downloadExport=function(){var e=r.exportResponse.url;return r.exportResponse=!1,window.open(e),!1},r.applySaveCallback=function(){r.config.saveCallback&&l.invoke(r.config.saveCallback,this)},r.isOrderBy=function(e){return e==r.config.orderBy},r.changeOrder=function(e,t){r.config.orderBy=t+e,s.post("admin/api-admin-common/ngrest-order",{apiEndpoint:r.config.apiEndpoint,sort:t,field:e},{ignoreLoadingBar:!0}),r.loadList()},r.callActiveButton=function(e,t,n){var i=angular.element(n.currentTarget);i.addClass("crud-buttons-button-loading"),s.get(r.config.apiEndpoint+"/active-button?hash="+e+"&id="+t.join()).then(function(e){i.removeClass("crud-buttons-button-loading"),i.addClass("crud-buttons-button-success"),o(function(){i.removeClass("crud-buttons-button-success")},5e3),angular.forEach(e.data.events,function(e){"loadList"==e&&r.loadList()}),u.success(e.data.message)},function(e){i.removeClass("crud-buttons-button-loading"),i.addClass("crud-buttons-button-danger"),o(function(){i.removeClass("crud-buttons-button-danger")},5e3),u.error(e.data.message)})},r.reloadActiveWindow=function(){r.getActiveWindow(r.data.aw.hash,r.data.aw.itemId)},r.getActiveWindow=function(t,n,e){s.post(r.config.activeWindowRenderUrl,{itemId:n,activeWindowHash:t,ngrestConfigHash:r.config.ngrestConfigHash}).then(function(e){r.openActiveWindow(),r.data.aw.itemId=n,r.data.aw.configCallbackUrl=r.config.activeWindowCallbackUrl,r.data.aw.configHash=r.config.ngrestConfigHash,r.data.aw.hash=t,r.data.aw.content=i.trustAsHtml(e.data.content),r.data.aw.title=e.data.title,r.$broadcast("awloaded",{id:t})})},r.getActiveWindowCallbackUrl=function(e){return r.data.aw.configCallbackUrl+"?activeWindowCallback="+e+"&ngrestConfigHash="+r.data.aw.configHash+"&activeWindowHash="+r.data.aw.hash},r.sendActiveWindowCallback=function(e,t){t=t||{};return s.post(r.getActiveWindowCallbackUrl(e),$.param(t),{headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}})},r.searchPromise=null,r.$watch("config.searchQuery",function(e,t){e!=t&&null!=e&&null!=e&&r.applySearchQuery(e)}),r.applySearchQuery=function(e){null!=e&&null!=e&&(o.cancel(r.searchPromise),0==e.length?r.loadList(1):(t.start(),r.searchPromise=o(function(){r.reloadCrudList(1)},700)))},r.generateSearchPromise=function(e,t){return s.post(r.generateUrlWithParams("search",t),{query:e}).then(function(e){r.parseResponseQueryToListArray(e)})},r.selectedItems=[],r.isInSelection=function(e){var t=r.getRowPrimaryValue(e);return-1!=this.selectedItems.indexOf(t)},r.toggleSelection=function(e){var t=r.getRowPrimaryValue(e),n=this.selectedItems.indexOf(t);-1==n?this.selectedItems.push(t):this.selectedItems.splice(n,1)},r.sendActiveSelection=function(e){s.post(r.config.apiEndpoint+"/active-selection?index="+e,{ids:this.selectedItems}).then(function(e){angular.forEach(e.data.events,function(e){"loadList"==e&&r.loadList()}),u.success(e.data.message)},function(e){u.error(e.data.message)})},r.parentSelectInline=function(e){r.$parent.$parent.$parent.setModelValue(r.getRowPrimaryValue(e),e)},r.checkIfFieldExistsInPopulateCondition=function(e){var t=r.config.pools;if(t.hasOwnProperty(e))return t[e];if(r.config.relationCall){var n=r.$parent.$parent.config.relations[parseInt(r.config.relationCall.arrayIndex)].relationLink;if(null!==n&&n.hasOwnProperty(e))return parseInt(r.config.relationCall.id)}return!1},r.relationItems=[],r.deleteItem=function(e,t){u.confirm(i18n.js_ngrest_rm_page,i18n.ngrest_button_delete,["$toast",function(t){s.delete(r.config.apiEndpoint+"/"+e).then(function(e){r.loadList(),t.close(),u.success(i18n.js_ngrest_rm_confirm)},function(e){r.printErrors(e)})}])},r.toggleUpdate=function(n){r.resetData(),s.get(r.config.apiEndpoint+"/"+n+"?"+r.config.apiUpdateQueryString).then(function(e){var t=e.data;r.data.update=t,r.config.relationCall?r.crudSwitchType=2:r.switchTo(2),r.config.inline||a.go("default.route.detail",{id:n}),r.data.updateId=n},function(e){u.error(i18n.js_ngrest_error)})},r.highlightPkValue=null,r.highlightTimeout=5e3,r.isRowHighlighted=function(e){return r.getRowPrimaryValue(e)==r.highlightPkValue},r.submitUpdate=function(t){s.put(r.config.apiEndpoint+"/"+r.data.updateId,angular.toJson(r.data.update,!0)).then(function(e){u.success(i18n.js_ngrest_rm_update),r.loadList(r.pager.currentPage).then(function(){r.applySaveCallback(),t&&r.switchTo(0,!0),r.highlightPkValue=r.getRowPrimaryValue(e.data),o(function(){r.highlightPkValue=null},r.highlightTimeout)})},function(e){r.printErrors(e.data)})},r.submitCreate=function(t,n){s.post(r.config.apiEndpoint,angular.toJson(r.data.create,!0)).then(function(e){u.success(i18n.js_ngrest_rm_success),r.loadList().then(function(){r.applySaveCallback(),t&&r.switchTo(0,!0),r.resetData(),r.highlightPkValue=r.getRowPrimaryValue(e.data),o(function(){r.highlightPkValue=null},r.highlightTimeout),n&&r.toggleUpdate(e.data.id)})},function(e){r.printErrors(e.data)})},r.printErrors=function(e){angular.forEach(e,function(e,t){u.error(e.message)})},r.resetData=function(){r.data.create=angular.copy({}),r.data.update=angular.copy({})},r.changeNgRestFilter=function(){s.post("admin/api-admin-common/ngrest-filter",{apiEndpoint:r.config.apiEndpoint,filterName:r.config.filter},{ignoreLoadingBar:!0}),r.loadList(1)},r.pager={currentPage:1,pageCount:1,perPage:0,totalItems:0},r.$watch("pager.currentPage",function(e,t){e===t||null==e||null==e||r.loadList(e)},!0),r.setPagination=function(e,t,n,i){r.totalRows=i,r.pager={currentPage:parseInt(e),pageCount:t,perPage:n,totalItems:i}},r.toggleStatus=function(t,n,i,e){var a=!e?1:0,o=t[r.config.pk],l={};l[n]=a,s.put(r.config.apiEndpoint+"/"+o+"?ngrestCallType=update&fields="+n,angular.toJson(l,!0)).then(function(e){t[n]=a,u.success(i18nParam("js_ngrest_toggler_success",{field:i}))},function(e){r.printErrors(e)})},r.sortableUp=function(e,t,n){var i=r.data.listArray[e-1];r.data.listArray[e-1]=t,r.data.listArray[e]=i,r.updateSortableIndexPositions(n)},r.sortableDown=function(e,t,n){var i=r.data.listArray[e+1];r.data.listArray[e+1]=t,r.data.listArray[e]=i,r.updateSortableIndexPositions(n)},r.updateSortableIndexPositions=function(a){angular.forEach(r.data.listArray,function(e,t){var n={};n[a]=t;var i=r.getRowPrimaryValue(e);s.put(r.config.apiEndpoint+"/"+i+"?ngrestCallType=update&fields="+a,angular.toJson(n,!0),{ignoreLoadingBar:!0})})},r.loadService=function(){r.initServiceAndConfig()},r.evalSettings=function(e){e.hasOwnProperty("order")&&(r.config.orderBy=e.order),e.hasOwnProperty("filterName")&&(r.config.filter=e.filterName)},r.getRowPrimaryValue=function(t){var e=r.config.pk;if(angular.isArray(e)){var n=[];return angular.forEach(e,function(e){n.push(t[e])}),n.join()}return t[r.config.pk]},r.tagsFilterIds=[],r.isTagFilterActive=function(e){return-1!=r.tagsFilterIds.indexOf(e)},r.toggleTagFilter=function(e){var t=r.tagsFilterIds.indexOf(e);-1==t?r.tagsFilterIds.push(e):r.tagsFilterIds.splice(t,1),r.loadList()},r.initServiceAndConfig=function(){var t=c.defer();return s.get(r.config.apiEndpoint+"/services?"+r.config.apiServicesQueryString).then(function(e){r.service=e.data.service,r.serviceResponse=e.data,r.evalSettings(e.data._settings),r.$parent.notifications&&r.$parent.notifications.hasOwnProperty(r.serviceResponse._authId)&&delete r.$parent.notifications[r.serviceResponse._authId],t.resolve()}),t.promise},r.toggleNotificationMute=function(){s.post(r.config.apiEndpoint+"/toggle-notification",{mute:!r.serviceResponse._notifcation_mute_state}).then(function(e){r.initServiceAndConfig()})},r.getFieldHelp=function(e){return!!(r.serviceResponse&&r.serviceResponse._hints&&r.serviceResponse._hints.hasOwnProperty(e))&&r.serviceResponse._hints[e]},r.loadList=function(e){return null==e&&r.pager?r.reloadCrudList(r.pager.currentPage):r.reloadCrudList(e)},r.totalRows=0,r.requestedImages=[],r.parseResponseQueryToListArray=function(n){r.setPagination(n.headers("X-Pagination-Current-Page"),n.headers("X-Pagination-Page-Count"),n.headers("X-Pagination-Per-Page"),n.headers("X-Pagination-Total-Count")),r.data.listArray=n.data,r.requestedImages=[],angular.forEach(r.service,function(e,t){e.hasOwnProperty("lazyload_images")&&angular.forEach(n.data,function(e){r.requestedImages.push(e[t])})}),o(function(){f.loadImages(r.requestedImages).then(function(){r.$broadcast("requestImageSourceReady"),r.requestedImages=[]})})},r.generateUrlWithParams=function(e,t){var n=r.config.apiEndpoint+"/"+e+"?"+r.config.apiListQueryString;r.config.orderBy&&(n=n+"&sort="+r.config.orderBy.replace("+","")),void 0!==t&&(n=n+"&page="+t);var i=r.config.searchQuery;i&&(n=n+"&query="+i);var a=r.tagsFilterIds.join(",");return a&&(n=n+"&tags="+a),n},r.reloadCrudList=function(e){var t=c.defer();if(0==parseInt(r.config.filter)||null===r.config.filter){if(r.config.relationCall){n=(n=r.generateUrlWithParams("relation-call",e))+"&arrayIndex="+r.config.relationCall.arrayIndex+"&id="+r.config.relationCall.id+"&modelClass="+r.config.relationCall.modelClass}else{if(r.config.searchQuery)return r.generateSearchPromise(r.config.searchQuery,e);var n=r.generateUrlWithParams("list",e)}s.get(n).then(function(e){t.resolve(e),r.parseResponseQueryToListArray(e)})}else{n=(n=r.generateUrlWithParams("filter",e))+"&filterName="+r.config.filter,s.get(n).then(function(e){r.parseResponseQueryToListArray(e),t.resolve(e)})}return t.promise},r.service=!1,r.$on("secondMenuClick",function(){r.isInitalized&&(r.loadList(),r.switchTo(0,!0))}),r.data={create:{},update:{},aw:{},list:{},updateId:0},r.isInitalized=!1,r.$watch("config",function(e,t){o(function(){r.initServiceAndConfig().then(function(){r.isInitalized=!0,r.loadList()})})})}]),zaa.controller("ActiveWindowTagController",["$scope","$http","AdminToastService",function(n,e,i){n.crud=n.$parent,n.tags=[],n.relation={},n.newTagName=null,n.loadTags=function(){e.get(n.crud.getActiveWindowCallbackUrl("LoadTags")).then(function(e){n.tags=e.data})},n.loadRelations=function(){e.get(n.crud.getActiveWindowCallbackUrl("LoadRelations")).then(function(e){n.relation={},e.data.forEach(function(e,t){n.relation[e.tag_id]=1})})},n.saveTag=function(){var t=n.newTagName;""!==t&&n.crud.sendActiveWindowCallback("SaveTag",{tagName:t}).then(function(e){e.data?(n.tags.push({id:e.data,name:t}),i.success(t+" wurde gespeichert.")):i.error(t+" "+i18n.js_tag_exists),n.newTagName=null})},n.saveRelation=function(t,e){n.crud.sendActiveWindowCallback("SaveRelation",{tagId:t.id,value:e}).then(function(e){n.relation[t.id]=e.data,i.success(i18n.js_tag_success)})},n.$watch(function(){return n.data.aw.itemId},function(e,t){n.loadRelations()}),n.loadTags()}]),zaa.controller("ActiveWindowGalleryController",["$scope","$http","$filter",function(o,e,t){o.crud=o.$parent,o.files=[],o.select=function(e){0==t("filter")(o.files,{fileId:e},!0).length&&o.crud.sendActiveWindowCallback("AddImageToIndex",{fileId:e}).then(function(e){var t=e.data;o.files.push(t)})},o.loadImages=function(){e.get(o.crud.getActiveWindowCallbackUrl("loadAllImages")).then(function(e){o.files=e.data})},o.changePosition=function(e,t,n){t=parseInt(t);var i=o.files[t];"up"==n?(o.files[t]=o.files[t-1],o.files[t-1]=i):"down"==n&&(o.files[t]=o.files[t+1],o.files[t+1]=i);var a=o.files[t];o.crud.sendActiveWindowCallback("ChangeSortIndex",{new:a,old:i})},o.moveUp=function(e,t){o.changePosition(e,t,"up")},o.moveDown=function(e,t){o.changePosition(e,t,"down")},o.remove=function(e,t){o.crud.sendActiveWindowCallback("RemoveFromIndex",{imageId:e.originalImageId}).then(function(e){o.files.splice(t,1)})},o.$watch(function(){return o.data.aw.itemId},function(e,t){o.loadImages()})}]),zaa.controller("ActiveWindowGroupAuth",["$scope","$http","CacheReloadService",function(n,e,t){n.crud=n.$parent,n.reload=function(){t.reload()},n.rights=[],n.auths=[],n.save=function(e){n.crud.sendActiveWindowCallback("saveRights",{data:e}).then(function(e){n.getRights(),n.reload()})},n.clearModule=function(e){angular.forEach(e,function(e){n.rights[e.id]={base:0,create:0,update:0,delete:0}})},n.toggleModule=function(e){angular.forEach(e,function(e){n.rights[e.id]={base:1,create:1,update:1,delete:1}})},n.toggleGroup=function(e){objectGroup=n.rights[e],1==objectGroup.base?(objectGroup.create=1,objectGroup.update=1,objectGroup.delete=1):0==objectGroup.base&&(objectGroup.create=0,objectGroup.update=0,objectGroup.delete=0)},n.toggleAll=function(){angular.forEach(n.auths,function(e){angular.forEach(e,function(e){n.rights[e.id]={base:1,create:1,update:1,delete:1}})})},n.untoggleAll=function(){angular.forEach(n.auths,function(e){angular.forEach(e,function(e){n.rights[e.id]={base:0,create:0,update:0,delete:0}})})},n.getRights=function(){e.get(n.crud.getActiveWindowCallbackUrl("getRights")).then(function(e){n.rights=e.data.rights,n.auths=e.data.auths})},n.$on("awloaded",function(e,t){n.getRights()}),n.$watch(function(){return n.data.aw.itemId},function(e,t){n.getRights()})}]),zaa.controller("DefaultController",["$scope","$http","$state","$stateParams","CrudTabService",function(a,t,n,i,o){a.moduleId=n.params.moduleId,a.loadDashboard=function(){return a.currentItem=null,a.getDashboard(a.moduleId),n.go("default",{moduleId:a.moduleId})},a.isOpenModulenav=!1,a.items=[],a.itemRoutes=[],a.currentItem=null,a.dashboard=[],a.itemAdd=function(e,t){for(var n in a.items.push({name:e,items:t}),t){var i=t[n];a.itemRoutes[i.route]={alias:i.alias,icon:i.icon}}},a.getDashboard=function(e){t.get("admin/api-admin-menu/dashboard",{params:{nodeId:e}}).then(function(e){a.dashboard=e.data})},a.init=function(){a.get(),a.getDashboard(a.moduleId)},a.resolveCurrentItem=function(){if(!a.currentItem&&("default.route"==n.current.name||"default.route.detail"==n.current.name)){var e=[i.moduleRouteId,i.controllerId,i.actionId].join("/");a.itemRoutes.indexOf(e)&&(a.currentItem=a.itemRoutes[e],a.currentItem.route=e)}},a.click=function(e){a.isOpenModulenav=!1;var t=(a.currentItem=e).route.split("/");o.clear(),a.$broadcast("secondMenuClick",{item:e}),n.go("default.route",{moduleRouteId:t[0],controllerId:t[1],actionId:t[2]})},a.get=function(){t.get("admin/api-admin-menu/items",{params:{nodeId:a.moduleId}}).then(function(e){var t=e.data;for(var n in t.groups){var i=t.groups[n];a.itemAdd(i.name,i.items)}a.resolveCurrentItem()})},a.hasSubUnreadNotificaton=function(e){return a.$parent.notifications&&a.$parent.notifications.hasOwnProperty(e.authId)?a.$parent.notifications[e.authId]:0},a.$on("topMenuClick",function(e){a.currentItem=null}),a.init()}]),zaa.controller("DashboardController",["$scope",function(e){e.logItemOpen=!1}]),zaa.filter("lockFilter",function(){return function(e,t,n){var i=!1;return angular.forEach(e,function(e){e.lock_table==t&&e.lock_pk==n&&(i=e)}),i}}),zaa.controller("LayoutMenuController",["$scope","$document","$http","$state","$timeout","$window","$filter","HtmlStorage","CacheReloadService","AdminDebugBar","LuyaLoading","AdminToastService","AdminClassService",function(a,e,n,o,i,t,l,r,s,c,d,u,p){a.AdminClassService=p,a.AdminDebugBar=c,a.LuyaLoading=d,a.toastQueue=u.queue,a.reload=function(){s.reload()},a.reload=function(e){0==e?t.location.reload():s.reload()},a.reloadButtonCall=function(e){n.get("admin/api-admin-common/reload-button-call?key="+e).then(function(e){u.success(e.data.message)})},a.isHover=r.getValue("sidebarToggleState",!1),a.toggleMainNavSize=function(){a.isHover=!a.isHover,r.setValue("sidebarToggleState",a.isHover)},a.profile={},a.settings={},a.packages=[],a.getProfileAndSettings=function(){n.get("admin/api-admin-user/session").then(function(e){a.profile=e.data.user,a.settings=e.data.settings,a.packages=e.data.packages})},a.browser=null,a.detectBrowser=function(){a.browser=[bowser.name.replace(" ","-").toLowerCase()+"-"+bowser.version,bowser.mac?"mac-os-"+(bowser.osversion?bowser.osversion:""):"windows-"+(bowser.osversion?bowser.osversion:"")].join(" ")},a.detectBrowser(),a.getProfileAndSettings(),a.debugDetail=null,a.debugDetailKey=null,a.loadDebugDetail=function(e,t){a.debugDetail=e,a.debugDetailKey=t},a.closeDebugDetail=function(){a.debugDetail=null,a.debugDetailKey=null},a.notify=null,a.forceReload=0,a.showOnlineContainer=!1,a.searchDetailClick=function(t,i){"custom"==t.type?a.click(t.menuItem).then(function(){if(t.stateProvider){var n={};angular.forEach(t.stateProvider.params,function(e,t){n[t]=i[e]}),o.go(t.stateProvider.state,n).then(function(){a.closeSearchInput()})}else a.closeSearchInput()}):a.click(t.menuItem.module).then(function(){var e=t.menuItem.route.split("/");o.go("default.route",{moduleRouteId:e[0],controllerId:e[1],actionId:e[2]}).then(function(){if(t.stateProvider){var n={};angular.forEach(t.stateProvider.params,function(e,t){n[t]=i[e]}),o.go(t.stateProvider.state,n).then(function(){a.closeSearchInput()})}else a.closeSearchInput()})})},a.visibleAdminReloadDialog=!1,a.lastKeyStroke=Date.now(),e.bind("keyup",function(e){a.lastKeyStroke=Date.now()}),a.notifications=[],function t(){n.post("admin/api-admin-timestamp",{lastKeyStroke:a.lastKeyStroke},{ignoreLoadingBar:!0}).then(function(e){a.forceReload=e.data.forceReload,a.notifications=e.data.notifications,a.forceReload&&!a.visibleAdminReloadDialog&&(a.visibleAdminReloadDialog=!0,u.confirm(i18n.js_admin_reload,i18n.layout_btn_reload,function(){a.reload(),a.visibleAdminReloadDialog=!1})),a.locked=e.data.locked,a.notify=e.data.useronline,a.idleStrokeDashoffset=e.data.idleStrokeDashoffset,a.idleTimeRelative=e.data.idleTimeRelative,i(t,2e4)})}(),a.isLocked=function(e,t){return l("lockFilter")(a.locked,e,t)},a.getLockedName=function(e,t){var n=a.isLocked(e,t);return n.firstname+" "+n.lastname},a.searchQuery=null,a.searchInputOpen=!1,a.escapeSearchInput=function(){a.searchInputOpen&&a.closeSearchInput()},a.toggleSearchInput=function(){a.searchInputOpen=!a.searchInputOpen},a.openSearchInput=function(){a.searchInputOpen=!0},a.closeSearchInput=function(){a.searchInputOpen=!1},a.searchResponse=null,a.hasUnreadNotificaton=function(e){var t=e.authIds,n=0;return angular.forEach(t,function(e){e&&a.notifications.hasOwnProperty(e)&&(n+=parseInt(a.notifications[e]))}),n},a.$watch(function(){return a.searchQuery},function(e,t){e!==t&&(2'}}}); \ No newline at end of file +function guid(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}function i18nParam(e,t){var n=i18n[e];return angular.forEach(t,function(e,t){n=n.replace("%"+t+"%",e)}),n}function typeCastValue(e){return angular.isNumber(e)?parseInt(e):e}angular.module("dnd",[]).factory("dndFactory",function(){return{data:{content:null,pos:null,element:null},getElement:function(){return this.data.element},setElement:function(e){this.data.element=e},setContent:function(e){this.data.content=e},getContent:function(){return this.data.content},setPos:function(e){this.data.pos=e},getPos:function(){return this.data.pos}}}).directive("dnd",["dndFactory","AdminClassService",function(r,e){return{restrict:"A",transclude:!1,replace:!1,template:!1,templateURL:!1,scope:{dndModel:"=",dndCss:"=",dndOndrop:"&",dndIsvalid:"&"},link:function(i,a,e){var o=!0,l=e.hasOwnProperty("dndDisableDragMiddle");e.hasOwnProperty("dndDragDisabled")||a.attr("draggable","true"),i.addClass=function(e){a.addClass(e)},i.removeClass=function(e,t){a.removeClass(e)},a.on("dragstart",function(e){if((e=e.originalEvent||e).stopPropagation(),"false"==a.attr("draggable"))return!0;o=!0,r.setContent(i.dndModel),r.setElement(a[0]),i.addClass(i.dndCss.onDrag);try{e.dataTransfer.setData("text","1")}catch(e){try{e.dataTransfer.setData("application/json","1")}catch(e){e.dataTransfer.setData("Text","1")}}}),a.on("dragend",function(e){e=e.originalEvent||e,i.removeClass(i.dndCss.onDrag),e.stopPropagation()}),a.on("dragover",function(e){e=e.originalEvent||e;try{e.dataTransfer.dropEffect="move"}catch(e){}if(e.preventDefault(),e.stopPropagation(),!i.dndIsvalid({hover:i.dndModel,dragged:r.getContent()}))return o=!1;var t=a[0].getBoundingClientRect(),n=100/t.height*(e.clientY-t.top);return l?n<=50?(i.addClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.removeClass(i.dndCss.onHoverBottom),r.setPos("top")):(i.removeClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.addClass(i.dndCss.onHoverBottom),r.setPos("bottom")):n<=25?(i.addClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.removeClass(i.dndCss.onHoverBottom),r.setPos("top")):65<=n?(i.removeClass(i.dndCss.onHoverTop),i.removeClass(i.dndCss.onHoverMiddle),i.addClass(i.dndCss.onHoverBottom),r.setPos("bottom")):(i.removeClass(i.dndCss.onHoverTop),i.addClass(i.dndCss.onHoverMiddle),i.removeClass(i.dndCss.onHoverBottom),r.setPos("middle")),i.addClass(i.dndCss.onHover),!1}),a.on("dragenter",function(e){e=e.originalEvent||e,i.addClass(i.dndCss.onHover),e.preventDefault()}),a.on("dragleave",function(e){i.removeClass(i.dndCss.onHover,!0),i.removeClass(i.dndCss.onHoverTop,!0),i.removeClass(i.dndCss.onHoverMiddle,!0),i.removeClass(i.dndCss.onHoverBottom,!0)}),e.hasOwnProperty("dndDropDisabled")||a.on("drop",function(e){return(e=e.originalEvent||e).preventDefault(),e.stopPropagation(),i.removeClass(i.dndCss.onHover,!0),i.removeClass(i.dndCss.onHoverTop,!0),i.removeClass(i.dndCss.onHoverMiddle,!0),i.removeClass(i.dndCss.onHoverBottom,!0),!!o&&(i.$apply(function(){i.dndOndrop({dragged:r.getContent(),dropped:i.dndModel,position:r.getPos(),element:r.getElement()})}),!0)})}}}]);var zaa=angular.module("zaa",["ui.router","dnd","angular-loading-bar","ngFileUpload","ngWig","flow","angular.filter","720kb.datepicker","directive.ngColorwheel","uiCropper"]);zaa.config(["$httpProvider","$stateProvider","$controllerProvider","$urlMatcherFactoryProvider",function(e,t,n,i){e.interceptors.push("authInterceptor"),zaa.bootstrap=n,i.strictMode(!1),t.state("default",{url:"/default/:moduleId",templateUrl:function(e){return"admin/template/default"}}).state("default.route",{url:"/:moduleRouteId/:controllerId/:actionId",templateUrl:function(e){return e.moduleRouteId+"/"+e.controllerId+"/"+e.actionId},parent:"default",resolve:{adminServiceResolver:adminServiceResolver}}).state("custom",{url:"/template/:templateId",templateUrl:function(e){return e.templateId},resolve:{adminServiceResolver:adminServiceResolver,resolverProvider:["resolver",function(e){return e.then}]}}).state("home",{url:"",templateUrl:"admin/default/dashboard",controller:["$scope",function(e){e.$parent.currentItem={icon:"home",alias:i18n.menu_dashboard}}]}).state("default.route.detail",{url:"/:id",parent:"default.route",template:"",controller:["$scope","$stateParams",function(e,t){e.crud=e.$parent,e.init=function(){e.crud.config.inline||e.crud.data.updateId!=t.id&&e.crud.toggleUpdate(t.id)},e.init()}]})}]),zaa.provider("resolver",[function(){var a=[];this.addCallback=function(e){a.push(e)},this.$get=["$injector","$q","$state",function(i,e,t){return e(function(e,t){for(var n in a)i.invoke(a[n])})}]}]),zaa.factory("LuyaLoading",["$timeout",function(t){var n=!1,i=null,a=null;return{start:function(e){i=null==e?i18n.js_zaa_server_proccess:e,t.cancel(a),n=!0,a=t(function(){n=!0},1e3)},stop:function(){t.cancel(a),n=!1},getStateMessage:function(){return i},getState:function(){return n}}}]),zaa.factory("AdminClassService",function(){var n=[];return n.vars={},n.getClassSpace=function(e){if(n.vars.hasOwnProperty(e))return n.vars[e]},n.hasClassSpace=function(e){return!!n.vars.hasOwnProperty(e)},n.setClassSpace=function(e,t){n.vars[e]=t},n.clearSpace=function(e){n.vars.hasOwnProperty(e)&&(n.vars[e]=null)},n.removeSpace=function(e){n.hasClassSpace(e)&&delete n.vars[e]},n.stack=0,n.modalStackPush=function(){n.stack+=1},n.modalStackRemove=function(){n.stack<=1?n.stack=0:n.stack-=1},n.modalStackRemoveAll=function(){n.stack=0},n.modalStackIsEmpty=function(){return 0==n.stack},n}),zaa.factory("CacheReloadService",["$http","$window",function(e,t){var n=[];return n.reload=function(){e.get("admin/api-admin-common/cache").then(function(e){t.location.reload()})},n}]),zaa.factory("authInterceptor",["$rootScope","$q","AdminToastService","AdminDebugBar",function(i,a,t,o){return{request:function(e){if(e.hasOwnProperty("ignoreLoadingBar")||(e.debugId=o.pushRequest(e)),e.hasOwnProperty("authToken"))var t=e.authToken;else t=i.luyacfg.authToken;e.headers=e.headers||{},e.headers.Authorization="Bearer "+t;var n=document.head.querySelector("[name=csrf-token]");return null!==n&&(e.headers["X-CSRF-Token"]=n.content),e||a.when(e)},response:function(e){return e.hasOwnProperty("ignoreLoadingBar")||o.pushResponse(e),e||a.when(e)},responseError:function(e){if(401==e.status||403==e.status||405==e.status)e.config.hasOwnProperty("authToken")||(window.location="admin/default/logout?autologout=1");else if(404==e.status){e.data.hasOwnProperty("message")?t.info(e.data.message,1e4):t.info("Response Error: "+e.status+" "+e.statusText,1e4)}else if(422!=e.status){e.data.hasOwnProperty("message")?t.error(e.data.message,1e4):t.error("Response Error: "+e.status+" "+e.statusText,1e4)}return a.reject(e)}}}]),adminServiceResolver=["ServiceFoldersData","ServiceFiltersData","ServiceLanguagesData","ServicePropertiesData","AdminLangService","ServiceFoldersDirecotryId",function(e,t,n,i,a,o){t.load(),e.load(),n.load(),i.load(),a.load(),o.load()}],zaa.factory("ServiceQueueWaiting",["$http","$q","$timeout",function(t,a,e){var o={ids:[],waitFor:function(i){return a(function(t,e){if(0==i.length)t();else{i.forEach(function(e){return o.ids.push(e)});var n=[];i.forEach(function(e){n.push(o.waitForJobId(e))}),a.all(n).then(function(e){t()})}})},waitForJobId:function(i){return a(function(n,e){t.get("admin/api-admin-common/queue-job?jobId="+i,{ignoreLoadingBar:!0}).then(function(e){if(e.data.is_done){var t=o.ids.indexOf(i);-1t.name.toLowerCase()?1:-1}),i}}),zaa.filter("findthumbnail",function(){return function(e,n,i){var a=!1;return angular.forEach(e,function(e,t){a||e.fileId==n&&e.filterId==i&&(a=e)}),a}}),zaa.filter("findidfilter",function(){return function(e,n){var i=!1;return angular.forEach(e,function(e,t){e.id==n&&(i=e)}),i}}),zaa.filter("filemanagerfilesfilter",function(){return function(e,t,n){var i=[];return angular.forEach(e,function(e){n?e.folderId==t&&1==e.isImage&&i.push(e):e.folderId==t&&i.push(e)}),i}}),zaa.filter("trustAsUnsafe",["$sce",function(n){return function(e,t){return n.trustAsHtml(e)}}]),zaa.filter("srcbox",function(){return function(e,t){if(!e)return e;if(!t)return e;var a=(""+t).toLowerCase(),o={};return angular.forEach(e,function(n,i){angular.forEach(n,function(e,t){-1!==(""+e).toLowerCase().indexOf(a)&&(o[i]=n)})}),o}}),zaa.filter("trustAsResourceUrl",["$sce",function(n){return function(e,t){return t?n.trustAsResourceUrl(e):null}}]),zaa.filter("truncateMiddle",function(){return function(e,t,n){if(t=t||30,n=n||"...",e.length<=t)return e;var i=(t-n.length)/2;return e.substring(0,i)+n+e.substring(e.length-i,e.length)}}),zaa.directive("echarts",[function(){return{scope:{id:"@",theme:"@",data:"="},restrict:"E",template:'
',replace:!0,controller:["$scope",function(e){e.theme&&(e.theme="macarons")}],link:function(e){var t=echarts.init(document.getElementById(e.id),e.theme);e.$watch("data",function(e){e&&null!=e&&t.setOption(angular.fromJson(e))}),angular.element(window).bind("resize",function(){t.resize()})}}}]),zaa.directive("compileHtml",["$compile","$parse",function(a,o){return{restrict:"A",link:function(e,t,n){var i=o(n.ngBindHtml);e.$watch(function(){return(i(e)||"").toString()},function(){a(t,null,-9999)(e)})}}}]),zaa.directive("selectOnClick",function(){return function(e,t,n){t.bind("click",function(){this.select()})}}),zaa.directive("zaaEsc",["$document",function(i){return function(t,e,n){i.on("keyup",function(e){27==e.keyCode&&t.$apply(function(){t.$eval(n.zaaEsc)})})}}]),zaa.directive("linkObjectToString",function(){return{restrict:"E",relace:!0,scope:{link:"="},template:function(){return'{{link.value}}{{link.value}}{{link.value}}'}}}),zaa.directive("tooltip",["$document","$http",function(r,s){return{restrict:"A",scope:{tooltipText:"@",tooltipExpression:"=",tooltipPosition:"@",tooltipOffsetTop:"@",tooltipOffsetLeft:"@",tooltipImageUrl:"@",tooltipPreviewUrl:"@",tooltipDisabled:"="},link:function(i,a,e){function o(){var e={};e="function"==typeof l[i.tooltipPosition]?l[i.tooltipPosition]():l.right();var t=parseInt(i.tooltipOffsetTop);t&&(e.top=e.top+t);var n=parseInt(i.tooltipOffsetLeft);n&&(e.left=e.left+n),i.pop.css(e)}var l={top:function(){var e=a[0].getBoundingClientRect();return{top:e.top-i.pop.outerHeight(),left:e.left+e.width/2-i.pop.outerWidth()/2}},bottom:function(){var e=a[0].getBoundingClientRect();return{top:e.top+e.height,left:e.left+e.width/2-i.pop.outerWidth()/2}},right:function(){var e=a[0].getBoundingClientRect();return{top:e.top+e.height/2-i.pop.outerHeight()/2,left:e.left+e.width}},left:function(){var e=a[0].getBoundingClientRect();return{top:e.top+e.height/2-i.pop.outerHeight()/2,left:e.left-i.pop.outerWidth()}}};a.on("mouseenter",function(){if(!i.pop&&(void 0===i.tooltipDisabled||!1===i.tooltipDisabled)){i.tooltipExpression&&(i.tooltipText=i.tooltipExpression);var e='",t=$(e);if(i.tooltipImageUrl){var n=new Image;n.onload=function(){o()},n.src=i.tooltipImageUrl,t.find(".tooltip-inner").append(n)}i.tooltipPreviewUrl&&s.get(i.tooltipPreviewUrl).then(function(e){t.find(".tooltip-inner").append('
'+e.data+"
")}),i.pop=t,r.find("body").append(i.pop),i.pop.hide()}!i.pop||void 0!==i.tooltipDisabled&&!1!==i.tooltipDisabled||(o(),a.parents().on("scroll",o),i.pop.show())}),a.on("mouseleave",function(){a.parents().off("scroll",o),i.pop&&i.pop.hide()}),i.$on("$destroy",function(){i.pop&&i.pop.remove()})}}}]),zaa.directive("convertToNumber",function(){return{require:"ngModel",link:function(e,t,n,i){i.$parsers.push(function(e){return null!=e?parseInt(e,10):null}),i.$formatters.push(function(e){return null!=e?""+e:null})}}}),zaa.directive("autoGrow",function(){return function(e,t,n){function i(){null==a&&(a=angular.element("
").css({position:"absolute",top:-1e4,left:-1e4,resize:"none"}),angular.element(document.body).append(a)),a.css({fontSize:t.css("font-size"),fontFamily:t.css("font-family"),lineHeight:t.css("line-height"),width:t.width(),paddingTop:t.css("padding-top"),paddingBottom:t.css("padding-bottom")});var e=t.val().replace(//g,">").replace(/&/g,"&").replace(/\n$/,"
 ").replace(/\n/g,"
").replace(/\s{2,}/g,function(e){return function(e,t){for(var n=0,i="";n
keyboard_arrow_down{{icon}}{{title}}
'}}}]),zaa.directive("crudLoader",["$http","$sce",function(t,i){return{restrict:"E",replace:!0,transclude:!1,scope:{api:"@",alias:"@",modelSelection:"@",modelSetter:"="},controller:["$scope",function(n){n.input={showWindow:!0},n.content=null,n.toggleWindow=function(){if(n.input.showWindow){if(-1'}}}]),zaa.directive("crudRelationLoader",["$http","$sce",function(n,i){return{restrict:"E",replace:!0,transclude:!1,scope:{api:"@api",arrayIndex:"@arrayIndex",modelClass:"@modelClass",id:"@id"},controller:["$scope",function(t){if(t.content=null,-1'}}}]),zaa.directive("zaaInjector",["$compile",function(i){return{restrict:"E",replace:!0,transclude:!1,scope:{dir:"=",model:"=",options:"=",label:"@label",grid:"@grid",fieldid:"@fieldid",placeholder:"@placeholder",initvalue:"@initvalue",autocomplete:"@autocomplete"},link:function(e,t){var n=i(angular.element("<"+e.dir+' options="options" initvalue="{{initvalue}}" fieldid="{{fieldid}}" placeholder="{{placeholder}}" autocomplete="{{autocomplete}}" model="model" label="{{label}}" i18n="{{grid}}" />'))(e);t.replaceWith(n)}}}]),zaa.directive("zaaSortRelationArray",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$filter",function(a,e){a.searchString,a.sourceData=[],a.dropdownOpen=!1,a.$watch(function(){return a.model},function(e,t){null==e&&(a.model=[])}),a.$watch(function(){return a.options},function(e,t){null!=e&&(a.sourceData=e.sourceData)}),a.getSourceOptions=function(){return a.sourceData},a.getModelItems=function(){return a.model},a.addToModel=function(n){var i=!1;angular.forEach(a.model,function(e,t){e.value==n.value&&(i=!0)}),i||a.model.push({value:n.value,label:n.label})},a.removeFromModel=function(e){a.model.splice(e,1)},a.moveUp=function(e){e=parseInt(e);var t=a.model[e];a.model[e]=a.model[e-1],a.model[e-1]=t},a.moveDown=function(e){e=parseInt(e);var t=a.model[e];a.model[e]=a.model[e+1],a.model[e+1]=t},a.elementInModel=function(n){var i=!1;return angular.forEach(a.model,function(e,t){e.value==n.value&&(i=!0)}),!i}}],template:function(){return'
play_arrowplay_arrow
{{item.label}}
delete
  • add_circle{{ option.label }}
arrow_drop_uparrow_drop_down
'}}}),zaa.directive("zaaTagArray",function(){return{restrict:"E",scope:{model:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$http",function(n,e){n.tags=[],e.get("admin/api-admin-common/tags").then(function(e){angular.forEach(e.data,function(e){e.id=parseInt(e.id),n.tags.push(e)})}),null==n.model?n.model=[]:angular.forEach(n.model,function(e,t){n.model[t]=parseInt(e)}),n.isInSelection=function(e){return e=parseInt(e),-1!=n.model.indexOf(e)},n.toggleSelection=function(e){var t=n.model.indexOf(e);-1
{{tag.name}}
'}}}),zaa.directive("zaaLink",["$filter",function(t){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(n){n.unset=function(){n.model=!1,n.data.model=null},n.data={modalState:1,model:null},n.$watch("model",function(e,t){e&&(n.data.model=e)},!0),n.$watch("data.model",function(e,t){e&&(n.model=e)},!0),n.isEmpty=function(e){return!e||t("isEmpty")(e)}}],template:function(){return'
{{label}}
"}}}]),zaa.directive("zaaLinkOptions",function(){return{restrict:"EA",scope:{data:"=",uid:"="},templateUrl:"linkoptions.html",controller:["$scope",function(n){n.$watch(function(){return n.data},function(e,t){angular.isArray(e)&&(n.data={})})}]}}),zaa.directive("zaaSlug",function(){return{restrict:"E",scope:{model:"=",options:"=",listener:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$filter",function(n,i){n.$watch("listener",function(e,t){void 0!==e&&(n.model=i("slugify")(e))}),n.$watch("model",function(e,t){e!=t&&(n.model=i("slugify")(e))})}],template:function(){return'
'}}}),zaa.directive("zaaColor",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(n){function i(){if(void 0===n.model||!n.model)return"#000";var e=n.model;if("string"==typeof n.model&&(e=e.substr(1)),3===e.length){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(e,t,n,i){return t+t+n+n+i+i})}return 6!==e.length?"#000":128<=(299*parseInt(e.substr(0,2),16)+587*parseInt(e.substr(2,2),16)+114*parseInt(e.substr(4,2),16))/1e3?"#000":"#fff"}n.textColor=i(),n.$watch(function(){return n.model},function(e,t){n.textColor=i()})}],template:function(){return'
'}}}),zaa.directive("zaaWysiwyg",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},template:function(){return'
'}}}),zaa.directive("zaaNumber",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder",initvalue:"@initvalue"},link:function(n){n.$watch(function(){return n.model},function(e,t){null==e&&(n.model=parseInt(n.initvalue)),angular.isNumber(n.model)?n.isValid=!0:n.isValid=!1})},template:function(){return'
'}}}),zaa.directive("zaaDecimal",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder"},controller:["$scope",function(e){null===e.options?e.steps=.01:e.steps=e.options.steps}],link:function(n){n.$watch(function(){return n.model},function(e,t){angular.isNumber(n.model)?n.isValid=!0:n.isValid=!1})},template:function(){return'
'}}}),zaa.directive("zaaText",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder",autocomplete:"@autocomplete"},template:function(){return'
'}}}),zaa.directive("zaaReadonly",function(){return{restrict:"E",scope:{model:"=",label:"@label",i18n:"@i18n"},template:function(){return'
{{model}}
'}}}),zaa.directive("zaaAsyncValue",function(){return{restrict:"E",scope:{model:"=",api:"@",fields:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$timeout","$http",function(e,t,n){e.resetValue=function(){e.model=0,e.value=null}}],template:function(){return'
'}}}),zaa.directive("asyncValue",function(){return{restrict:"E",scope:{model:"=",api:"@",fields:"="},controller:["$scope","$timeout","$http",function(n,e,i){e(function(){n.$watch("model",function(e,t){e&&(n.value="",i.get(n.api+"/"+e+"?fields="+n.fields.join()).then(function(e){n.value,angular.forEach(e.data,function(e){e&&(n.value=n.value+e+" ")})}))})})}],template:function(){return''}}}),zaa.directive("zaaTextarea",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",placeholder:"@placeholder"},template:function(){return'
'}}}),zaa.directive("zaaPassword",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",autocomplete:"@autocomplete"},template:function(){return'
'}}}),zaa.directive("zaaRadio",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue"},controller:["$scope","$timeout",function(t,e){t.setModelValue=function(e){t.model=e},t.init=function(){null!=t.model&&null!=t.model||(t.model=typeCastValue(t.initvalue))},e(function(){t.init()})}],template:function(){return'
'}}}),zaa.directive("zaaSelect",function(){return{restrict:"E",scope:{model:"=",options:"=",optionsvalue:"@optionsvalue",optionslabel:"@optionslabel",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue",clearable:"<"},controller:["$scope","$timeout","$rootScope",function(e,t,n){null==e.optionsvalue&&(e.optionsvalue="value"),null==e.optionslabel&&(e.optionslabel="label"),null==e.clearable&&(e.clearable=!0)}],template:function(){return'
'}}}),zaa.directive("zaaAsyncApiSelect",function(){return{restrict:"E",scope:{model:"=",api:"@api",optionsvalue:"@optionsvalue",optionslabel:"@optionslabel",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue"},controller:["$scope","$http","$timeout",function(n,t,e){n.options=[],null==n.optionsvalue&&(n.optionsvalue="id"),null==n.optionslabel&&(n.optionslabel="title"),n.$watch("api",function(e){t.get(e).then(function(e){var t=[];angular.forEach(e.data,function(e){t.push({label:e[n.optionslabel],value:e[n.optionsvalue]})}),n.options=t})})}],template:function(){return'
'}}}),zaa.directive("zaaSelectCrud",function(){return{restrict:"E",scope:{model:"=",options:"=",api:"@api",label:"@label",i18n:"@i18n",id:"@fieldid",initvalue:"@initvalue"},template:function(){return'
'}}}),zaa.directive("luyaSelect",function(){return{restrict:"E",scope:{model:"=ngModel",options:"=",optionsvalue:"@optionsvalue",optionslabel:"@optionslabel",id:"@fieldid",initvalue:"@initvalue",clearable:"<",ngChange:"&"},controller:["$scope","$timeout","$rootScope",function(i,t,e){i.isOpen=0,null!=i.optionsvalue&&""!=i.optionsvalue||(i.optionsvalue="value"),null!=i.optionslabel&&""!=i.optionslabel||(i.optionslabel="label"),angular.isNumber(i.model)&&(i.model=typeCastValue(i.model)),i.$on("closeAllSelects",function(){i.isOpen&&i.closeSelect()}),t(function(){i.$watch(function(){return i.model},function(e,t){null!=e&&null!=e&&""!=e||(angular.isNumber(i.initvalue)&&(i.initvalue=typeCastValue(i.initvalue)),i.valueExistsInOptions(e)||(i.model=i.initvalue))}),null==i.clearable&&(i.clearable=!0)}),i.valueExistsInOptions=function(t){var n=!1;return angular.forEach(i.options,function(e){t==e[i.optionsvalue]&&(n=!0)}),n},i.toggleIsOpen=function(){i.isOpen||e.$broadcast("closeAllSelects"),i.isOpen=!i.isOpen},i.closeSelect=function(){i.isOpen=0},i.setModelValue=function(e){i.model=angular.isObject(e)?e[i.optionsvalue]:e,t(i.ngChange,0),i.closeSelect()},i.getSelectedLabel=function(){var t=i18n.ngrest_select_no_selection;return angular.forEach(i.options,function(e){i.model==e[i.optionsvalue]&&(t=e[i.optionslabel])}),t},i.hasSelectedValue=function(){var e=i.model;return!(!i.valueExistsInOptions(e)||e==i.initvalue)}}],template:function(){return'
{{getSelectedLabel()}}clearkeyboard_arrow_down
{{opt[optionslabel]}}
'}}}),zaa.directive("zaaCheckbox",function(){return{restrict:"E",scope:{model:"=",options:"=",i18n:"@i18n",id:"@fieldid",label:"@label",initvalue:"@initvalue"},controller:["$scope","$timeout",function(e,t){null===e.options||void 0===e.options?(e.valueTrue=1,e.valueFalse=0):(e.valueTrue=e.options["true-value"],e.valueFalse=e.options["false-value"]),e.init=function(){null!=e.model&&null!=e.model||(e.model=typeCastValue(e.initvalue))},t(function(){e.init()}),e.clicker=function(){e.model==e.valueTrue?e.model=e.valueFalse:e.model=e.valueTrue}}],template:function(){return'
'}}}),zaa.directive("zaaCheckboxArray",function(){return{restrict:"E",scope:{model:"=",options:"=",i18n:"@i18n",id:"@fieldid",label:"@label",preselect:"@preselect"},controller:["$scope","$filter",function(n,i){null==n.model&&(n.model=[]),n.preselectOptionValuesToModel=function(e){angular.forEach(e,function(e){n.model.push({value:e.value})})},n.searchString="",n.$watch("options",function(e,t){null!=e&&e.hasOwnProperty("items")&&(n.optionitems=i("orderBy")(e.items,"label"),n.preselect&&n.preselectOptionValuesToModel(e.items))}),n.filtering=function(){n.optionitems=i("filter")(n.options.items,n.searchString)},n.toggleSelection=function(e){for(var t in null==n.model&&(n.model=[]),n.model)if(n.model[t].value==e.value)return void n.model.splice(t,1);n.model.push({value:e.value})},n.isChecked=function(e){for(var t in n.model)if(n.model[t].value==e.value)return!0;return!1}}],link:function(e){e.random=Math.random().toString(36).substring(7)},template:function(){return'
search
{{optionitems.length}} '+i18n.js_dir_till+' {{options.items.length}}
'}}}),zaa.directive("zaaDatetime",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",id:"@fieldid",i18n:"@i18n",resetable:"@resetable"},controller:["$scope","$filter",function(i,a){i.isNumeric=function(e){return!isNaN(e)},i.$watch(function(){return i.model},function(e,t){if(null!=e&&null!=e){var n=new Date(1e3*e);i.pickerPreselect=n,i.date=a("date")(n,"dd.MM.yyyy"),i.hour=a("date")(n,"HH"),i.min=a("date")(n,"mm")}else i.date=null,i.model=null}),i.refactor=function(e){if(i.isNumeric(i.hour)&&""!=i.hour||(i.hour="0"),i.isNumeric(i.min)&&""!=i.min||(i.min="0"),"Invalid Date"==e||""==e||"NaN"==e)i.date=null,i.model=null;else{var t=e.split(".");if(3==t.length&&4==t[2].length){23
date_rangeclose
:
'}}}),zaa.directive("zaaDate",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",id:"@fieldid",i18n:"@i18n",resetable:"@resetable"},controller:["$scope","$filter",function(i,a){i.$watch(function(){return i.model},function(e,t){if(null!=e&&null!=e){var n=new Date(1e3*e);i.pickerPreselect=n,i.date=a("date")(n,"dd.MM.yyyy")}else i.date=null,i.model=null}),i.refactor=function(e){if("Invalid Date"==e||""==e)i.date=null,i.model=null;else{var t=e.split(".");if(3==t.length&&4==t[2].length){var n=t[1]+"/"+t[0]+"/"+t[2];i.model=Date.parse(n)/1e3,i.datePickerToggler=!1}}},i.$watch(function(){return i.date},function(e,t){e!=t&&null!=e&&null!=e&&i.refactor(e)}),i.autoRefactor=function(){i.refactor(i.date)},i.datePickerToggler=!1,i.toggleDatePicker=function(){i.datePickerToggler=!i.datePickerToggler},i.openDatePicker=function(){i.datePickerToggler=!0},i.closeDatePicker=function(){i.datePickerToggler=!1},i.reset=function(){i.model=null},i.getIsResetable=function(){return!i.resetable||parseInt(i.resetable)}}],template:function(){return'
date_rangeclose
'}}}),zaa.directive("zaaTable",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(i){null==i.model&&(i.model=[{0:""}]),i.addColumn=function(){var e=0;for(var t in i.model[0])e++;for(var n in i.model)i.model[n][e]=""},i.addRow=function(){var e=i.model[0],t={};for(var n in e)t[n]="";i.model.push(t)},i.removeColumn=function(e){for(var t in i.model){var n=i.model[t];n instanceof Array?n.splice(e,1):delete n[e]}},i.moveLeft=function(e){for(var t in e=parseInt(e),i.model){var n=i.model[t][e];i.model[t][e]=i.model[t][e-1],i.model[t][e-1]=n}},i.moveRight=function(e){for(var t in e=parseInt(e),i.model){var n=i.model[t][e];i.model[t][e]=i.model[t][e+1],i.model[t][e+1]=n}},i.moveUp=function(e){e=parseInt(e);var t=i.model[e];i.model[e]=i.model[e-1],i.model[e-1]=t},i.moveDown=function(e){e=parseInt(e);var t=i.model[e];i.model[e]=i.model[e+1],i.model[e+1]=t},i.removeRow=function(e){i.model.splice(e,1)},i.showRightButton=function(e){return parseInt(e)
'}}}),zaa.directive("zaaFileUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},template:function(){return'
'}}}),zaa.directive("zaaImageUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},template:function(){return'
'}}}),zaa.directive("zaaImageArrayUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},link:function(e,n,t){e.$watch("model",function(e,t){1<=e.length?$(n).removeClass("is-empty").addClass("is-not-empty"):$(n).removeClass("is-not-empty").addClass("is-empty")},!0)},controller:["$scope",function(n){null==n.model&&(n.model=[]),n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({imageId:0,caption:""})},n.remove=function(e){n.model.splice(e,1)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("zaaFileArrayUpload",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$element","$timeout",function(n,e,t){null==n.model&&(n.model=[]),n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({fileId:0,caption:""})},n.remove=function(e){n.model.splice(e,1)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("zaaMultipleInputs",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$timeout",function(n,e){n.init=function(){null==n.model||null==n.model?n.model=[]:angular.forEach(n.model,function(e,t){0==Object.keys(e).length&&(n.model[t]={})})},n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({})},n.remove=function(e){n.model.splice(e,1)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("zaaJsonObject",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope",function(t){t.$watch("model",function(e){angular.isArray(e)&&(t.model={}),null==e&&(t.model={})}),t.add=function(e){t.model[e]=""},t.remove=function(e){delete t.model[e]}}],template:function(){return'
{{key}}
add
'}}}),zaa.directive("zaaListArray",function(){return{restrict:"E",scope:{model:"=",options:"=",label:"@label",i18n:"@i18n",id:"@fieldid"},controller:["$scope","$element","$timeout",function(n,t,e){n.init=function(){null!=n.model&&null!=n.model||(n.model=[])},n.add=function(){null!=n.model&&""!=n.model&&null!=n.model||(n.model=[]),n.model.push({value:""}),n.setFocus()},n.remove=function(e){n.model.splice(e,1)},n.refactor=function(e,t){e!==n.model.length-1&&""==t.value&&n.remove(e)},n.setFocus=function(){e(function(){var e=t.children(".list").children(".list__item:last-of-type").children(".list__left").children("input");1==e.length&&e[0].focus()},50)},n.moveUp=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e-1],n.model[e-1]=t},n.moveDown=function(e){e=parseInt(e);var t=n.model[e];n.model[e]=n.model[e+1],n.model[e+1]=t},n.showDownButton=function(e){return parseInt(e)

'+i18n.js_dir_no_selection+'

'}}}),zaa.directive("storageFileDisplay",function(){return{restrict:"E",scope:{fileId:"@fileId"},controller:["$scope","$filter","ServiceFilesData",function(n,e,i){n.fileId=0,n.fileinfo=null,n.$watch("fileId",function(e,t){0!=e&&null!=e&&null!=e&&i.getFile(e).then(function(e){n.fileinfo=e},function(){n.fileinfo=null})})}],template:function(){return'{{ fileinfo.name_original }}'}}}),zaa.directive("storageImageCrudList",function(){return{restrict:"E",scope:{imageId:"@imageId"},controller:["$scope","ServiceImagesData",function(n,t){n.imageSrc=null,n.$watch("imageId",function(e,t){e!=t&&(n.imageSrc=null),e&&n.evaluateImages()}),n.$on("requestImageSourceReady",function(){n.evaluateImages()}),n.evaluateImages=function(){0==n.imageId||n.imageSrc||t.getImage(n.imageId).then(function(e){e.tinyCropImage?n.imageSrc=e.tinyCropImage.source:t.getImage(n.imageId,!0).then(function(e){e.tinyCropImage&&(n.imageSrc=e.tinyCropImage.source)})})}}],template:function(){return'{{imageSrc}}'}}}),zaa.directive("storageImageThumbnailDisplay",function(){return{restrict:"E",scope:{imageId:"@imageId"},controller:["$scope","$filter","ServiceImagesData","ServiceFilesData",function(n,e,i,t){n.$watch("imageId",function(e,t){e!=t&&(n.imageSrc=null)}),n.$watch(function(){return n.imageId},function(e,t){null==e&&null==e||i.getImage(e).then(function(e){n.imageSrc=e.tinyCropImage.source},function(){n.imageSrc=null})}),n.imageSrc=null}],template:function(){return'
{{imageSrc}}
'}}}),zaa.directive("storageFileUpload",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope","$filter","ServiceFilesData",function(t,e,n){t.modal={state:1},t.modalContainer=!1,t.fileinfo=null,t.select=function(e){t.toggleModal(),t.ngModel=e},t.reset=function(){t.ngModel=0,t.fileinfo=null},t.toggleModal=function(){t.modalContainer=!t.modalContainer,t.modal.state=!t.modal.state},t.$watch(function(){return t.ngModel},function(e){if(null==e||null==e||!angular.isNumber(e))return null;n.getFile(e).then(function(e){t.fileinfo=e},function(){t.fileinfo=null})})}],templateUrl:"storageFileUpload"}}),zaa.directive("storageImageUpload",function(){return{restrict:"E",scope:{ngModel:"=",options:"="},controller:["$scope","$http","$filter","ServiceFiltersData","ServiceImagesData","AdminToastService","ServiceFilesData",function(n,i,a,e,o,l,t){n.filtersData=e.data,n.$on("service:FiltersData",function(e,t){n.filtersData=t}),n.noFilters=function(){if(n.options)return n.options.no_filter},n.thumbnailfilter=null,n.imageLoading=!1,n.fileId=0,n.filterId=0,n.imageinfo=null,n.imageNotFoundError=!1,n.thumb=!1,n.filterApply=function(){n.imageLoading=!0,t.getFile(n.fileId).then(function(e){var t=a("filter")(e.images,{filter_id:n.filterId});0==t.length?i.post("admin/api-admin-storage/image-filter",{fileId:n.fileId,filterId:n.filterId}).then(function(e){n.ngModel=e.data.id,l.success(i18n.js_dir_image_upload_ok),n.imageLoading=!1},function(e){l.error(i18n.js_dir_image_filter_error),n.imageLoading=!1}):(n.ngModel=t[0].id,n.imageLoading=!1)},function(){n.imageinfo=null,n.thumb=!1,n.ngModel=0})},n.changeFilter=function(){n.filterApply()},n.$watch(function(){return n.fileId},function(e,t){null!=e&&null!=e&&n.filterApply()}),n.$watch(function(){return n.ngModel},function(e,t){null!=e&&null!=e&&0!=e&&o.getImage(e).then(function(e){n.applyImageDetails(e),n.fileId=e.file_id,n.filterId=e.filter_id},function(){n.fileId=0,n.filterId=0,n.imageinfo=null,n.thumb=!1})}),n.applyImageDetails=function(e){n.imageinfo=e,n.thumb=e}}],templateUrl:"storageImageUpload"}}),zaa.directive("storageFileManager",function(){return{restrict:"E",transclude:!1,scope:{allowSelection:"@selection",onlyImages:"@onlyImages"},controller:["$scope","$http","$filter","$timeout","$q","HtmlStorage","cfpLoadingBar","Upload","ServiceFoldersData","ServiceFilesData","LuyaLoading","AdminToastService","ServiceFoldersDirecotryId","ServiceAdminTags","ServiceQueueWaiting",function(a,o,t,e,l,r,n,i,s,c,d,u,p,f,m){a.foldersData=s.data,a.$on("service:FoldersData",function(e,t){a.foldersData=t}),a.foldersDataReload=function(){return s.load(!0)},a.tags=[],f.load().then(function(e){a.tags=e}),a.filesData=[],a.totalFiles=0,a.pageCount=0,a.currentPageId=parseInt(r.getValue("filemanager.pageId",1)),a.$watch("currentPageId",function(e,t){void 0!==e&&e!=t&&a.getFilesForCurrentPage()},!0),a.$watch("currentFolderId",function(e,t){void 0!==e&&(a.generateFolderInheritance(e),a.getFilesForPageAndFolder(e,1))},!0),a.folderInheritance=[],a.generateFolderInheritance=function(e){a.folderInheritance=[],a.findFolderInheritance(e)},a.findFolderInheritance=function(e){if(a.foldersData&&a.foldersData.hasOwnProperty(e)){var t=a.foldersData[e];a.folderInheritance.push(t),t&&t.parentId&&a.findFolderInheritance(t.parentId)}},a.hasFolderActiveChild=function(t){var n=!1;return angular.forEach(a.folderInheritance,function(e){e.id==t&&(n=!0)}),n},a.getFilesForPageAndFolder=function(n,i){return l(function(t,e){o.get(a.createUrl(n,i,a.sortField,a.searchQuery)).then(function(e){return r.setValue("filemanager.sortField",a.sortField),r.setValue("filemanager.pageId",parseInt(i)),a.filesResponseToVars(e),t(!0)})})},a.createUrl=function(e,t,n,i){return"admin/api-admin-storage/data-files?folderId="+e+"&page="+t+"&expand=createThumbnail,createThumbnailMedium,isImage,sizeReadable&sort="+n+"&search="+i},a.filesResponseToVars=function(e){a.filesData=e.data,a.pageCount=e.headers("X-Pagination-Page-Count"),a.currentPageId=parseInt(e.headers("X-Pagination-Current-Page")),a.totalFiles=e.headers("X-Pagination-Total-Count")},a.filesMetaToPagination=function(e){a.pageCount=e.totalPages},a.getFilesForCurrentPage=function(){return a.getFilesForPageAndFolder(a.currentFolderId,a.currentPageId)},a.currentFolderId=p.folderId,a.foldersDirecotryIdReload=function(){return p.load(!0)},a.folderCountMessage=function(e){return i18nParam("js_filemanager_count_files_overlay",{count:e.filesCount})},a.errorMsg=null,a.replaceFile=function(e,t){(a.replaceFiled=e)&&(d.start(),i.upload({url:"admin/api-admin-storage/file-replace",data:{file:e,fileId:a.fileDetail.id,pageId:a.currentPageId}}).then(function(e){d.stop(),200==e.status&&(a.getFilesForCurrentPage().then(function(){u.success(i18n.js_dir_manager_file_replace_ok)}),a.openFileDetail(a.fileDetail,!0))},function(){d.stop()}))},a.$watch("uploadingfiles",function(e){if(null!=e){a.uploadResults=0,d.start(i18n.js_dir_upload_wait);for(var t=0;t\n
\n

'+i18n.crop_source_image+'

\n
\n \n
\n
    \n
  • crop_free
    '+i18n.crop_size_free+'
  • \n
  • crop_square
    '+i18n.crop_size_1to1+'
  • \n
  • crop_16_9
    '+i18n.crop_size_desktop+'
  • \n
  • crop_portrait
    '+i18n.crop_size_mobile+'
  • \n
\n
\n
\n

'+i18n.crop_preview+'

\n \n\n
    \n
  • looks_one
    '+i18n.crop_quality_high+'
  • \n
  • looks_two
    '+i18n.crop_quality_medium+'
  • \n
  • looks_3
    '+i18n.crop_quality_low+'
  • \n
\n\n
\n \n \n '+i18n.crop_btn_as_copy_hint+'\n
\n\n \n \n
\n \n "}}),zaa.directive("pagination",function(){return{restrict:"E",scope:{currentPage:"=",pageCount:"="},controller:["$scope","$timeout",function(t,e){t.pageNumberInputVal=t.currentPage,t.$watch("currentPage",function(e){t.pageNumberInputVal=e}),t.$watch("pageNumberInputVal",function(){t.inputWidth=25+10*(t.pageNumberInputVal.toString().length<=0?1:t.pageNumberInputVal.toString().length)});var n=null;t.pageNumberInputChange=function(){n&&e.cancel(n),n=e(function(){isNaN(t.pageNumberInputVal)?t.pageNumberInputVal=t.currentPage:parseInt(t.pageNumberInputVal)>parseInt(t.pageCount)||parseInt(t.pageNumberInputVal)<=0?t.pageNumberInputVal=t.currentPage:t.currentPage=t.pageNumberInputVal},500)},t.next=function(){t.currentPage\n \n \n
\n \n /\n {{pageCount}}\n
\n \n \n \n '}}),zaa.directive("selectArrayGently",function(){return{restrict:"E",scope:{model:"=",options:"=",optionsvalue:"@optionsvalue",optionslabel:"@optionslabel"},controller:["$rootScope","$scope",function(e,n){void 0===n.optionsvalue&&(n.optionsvalue="value"),void 0===n.optionslabel&&(n.optionslabel="label"),n.getSelectedLabel=function(){var t=n.model;return angular.forEach(n.options,function(e){n.model===e[n.optionsvalue]&&(t=e[n.optionslabel])}),t}}],template:function(){return"{{getSelectedLabel()}}"}}}),zaa.controller("DefaultDashboardObjectController",["$scope","$http","$sce",function(t,n,e){t.data,t.loadData=function(e){n.get(e).then(function(e){t.data=e.data})}}]),zaa.controller("CrudController",["cfpLoadingBar","$scope","$rootScope","$filter","$http","$sce","$state","$timeout","$injector","$q","AdminLangService","AdminToastService","CrudTabService","ServiceImagesData",function(t,r,e,n,s,i,a,o,l,c,d,u,p,f){r.toast=u,r.AdminLangService=d,r.tabService=p,r.clearData=function(){u.confirm(i18n.ngrest_delete_all_button_confirm_message,i18n.ngrest_delete_all_button_label,function(){var e=this;s.get(r.config.apiEndpoint+"/truncate").then(function(){e.close(),r.loadList()})})},r.crudSwitchType=0,r.switchToTab=function(e){angular.forEach(r.tabService.tabs,function(e){e.active=!1}),e.active=!0,r.switchTo(4)},r.addAndswitchToTab=function(e,t,n,i,a){r.tabService.addTab(e,t,n,i,a),r.switchTo(4)},r.closeTab=function(e,t){r.tabService.remove(t,r)},r.switchTo=function(e,t){r.config.relationCall?r.crudSwitchType=e:(t&&r.resetData(),0==e&&s.get(r.config.apiEndpoint+"/unlock",{ignoreLoadingBar:!0}),0!=e&&1!=e||r.config.inline||a.go("default.route"),4===(r.crudSwitchType=e)||r.config.inline||angular.forEach(r.tabService.tabs,function(e){e.active=!1}))},r.closeUpdate=function(){r.switchTo(0,!0)},r.closeCreate=function(){r.switchTo(0,!0)},r.activeWindowModal=!0,r.openActiveWindow=function(){r.activeWindowModal=!1},r.closeActiveWindow=function(){r.activeWindowModal=!0},r.changeGroupByField=function(){0==r.config.groupByField?r.config.groupBy=0:r.config.groupBy=1},r.isSettingsVisible=!1,r.toggleSettingsMenu=function(){r.isSettingsVisible=!r.isSettingsVisible},r.hiddeSettingsMenu=function(){r.isSettingsVisible=!1},r.isExportModalHidden=!0,r.exportdata={header:1,type:"xlsx"},r.toggleExportModal=function(){r.exportdata.filter=r.config.filter,r.isExportModalHidden=!r.isExportModalHidden},r.exportResponse=!1,r.generateExport=function(){s.post(r.config.apiEndpoint+"/export?"+r.config.apiExportQueryString,r.exportdata).then(function(e){r.exportResponse=e.data})},r.downloadExport=function(){var e=r.exportResponse.url;return r.exportResponse=!1,window.open(e),!1},r.applySaveCallback=function(){r.config.saveCallback&&l.invoke(r.config.saveCallback,this)},r.isOrderBy=function(e){return e==r.config.orderBy},r.changeOrder=function(e,t){r.config.orderBy=t+e,s.post("admin/api-admin-common/ngrest-order",{apiEndpoint:r.config.apiEndpoint,sort:t,field:e},{ignoreLoadingBar:!0}),r.loadList()},r.callActiveButton=function(e,t,n){var i=angular.element(n.currentTarget);i.addClass("crud-buttons-button-loading"),s.get(r.config.apiEndpoint+"/active-button?hash="+e+"&id="+t.join()).then(function(e){i.removeClass("crud-buttons-button-loading"),i.addClass("crud-buttons-button-success"),o(function(){i.removeClass("crud-buttons-button-success")},5e3),angular.forEach(e.data.events,function(e){"loadList"==e&&r.loadList()}),u.success(e.data.message)},function(e){i.removeClass("crud-buttons-button-loading"),i.addClass("crud-buttons-button-danger"),o(function(){i.removeClass("crud-buttons-button-danger")},5e3),u.error(e.data.message)})},r.reloadActiveWindow=function(){r.getActiveWindow(r.data.aw.hash,r.data.aw.itemId)},r.getActiveWindow=function(t,n,e){s.post(r.config.activeWindowRenderUrl,{itemId:n,activeWindowHash:t,ngrestConfigHash:r.config.ngrestConfigHash}).then(function(e){r.openActiveWindow(),r.data.aw.itemId=n,r.data.aw.configCallbackUrl=r.config.activeWindowCallbackUrl,r.data.aw.configHash=r.config.ngrestConfigHash,r.data.aw.hash=t,r.data.aw.content=i.trustAsHtml(e.data.content),r.data.aw.title=e.data.title,r.$broadcast("awloaded",{id:t})})},r.getActiveWindowCallbackUrl=function(e){return r.data.aw.configCallbackUrl+"?activeWindowCallback="+e+"&ngrestConfigHash="+r.data.aw.configHash+"&activeWindowHash="+r.data.aw.hash},r.sendActiveWindowCallback=function(e,t){t=t||{};return s.post(r.getActiveWindowCallbackUrl(e),$.param(t),{headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}})},r.searchPromise=null,r.$watch("config.searchQuery",function(e,t){e!=t&&null!=e&&null!=e&&r.applySearchQuery(e)}),r.applySearchQuery=function(e){null!=e&&null!=e&&(o.cancel(r.searchPromise),0==e.length?r.loadList(1):(t.start(),r.searchPromise=o(function(){r.reloadCrudList(1)},700)))},r.generateSearchPromise=function(e,t){return s.post(r.generateUrlWithParams("search",t),{query:e}).then(function(e){r.parseResponseQueryToListArray(e)})},r.selectedItems=[],r.isInSelection=function(e){var t=r.getRowPrimaryValue(e);return-1!=this.selectedItems.indexOf(t)},r.toggleSelection=function(e){var t=r.getRowPrimaryValue(e),n=this.selectedItems.indexOf(t);-1==n?this.selectedItems.push(t):this.selectedItems.splice(n,1)},r.sendActiveSelection=function(e){s.post(r.config.apiEndpoint+"/active-selection?index="+e,{ids:this.selectedItems}).then(function(e){angular.forEach(e.data.events,function(e){"loadList"==e&&r.loadList()}),u.success(e.data.message)},function(e){u.error(e.data.message)})},r.parentSelectInline=function(e){r.$parent.$parent.$parent.setModelValue(r.getRowPrimaryValue(e),e)},r.checkIfFieldExistsInPopulateCondition=function(e){var t=r.config.pools;if(t.hasOwnProperty(e))return t[e];if(r.config.relationCall){var n=r.$parent.$parent.config.relations[parseInt(r.config.relationCall.arrayIndex)].relationLink;if(null!==n&&n.hasOwnProperty(e))return parseInt(r.config.relationCall.id)}return!1},r.relationItems=[],r.deleteItem=function(e,t){u.confirm(i18n.js_ngrest_rm_page,i18n.ngrest_button_delete,["$toast",function(t){s.delete(r.config.apiEndpoint+"/"+e).then(function(e){r.loadList(),t.close(),u.success(i18n.js_ngrest_rm_confirm)},function(e){r.printErrors(e)})}])},r.toggleUpdate=function(n){r.resetData(),s.get(r.config.apiEndpoint+"/"+n+"?"+r.config.apiUpdateQueryString).then(function(e){var t=e.data;r.data.update=t,r.config.relationCall?r.crudSwitchType=2:r.switchTo(2),r.config.inline||a.go("default.route.detail",{id:n}),r.data.updateId=n},function(e){u.error(i18n.js_ngrest_error)})},r.highlightPkValue=null,r.highlightTimeout=5e3,r.isRowHighlighted=function(e){return r.getRowPrimaryValue(e)==r.highlightPkValue},r.submitUpdate=function(t){s.put(r.config.apiEndpoint+"/"+r.data.updateId,angular.toJson(r.data.update,!0)).then(function(e){u.success(i18n.js_ngrest_rm_update),r.loadList(r.pager.currentPage).then(function(){r.applySaveCallback(),t&&r.switchTo(0,!0),r.highlightPkValue=r.getRowPrimaryValue(e.data),o(function(){r.highlightPkValue=null},r.highlightTimeout)})},function(e){r.printErrors(e.data)})},r.submitCreate=function(t,n){s.post(r.config.apiEndpoint,angular.toJson(r.data.create,!0)).then(function(e){u.success(i18n.js_ngrest_rm_success),r.loadList().then(function(){r.applySaveCallback(),t&&r.switchTo(0,!0),r.resetData(),r.highlightPkValue=r.getRowPrimaryValue(e.data),o(function(){r.highlightPkValue=null},r.highlightTimeout),n&&r.toggleUpdate(e.data.id)})},function(e){r.printErrors(e.data)})},r.printErrors=function(e){angular.forEach(e,function(e,t){u.error(e.message)})},r.resetData=function(){r.data.create=angular.copy({}),r.data.update=angular.copy({})},r.changeNgRestFilter=function(){s.post("admin/api-admin-common/ngrest-filter",{apiEndpoint:r.config.apiEndpoint,filterName:r.config.filter},{ignoreLoadingBar:!0}),r.loadList(1)},r.pager={currentPage:1,pageCount:1,perPage:0,totalItems:0},r.$watch("pager.currentPage",function(e,t){e===t||null==e||null==e||r.loadList(e)},!0),r.setPagination=function(e,t,n,i){r.totalRows=i,r.pager={currentPage:parseInt(e),pageCount:t,perPage:n,totalItems:i}},r.toggleStatus=function(t,n,i,e){var a=!e?1:0,o=t[r.config.pk],l={};l[n]=a,s.put(r.config.apiEndpoint+"/"+o+"?ngrestCallType=update&fields="+n,angular.toJson(l,!0)).then(function(e){t[n]=a,u.success(i18nParam("js_ngrest_toggler_success",{field:i}))},function(e){r.printErrors(e)})},r.sortableUp=function(e,t,n){var i=r.data.listArray[e-1];r.data.listArray[e-1]=t,r.data.listArray[e]=i,r.updateSortableIndexPositions(n)},r.sortableDown=function(e,t,n){var i=r.data.listArray[e+1];r.data.listArray[e+1]=t,r.data.listArray[e]=i,r.updateSortableIndexPositions(n)},r.updateSortableIndexPositions=function(a){angular.forEach(r.data.listArray,function(e,t){var n={};n[a]=t;var i=r.getRowPrimaryValue(e);s.put(r.config.apiEndpoint+"/"+i+"?ngrestCallType=update&fields="+a,angular.toJson(n,!0),{ignoreLoadingBar:!0})})},r.loadService=function(){r.initServiceAndConfig()},r.evalSettings=function(e){e.hasOwnProperty("order")&&(r.config.orderBy=e.order),e.hasOwnProperty("filterName")&&(r.config.filter=e.filterName)},r.getRowPrimaryValue=function(t){var e=r.config.pk;if(angular.isArray(e)){var n=[];return angular.forEach(e,function(e){n.push(t[e])}),n.join()}return t[r.config.pk]},r.tagsFilterIds=[],r.isTagFilterActive=function(e){return-1!=r.tagsFilterIds.indexOf(e)},r.toggleTagFilter=function(e){var t=r.tagsFilterIds.indexOf(e);-1==t?r.tagsFilterIds.push(e):r.tagsFilterIds.splice(t,1),r.loadList()},r.initServiceAndConfig=function(){var t=c.defer();return s.get(r.config.apiEndpoint+"/services?"+r.config.apiServicesQueryString).then(function(e){r.service=e.data.service,r.serviceResponse=e.data,r.evalSettings(e.data._settings),r.$parent.notifications&&r.$parent.notifications.hasOwnProperty(r.serviceResponse._authId)&&delete r.$parent.notifications[r.serviceResponse._authId],t.resolve()}),t.promise},r.toggleNotificationMute=function(){s.post(r.config.apiEndpoint+"/toggle-notification",{mute:!r.serviceResponse._notifcation_mute_state}).then(function(e){r.initServiceAndConfig()})},r.getFieldHelp=function(e){return!!(r.serviceResponse&&r.serviceResponse._hints&&r.serviceResponse._hints.hasOwnProperty(e))&&r.serviceResponse._hints[e]},r.loadList=function(e){return null==e&&r.pager?r.reloadCrudList(r.pager.currentPage):r.reloadCrudList(e)},r.totalRows=0,r.requestedImages=[],r.parseResponseQueryToListArray=function(n){r.setPagination(n.headers("X-Pagination-Current-Page"),n.headers("X-Pagination-Page-Count"),n.headers("X-Pagination-Per-Page"),n.headers("X-Pagination-Total-Count")),r.data.listArray=n.data,r.requestedImages=[],angular.forEach(r.service,function(e,t){e.hasOwnProperty("lazyload_images")&&angular.forEach(n.data,function(e){r.requestedImages.push(e[t])})}),o(function(){f.loadImages(r.requestedImages).then(function(){r.$broadcast("requestImageSourceReady"),r.requestedImages=[]})})},r.generateUrlWithParams=function(e,t){var n=r.config.apiEndpoint+"/"+e+"?"+r.config.apiListQueryString;r.config.orderBy&&(n=n+"&sort="+r.config.orderBy.replace("+","")),void 0!==t&&(n=n+"&page="+t);var i=r.config.searchQuery;i&&(n=n+"&query="+i);var a=r.tagsFilterIds.join(",");return a&&(n=n+"&tags="+a),n},r.reloadCrudList=function(e){var t=c.defer();if(0==parseInt(r.config.filter)||null===r.config.filter){if(r.config.relationCall){n=(n=r.generateUrlWithParams("relation-call",e))+"&arrayIndex="+r.config.relationCall.arrayIndex+"&id="+r.config.relationCall.id+"&modelClass="+r.config.relationCall.modelClass}else{if(r.config.searchQuery)return r.generateSearchPromise(r.config.searchQuery,e);var n=r.generateUrlWithParams("list",e)}s.get(n).then(function(e){t.resolve(e),r.parseResponseQueryToListArray(e)})}else{n=(n=r.generateUrlWithParams("filter",e))+"&filterName="+r.config.filter,s.get(n).then(function(e){r.parseResponseQueryToListArray(e),t.resolve(e)})}return t.promise},r.service=!1,r.$on("secondMenuClick",function(){r.isInitalized&&(r.loadList(),r.switchTo(0,!0))}),r.data={create:{},update:{},aw:{},list:{},updateId:0},r.isInitalized=!1,r.$watch("config",function(e,t){o(function(){r.initServiceAndConfig().then(function(){r.isInitalized=!0,r.loadList()})})})}]),zaa.controller("ActiveWindowTagController",["$scope","$http","AdminToastService",function(n,e,i){n.crud=n.$parent,n.tags=[],n.relation={},n.newTagName=null,n.loadTags=function(){e.get(n.crud.getActiveWindowCallbackUrl("LoadTags")).then(function(e){n.tags=e.data})},n.loadRelations=function(){e.get(n.crud.getActiveWindowCallbackUrl("LoadRelations")).then(function(e){n.relation={},e.data.forEach(function(e,t){n.relation[e.tag_id]=1})})},n.saveTag=function(){var t=n.newTagName;""!==t&&n.crud.sendActiveWindowCallback("SaveTag",{tagName:t}).then(function(e){e.data?(n.tags.push({id:e.data,name:t}),i.success(t+" wurde gespeichert.")):i.error(t+" "+i18n.js_tag_exists),n.newTagName=null})},n.saveRelation=function(t,e){n.crud.sendActiveWindowCallback("SaveRelation",{tagId:t.id,value:e}).then(function(e){n.relation[t.id]=e.data,i.success(i18n.js_tag_success)})},n.$watch(function(){return n.data.aw.itemId},function(e,t){n.loadRelations()}),n.loadTags()}]),zaa.controller("ActiveWindowGalleryController",["$scope","$http","$filter",function(o,e,t){o.crud=o.$parent,o.files=[],o.select=function(e){0==t("filter")(o.files,{fileId:e},!0).length&&o.crud.sendActiveWindowCallback("AddImageToIndex",{fileId:e}).then(function(e){var t=e.data;o.files.push(t)})},o.loadImages=function(){e.get(o.crud.getActiveWindowCallbackUrl("loadAllImages")).then(function(e){o.files=e.data})},o.changePosition=function(e,t,n){t=parseInt(t);var i=o.files[t];"up"==n?(o.files[t]=o.files[t-1],o.files[t-1]=i):"down"==n&&(o.files[t]=o.files[t+1],o.files[t+1]=i);var a=o.files[t];o.crud.sendActiveWindowCallback("ChangeSortIndex",{new:a,old:i})},o.moveUp=function(e,t){o.changePosition(e,t,"up")},o.moveDown=function(e,t){o.changePosition(e,t,"down")},o.remove=function(e,t){o.crud.sendActiveWindowCallback("RemoveFromIndex",{imageId:e.originalImageId}).then(function(e){o.files.splice(t,1)})},o.$watch(function(){return o.data.aw.itemId},function(e,t){o.loadImages()})}]),zaa.controller("ActiveWindowGroupAuth",["$scope","$http","CacheReloadService",function(n,e,t){n.crud=n.$parent,n.reload=function(){t.reload()},n.rights=[],n.auths=[],n.save=function(e){n.crud.sendActiveWindowCallback("saveRights",{data:e}).then(function(e){n.getRights(),n.reload()})},n.clearModule=function(e){angular.forEach(e,function(e){n.rights[e.id]={base:0,create:0,update:0,delete:0}})},n.toggleModule=function(e){angular.forEach(e,function(e){n.rights[e.id]={base:1,create:1,update:1,delete:1}})},n.toggleGroup=function(e){objectGroup=n.rights[e],1==objectGroup.base?(objectGroup.create=1,objectGroup.update=1,objectGroup.delete=1):0==objectGroup.base&&(objectGroup.create=0,objectGroup.update=0,objectGroup.delete=0)},n.toggleAll=function(){angular.forEach(n.auths,function(e){angular.forEach(e,function(e){n.rights[e.id]={base:1,create:1,update:1,delete:1}})})},n.untoggleAll=function(){angular.forEach(n.auths,function(e){angular.forEach(e,function(e){n.rights[e.id]={base:0,create:0,update:0,delete:0}})})},n.getRights=function(){e.get(n.crud.getActiveWindowCallbackUrl("getRights")).then(function(e){n.rights=e.data.rights,n.auths=e.data.auths})},n.$on("awloaded",function(e,t){n.getRights()}),n.$watch(function(){return n.data.aw.itemId},function(e,t){n.getRights()})}]),zaa.controller("DefaultController",["$scope","$http","$state","$stateParams","CrudTabService",function(a,t,n,i,o){a.moduleId=n.params.moduleId,a.loadDashboard=function(){return a.currentItem=null,a.getDashboard(a.moduleId),n.go("default",{moduleId:a.moduleId})},a.isOpenModulenav=!1,a.items=[],a.itemRoutes=[],a.currentItem=null,a.dashboard=[],a.itemAdd=function(e,t){for(var n in a.items.push({name:e,items:t}),t){var i=t[n];a.itemRoutes[i.route]={alias:i.alias,icon:i.icon}}},a.getDashboard=function(e){t.get("admin/api-admin-menu/dashboard",{params:{nodeId:e}}).then(function(e){a.dashboard=e.data})},a.init=function(){a.get(),a.getDashboard(a.moduleId)},a.resolveCurrentItem=function(){if(!a.currentItem&&("default.route"==n.current.name||"default.route.detail"==n.current.name)){var e=[i.moduleRouteId,i.controllerId,i.actionId].join("/");a.itemRoutes.indexOf(e)&&(a.currentItem=a.itemRoutes[e],a.currentItem.route=e)}},a.click=function(e){a.isOpenModulenav=!1;var t=(a.currentItem=e).route.split("/");o.clear(),a.$broadcast("secondMenuClick",{item:e}),n.go("default.route",{moduleRouteId:t[0],controllerId:t[1],actionId:t[2]})},a.get=function(){t.get("admin/api-admin-menu/items",{params:{nodeId:a.moduleId}}).then(function(e){var t=e.data;for(var n in t.groups){var i=t.groups[n];a.itemAdd(i.name,i.items)}a.resolveCurrentItem()})},a.hasSubUnreadNotificaton=function(e){return a.$parent.notifications&&a.$parent.notifications.hasOwnProperty(e.authId)?a.$parent.notifications[e.authId]:0},a.$on("topMenuClick",function(e){a.currentItem=null}),a.init()}]),zaa.controller("DashboardController",["$scope",function(e){e.logItemOpen=!1}]),zaa.filter("lockFilter",function(){return function(e,t,n){var i=!1;return angular.forEach(e,function(e){e.lock_table==t&&e.lock_pk==n&&(i=e)}),i}}),zaa.controller("LayoutMenuController",["$scope","$document","$http","$state","$timeout","$window","$filter","HtmlStorage","CacheReloadService","AdminDebugBar","LuyaLoading","AdminToastService","AdminClassService",function(a,e,n,o,i,t,l,r,s,c,d,u,p){a.AdminClassService=p,a.AdminDebugBar=c,a.LuyaLoading=d,a.toastQueue=u.queue,a.reload=function(){s.reload()},a.reload=function(e){0==e?t.location.reload():s.reload()},a.reloadButtonCall=function(e){n.get("admin/api-admin-common/reload-button-call?key="+e).then(function(e){u.success(e.data.message)})},a.isHover=r.getValue("sidebarToggleState",!1),a.toggleMainNavSize=function(){a.isHover=!a.isHover,r.setValue("sidebarToggleState",a.isHover)},a.profile={},a.settings={},a.packages=[],a.getProfileAndSettings=function(){n.get("admin/api-admin-user/session").then(function(e){a.profile=e.data.user,a.settings=e.data.settings,a.packages=e.data.packages})},a.browser=null,a.detectBrowser=function(){a.browser=[bowser.name.replace(" ","-").toLowerCase()+"-"+bowser.version,bowser.mac?"mac-os-"+(bowser.osversion?bowser.osversion:""):"windows-"+(bowser.osversion?bowser.osversion:"")].join(" ")},a.detectBrowser(),a.getProfileAndSettings(),a.debugDetail=null,a.debugDetailKey=null,a.loadDebugDetail=function(e,t){a.debugDetail=e,a.debugDetailKey=t},a.closeDebugDetail=function(){a.debugDetail=null,a.debugDetailKey=null},a.notify=null,a.forceReload=0,a.showOnlineContainer=!1,a.searchDetailClick=function(t,i){"custom"==t.type?a.click(t.menuItem).then(function(){if(t.stateProvider){var n={};angular.forEach(t.stateProvider.params,function(e,t){n[t]=i[e]}),o.go(t.stateProvider.state,n).then(function(){a.closeSearchInput()})}else a.closeSearchInput()}):a.click(t.menuItem.module).then(function(){var e=t.menuItem.route.split("/");o.go("default.route",{moduleRouteId:e[0],controllerId:e[1],actionId:e[2]}).then(function(){if(t.stateProvider){var n={};angular.forEach(t.stateProvider.params,function(e,t){n[t]=i[e]}),o.go(t.stateProvider.state,n).then(function(){a.closeSearchInput()})}else a.closeSearchInput()})})},a.visibleAdminReloadDialog=!1,a.lastKeyStroke=Date.now(),e.bind("keyup",function(e){a.lastKeyStroke=Date.now()}),a.notifications=[],function t(){n.post("admin/api-admin-timestamp",{lastKeyStroke:a.lastKeyStroke},{ignoreLoadingBar:!0}).then(function(e){a.forceReload=e.data.forceReload,a.notifications=e.data.notifications,a.forceReload&&!a.visibleAdminReloadDialog&&(a.visibleAdminReloadDialog=!0,u.confirm(i18n.js_admin_reload,i18n.layout_btn_reload,function(){a.reload(),a.visibleAdminReloadDialog=!1})),a.locked=e.data.locked,a.notify=e.data.useronline,a.idleStrokeDashoffset=e.data.idleStrokeDashoffset,a.idleTimeRelative=e.data.idleTimeRelative,i(t,2e4)})}(),a.isLocked=function(e,t){return l("lockFilter")(a.locked,e,t)},a.getLockedName=function(e,t){var n=a.isLocked(e,t);return n.firstname+" "+n.lastname},a.searchQuery=null,a.searchInputOpen=!1,a.escapeSearchInput=function(){a.searchInputOpen&&a.closeSearchInput()},a.toggleSearchInput=function(){a.searchInputOpen=!a.searchInputOpen},a.openSearchInput=function(){a.searchInputOpen=!0},a.closeSearchInput=function(){a.searchInputOpen=!1},a.searchResponse=null,a.hasUnreadNotificaton=function(e){var t=e.authIds,n=0;return angular.forEach(t,function(e){e&&a.notifications.hasOwnProperty(e)&&(n+=parseInt(a.notifications[e]))}),n},a.$watch(function(){return a.searchQuery},function(e,t){e!==t&&(2'}}}); \ No newline at end of file diff --git a/tests/admin/ngrest/plugins/SelectArrayGentlyTest.php b/tests/admin/ngrest/plugins/SelectArrayGentlyTest.php new file mode 100644 index 000000000..60855059c --- /dev/null +++ b/tests/admin/ngrest/plugins/SelectArrayGentlyTest.php @@ -0,0 +1,44 @@ + 'testName', + 'alias' => 'test', + 'i18n' => false, + 'data' => [ + 1 => 'Mr.', + 2 => 'Mrs.', + 3 => 'Dr.' + ], + ]); + + $this->assertSame( + '', + $plugin->renderList(1, 'someModel') + ); + + $this->assertSame([ + 0 => ['value' => 1, 'label' => 'Mr.'], + 1 => ['value' => 2, 'label' => 'Mrs.'], + 2 => ['value' => 3, 'label' => 'Dr.'], + ], $plugin->getData()); + + unset($plugin); + } +} \ No newline at end of file From fbd0808740eb7886a95c7849b85bff2a7e932560 Mon Sep 17 00:00:00 2001 From: Antikon Date: Sun, 29 Aug 2021 16:22:23 +0300 Subject: [PATCH 5/8] Some tests --- phpunit.xml.bak | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 phpunit.xml.bak diff --git a/phpunit.xml.bak b/phpunit.xml.bak deleted file mode 100644 index e6247d250..000000000 --- a/phpunit.xml.bak +++ /dev/null @@ -1,28 +0,0 @@ - - - - - tests - - - - - ./src - - ./vendor - - - - - - - - - \ No newline at end of file From d54fc37e66c4451c880ddedc628f24cd402835f1 Mon Sep 17 00:00:00 2001 From: Antikon Date: Sun, 29 Aug 2021 16:28:16 +0300 Subject: [PATCH 6/8] Some tests --- tests/admin/ngrest/plugins/SelectArrayGentlyTest.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/admin/ngrest/plugins/SelectArrayGentlyTest.php b/tests/admin/ngrest/plugins/SelectArrayGentlyTest.php index 60855059c..0ceaf4e0e 100644 --- a/tests/admin/ngrest/plugins/SelectArrayGentlyTest.php +++ b/tests/admin/ngrest/plugins/SelectArrayGentlyTest.php @@ -3,15 +3,7 @@ namespace admintests\admin\ngrest\plugins; use admintests\AdminTestCase; -use admintests\data\fixtures\UserFixture; -use luya\admin\models\User; -use luya\admin\ngrest\Config; -use luya\admin\ngrest\ConfigBuilder; use luya\admin\ngrest\plugins\SelectArrayGently; -use luya\admin\ngrest\render\RenderCrud; -use luya\testsuite\fixtures\NgRestModelFixture; -use yii\base\Event; -use yii\base\ModelEvent; class SelectArrayGentlyTest extends AdminTestCase { From acce71c410ae5c068a1815be195b1dbed8e7f08b Mon Sep 17 00:00:00 2001 From: Antikon Date: Mon, 30 Aug 2021 13:41:57 +0300 Subject: [PATCH 7/8] Some docs added --- CHANGELOG.md | 1 + src/ngrest/plugins/SelectArrayGently.php | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c849f41a6..6cb105cd2 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ In order to read more about upgrading and BC breaks have a look at the [UPGRADE ## 4.1.0 ++ [#658](https://github.com/luyadev/luya-module-admin/pull/658) Added new SelectArrayGently Plugin, which is the same as SelectArray Plugin, but do not override the values from the database. + [#657](https://github.com/luyadev/luya-module-admin/pull/657) Fix problem with global admin UI search when model does not exists, this could be due to old controller structure or custom code. + [#656](https://github.com/luyadev/luya-module-admin/pull/656) Ensure queue items are removed when schedule item is deleted, improved filter of upcoming queue events, fix issue with scheduler log for multiple attributes on the same model. + [#654](https://github.com/luyadev/luya-module-admin/pull/654) Fix issue with ngrest detail view when json is not an array. diff --git a/src/ngrest/plugins/SelectArrayGently.php b/src/ngrest/plugins/SelectArrayGently.php index a141b8684..37315dd1d 100644 --- a/src/ngrest/plugins/SelectArrayGently.php +++ b/src/ngrest/plugins/SelectArrayGently.php @@ -42,10 +42,16 @@ class SelectArrayGently extends Select { use LazyDataLoadTrait; - - private $_data; + /** + * @var array Private property to store dropdown values + */ + private $_data; + /** + * @inheritdoc + * MUST be disabled for this plugin, since the data is converted on client side and not on server side + */ public $assignAfterFind = false; /** @@ -58,8 +64,8 @@ public function renderList($id, $ngModel) } $options = Angular::optionsFilter([ - 'options' => $this->getServiceName('selectdata'), - ]); + 'options' => $this->getServiceName('selectdata'), + ]); return $this->createTag('select-array-gently', null, ArrayHelper::merge(['model' => $ngModel], $options)); } @@ -75,8 +81,7 @@ public function setData(array $data) } /** - * - * {@inheritDoc} + * @inheritdoc * @see \luya\admin\ngrest\plugins\Select::getData() */ public function getData() From 65493a264432112f117c3e6631eb47c99582abbd Mon Sep 17 00:00:00 2001 From: Basil Date: Wed, 1 Sep 2021 11:10:40 +0200 Subject: [PATCH 8/8] Update SelectArrayGently.php --- src/ngrest/plugins/SelectArrayGently.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ngrest/plugins/SelectArrayGently.php b/src/ngrest/plugins/SelectArrayGently.php index 37315dd1d..4b08742ad 100644 --- a/src/ngrest/plugins/SelectArrayGently.php +++ b/src/ngrest/plugins/SelectArrayGently.php @@ -38,6 +38,7 @@ * * @author Anton Ikonnikov * @since 4.1.0 + * @see https://github.com/luyadev/luya-module-admin/pull/658#issuecomment-910086883 */ class SelectArrayGently extends Select {