Repository: incubator-ranger Updated Branches: refs/heads/stack 4130d7a5c -> 286acf6d2
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/storm/StormPolicyCreate.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/storm/StormPolicyCreate.js b/security-admin/src/main/webapp/scripts/views/storm/StormPolicyCreate.js deleted file mode 100644 index e443a68..0000000 --- a/security-admin/src/main/webapp/scripts/views/storm/StormPolicyCreate.js +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var App = require('App'); - var Backbone = require('backbone'); - var XALinks = require('modules/XALinks'); - - var XAUtil = require('utils/XAUtils'); - var XAEnums = require('utils/XAEnums'); - var localization = require('utils/XALangSupport'); - var VXResourceList = require('collections/VXResourceList'); - - var StormPolicyForm = require('views/storm/StormPolicyForm'); - var StormPolicyCreateTmpl = require('hbs!tmpl/storm/StormPolicyCreate_tmpl'); - - var StormPolicyCreate = Backbone.Marionette.Layout.extend( - /** @lends StormPolicyCreate */ - { - _viewName : 'StormPolicyCreate', - - template: StormPolicyCreateTmpl, - templateHelpers : function(){ - return { - editPolicy : this.editPolicy - }; - }, - breadCrumbs :function(){ - if(this.model.isNew()) - return [XALinks.get('RepositoryManager'),XALinks.get('ManageStormPolicies',{model : this.assetModel}),XALinks.get('PolicyCreate')]; - else - return [XALinks.get('RepositoryManager'),XALinks.get('ManageStormPolicies',{model : this.assetModel}),XALinks.get('PolicyEdit')]; - } , - /** Layout sub regions */ - regions: { - 'rForm' :'div[data-id="r_form"]' - }, - - /** ui selector cache */ - ui: { - 'btnSave' : '[data-id="save"]', - 'btnCancel' : '[data-id="cancel"]', - 'btnDelete' : '[data-id="delete"]', - 'policyDisabledAlert' : '[data-id="policyDisabledAlert"]' - }, - - /** ui events hash */ - events: function() { - var events = {}; - events['click ' + this.ui.btnSave] = 'onSave'; - events['click ' + this.ui.btnCancel] = 'onCancel'; - events['click ' + this.ui.btnDelete] = 'onDelete'; - return events; - }, - - /** - * intialize a new StormPolicyCreate Layout - * @constructs - */ - initialize: function(options) { - var that = this; - console.log("initialized a StormPolicyCreate Layout"); - - _.extend(this, _.pick(options,'assetModel')); - this.bindEvents(); - - that.form = new StormPolicyForm({ - template : require('hbs!tmpl/storm/StormPolicyForm_tmpl'), - model : this.model, - assetModel : this.assetModel - }); - - this.editPolicy = this.model.has('id') ? true : false; - }, - - /** all events binding here */ - bindEvents : function(){ - /*this.listenTo(this.model, "change:foo", this.modelChanged, this);*/ - /*this.listenTo(communicator.vent,'someView:someEvent', this.someEventHandler, this)'*/ - }, - - /** on render callback */ - onRender: function() { - XAUtil.showAlerForDisabledPolicy(this); - this.rForm.show(this.form); - this.initializePlugins(); - this.rForm.$el.dirtyFields(); - XAUtil.preventNavigation(localization.tt('dialogMsg.preventNavStormPolicyForm'), this.rForm.$el); - }, - - /** all post render plugin initialization */ - initializePlugins: function(){ - }, - popupCallBack : function(msg,validateObj){ - var that = this; - XAUtil.alertPopup({ - msg :msg, - callback : function(){ - // if(validateObj.auditLoggin) - // that.savePolicy(); - } - }); - }, - onSave : function(){ - var that =this, valid = false; - var errors = this.form.commit({validate : false}); - if(! _.isEmpty(errors)){ - return; - } - var validateObj = this.form.formValidation(); - valid = (validateObj.groupSet && validateObj.permSet && validateObj.groupIPSet) || (validateObj.userSet && validateObj.userPerm && validateObj.userIPSet); - if(!valid){ - if(this.validateGroupPermission(validateObj)) { - if((!validateObj.auditLoggin) && !(validateObj.groupPermSet || validateObj.userSet)){ - XAUtil.alertPopup({ - msg :localization.tt('msg.yourAuditLogginIsOff'), - callback : function(){} - }); - }else{ - this.savePolicy(); - } - } - }else{ - if(this.validateGroupPermission(validateObj)) - this.savePolicy(); - } - - }, - validateGroupPermission : function(validateObj){ - if((!validateObj.groupSet) && (validateObj.permSet)) { - this.popupCallBack(localization.tt('msg.addGroup'),validateObj); - }else if(validateObj.groupIPSet && (!validateObj.groupSet)){ - this.popupCallBack(localization.tt('msg.addGroup'),validateObj); - /*}else if(validateObj.groupSet && (!validateObj.groupIPSet)){ - this.popupCallBack(localization.tt('msg.enterIPForGroupPerm'),validateObj); - }else if(!validateObj.groupIPSet && (validateObj.groupSet && validateObj.permSet)){ - this.popupCallBack(localization.tt('msg.enterIPForGroupPerm'),validateObj);*/ - }else if(validateObj.groupIPSet && (!validateObj.permSet)){ - this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj); - }else if(validateObj.groupSet && (!validateObj.permSet)){ - this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj); - /*}else if(validateObj.groupIPSet && !validateObj.groupSet){ - this.popupCallBack(localization.tt('msg.addGroup'),validateObj); - }else if(validateObj.groupIPSet && !validateObj.permSet){ - this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj);*/ - - }else if(validateObj.userIPSet && (!validateObj.userSet)){ - this.popupCallBack(localization.tt('msg.addUser'),validateObj); - }else if(validateObj.userPerm && (!validateObj.userSet)) { - this.popupCallBack(localization.tt('msg.addUser'),validateObj); - /*}else if(!validateObj.userIPSet && validateObj.userSet){ - this.popupCallBack(localization.tt('msg.enterIPForUserPerm'),validateObj); - }else if(!validateObj.userIPSet && (validateObj.userSet && validateObj.userPerm)){ - this.popupCallBack(localization.tt('msg.enterIPForUserPerm'),validateObj);*/ - }else if(validateObj.userIPSet && (!validateObj.userPerm)){ - this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj); - }else if(validateObj.userSet && (!validateObj.userPerm)){ - this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj); - } - else - return true; - }, - savePolicy : function(){ - var that = this; - this.form.afterCommit(); - this.saveMethod(); - }, - saveMethod : function(){ - var that = this; - XAUtil.blockUI(); - this.model.save({},{ - wait: true, - success: function () { - XAUtil.blockUI('unblock'); - var msg = that.editPolicy ? 'Policy updated successfully' :'Policy created successfully'; - XAUtil.notifySuccess('Success', msg); - XAUtil.allowNavigation(); - if(that.editPolicy){ - App.appRouter.navigate("#!/storm/"+that.assetModel.id+"/policies",{trigger: true}); - return; - } - - App.appRouter.navigate("#!/storm/"+that.assetModel.id+"/policies",{trigger: false}); - - var view = require('views/storm/StormTableLayout'); - var resourceListForAsset = new VXResourceList([],{ - queryParams : { - 'assetId' : that.assetModel.id - } - }); - - resourceListForAsset.fetch({ - cache : false, - data : { - // 'resourceType':XAEnums.AssetType.ASSET_HIVE.value, - 'assetId' :that.assetModel.id - } - }).done(function(){ - var newColl = resourceListForAsset; - resourceListForAsset.getLastPage({ - cache : false, - data : { - // 'resourceType':XAEnums.AssetType.ASSET_HIVE.value, - 'assetId' :that.assetModel.id - } - }).done(function(){ - var model = newColl.get(that.model.id); - if(model){ - model.trigger("model1:highlightBackgridRow"); - } - }); - App.rContent.show(new view({ - collection : resourceListForAsset, - assetModel : that.assetModel - })); - - }); - - console.log("success"); - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - if( response.responseJSON.messageList && response.responseJSON.messageList.length > 0 && !_.isUndefined(response.responseJSON.messageList[0].fieldName)){ - if(response.responseJSON.messageList[0].fieldName == "parentPermission"){ - XAUtil.confirmPopup({ - msg :response.responseJSON.msgDesc, - callback : function(){ - that.model.set('checkParentPermission',XAEnums.BooleanValue.BOOL_FALSE.value); - that.saveMethod(); - } - }); - }else - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error creating Policy!'); - console.log("error"); - } - }); - }, - onDelete :function(){ - var that = this; - XAUtil.confirmPopup({ - //msg :localize.tt('msg.confirmDelete'), - msg :'Are you sure want to delete ?', - callback : function(){ - XAUtil.blockUI(); - that.model.destroy({ - success: function(model, response) { - XAUtil.blockUI('unblock'); - XAUtil.allowNavigation(); - XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); - App.appRouter.navigate("#!/storm/"+that.assetModel.id+"/policies",{trigger: true}); - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error deleting Policy!'); - console.log("error"); - } - }); - } - }); - }, - onCancel : function(){ - XAUtil.allowNavigation(); - App.appRouter.navigate("#!/storm/"+this.assetModel.id+"/policies",{trigger: true}); - }, - - /** on close */ - onClose: function(){ - XAUtil.allowNavigation(); - } - - }); - - return StormPolicyCreate; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/storm/StormPolicyForm.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/storm/StormPolicyForm.js b/security-admin/src/main/webapp/scripts/views/storm/StormPolicyForm.js deleted file mode 100644 index 3ce9606..0000000 --- a/security-admin/src/main/webapp/scripts/views/storm/StormPolicyForm.js +++ /dev/null @@ -1,510 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var Backbone = require('backbone'); - - var XAEnums = require('utils/XAEnums'); - var localization = require('utils/XALangSupport'); - var XAUtil = require('utils/XAUtils'); - - var VXPermMapList = require('collections/VXPermMapList'); - var VXGroupList = require('collections/VXGroupList'); - var VXAuditMapList = require('collections/VXAuditMapList'); - var VXAuditMap = require('models/VXAuditMap'); - var VXPermMap = require('models/VXPermMap'); - var VXUserList = require('collections/VXUserList'); - var FormInputItemList = require('views/common/FormInputItemList'); - var UserPermissionList = require('views/common/UserPermissionList'); - - - - require('Backbone.BootstrapModal'); - require('backbone-forms.list'); - require('backbone-forms.templates'); - require('backbone-forms'); - - var HivePolicyForm = Backbone.Form.extend( - /** @lends PolicyForm */ - { - _viewName : 'PolicyForm', - - type : { - TOPOLOGY : 1, - SERVICE : 2, - }, - - /** - * intialize a new PolicyForm Form View - * @constructs - */ - initialize: function(options) { - console.log("initialized a PolicyForm Form View"); - Backbone.Form.prototype.initialize.call(this, options); - - _.extend(this, _.pick(options, 'assetModel')); - this.initializeCollection(); - this.bindEvents(); - }, - - /** all events binding here */ - bindEvents : function(){ - this.on('_vAuditListToggle:change', function(form, fieldEditor){ - this.evAuditChange(form, fieldEditor); - }); - this.on('resourceStatus:change', function(form, fieldEditor){ - this.evResourceStatusChange(form, fieldEditor); - }); - }, - initializeCollection: function(){ - this.permMapList = this.model.isNew() ? new VXPermMapList() : this.model.get('permMapList'); - this.auditList = this.model.isNew() ? new VXAuditMapList() : this.model.get('auditList'); - - - /*If the model passed to the fn is new return an empty collection - * otherwise return a collection that has models like - * { - * groupId : 5, - * permissionList : [4,3] - * } - * The formInputList will be passed to the forminputitemlist view. - */ - - this.formInputList = XAUtil.makeCollForGroupPermission(this.model); - this.userPermInputList = XAUtil.makeCollForUserPermission(this.model); - - }, - /** fields for the form - */ - // fields: ['name', 'description', '_vAuditListToggle', 'isEncrypt','isRecursive'], - schema :function(){ - var that = this; - //var plugginAttr = this.getPlugginAttr(true); - - return { - policyName : { - type : 'Text', - title : localization.tt("lbl.policyName"), -// validators : [{'type' :'required'}] - editorAttrs :{ maxlength: 255} - }, - topologies : { - type : 'Select2Remote', - title : localization.tt("lbl.selectTopologyName")+' *', - editorAttrs :{'data-placeholder': 'Select Topology'}, - validators : ['required'],//,{type:'regexp',regexp:/^[a-zA-Z*?][a-zA-Z0-9_'&-/\$]*[A-Za-z0-9]*$/i,message :localization.tt('validationMessages.enterValidName')}], - pluginAttr : this.getPlugginAttr(true,this.type.TOPOLOGY), - options : function(callback, editor){ - callback(); - }, - onFocusOpen : true - - - }, - /*services : { - type : 'Select2Remote', - title : localization.tt("lbl.selectServiceName"), - //validators : [{type:'regexp',regexp:/^[a-zA-Z*?][a-zA-Z0-9_'&-/\$]*[A-Za-z0-9]*$/i,message :localization.tt('validationMessages.enterValidName')}], - editorAttrs :{'data-placeholder': 'Select Service'},//'disabled' :'disabled'}, - //fieldAttrs :{'disabled' :'disabled',}, - pluginAttr : this.getPlugginAttr(true,this.type.SERVICE) - },*/ - _vAuditListToggle : { - type : 'Switch', - title : localization.tt("lbl.auditLogging"), - listType : 'VNameValue', - switchOn : true - }, - permMapList : { - getValue : function(){ - console.log(this); - } - }, - resourceStatus : { - type : 'Switch', - title : localization.tt("lbl.policyStatus"), - onText : 'enabled', - offText : 'disabled', - width : 89, - height : 22, - switchOn : true - }, - description : { - type : 'TextArea', - title : localization.tt("lbl.description"), - // validators : [/^[A-Za-z ,.'-]+$/i], - template :_.template('<div class="altField" data-editor></div>') - } - }; - }, - - evAuditChange : function(form, fieldEditor){ - XAUtil.checkDirtyFieldForToggle(fieldEditor); - if(fieldEditor.getValue() == 1){ - this.model.set('auditList', new VXAuditMapList(new VXAuditMap({ - 'auditType' : XAEnums.XAAuditType.XA_AUDIT_TYPE_ALL.value,//fieldEditor.getValue()// - 'resourceId' :this.model.get('id') - - }))); - } else { - var validation = this.formValidation(); - if(validation.groupPermSet || validation.isUsers) - this.model.unset('auditList'); - else{ - XAUtil.alertPopup({ - msg :localization.tt("msg.policyNotHavingPerm"), - callback : function(){ - fieldEditor.setValue('ON'); - } - }); - } - } - console.log(fieldEditor); - }, - evResourceStatusChange : function(form, fieldEditor){ - XAUtil.checkDirtyFieldForToggle(fieldEditor); - }, - /** on render callback */ - render: function(options) { - Backbone.Form.prototype.render.call(this, options); - this.initializePlugins(); - // this.renderSelectTagsFields(); - this.renderCustomFields(); - if(!this.model.isNew()){ - this.setUpSwitches(); - } - if(this.model.isNew() && this.fields._vAuditListToggle.editor.getValue() == 1){ - this.model.set('auditList', new VXAuditMapList(new VXAuditMap({ - 'auditType' : XAEnums.XAAuditType.XA_AUDIT_TYPE_ALL.value,//fieldEditor.getValue()// - 'resourceId' :this.model.get('id') - - }))); - } - }, - setUpSwitches :function(){ - var that = this; - var encryptStatus = false,auditStatus = false; - auditStatus = this.model.has('auditList') ? true : false; - this.fields._vAuditListToggle.editor.setValue(auditStatus); - -// _.each(_.toArray(XAEnums.BooleanValue),function(m){ -// if(parseInt(that.model.get('isEncrypt')) == m.value) -// encryptStatus = (m.label == XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false; -// }); -// this.fields.isEncrypt.editor.setValue(encryptStatus); - - if(parseInt(this.model.get('resourceStatus')) != XAEnums.BooleanValue.BOOL_TRUE.value) - this.fields.resourceStatus.editor.setValue(false); - - - }, - renderSelectTagsFields :function(){ - var that = this; - this.fields.databases.editor.$el.on('change',function(e){ - console.log('change on database Name'); - that.checkMultiselectDirtyField(e, that.type.DATABASE); - if(!_.isEmpty(e.currentTarget.value)){ - that.fields.tables.editor.$el.attr('disabled',false); - } - else{ - that.fields.udfs.editor.$el.prop('disabled',true); - } - - }); - this.fields.tables.editor.$el.on('change',function(e){ - console.log('change on table Name'); - that.checkMultiselectDirtyField(e, that.type.TABLE); - - }); - - }, - getDataParams : function(type, term){ - var dataParams = { - dataSourceName : this.assetModel.get('name') - }; - if (type == this.type.TOPOLOGY && this.fields) { - dataParams.topologyName = term; - } - if (type == this.type.SERVICE && this.fields.topologies) { - dataParams.topologyName = this.fields.topologies.editor.$el.select2('data')[0].text; - dataParams.serviceName = term; - } - return dataParams; - }, - getPlugginAttr :function(autocomplete, searchType){ - var that =this; - var type = searchType; - if(!autocomplete) - return{tags : true,width :'220px',multiple: true,minimumInputLength: 1}; - else { - - - return { - closeOnSelect : true, - //placeholder : 'Select User', - tags:true, - multiple: true, - minimumInputLength: 1, - width :'220px', - tokenSeparators: [",", " "], - initSelection : function (element, callback) { - var data = []; - $(element.val().split(",")).each(function () { - data.push({id: this, text: this}); - }); - callback(data); - }, - createSearchChoice: function(term, data) { - if ($(data).filter(function() { - return this.text.localeCompare(term) === 0; - }).length === 0) { - return { - id : term, - text: term - }; - } - }, - ajax: { - url: "service/assets/storm/resources", - dataType: 'json', - params : { - timeout: 3000 - }, - cache: false, - data: function (term, page) { - return _.extend(that.getDataParams(type, term)); - - }, - results: function (data, page) { - var results = []; - if(!_.isUndefined(data)){ - if(data.resultSize != "0"){ - results = data.vXStrings.map(function(m, i){ return {id : m.value, text: m.value}; }); - } - } - return { - results : results - }; - }, - transport: function (options) { - $.ajax(options).error(function() { - console.log("ajax failed"); - this.success({ - resultSize : 0 - }); - }); - /*$.ajax.error(function(data) { - console.log("ajax failed"); - return { - results : [] - }; - });*/ - - } - - }, - formatResult : function(result){ - return result.text; - }, - formatSelection : function(result){ - return result.text; - }, - formatNoMatches : function(term){ - switch (type){ - case that.type.TOPOLOGY :return localization.tt("msg.enterAlteastOneCharactere"); - case that.type.SERVICE :return localization.tt("msg.enterAlteastOneCharactere"); - default : return "No Matches found"; - } - } - }; - } - }, - formValidation : function(){ - var groupSet = false,permSet = false,auditStatus= false,encryptStatus= false,groupPermSet = false, groupIPSet = false, - userSet=false,userPerm = false,isUsers =false, userIPSet = false;; - console.log('validation called..'); - var breakFlag =false; - this.formInputList.each(function(m){ - if(m.has('groupId') || m.has('_vPermList') || m.has('ipAddress')){ - if(! breakFlag){ - groupSet = m.has('groupId') ? true : false ; - groupIPSet = m.has('ipAddress') ? true : false ; - if(!m.has('_vPermList')){ - permSet = false; - }else - permSet = true; - if(groupSet && permSet) - groupPermSet = true; - else - breakFlag=true; - } - } - }); - breakFlag = false; - this.userPermInputList.each(function(m){ - if(! breakFlag){ - userSet = m.has('userId') ? true : false ;//|| userSet; - userIPSet = m.has('ipAddress') ? true : false ; - if(!m.has('_vPermList')){ - userPerm = false; - }else - userPerm = true; - if(userSet && userPerm) - isUsers = true; - else - breakFlag=true; - } - }); - auditStatus = this.fields._vAuditListToggle.editor.getValue(); - if(!_.isUndefined(this.fields.isEncrypt)) - encryptStatus = this.fields.isEncrypt.editor.getValue(); - var auditLoggin = (auditStatus == XAEnums.BooleanValue.BOOL_TRUE.value) ? true : false; - var encrypted = (encryptStatus == XAEnums.BooleanValue.BOOL_TRUE.value) ? true : false; - - return { groupPermSet : groupPermSet , - groupSet : groupSet, - groupIPSet : groupIPSet, - permSet : permSet, - auditLoggin :auditLoggin, - encrypted : encrypted, - userSet : userSet, - userPerm :userPerm, - userIPSet :userIPSet , - isUsers :isUsers - }; - }, - /** all custom field rendering */ - renderCustomFields: function(){ - var that = this; - this.groupList = new VXGroupList(); - var params = {sortBy : 'name'}; - this.groupList.setPageSize(100,{fetch:false}); - this.groupList.fetch({ - cache :true, - data : params - }).done(function(){ - that.$('[data-customfields="groupPerms"]').html(new FormInputItemList({ - collection : that.formInputList, - groupList : that.groupList, - model : that.model, - policyType : XAEnums.AssetType.ASSET_STORM.value - - }).render().el); - }); - - this.userList = new VXUserList(); - var params = {sortBy : 'name'}; - this.userList.setPageSize(100,{fetch:false}); - this.userList.fetch({ - cache :true, - data : params - }).done(function(){ - that.$('[data-customfields="userPerms"]').html(new UserPermissionList({ - collection : that.userPermInputList, - model : that.model, - userList : that.userList, - policyType : XAEnums.AssetType.ASSET_STORM.value - }).render().el); - }); - }, - afterCommit : function(){ - var that = this; - //TODO FIXME remove the hard coding - //this.model.set('assetId', XAGlobals.hardcoded.HiveAssetId); - this.model.set('assetId', this.assetModel.id); - var permMapList = new VXPermMapList(); - this.formInputList.each(function(m){ - if(!_.isUndefined(m.get('groupId'))){ - var uniqueID = _.uniqueId(new Date()+':'); - _.each(m.get('groupId').split(","),function(groupId){ - _.each(m.get('_vPermList'), function(perm){ - var params = { - //groupId: m.get('groupId'), - groupId: groupId, - permFor : XAEnums.XAPermForType.XA_PERM_FOR_GROUP.value, - permType : perm.permType, - permGroup : uniqueID, - }; - //TODO FIXME remove the hardcoding - if(parseInt(groupId) == perm.groupId) - params = $.extend(params, {id : perm.id}); - if(!_.isUndefined(m.get('ipAddress'))) - params = $.extend(params, {ipAddress : m.get('ipAddress').toString()}); - - permMapList.add(new VXPermMap(params)); - }, this); - }); - } - }, this); - - this.userPermInputList.each(function(m){ - if(!_.isUndefined(m.get('userId'))){ - var uniqueID = _.uniqueId(new Date()+':'); - _.each(m.get('userId').split(","),function(userId){ - _.each(m.get('_vPermList'), function(perm){ - var params = { - //groupId: m.get('groupId'), - userId: userId, - permFor : XAEnums.XAPermForType.XA_PERM_FOR_USER.value, - permType : perm.permType, - permGroup : uniqueID, - }; - if(parseInt(userId) == perm.userId) - params = $.extend(params, {id : perm.id}); - if(!_.isUndefined(m.get('ipAddress'))) - params = $.extend(params, {ipAddress : m.get('ipAddress').toString()}); - //TODO FIXME remove the hardcoding - permMapList.add(new VXPermMap(params)); - }, this); - }); - } - }, this); - - this.model.set('permMapList', permMapList); - if(this.model.get('resourceStatus') != XAEnums.BooleanValue.BOOL_TRUE.value){ - this.model.set('resourceStatus', XAEnums.ActiveStatus.STATUS_DISABLED.value); - } - - var resourceType = _.isEmpty(this.model.get('services')) ? XAEnums.ResourceType.RESOURCE_TOPOLOGY.value : XAEnums.ResourceType.RESOURCE_SERVICE.value ; - this.model.set('resourceType',resourceType); - }, - checkMultiselectDirtyField : function(e, type){ - var elem = $(e.currentTarget),columnName='',nameList = [], newNameList = []; - switch(type){ - case 1 :columnName = 'databases';break; - case 2 :columnName = 'tables';break; - case 3 :columnName = 'columns';break; - } - if(!_.isUndefined(this.model.get(columnName)) && !_.isEqual(this.model.get(columnName),"")) - nameList = this.model.get(columnName).split(','); - if(!_.isEqual(e.currentTarget.value, "")) - newNameList = e.currentTarget.value.split(','); - XAUtil.checkDirtyField(nameList, newNameList, elem); - }, - /** all post render plugin initialization */ - initializePlugins: function(){ - } - - }); - - return HivePolicyForm; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/storm/StormTableLayout.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/scripts/views/storm/StormTableLayout.js b/security-admin/src/main/webapp/scripts/views/storm/StormTableLayout.js deleted file mode 100644 index cf8b1e5..0000000 --- a/security-admin/src/main/webapp/scripts/views/storm/StormTableLayout.js +++ /dev/null @@ -1,351 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -define(function(require){ - 'use strict'; - - var Backbone = require('backbone'); - var XAEnums = require('utils/XAEnums'); - var XALinks = require('modules/XALinks'); - var XAGlobals = require('utils/XAGlobals'); - var SessionMgr = require('mgrs/SessionMgr'); - var XAUtil = require('utils/XAUtils'); - - var VXResource = require('models/VXResource'); - - var XABackgrid = require('views/common/XABackgrid'); - var XATableLayout = require('views/common/XATableLayout'); - var localization = require('utils/XALangSupport'); - var vFolderInfo = require('views/folders/FolderInfo'); - var StormTableLayoutTmpl = require('hbs!tmpl/storm/StormTableLayout_tmpl'); - - var StormTableLayout = Backbone.Marionette.Layout.extend( - /** @lends StormTableLayout */ - { - _viewName : 'StormTableLayout', - - template: StormTableLayoutTmpl, - templateHelpers :function(){ - return { - isSysAdmin :this.isSysAdmin, - assetId : this.assetModel.id, - assetModel : this.assetModel, - version : XAGlobals.version - }; - }, - breadCrumbs : function(){ - return [XALinks.get('RepositoryManager'),XALinks.get('ManageStormPolicies',{model : this.assetModel})]; - }, - /** Layout sub regions */ - regions: { - 'rTableList' :'div[data-id="r_tableList"]', - 'rPolicyDetail' : '#policyDetail' - }, - - /** ui selector cache */ - ui: { - 'btnExport' : 'a[data-js="export"]', - 'btnDeletePolicy' : '[data-name="deletePolicy"]', - 'btnShowMore' : '[data-id="showMore"]', - 'btnShowLess' : '[data-id="showLess"]', - 'visualSearch' : '.visual_search' - }, - - /** ui events hash */ - events: function() { - var events = {}; - //events['change ' + this.ui.input] = 'onInputChange'; - events['click ' + this.ui.btnExport] = 'onExport'; - events['click ' + this.ui.btnDeletePolicy] = 'onDelete'; - events['click ' + this.ui.btnShowMore] = 'onShowMore'; - events['click ' + this.ui.btnShowLess] = 'onShowLess'; - return events; - }, - - /** - * intialize a new StormTableLayout Layout - * @constructs - */ - initialize: function(options) { - console.log("initialized a StormTableLayout Layout"); - - _.extend(this, _.pick(options, 'assetModel')); - this.collection.extraSearchParams = { - // resourceType : XAEnums.AssetType.ASSET_HIVE.value - assetId : this.assetModel.id - }; - this.bindEvents(); - this.isSysAdmin = SessionMgr.isSystemAdmin(); - }, - - /** all events binding here */ - bindEvents : function(){ - //this.listenTo(this.collection, "remove", this.render, this); - /*this.listenTo(communicator.vent,'someView:someEvent', this.someEventHandler, this)'*/ - }, - - /** on render callback */ - onRender: function() { - var that = this; - this.initializePlugins(); - this.addVisualSearch(); - this.renderTable(); - XAUtil.highlightDisabledPolicy(this); - }, - - /** all post render plugin initialization */ - initializePlugins: function(){ - }, - renderTable : function(){ - var that = this; - /*var tableRow = Backgrid.Row.extend({ - events: { - 'click' : 'onClick' - }, - initialize : function(){ - var that = this; - var args = Array.prototype.slice.apply(arguments); - Backgrid.Row.prototype.initialize.apply(this, args); - this.listenTo(this.model, 'model1:highlightBackgridRow', function(){ - that.$el.addClass("alert"); - $("html, body").animate({scrollTop: that.$el.position().top},"linear"); - setTimeout(function () { - that.$el.removeClass("alert"); - }, 1500); - }, this); - }, - onClick: function (e) { - if($(e.toElement).is('.icon-edit,.icon-trash,a,code')) - return; - this.$el.parent('tbody').find('tr').removeClass('tr-active'); - this.$el.toggleClass('tr-active'); - if(that.rPolicyDetail){ - $(that.rPolicyDetail.el).hide(); - $(that.rPolicyDetail.el).html(new vFolderInfo({ - model : this.model - }).render().$el).slideDown(); - } - - } - });*/ - this.rTableList.show(new XATableLayout({ - columns: this.getColumns(), - collection: this.collection, - includeFilter : false, - gridOpts : { -// row: tableRow, - header : XABackgrid, - emptyText : 'No Policies found!' - } - })); - }, - - getColumns : function(){ - var cols = { - policyName : { - cell : "uri", - href: function(model){ - return '#!/storm/'+model.get('assetId')+'/policy/' + model.id; - }, - label : localization.tt("lbl.policyName"), - editable: false, - sortable : false - }, - topologies : { - label : localization.tt("lbl.topologyName")+'(s)', - /*href: function(model){ - return '#!/storm/'+model.get('assetId')+'/policy/' + model.id; - },*/ - editable:false, -// cell :'uri', - cell :'string', - sortable : false - - }, - /*services: { - label : localization.tt("lbl.serivceName")+'(s)', - editable:false, - cell :'string', - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { return rawValue ? rawValue : '--';} - }), - sortable : false - },*/ - permMapList : { - reName : 'groupName', - cell : Backgrid.HtmlCell.extend({className: 'cellWidth-1'}), - label : localization.tt("lbl.group"), - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - if(!_.isUndefined(rawValue)) - return XAUtil.showGroups(rawValue); - else - return '--'; - } - }), - editable : false, - sortable : false - }, - auditList : { - label : localization.tt("lbl.auditLogging"), - cell: "html", - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue, model) { - return model.has('auditList') ? '<label class="label label-success">ON</label>' : '<label class="label label">OFF</label>'; - } - }), - click : false, - drag : false, - sortable : false, - editable : false - }, - resourceStatus:{ - label:localization.tt('lbl.status'), - cell :"html", - editable:false, - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue) { - var status; - _.each(_.toArray(XAEnums.BooleanValue),function(m){ - if(parseInt(rawValue) == m.value){ - status = (m.label == XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false; - } - }); - return status ? '<label class="label label-success">Enabled</label>' : '<label class="label label-important">Disabled</label>'; - } - }), - click : false, - drag : false, - sortable : false - }, - permissions : { - cell : "html", - label : localization.tt("lbl.action"), - formatter: _.extend({}, Backgrid.CellFormatter.prototype, { - fromRaw: function (rawValue,model) { - return '<a href="#!/storm/'+model.get('assetId')+'/policy/'+model.id+'" class="btn btn-mini" title="Edit"><i class="icon-edit icon-large" /></a>\ - <a href="javascript:void(0);" data-name ="deletePolicy" data-id="'+model.id+'" class="btn btn-mini btn-danger" title="Delete"><i class="icon-trash icon-large" /></a>'; - //You can use rawValue to custom your html, you can change this value using the name parameter. - } - }), - editable:false, - sortable : false - } - - }; - return this.collection.constructor.getTableCols(cols, this.collection); - }, - - onExport : function(e){ - $(e.currentTarget).attr('href', 'service/assets/policyList/'+this.assetModel.get('name')+'?epoch=0'); - //$(e.currentTarget).attr('href', 'service/assets/hive?epoch=0'); - }, - onDelete :function(e){ - var that = this; - var obj = this.collection.get($(e.currentTarget).data('id')); - var model = new VXResource(obj.attributes); - model.collection = this.collection; - XAUtil.confirmPopup({ - //msg :localize.tt('msg.confirmDelete'), - msg :'Are you sure want to delete ?', - callback : function(){ - XAUtil.blockUI(); - model.destroy({ - success: function(model, response) { - XAUtil.blockUI('unblock'); - that.collection.remove(model.get('id')); - $(that.rPolicyDetail.el).hide(); - XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg')); - if(that.collection.length == 0){ - that.renderTable(); - that.collection.fetch(); - } - }, - error: function (model, response, options) { - XAUtil.blockUI('unblock'); - if ( response && response.responseJSON && response.responseJSON.msgDesc){ - XAUtil.notifyError('Error', response.responseJSON.msgDesc); - }else - XAUtil.notifyError('Error', 'Error deleting Policy!'); - console.log("error"); - } - }); - } - }); - }, - onShowMore : function(e){ - var id = $(e.currentTarget).attr('policy-group-id'); - this.rTableList.$el.find('[policy-group-id="'+id+'"]').show(); - $('[data-id="showLess"][policy-group-id="'+id+'"]').show(); - $('[data-id="showMore"][policy-group-id="'+id+'"]').hide(); - }, - onShowLess : function(e){ - var id = $(e.currentTarget).attr('policy-group-id'); - this.rTableList.$el.find('[policy-group-id="'+id+'"]').slice(4).hide(); - $('[data-id="showLess"][policy-group-id="'+id+'"]').hide(); - $('[data-id="showMore"][policy-group-id="'+id+'"]').show(); - }, - addVisualSearch : function(){ - var that = this; - var searchOpt = ['Topology Name(s)',,'Group','Policy Name'];//,'Start Date','End Date','Today']; - var serverAttrName = [{text : "Topology Name(s)", label :"topologies"}, - {text : "Group", label :"groupName"},{text : "Policy Name", label :"policyName"}]; - // {text : 'Start Date',label :'startDate'},{text : 'End Date',label :'endDate'}, - // {text : 'Today',label :'today'}]; - - var pluginAttr = { - placeholder :localization.tt('h.searchForPolicy'), - container : this.ui.visualSearch, - query : '', - callbacks : { - valueMatches :function(facet, searchTerm, callback) { - switch (facet) { - case 'Result': - callback(XAUtil.enumToSelectLabelValuePairs(XAEnums.AuthStatus)); - break; - case 'Login Type': - callback(XAUtil.enumToSelectLabelValuePairs(XAEnums.AuthType)); - break; - /* case 'Start Date' : - setTimeout(function () { XAUtil.displayDatepicker(that.ui.visualSearch, callback); }, 0); - break; - case 'End Date' : - setTimeout(function () { XAUtil.displayDatepicker(that.ui.visualSearch, callback); }, 0); - break; - case 'Today' : - var today = Globalize.format(new Date(),"yyyy/mm/dd"); - callback([today]); - break;*/ - } - - } - } - }; - XAUtil.addVisualSearch(searchOpt,serverAttrName, this.collection,pluginAttr); - }, - - /** on close */ - onClose: function(){ - } - - }); - - return StormTableLayout; -}); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/styles/xa.css ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/styles/xa.css b/security-admin/src/main/webapp/styles/xa.css index 89f3a47..6ee259f 100644 --- a/security-admin/src/main/webapp/styles/xa.css +++ b/security-admin/src/main/webapp/styles/xa.css @@ -1704,4 +1704,24 @@ margin-bottom: 5px; } .margin-bottom-57 { margin-bottom:57px; +} +.table .table { + width:auto; +} +.width-25{ + width:25%; +} +.margin-left-0{ + margin-left:0%!important; +} + +.policy-manager .row-fluid [class*="span"]:first-child { + margin-left: 1%; +} +.policy-manager .row-fluid [class*="span"] { + margin-left: 1%; + margin-right: 1%; +} +.policy-manager .row-fluid [class*="span"]:nth-child(3n+4) { + clear: both; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html b/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html index a6ef7af..7d283a9 100644 --- a/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html +++ b/security-admin/src/main/webapp/templates/common/ServiceManagerLayout_tmpl.html @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. --}} -<h3 class="wrap-header bold">{{tt 'h.repositoryManager'}}</h3> +<h3 class="wrap-header bold">{{tt 'h.serviceManager'}}</h3> <div class="wrap non-collapsible policy-manager"> <div class="row-fluid"> http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/templates/helpers/XAHelpers.js ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/templates/helpers/XAHelpers.js b/security-admin/src/main/webapp/templates/helpers/XAHelpers.js index dff2bfe..33f7642 100644 --- a/security-admin/src/main/webapp/templates/helpers/XAHelpers.js +++ b/security-admin/src/main/webapp/templates/helpers/XAHelpers.js @@ -501,7 +501,7 @@ <a data-id="'+serv.id+'" href="#!/service/'+serv.id+'/policies">'+serv.attributes.name+'</a>\ <div class="pull-right">\ <a data-id="'+serv.id+'" class="btn btn-mini" href="#!/service/'+serviceDef.id+'/edit/'+serv.id+'" title="Edit"><i class="icon-edit"></i></a>\ - <a data-id="'+serv.id+'" class="deleteRep btn btn-mini btn-danger" href="javascript:void(0);" title="Delete">\ + <a data-id="'+serv.id+'" class="deleteRepo btn btn-mini btn-danger" href="javascript:void(0);" title="Delete">\ <i class="icon-trash"></i></a>\ </div>\ </div>\ http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/templates/policies/PermissionItem.html ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/templates/policies/PermissionItem.html b/security-admin/src/main/webapp/templates/policies/PermissionItem.html index e1a7166..20b4c75 100644 --- a/security-admin/src/main/webapp/templates/policies/PermissionItem.html +++ b/security-admin/src/main/webapp/templates/policies/PermissionItem.html @@ -14,21 +14,23 @@ See the License for the specific language governing permissions and limitations under the License. --}} -<td> +<td class="width-25"> <input type="text" data-js="selectGroups" /> </td> -<td> +<td class="width-25"> <input type="text" data-js="selectUsers" /> </td> {{#if policyConditions}} <td> <a href="#" id="policyConditions" data-type="policyConditions" data-original-title="Policy Conditions" title="add/edit conditions"></a> + <span class="add-conditions link-tag" style="margin-left: 3%; color: green; cursor: pointer;" title="add"><i class="icon-plus"></i></span> </td> {{/if}} <td> - <a href="#" data-js="permissions" data-type="checklist" data-title="Select permissions" title="add/edit permissions"></a> + <a href="#" data-js="permissions" data-type="checklist" data-title="Select permissions" title="add/edit permissions" /> + <span class="add-permissions link-tag" style="margin-left: 3%; color: green; cursor: pointer;" title="add"><i class="icon-plus"></i></span> </td> -<td> +<td style=" width: 12%; "> <input data-js="delegatedAdmin" type="checkbox"> </td> <td> http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/templates/service/ServiceTableLayout_tmpl.html ---------------------------------------------------------------------- diff --git a/security-admin/src/main/webapp/templates/service/ServiceTableLayout_tmpl.html b/security-admin/src/main/webapp/templates/service/ServiceTableLayout_tmpl.html index 4769039..970bd06 100644 --- a/security-admin/src/main/webapp/templates/service/ServiceTableLayout_tmpl.html +++ b/security-admin/src/main/webapp/templates/service/ServiceTableLayout_tmpl.html @@ -18,7 +18,7 @@ <div class="wrap non-collapsible m-height"> <div class="span12"> <div class="clearfix"> - <a href="#!/policy/create" class="btn btn-primary btn-right" type="button"> {{tt 'lbl.addNewAsset'}} </a> + <a href="#!/policy/create" class="btn btn-primary btn-right" type="button" style=" font-size: 14px; "> {{tt 'lbl.addNewAsset'}} </a> <div data-id="r_filter" class="pull-left wrap-filter"></div> </div>
