UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

2 lines 26.3 kB
/*! application-name 2015-03-09 */ var app=angular.module("app",["angularFileUpload","ui.bootstrap","angular-data.DSCacheFactory"]);app.controller("EditorItemSelectorController",function($scope,$q,ContentService,GroupService,DialogService){function showRecent(selectFirstItem){$scope.data.group&&(ContentService.clearCacheByGroup($scope.data.group._id),$scope.data.selectFirstItem=selectFirstItem,$scope.data.showingRecent===!0?loadRecentItems($scope.data.group._id,$scope.paging.pageSize):$scope.data.showingRecent=!0)}function onUploadProgress(name,index,loaded,total){var per=parseInt(100*loaded/total);console.log("percent: "+per+" ;"+name+"; "+index)}function onUploadError(name,index,message){setMessage(message,"alert-danger")}function isEnabled(item){return null===$scope.data.allowedStatuses||$scope.data.allowedStatuses.indexOf(item.status)<0?!1:!0}function loadGroups(branch){var d=$q.defer();return GroupService.list(branch,null).then(function(result){if(result&&result.success===!0){$scope.data.groups=[];for(var i=0;i<result.groups.length;i++){var g=result.groups[i];g.rights&&1==g.rights.read&&$scope.data.groups.push(g)}}else result?setMessage(result.message,"alert-danger",!1):setMessage("An unknown error occurred.","alert-danger",!1);d.resolve()}),d.promise}function loadItems(groupId,pageNumber){$scope.paging.pageNum=pageNumber,ContentService.getItems(groupId,pageNumber,$scope.paging.pageSize,!0).then(function(data){if(setMessage(data.message,1==data.success?"alert-success":"alert-danger"),data.success&&data.items){for(var i=0;i<data.items.length;i++){var item=data.items[i];item.statusCss=ContentService.getItemStatusCss(item.status),item.ui={},item.ui.enabled=!0,isEnabled(item)||(item.ui.enabled=!1,item.ui.tooltip="This item cannot be selected due to it's status")}$scope.data.items=data.items,$scope.paging.pageCount=Math.ceil(data.total/$scope.paging.pageSize),$scope.paging.pageNum=pageNumber}else $scope.data.items=[]})}function loadRecentItems(groupId,count){$scope.data.items=[],$scope.data.showingRecent=!0,ContentService.getRecentItems(groupId,count).then(function(data){if(setMessage(data.message,1==data.success?"alert-success":"alert-danger"),data.success&&data.items){for(var i=0;i<data.items.length;i++){var item=data.items[i];item.statusCss=ContentService.getItemStatusCss(item.status),item.ui={},item.ui.enabled=!0,isEnabled(item)||(item.ui.enabled=!1,item.ui.tooltip="This item cannot be selected due to it's status")}$scope.data.items=data.items,$scope.data.selectFirstItem===!0&&$scope.data.items&&$scope.data.items.length>0&&($scope.selectItem($scope.data.items[0]),$scope.data.selectFirstItem=!1),$scope.paging.pageNum=1,$scope.paging.pageCount=1}})}function setMessage(msg,type){$scope.dialog.message=msg,$scope.dialog.messageType=type}function getUrlParam(paramName){var reParam=new RegExp("(?:[?&]|&)"+paramName+"=([^&]+)","i"),match=window.location.search.match(reParam);return match&&match.length>1?match[1]:null}$scope.dialog={message:"",messageType:"",disableOk:!0},$scope.data={allowedStatuses:"SMP",items:[],groups:[],group:null,selectedItem:null,selectionLabel:"",uploadCount:0,showingRecent:!1,selectFirstItem:!1},$scope.paging={pageSize:12,pageNum:1,pageCount:0,paginate:function(num){loadItems($scope.data.group._id,num)}},$scope.init=function(branch){$scope.data.selectionLabel="Selected Item:",$scope.editorType=getUrlParam("editor"),$scope.funcNum=getUrlParam("CKEditorFuncNum"),loadGroups(branch).then(function(){$scope.data.groups&&$scope.data.groups.length>0&&($scope.data.group=$scope.data.groups[0])})},$scope.$watch(function(scope){return scope.data.group},function(){$scope.data.group&&loadItems($scope.data.group._id,1)}),$scope.$watch(function(scope){return scope.data.showingRecent},function(){$scope.data.group&&($scope.data.showingRecent===!0?loadRecentItems($scope.data.group._id,$scope.paging.pageSize):loadItems($scope.data.group._id,1))}),$scope.ok=function(){if($scope.data.selectedItem){var item=$scope.data.selectedItem;"tinymce"==$scope.editorType?(parent.tinymce.activeEditor.windowManager.getParams().result(item.url),parent.tinymce.activeEditor.windowManager.close()):(window.opener.CKEDITOR.tools.callFunction($scope.funcNum,item.url),window.close())}},$scope.cancel=function(){"tinymce"==$scope.editorType?parent.tinymce.activeEditor.windowManager.close():window.close()},$scope.upload=function(){$scope.data.group&&DialogService.showFileSelector(function(files){files&&files.length>0&&($scope.data.uploading=!0,ContentService.upload($scope.data.group._id,files,!0,onUploadProgress,onUploadError).then(function(){$scope.data.uploading=!1,showRecent(!0)}))})},$scope.selectItem=function(item){isEnabled(item)&&($scope.data.selectedItem=item)},$scope.unSelectItem=function(){$scope.data.selectedItem=null}}),app.directive("paginator",function(){return{restrict:"C",scope:{settings:"=settings"},template:'<div ng-if="settings.pageCount > 1"> <i class="fa fa-long-arrow-left arrow-prev" ng-show="settings.pageNum > 1" ng-click="prevPage()"></i> Page<span>{{settings.pageNum}}</span>of<span>{{settings.pageCount}}</span> <i class="fa fa-long-arrow-right arrow-next" ng-show="settings.pageNum < settings.pageCount" ng-click="nextPage()"></i></div>',link:function(scope){function init(){}scope.prevPage=function(){scope.paginate(scope.settings.pageNum-1)},scope.nextPage=function(){scope.paginate(scope.settings.pageNum+1)},scope.paginate=function(num){num>0&&num<=scope.settings.pageCount&&scope.settings.paginate&&(scope.settings.pageNum=num,scope.settings.paginate(num))},init()}}}),app.service("HelperService",function(){var self=this;self.splitTrim=function(s,delimiter){if(s&&s.length>0){delimiter=delimiter||",";var arr=s.split(delimiter);if(arr){for(var temp=[],i=0;i<arr.length;i++)temp.push(arr[i].trim());return temp}}return[]},self.join=function(arr,delimiter){var s="";if(delimiter=delimiter||",",arr){for(var i=0;i<arr.length;i++)s+=delimiter+arr[i];s.length>0&&(s=s.substr(delimiter.length))}return s},self.toBoolHash=function(arr){var hash={};if(arr&&arr.length>0)for(var i=0;i<arr.length;i++)hash[arr[i]]=!0;return hash},self.endsWith=function(str,suffix){return str&&suffix?-1!==str.indexOf(suffix,str.length-suffix.length):!1},self.startsWith=function(str,prefix){return str&&prefix?0===str.indexOf(prefix):!1}}),app.service("ContentService",function($q,$http,$upload,$modal,DSCacheFactory){function Event(id,title,allDay,start,end,className,status,statusText){var self=this;self.id=id,self.title=title,self.allDay=allDay,self.start=start,self.end=end,self.className=className,self.status=status,self.statusText=statusText}function clearCache(groupId){if(groupId)for(var keys=contentCache.keys(),i=0;i<keys.length;i++){var key=keys[i];key.indexOf(groupId)>-1&&contentCache.remove(key)}}var self=this,contentCache=DSCacheFactory("contentCache",{maxAge:18e5,cacheFlushInterval:36e5,deleteOnExpire:"aggressive",storageMode:"localStorage"});self.getItems=function(groupId,page,size,useCache){var options={groupId:groupId,page:page,size:size,useCache:useCache};return self.getContentItems(options)},self.getContentItems=function(options){var d=$q.defer(),groupId=options.groupId||"",page=options.page||1,size=options.size||20,category=options.category||"",useCache=options.useCache||!0,url="/cms/content/items?groupId="+groupId+"&category="+category+"&page="+page+"&size="+size,data=null;return useCache&&(data=contentCache.get(url)),data?d.resolve(data):$http({url:url,method:"get",params:{}}).success(function(data){data&&data.items&&data.items.length>0&&contentCache.put(url,data),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.getRecentItems=function(groupId,count){var d=$q.defer(),url="/cms/content/recent?groupId="+(groupId?groupId:"")+"&count="+count,data=contentCache.get(url);return data?d.resolve(data):$http({url:url,method:"get",params:{}}).success(function(data){data&&data.items&&data.items.length>0&&contentCache.put(url,data),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.getItemList=function(itemIds,useCache){var d=$q.defer();if(itemIds&&itemIds.length>0){var url="/cms/content/itemlist?ids="+itemIds.join(),data=null;useCache&&(data=contentCache.get(url)),data?d.resolve(data):$http({url:url,method:"get",params:{}}).success(function(data){contentCache.put(url,data),d.resolve(data)}).error(function(data){d.reject(data)})}else d.resolve(null);return d.promise},self.getItemsByDate=function(groupId,start,end,useCache){var d=$q.defer(),url="/cms/content/items?groupId="+(groupId?groupId:"")+"&start="+start+"&end="+end,data=null;return useCache&&(data=contentCache.get(url)),data?d.resolve(data):$http({url:url,method:"get",params:{}}).success(function(data){var obj={events:[],message:"",success:!0};if(data)if(obj.success=data.success,data.success){for(var i=0;i<data.items.length;i++){var item=data.items[i],start=item.startDate||item.created,end=item.endDate||item.created,startDate=new moment(start),endDate=new moment(end),allDay=!1;0===startDate.hour()&&0===startDate.minute()&&0===startDate.second()&&0===endDate.hour()&&0===endDate.minute()&&0===endDate.second()?allDay=!0:startDate.isSame(endDate)&&(endDate=endDate.add("m",30)),obj.events.push(new Event(item.contentId,item.name,allDay,startDate,endDate,item.statusClass,item.status,item.statusText))}contentCache.put(url,obj)}else obj.message=data.message;else obj.message="Error loading events from server.",obj.success=!1;d.resolve(obj)}).error(function(data){d.resolve({events:[],message:data,success:!1})}),d.promise},self.getTags=function(){var d=$q.defer();return $http({url:"/cms/content/tags",method:"get"}).success(function(data){d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.create=function(name,groupId,typeId,templateId,startDate,endDate){var d=$q.defer();return $http.post("/cms/content/create",{name:name,groupId:groupId,typeId:typeId,templateId:templateId,start:startDate,end:endDate}).success(function(data){clearCache(groupId),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.changeItemDates=function(contentId,startDate,endDate,groupId){var d=$q.defer(),start=self.getDateNoZone(moment.utc(startDate)),end=self.getDateNoZone(moment.utc(endDate));return $http.post("/cms/content/change-dates",{contentId:contentId,start:start,end:end}).success(function(data){clearCache(groupId),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.getDateNoZone=function(mDate){var dt=mDate.toDate(),_userOffset=6e4*dt.getTimezoneOffset();return new Date(dt.getTime()+_userOffset)},self.runCommand=function(cmd,options,item){var d=$q.defer();""===item.templateId&&(item.templateId=null);var data={command:cmd,options:options,item:item,batch:!1},json=JSON.stringify(data);return $http.post("/cms/content/command",{command:cmd,data:json}).success(function(data){clearCache(item.groupId),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.runBatchCommand=function(cmd,options,itemIds,groupId){var d=$q.defer(),data={command:cmd,options:options,ids:itemIds,batch:!0},json=JSON.stringify(data);return $http.post("/cms/content/command",{command:cmd,data:json}).success(function(result){clearCache(groupId),d.resolve(result)}).error(function(result){d.reject(result)}),d.promise},self.getContent=function(contentId,includeEditData){var d=$q.defer();return $http({url:"/cms/content/get",method:"get",params:{contentId:contentId,editData:includeEditData}}).success(function(data){d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.upload=function(groupId,files,publish,onProgress,onError){var d=$q.defer(),index=-1;return async.eachSeries(files,function(file,done){index++,console.log("Uploading file: "+file.name),$upload.upload({url:"/cms/content/upload",method:"POST",data:{groupId:groupId,publish:publish},file:file}).progress(function(evt){onProgress&&onProgress(file.name,index,evt.loaded,evt.total)}).success(function(data){data&&0==data.success&&onError&&onError(file.name,index,data.message),done()}).error(function(error){done(error)})},function(err){err?(console.log(err),d.reject(err)):(clearCache(groupId),d.resolve(!0))}),d.promise},self.changeMedia=function(groupId,contentId,file,onProgress,onError){var d=$q.defer();return console.log("Uploading file: "+file.name),$upload.upload({url:"/cms/content/upload",method:"POST",data:{groupId:groupId,publish:!1,contentId:contentId},file:file}).progress(function(evt){onProgress&&onProgress(file.name,0,evt.loaded,evt.total)}).success(function(data){data&&data.success!==!0&&onError?(onError(file.name,0,data.message),d.resolve({success:!1,message:data.message})):d.resolve({success:!0,message:data.message,item:data.item})}).error(function(error){d.reject(error)}),d.promise},self.canDesign=function(item){return"content"===item.branch&&"D"!==item.status&&null!==item.url&&item.url.length>0&&null!=item.templateId},self.setItemsStatusCss=function(items){for(var i=0;i<items.length;i++)items[i].statusCss=self.getItemStatusCss(items[i].status)},self.getItemStatusCss=function(status){return"N"==status?"label-default":"S"==status?"label-info":"P"==status?"label-success":"M"==status?"label-warning":"D"==status?"label-danger":"label-default"},self.getBranchData=function(path){return path?path.indexOf("/content")>-1?{name:"content",text:"Content",views:["list","calendar"]}:path.indexOf("/media")>-1?{name:"media",text:"Media",views:["list","gallery"]}:path.indexOf("/system")>-1?{name:"system",text:"System",views:["list"]}:void 0:null},self.filterContentTypes=function(group,allTypes){var types=[];if(group&&group.contentTypes&&allTypes){for(var hash={},i=0;i<group.contentTypes.length;i++)hash[group.contentTypes[i]]=!0;for(var i=0;i<allTypes.length;i++){var t=allTypes[i];t.abstract!==!0&&hash[t._id]===!0&&types.push(t)}}return types},self.clearAllCache=function(){contentCache.removeAll()},self.clearCacheByGroup=function(groupId){clearCache(groupId)}}),app.service("GroupService",function($q,$http,$modal,HelperService,DSCacheFactory){function getGroups(branch){var d=$q.defer(),url="/cms/groups/list?branch="+branch,data=groupCache.get(url);return data?d.resolve(data):$http({url:url,method:"get",params:{}}).success(function(data){if(data){if(data.groups)for(var i=0;i<data.groups.length;i++)data.groups[i].cats=HelperService.join(data.groups[i].categories,", ");groupCache.put(url,data)}d.resolve(data)}).error(function(data){d.reject(data)}),d.promise}function clearCache(branch){groupCache.remove("/cms/groups/list?branch="+branch)}var self=this,groupCache=DSCacheFactory("groupCache",{maxAge:18e5,cacheFlushInterval:36e5,deleteOnExpire:"aggressive",storageMode:"localStorage"});self.list=function(branch,parentId){var d=$q.defer(),branches=[];branch.indexOf(",")>-1?branches=branch.split(","):branches.push(branch);var groups=[];return async.eachSeries(branches,function(branch,done){try{getGroups(branch,parentId).then(function(result){if(result.groups)for(var j=0;j<result.groups.length;j++)groups.push(result.groups[j]);done()})}catch(e){logger.error(e),done(e)}},function(err){d.resolve(err?{success:!1,message:err.message}:{success:!0,groups:groups})}),d.promise},self.getGroup=function(groupId){var d=$q.defer();return $http({url:"/cms/groups/get",method:"get",params:{groupId:groupId}}).success(function(data){data.group&&(data.group.cats=HelperService.join(data.group.categories,", ")),console.log("group data: "+JSON.stringify(data)),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.create=function(group){var d=$q.defer(),json=JSON.stringify(group);return $http.post("/cms/groups/create",{data:json}).success(function(data){clearCache(group.branch),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.update=function(group){var d=$q.defer();group.categories=group.cats&&group.cats.length>0?HelperService.splitTrim(group.cats,","):[];var json=JSON.stringify(group);return $http.post("/cms/groups/update",{data:json}).success(function(data){clearCache(group.branch),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.delete=function(group){var d=$q.defer();return $http.post("/cms/groups/delete",{groupId:group._id}).success(function(data){clearCache(group.branch),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.recalculate=function(group){var d=$q.defer();return $http.post("/cms/groups/recalculate",{groupId:group._id}).success(function(data){clearCache(group.branch),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.reorder=function(groups,branch){for(var d=$q.defer(),arr=[],i=0;i<groups.length;i++){var group=groups[i],p={groupId:group._id,name:group.name,position:i+1};arr.push(p)}var json=JSON.stringify(arr);return $http.post("/cms/groups/reorder",{data:json}).success(function(data){clearCache(branch),d.resolve(data)}).error(function(data){d.reject(data)}),d.promise},self.clearAllCache=function(){groupCache.removeAll(),console.log("All group cache cleared.")},self.clearCache=function(branch){clearCache(branch)}});var GroupPropsDialogController=function($scope,$modalInstance,GroupService,RoleService,group,types){function init(){$scope.original=group,$scope.resizeQualityOptions=[];for(var i=0;100>=i;i+=2)$scope.resizeQualityOptions.push(i);var copy={_id:group._id,parentId:group.parentId,name:group.name,desc:group.desc,branch:group.branch,icon:group.icon,itemCount:group.itemCount,childCount:group.childCount,contentTypes:group.contentTypes,perms:group.perms,urlPattern:group.urlPattern,views:group.views,sortBy:group.sortBy||"name",sortDir:group.sortDir||"asc",position:group.position,created:group.created,modified:group.modified,mediaSettings:group.mediaSettings,cats:group.cats,categories:group.categories};if($scope.group=copy,$scope.types=[],types)for(var i=0;i<types.length;i++){var t=types[i];t.abstract!==!0&&("content"!==$scope.group.branch||null!=t.mediaType&&""!==t.mediaType&&"None"!==t.mediaType?"media"===$scope.group.branch&&t.mediaType&&""!==t.mediaType&&"None"!==t.mediaType&&$scope.types.push(t):$scope.types.push(t))}if(copy.contentTypes)for(var i=0;i<copy.contentTypes.length;i++)for(var j=0;j<$scope.types.length;j++)if($scope.types[j]._id==copy.contentTypes[i]){$scope.selectedTypes.push($scope.types[j]);break}if(copy.views&&copy.views.length>0){for(var i=0;i<copy.views.length;i++)for(var name=copy.views[i],j=0;j<$scope.views.length;j++)if($scope.views[j].name==name){$scope.views[j].checked=!0;break}}else for(var j=0;j<$scope.views.length;j++)if("list"==$scope.views[j].name){$scope.views[j].checked=!0;break}$scope.canDelete=0===copy.itemCount&&0===copy.childCount,loadRoles()}function loadRoles(){RoleService.getRoles(!0).then(function(data){if($scope.perms.roles=[],data.success===!1)setMessage(data.message,data.success===!0?"alert-success":"alert-danger",!0);else if(data.roles)for(var i=0;i<data.roles.length;i++)$scope.perms.roles.push(data.roles[i].name)})}function setMessage(msg,type){$scope.dialog.messageType=type,$scope.dialog.message=msg}function Permission(role){var self=this;self.role=role,self.create=!1,self.read=!1,self.update=!1,self.delete=!1,self.publish=!1}$scope.group=null,$scope.original=null,$scope.canDelete=!1,$scope.perms={role:[],selectedRole:null},$scope.dialog={title:"Group Properties",message:"",messageType:"",tab:"general"},$scope.views=[{name:"list",text:"List",checked:!1},{name:"gallery",text:"Gallery",checked:!1},{name:"calendar",text:"Calendar",checked:!1}],$scope.sortByOptions=[{text:"Name",value:"name"},{text:"Date Created",value:"created"},{text:"Date Modified",value:"modified"},{text:"Start Date",value:"startdate"}],$scope.sortDirOptions=[{text:"Ascending",value:"asc"},{text:"Descending",value:"desc"}],$scope.resizeModeOptions=[{text:"None",value:"none"},{text:"Max",value:"max"},{text:"Crop",value:"crop"},{text:"Stretch",value:"stretch"}],$scope.resizeQualityOptions=[],$scope.types=[],$scope.selectedTypes=[],$scope.changeTab=function(name){$scope.dialog.tab=name},$scope.delete=function(){confirm("Are you sure you want to delete this group?")&&(setMessage("Deleting group...","alert-info"),GroupService.delete($scope.group).then(function(result){result&&result.success===!0?$modalInstance.close(!0):result?setMessage(result.message,"alert-danger"):setMessage("Error deleting the group!","alert-danger")}))},$scope.recalculate=function(){setMessage("Recalculating the group item count...","alert-info"),GroupService.recalculate($scope.group).then(function(result){result&&result.success===!0?setMessage("Group item count recalculated to: "+result.itemCount,"alert-info"):result?setMessage(result.message,"alert-danger"):setMessage("Error recalculating the group item count!","alert-danger")})},$scope.urlPatternHelp=function(){alert("Item ID: {id}\nItem Name: {n}\nDate Year: {dy}\nDate Month: {dm}\nDate Day: {dd}\nExample: /blog/{dy}/{dm}/{n}")},$scope.ok=function(){for(var typeIds=[],i=0;i<$scope.selectedTypes.length;i++)typeIds.push($scope.selectedTypes[i]._id);$scope.group.contentTypes=typeIds;for(var views=[],i=0;i<$scope.views.length;i++)$scope.views[i].checked===!0&&views.push($scope.views[i].name);$scope.group.views=views,setMessage("Saving group properties...","alert-info"),GroupService.update($scope.group).then(function(result){result&&result.success===!0?$modalInstance.close(!0):result?setMessage(result.message,"alert-danger"):setMessage("Error saving the group properties!","alert-danger")})},$scope.cancel=function(){$modalInstance.dismiss("cancel")},$scope.addPermRole=function(){if($scope.perms.selectedRole){$scope.group.perms||($scope.group.perms=[]);for(var i=0;i<$scope.group.perms.length;i++){var p=$scope.group.perms[i];if(p.role===$scope.perms.selectedRole)return void alert("This role already has permissions on this group!")}$scope.group.perms.push(new Permission($scope.perms.selectedRole))}else alert("You must select a role from the dropdown!")},$scope.removePerm=function(perm,index){$scope.group.perms&&$scope.group.perms.length>index&&$scope.group.perms.splice(index,1)},init()};app.service("DialogService",function($q,$http,$modal){var self=this;self.openItemSelector=function(options){var settings={branch:"content",multiple:!1,title:"Item Selector",statuses:"NSMP",selectedIds:[],groups:null,onLoadItems:function(){},onSuccess:function(){},onCancel:function(){}};angular.extend(settings,options);var modalInstance=$modal.open({templateUrl:"ItemSelectorDialog",controller:ItemSelectorController,windowClass:"xlarge-dialog",resolve:{branch:function(){return settings.branch},multiple:function(){return settings.multiple},title:function(){return settings.title},statuses:function(){return settings.statuses},selectedIds:function(){return settings.selectedIds},groups:function(){return settings.groups},onLoadItems:function(){return settings.onLoadItems}}});modalInstance.result.then(function(value){settings.onSuccess&&settings.onSuccess(value)},function(){settings.onCancel&&settings.onCancel()})},self.openLinkSelector=function(options){var settings={title:"Link Selector",statuses:"NSMP",groups:null,onLoadItems:function(){},onSuccess:function(){},onCancel:function(){}};angular.extend(settings,options);var modalInstance=$modal.open({templateUrl:"LinkSelectorDialog",controller:LinkSelectorController,windowClass:"xlarge-dialog",resolve:{title:function(){return settings.title},statuses:function(){return settings.statuses},onLoadItems:function(){return settings.onLoadItems},value:function(){return settings.value},groups:function(){return settings.groups}}});modalInstance.result.then(function(value){settings.onSuccess&&settings.onSuccess(value)},function(){settings.onCancel&&settings.onCancel()})},self.openUploadMedia=function(options){var settings={title:"Upload Media",onClose:function(){}};angular.extend(settings,options);var modalInstance=$modal.open({templateUrl:"UploadMediaDialog",controller:UploadMediaDialogController,windowClass:"large-dialog",resolve:{title:function(){return settings.title},groupId:function(){return settings.groupId},onClose:function(){return settings.onClose}}});modalInstance.result.then(function(value){settings.onClose&&settings.onClose(value)},function(){settings.onClose&&settings.onClose(null)})},self.showFileSelector=function(onFiles){var fileSelector=$('<input type="file" />');fileSelector.on("change",function(evt){var files=evt.target.files;onFiles&&onFiles(files)}),fileSelector.click()},self.openImageSelector=function(options){var settings={title:"Image Selector",statuses:"NSMP",groups:null,onLoadItems:function(){},onSuccess:function(){},onCancel:function(){}};angular.extend(settings,options);var modalInstance=$modal.open({templateUrl:"ImageSelectorDialog",controller:ImageSelectorController,windowClass:"xlarge-dialog",resolve:{value:function(){return settings.value},title:function(){return settings.title},statuses:function(){return settings.statuses},groups:function(){return settings.groups},onLoadItems:function(){return settings.onLoadItems}}});modalInstance.result.then(function(value){settings.onSuccess&&settings.onSuccess(value)},function(){settings.onCancel&&settings.onCancel()})},self.openRawValue=function(rawValue,onClose){var modalInstance=$modal.open({templateUrl:"RawValueDialog",controller:RawValueDialogController,resolve:{rawValue:function(){return rawValue}}});modalInstance.result.then(function(value){onClose&&onClose(value)},function(){onClose&&onClose(null)})},self.openIconSelector=function(options){var settings={title:"Icon Selector",onSuccess:function(){},onCancel:function(){}};angular.extend(settings,options);var modalInstance=$modal.open({templateUrl:"IconSelectorDialog",controller:IconSelectorController,windowClass:"xlarge-dialog",resolve:{title:function(){return settings.title},value:function(){return settings.value}}});modalInstance.result.then(function(value){settings.onSuccess&&settings.onSuccess(value)},function(){settings.onCancel&&settings.onCancel()})},self.openGroupSelector=function(branch,title,onSuccess,onCancel){var modalInstance=$modal.open({templateUrl:"GroupSelectorDialog",controller:GroupSelectorDialogController,windowClass:"medium-dialog",resolve:{branch:function(){return branch},title:function(){return title}}});modalInstance.result.then(function(value){onSuccess&&onSuccess(value)},function(){onCancel&&onCancel()})}});