define()

in security-admin/src/main/webapp/scripts/modules/XALinks.js [26:369]


define(function(require) {
	'use strict';
	var XALinks     = {};
	var XAEnums		= require('utils/XAEnums');
	var defaults = {
		href : 'javascript:void(0)',
		text : '',
		title : 'Title'
	};
	var links = {
			/* Main Menu links START */
			
			Dashboard : { 
				href : '#', 
				text : 'h.dashboard',
				title: 'h.dashboard'
			},
			PolicyManager :{
				href : '#!/policymanager', 
				text : 'h.policyManager',
				title: 'h.policyManager'
			},
			RepositoryManager :{
				href : '#!/policymanager', 
				text : 'h.repositoryManager',
				title: 'h.repositoryManager'
			},
			ServiceManager : function(options){
				var textVal = 'h.serviceManager';
				return {
					href : '#!/policymanager/resource',
					text :  !_.isEmpty(options) ? 'Service Manager : ' + options + ' zone' : textVal,
					title : !_.isEmpty(options) ? 'Service Manager : ' + options + ' zone' : textVal,
				}
			},
			TagBasedServiceManager : function(options){
				var textVal = 'h.serviceManager';
				return{
					href : '#!/policymanager/tag',
					text : !_.isEmpty(options) ? 'Service Manager : ' + options + ' zone' : textVal,
					title: !_.isEmpty(options) ? 'Service Manager : ' + options + ' zone' : textVal,
				}
			},
			Users : { 
				href : '#!/users/usertab',
                                text : 'h.usersOrGroupsOrRoles',
                                title: 'h.usersOrGroupsOrRoles'
			},
			Groups : { 
				href : '#!/users/grouptab',
                                text : 'h.usersOrGroupsOrRoles',
                                title: 'h.usersOrGroupsOrRoles'
			},
			Kms : { 
				href : '#!/kms/keys/new/manage/service',
				text : 'h.kms',
				title: 'h.kms'
			},
			KmsKeyCreate : { 
				href : 'javascript:void(0);',
				text : 'h.keyCreate',
				title: 'h.keyCreate'
			},
			KmsKeyEdit : { 
				href : 'javascript:void(0);',
				text : 'h.keyEdit',
				title: 'h.keyEdit'
			},
			KmsKeyForService : { 
				href : 'javascript:void(0);',
				text : 'KMS_TEST1',
				title: 'KMS_TEST1'
			},
			ManageTables: { 
				href : '#!/managetables',
				text : 'h.managetables',
				title: 'h.managetables'
			},
			addPolicyForTable: { 
				href : '#!/addpolicyfortable',
				text : 'h.addpolicyfortable',
				title: 'h.addpolicyfortable'
			},
			ManageFolders: { 
				href : '#!/managefolders',
				title: 'h.managefolders',
				text: 'h.managefolders'
			},
			addPolicyForFolder: { 
				href : '#!/addpolicyforfolder',
				title: 'h.addpolicyforfolder',
				text: 'h.addpolicyforfolder'
			},
			HDFSFolders: { 
				href : '#!/hdfs',
				text : 'h.managePolices',
				title: 'h.managePolices'
			},
			PolicyCreate: { 
				href : 'javascript:void(0);',
				text: 'h.createPolicy',
				title: 'h.createPolicy'
			},
			PolicyEdit: { 
				href : 'javascript:void(0);',
				text: 'h.editPolicy',
				title: 'h.editPolicy'
			},
			HivePolicyListing : {
				href : '#!/hive',
				title: 'h.managetables',
				text: 'h.manageTables'
			},
			/*
			 * Asset related
			 */
			/*AssetCreate: { 
				href : '#!/asset/create',
				text: 'lbl.createAsset',
				title: 'lbl.createAsset'
			},*/
			/*
			 * Reports Related
			 */
			UserAccessReport: { 
				href : '#!/reports/userAccess',
				text: 'lbl.userAccessReport',
				title: 'lbl.userAccessReport'
			},
			AuditReport: { 
				href : '#!/reports/audit',
				text: 'lbl.auditReport',
				title: 'lbl.auditReport'
			},
			UserProfile :{
				href : '#!/userprofile', 
				text : 'h.userProfile',
				title: 'h.userProfile'
			},
			
			/*
			 * User OR Groups Related
			 */
			UserCreate : {
					href : '#!/user/create',
					text : 'lbl.userCreate',
					title: 'lbl.userCreate'
			},
			UserEdit : {
				href : 'javascript:void(0);',
				text : 'lbl.userEdit',
				title: 'lbl.userEdit'
			},
			GroupCreate : {
				href : '#!/group/create',
				text : 'lbl.groupCreate',
				title: 'lbl.groupCreate'
			},
			GroupEdit : {
				href : 'javascript:void(0);',
				text : 'lbl.groupEdit'
			},
			SessionDetail : {
				href : '#!/reports/audit/loginSession',
				text : 'lbl.sessionDetail'
			},
			ServiceCreate : {
				href : "javascript:void(0);",
				text : 'lbl.createService',
				title: 'lbl.createService'
			},
			ServiceEdit : function(options){
				var href = "javascript:void(0);";
				if(_.has(options,'model')){
					href =  '#!/service/'+options.model.get('id');
				}
				if(_.has(options,'id')){
					href =  '#!/service/'+options.id;
				}
				return {
					href : href,
					text : 'lbl.editService',
					title: 'lbl.editService'
				};
			},
			ManagePolicies : function(options){
				var href = "javascript:void(0);";
				if(_.has(options,'model')){
					href =  '#!/service/'+options.model.id+"/policies/"+XAEnums.RangerPolicyType.RANGER_ACCESS_POLICY_TYPE.value;
				}
				return {
					href : href,
                    text : options.model.get('displayName') +' Policies',
                    title: options.model.get('displayName') +' Policies'
				};
			},
			ManageHivePolicies : function(options){
				var href = "javascript:void(0);";
				if(_.has(options,'model')){
					href =  '#!/hive/'+options.model.id+"/policies";
				}
				return {
					href : href,
					text : options.model.get('name') +' Policies',
					title: options.model.get('name') +' Policies'
				};
			},
			ManageHbasePolicies : function(options){
				var href = "javascript:void(0);";
				if(_.has(options,'model')){
					href =  '#!/hbase/'+options.model.id+"/policies";
				}
				return {
					href : href,
					text : options.model.get('name') +' Policies',
					title: options.model.get('name') +' Policies'
				};
			},
			ManageKnoxPolicies : function(options){
				var href = "javascript:void(0);";
				if(_.has(options,'model')){
					href =  '#!/knox/'+options.model.id+"/policies";
				}
				return {
					href : href,
					text : options.model.get('name') +' Policies',
					title: options.model.get('name') +' Policies'
				};
            },
            ManageStormPolicies : function(options){
                var href = "javascript:void(0);";
                if(_.has(options,'model')){
                    href =  '#!/storm/'+options.model.id+"/policies";
                }
                return {
                    href : href,
                    text : options.model.get('name') +' Policies',
                    title: options.model.get('name') +' Policies'
                };
			},
			ModulePermissions :{
                                href : '#!/permissions/models',
				text : 'h.permissions',
				title: 'h.permissions'
			},
			ModulePermissionEdit : function(options){
                var href = "javascript:void(0);";
                if(_.has(options,'model')){
                    href =  '#!/permissions/'+options.model.id+"/edit";
                }
                return {
                    href : href,
                    text : options.model.get('module'),
                    title: options.model.get('module')
                };
			},
			KmsServiceForKey : function(options) {
				var href = "javascript:void(0);";
				if(_.has(options,'kmsServiceDefModel') && _.has(options,'kmsService')){
                    href =  '#!/service/'+options.kmsServiceDefModel.id+"/edit/"+options.kmsService.id;
                }
				return {
                    href : href,
                    text : options.kmsService.get('name'),
                    title: options.kmsService.get('name')
                };
			},
			KmsManage : function(options) {
				var href = "javascript:void(0);";
				if(_.has(options,'kmsService')){
                    href =  '#!/kms/keys/edit/manage/'+options.kmsService;
                }
				return {
                    href : href,
                    text : 'h.kms',
                    title: 'h.kms'
                };
            },
            SecurityZone :{
                href : '#!/zones/zone/list',
                text : 'h.securityZone',
                title: 'h.securityZone'
            },
            ZoneCreate : {
                href : '#!/zones/create',
                text : 'h.zoneCreate',
                title: 'h.zoneCreate'
            },
            ZoneEdit : function(options){
                return {
                    href : 'javascript:void(0);',
                    text : 'h.zoneEdit',
                    title: 'h.zoneEdit'
                };
            },
            ZoneName: function(options) {
                return {
                    href: 'javascript:void(0)',
                    text: 'Zone Name : ' + options
                }
            },
            Roles : {
                href : '#!/users/roletab',
                text : 'h.usersOrGroupsOrRoles',
                title: 'h.usersOrGroupsOrRoles',
            },
            RoleCreate : {
                href : '#!/role/create',
                text : 'lbl.roleCreate',
                title: 'lbl.roleCreate',
            },
            RoleEdit : {
                href : 'javascript:void(0);',
                text : 'lbl.roleEdit',
                title: 'lbl.roleEdit',
            },
	};      
       
	
	XALinks.get = function(type, options){
		if(! _.has(links, type)){
			throw new Error("Link " + type + " not found in XALinks Module!");
		}
		var opts = {};
		// in some case we will get model directly as options
		if( options && !_.has(options,'model') &&  options instanceof Backbone.Model){
			opts['model'] = options;
		} else {
			opts = options;
		}

		if(typeof links[type] === 'function'){
			return links[type](opts||{});
		}

		return links[type];
	};
	
	
	
	
	return XALinks;

});