http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/knox/KnoxPolicyForm.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/knox/KnoxPolicyForm.js 
b/security-admin/src/main/webapp/scripts/views/knox/KnoxPolicyForm.js
deleted file mode 100644
index b34f132..0000000
--- a/security-admin/src/main/webapp/scripts/views/knox/KnoxPolicyForm.js
+++ /dev/null
@@ -1,524 +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"),
-                                          editorAttrs  :{ maxlength: 255},
-//                                        validators   : [{'type' 
:'required'}] 
-                               },
-                               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  : 
['required'],//[{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/knox/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_KNOX.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_KNOX.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);
-                       this.setResourceTypeAsPerWildCard();
-               },
-               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);
-               },
-               setResourceTypeAsPerWildCard :function(){
-                       var type = this.model.get('resourceType');
-                       //Set resourceType as per WildCard operator '*'
-                       switch(this.model.get('resourceType')){
-                               case 
XAEnums.ResourceType.RESOURCE_SERVICE.value :
-                                       
if(_.isEqual(this.model.get('services'),"*")){
-                                               type = 
XAEnums.ResourceType.RESOURCE_TOPOLOGY.value;
-                                               
-                                       }
-                                       break;
-                       }
-                       this.model.set('resourceType',type);
-               },
-               /** 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/knox/KnoxTableLayout.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/knox/KnoxTableLayout.js 
b/security-admin/src/main/webapp/scripts/views/knox/KnoxTableLayout.js
deleted file mode 100644
index 6564e87..0000000
--- a/security-admin/src/main/webapp/scripts/views/knox/KnoxTableLayout.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 KnoxTableLayoutTmpl = require('hbs!tmpl/knox/KnoxTableLayout_tmpl');
-
-       var KnoxTableLayout = Backbone.Marionette.Layout.extend(
-       /** @lends KnoxTableLayout */
-       {
-               _viewName : 'KnoxTableLayout',
-               
-       template: KnoxTableLayoutTmpl,
-       templateHelpers :function(){
-               return {
-                       isSysAdmin :this.isSysAdmin,
-                       assetId           : this.assetModel.id,
-                       assetModel : this.assetModel,
-                       version : XAGlobals.version
-               };
-       },
-       breadCrumbs : function(){
-               return 
[XALinks.get('RepositoryManager'),XALinks.get('ManageKnoxPolicies',{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 KnoxTableLayout Layout 
-               * @constructs
-               */
-               initialize: function(options) {
-                       console.log("initialized a KnoxTableLayout 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 
'#!/knox/'+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 
'#!/knox/'+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="#!/knox/'+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)','Service 
Name(s)',,'Group','Policy Name'];//,'Start Date','End Date','Today'];
-                       var serverAttrName  = [{text : "Topology Name(s)", 
label :"topologies"}, {text : "Service Name(s)", label :"services"},
-                                              {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 KnoxTableLayout; 
-});

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js 
b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
index a44305d..004f9fa 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/PermissionList.js
@@ -51,7 +51,9 @@ define(function(require) {
                        selectUsers             : '[data-js="selectUsers"]',
                        addPerms                : 'a[data-js="permissions"]',
                        conditionsTags  : '[class=tags1]',
-                       delegatedAdmin  : 'input[data-js="delegatedAdmin"]'
+                       delegatedAdmin  : 'input[data-js="delegatedAdmin"]',
+                       addPermissionsSpan : '.add-permissions',
+                       addConditionsSpan : '.add-conditions',
                },
                events : {
                        'click [data-action="delete"]'  : 'evDelete',
@@ -74,6 +76,7 @@ define(function(require) {
                        this.createDropDown(this.ui.selectGroups, 
this.groupList, true);
                        this.createDropDown(this.ui.selectUsers, this.userList, 
false);
                        //groups or users select2 dropdown change vent 
+                       
                        this.dropDownChange(this.ui.selectGroups);
                        this.dropDownChange(this.ui.selectUsers);
                        //render permissions and policy conditions
@@ -236,6 +239,8 @@ define(function(require) {
                                        if(_.isNull(values) || 
_.isEmpty(values)){
                                                $(this).empty();
                                                that.model.unset('accesses');
+                                               
that.ui.addPermissionsSpan.find('i').attr('class', 'icon-plus');
+                                               
that.ui.addPermissionsSpan.attr('title','add');
                                                return;
                                        }
                                        if(_.contains(values,"-1")){
@@ -247,7 +252,7 @@ define(function(require) {
                                                if(!_.isUndefined(id)){
                                                        var obj = 
_.findWhere(srcData,{'value' : id});
                                                        
permTypeArr.push({permType : obj.value});
-                                                       return "<span 
class='label label-inverse'>" + obj.text + "</span>";
+                                                       return "<span 
class='label label-info'>" + obj.text + "</span>";
                                                }
                                        });
                                        var perms = []
@@ -269,26 +274,37 @@ define(function(require) {
                                                that.model.set('accesses', 
that.accessItems);
                                        
                                        $(this).html(valArr.join(" "));
+                                       
that.ui.addPermissionsSpan.find('i').attr('class', 'icon-pencil');
+                                       
that.ui.addPermissionsSpan.attr('title','edit');
                                },
                        }).on('click', function(e) {
                                e.stopPropagation();
                                e.preventDefault();
-                               var selectAll = true;
-                               var checklist = 
that.$('.editable-checklist').find('input[type="checkbox"]')
-                               _.each(checklist,function(checkbox){ 
if($(checkbox).val() != -1 && !$(checkbox).is(':checked')) selectAll = false;})
-                               if(selectAll){
-                                       
that.$('.editable-checklist').find('input[type="checkbox"][value="-1"]').prop('checked',true)
-                               }
-                               //for selectAll functionality
-                               
that.$('input[type="checkbox"][value="-1"]').click(function(e){
-                                       var checkboxlist 
=$(this).closest('.editable-checklist').find('input[type="checkbox"][value!=-1]')
-                                       $(this).is(':checked') ? 
checkboxlist.prop('checked',true) : checkboxlist.prop('checked',false); 
-                                       
-                               });
-                               
+                               that.clickOnPermissions(that);
+                       });
+                       that.ui.addPermissionsSpan.click(function(e) {
+                               e.stopPropagation();
+                               
that.$('a[data-js="permissions"]').editable('toggle');
+                               that.clickOnPermissions(that);
                        });
                        
                },
+               clickOnPermissions : function(that) {
+                       var selectAll = true;
+                       var checklist = 
that.$('.editable-checklist').find('input[type="checkbox"]')
+                       _.each(checklist,function(checkbox){ 
if($(checkbox).val() != -1 && !$(checkbox).is(':checked')) selectAll = false;})
+                       if(selectAll){
+                               
that.$('.editable-checklist').find('input[type="checkbox"][value="-1"]').prop('checked',true)
+                       }else{
+                               
that.$('.editable-checklist').find('input[type="checkbox"][value="-1"]').prop('checked',false)
+                       }
+                       //for selectAll functionality
+                       
that.$('input[type="checkbox"][value="-1"]').click(function(e){
+                               var checkboxlist 
=$(this).closest('.editable-checklist').find('input[type="checkbox"][value!=-1]')
+                               $(this).is(':checked') ? 
checkboxlist.prop('checked',true) : checkboxlist.prop('checked',false); 
+                               
+                       });
+               },
                renderPolicyCondtion : function() {
                        var that = this;
                        
@@ -317,13 +333,22 @@ define(function(require) {
                                                        });
                                                        var cond = _.map(value, 
function(val, name) {return {'type' : name, 'value' :val};});
                                                        
that.model.set('conditions', cond);
-                                                       $(this).html(html); 
+                                                       $(this).html(html);
+                                                       
that.ui.addConditionsSpan.find('i').attr('class', 'icon-pencil');
+                                                       
that.ui.addConditionsSpan.attr('title','edit');
                                                }else{
                                                        
that.model.unset('conditions');
                                                        $(this).empty();
+                                                       
that.ui.addConditionsSpan.find('i').attr('class', 'icon-plus');
+                                                       
that.ui.addConditionsSpan.attr('title','add');
                                                }
                                        }
                                });
+                               that.ui.addConditionsSpan.click(function(e) {
+                                       e.stopPropagation();
+                                       
that.$('#policyConditions').editable('toggle');
+                               });
+                               
                        }
                },
                getSelectdValues : function($select, typeGroup){

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
index 1407614..7c40ade 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
@@ -73,7 +73,7 @@ define(function(require){
                        var events = {};
                        events['click ' + this.ui.btnSave]              = 
'onSave';
                        events['click ' + this.ui.btnCancel]    = 'onCancel';
-//                     events['click ' + this.ui.btnDelete]    = 'onDelete';
+                       events['click ' + this.ui.btnDelete]    = 'onDelete';
                        
                        return events;
                },
@@ -161,6 +161,32 @@ define(function(require){
                        
App.appRouter.navigate("#!/service/"+this.rangerService.id+"/policies",{trigger:
 true});
 
                },
+               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("#!/service/"+that.rangerService.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");
+                                               }
+                                       });
+                               }
+                       });
+               },
                /** on close */
                onClose: function(){
                        XAUtil.allowNavigation();

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
index 5726dd1..de14a37 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyTableLayout.js
@@ -33,6 +33,7 @@ define(function(require){
        var localization        = require('utils/XALangSupport');
        var vFolderInfo = require('views/folders/FolderInfo');
        var RangerServiceDef    = require('models/RangerServiceDef');
+       var RangerPolicy                = require('models/RangerPolicy');
        var RangerPolicyTableLayoutTmpl = 
require('hbs!tmpl/policies/RangerPolicyTableLayout_tmpl');
 
        require('backgrid-filter');
@@ -59,7 +60,7 @@ define(function(require){
                },
         
        breadCrumbs : function(){
-               return 
[XALinks.get('RepositoryManager'),XALinks.get('ManagePolicies',{model : 
this.rangerService})];
+               return 
[XALinks.get('ServiceManager'),XALinks.get('ManagePolicies',{model : 
this.rangerService})];
 //             return [];
                },        
 
@@ -79,7 +80,7 @@ define(function(require){
                /** ui events hash */
                events: function() {
                        var events = {};
-//                     events['click ' + this.ui.btnDeletePolicy]  = 
'onDelete';
+                       events['click ' + this.ui.btnDeletePolicy]  = 
'onDelete';
                        events['click ' + this.ui.btnShowMore]  = 'onShowMore';
                        events['click ' + this.ui.btnShowLess]  = 'onShowLess';
                        
@@ -125,8 +126,6 @@ define(function(require){
 //                     this.initializePlugins();
 //                     this.addVisualSearch();
                        this.renderTable();
-                       //TODO REMOVE
-                       this.rTableList.$el.find('th[class="renderable 
table"]').removeClass('table')
                        
 //                     XAUtil.highlightDisabledPolicy(this);
                },
@@ -186,8 +185,39 @@ define(function(require){
                                        drag : false,
                                        sortable : false
                                },
+                               policyItems : {
+                                       reName : 'groupName',
+                                       cell    : 
Backgrid.HtmlCell.extend({className: 'cellWidth-1'}),
+                                       label : localization.tt("lbl.group"),
+                                       formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
+                                               fromRaw: function (rawValue, 
model) {
+                                                       
if(!_.isUndefined(rawValue))
+                                                               return 
XAUtil.showGroupsOrUsersForPolicy(rawValue, model);
+                                                       else 
+                                                               return '--';
+                                               }
+                                       }),
+                                       editable : false,
+                                       sortable : false
+                               },
+                               //Hack for backgrid plugin doesn't allow to 
have same column name 
+                               guid : {
+                                       reName : 'userName',
+                                       cell    : 
Backgrid.HtmlCell.extend({className: 'cellWidth-1'}),
+                                       label : localization.tt("lbl.users"),
+                                       formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
+                                               fromRaw: function (rawValue, 
model) {
+                                                       
if(!_.isUndefined(rawValue))
+                                                               return 
XAUtil.showGroupsOrUsersForPolicy(model.get('policyItems'), model, false);
+                                                       else 
+                                                               return '--';
+                                               }
+                                       }),
+                                       editable : false,
+                                       sortable : false
+                               },
                        };
-                       _.each(this.rangerServiceDefModel.get('resources'), 
function(obj){
+                       /*_.each(this.rangerServiceDefModel.get('resources'), 
function(obj){
                                if(!_.isUndefined(obj) && !_.isNull(obj))
                                         cols[obj.name]={
                                                        cell : "html",
@@ -202,14 +232,28 @@ define(function(require){
                                                        })
                                                };
 
-                       });
+                       });*/
+                       cols['permissions'] = {
+                               cell :  "html",
+                               label : localization.tt("lbl.action"),
+                               formatter: _.extend({}, 
Backgrid.CellFormatter.prototype, {
+                                       fromRaw: function (rawValue,model) {
+                                               return '<a 
href="#!/service/'+that.rangerService.id+'/policies/'+model.id+'/edit" 
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);
                },
                onDelete :function(e){
                        var that = this;
-                       var VXResource = require('models/VXResource');
+                       
                        var obj = 
this.collection.get($(e.currentTarget).data('id'));
-                       var model = new VXResource(obj.attributes);
+                       var model = new RangerPolicy(obj.attributes);
                        model.collection = this.collection;
                        XAUtil.confirmPopup({
                                //msg :localize.tt('msg.confirmDelete'),
@@ -220,7 +264,6 @@ define(function(require){
                                                success: function(model, 
response) {
                                                        
XAUtil.blockUI('unblock');
                                                        
that.collection.remove(model.get('id'));
-                                                       
$(that.rFolderInfo.el).hide();
                                                        
XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg'));
                                                        
if(that.collection.length ==  0){
                                                                
that.renderTable();
@@ -240,16 +283,28 @@ define(function(require){
                        });
                },
                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();
+                       var attrName = 'policy-groups-id';
+                       var id = $(e.currentTarget).attr(attrName);
+                       if(_.isUndefined(id)){
+                               id = $(e.currentTarget).attr('policy-users-id');
+                               attrName = 'policy-users-id';
+                       }   
+                       var $td = $(e.currentTarget).parents('td');
+                       $td.find('['+attrName+'="'+id+'"]').show();
+                       
$td.find('[data-id="showLess"]['+attrName+'="'+id+'"]').show();
+                       
$td.find('[data-id="showMore"]['+attrName+'="'+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();
+                       var attrName = 'policy-groups-id';
+                       var id = $(e.currentTarget).attr(attrName);
+                       if(_.isUndefined(id)){
+                               id = $(e.currentTarget).attr('policy-users-id');
+                               attrName = 'policy-users-id';
+                       }
+                       var $td = $(e.currentTarget).parents('td');
+                       $td.find('['+attrName+'="'+id+'"]').slice(4).hide();
+                       
$td.find('[data-id="showLess"]['+attrName+'="'+id+'"]').hide();
+                       
$td.find('[data-id="showMore"]['+attrName+'="'+id+'"]').show();
                },
                addVisualSearch : function(){
                        var that = this;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/policy/PolicyCreate.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policy/PolicyCreate.js 
b/security-admin/src/main/webapp/scripts/views/policy/PolicyCreate.js
deleted file mode 100644
index 27b2032..0000000
--- a/security-admin/src/main/webapp/scripts/views/policy/PolicyCreate.js
+++ /dev/null
@@ -1,308 +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.
- */
-
- 
-/* 
- * Policy create view
- */
-
-define(function(require){
-    'use strict';
-
-       var Backbone            = require('backbone');
-       var App                         = require('App');
-       var XAEnums                     = require('utils/XAEnums');
-       var XAUtil                      = require('utils/XAUtils');
-       var XALinks             = require('modules/XALinks');
-       var localization        = require('utils/XALangSupport');
-       
-       var PolicycreateTmpl = require('hbs!tmpl/hdfs/PolicyCreate_tmpl');
-       var PolicyForm          = require('views/policy/PolicyForm');
-       var VXResourceList      = require('collections/VXResourceList');
-
-       var PolicyCreate = Backbone.Marionette.Layout.extend(
-       /** @lends PolicyCreate */
-       {
-               _viewName : 'PolicyCreate',
-               
-       template: PolicycreateTmpl,
-       templateHelpers : function(){
-               return {
-                       editPolicy : this.editPolicy
-               };
-       },
-       breadCrumbs :function(){
-               
-               if(this.model.isNew())
-                       return 
[XALinks.get('RepositoryManager'),XALinks.get('ManagePolicies',{model : 
this.assetModel}),XALinks.get('PolicyCreate')];
-               else
-                       return 
[XALinks.get('RepositoryManager'),XALinks.get('ManagePolicies',{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 PolicyCreate Layout 
-               * @constructs
-               */
-               initialize: function(options) {
-                       var that = this;
-                       console.log("initialized a PolicyCreate Layout");
-
-                       _.extend(this, _.pick(options, 'assetModel'));
-                       
-                       that.form = new PolicyForm({
-                               template : 
require('hbs!tmpl/hdfs/PolicyForm_tmpl'),
-                               model : this.model,
-                               assetModel : this.assetModel
-                       });
-
-                       this.editPolicy = this.model.has('id') ? true : false;
-                       this.bindEvents();
-                       this.params = {};
-               },
-
-               /** 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.rForm.$el.dirtyFields();
-                       
XAUtil.preventNavigation(localization.tt('dialogMsg.preventNavPolicyForm'),this.rForm.$el);
-                       this.initializePlugins();
-               },
-
-               /** 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 valid = false;
-                       var errors = this.form.commit({validate : false});
-                       if(! _.isEmpty(errors)){
-                               return;
-                       }
-                       var validateObj = this.form.formValidation();
-                       valid = (validateObj.groupSet && validateObj.permSet) 
|| (validateObj.userSet && validateObj.userPerm);
-                       if(!valid){
-                               if(validateObj.groupSet && 
(!validateObj.permSet)){
-                                       
this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj);
-                               }else if((!validateObj.groupSet) && 
(validateObj.permSet)) {
-                                       
this.popupCallBack(localization.tt('msg.addGroup'),validateObj);
-                                               
-                               }else if(validateObj.userSet && 
(!validateObj.userPerm)){
-                                       
this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj);
-                               }else if((!validateObj.userSet) && 
(validateObj.userPerm)) {
-                                       
this.popupCallBack(localization.tt('msg.addUser'),validateObj);
-                                               
-                               }else if((!validateObj.auditLoggin) && 
(!validateObj.groupPermSet)){
-                                       XAUtil.alertPopup({
-                                               msg 
:localization.tt('msg.yourAuditLogginIsOff'),
-                                               callback : function(){
-                                                       
/*if(!that.model.isNew()){
-                                                               
that.model.destroy({success: function(model, response) {
-                                                                       
XAUtil.notifySuccess('Success', localization.tt('msg.policyDeleteMsg'));
-                                                                       
App.appRouter.navigate("#!/hdfs/"+that.assetModel.id+"/policies",{trigger: 
true});
-                                                               }});
-                                                       }else{
-                                                               
XAUtil.notifyError('Error', localization.tt('msg.policyNotAddedMsg'));
-                                                               
App.appRouter.navigate("#!/hdfs/"+that.assetModel.id+"/policies",{trigger: 
true});
-                                                       }*/
-                                               }
-                                       });
-                               }else{
-                                       this.savePolicy();
-                               }
-                       }else{
-                               if(validateObj.groupSet && 
(!validateObj.permSet)){
-                                       
this.popupCallBack(localization.tt('msg.addGroupPermission'),validateObj);
-                               }else if((!validateObj.groupSet) && 
(validateObj.permSet)) {
-                                       
this.popupCallBack(localization.tt('msg.addGroup'),validateObj);
-                                               
-                               }else if(validateObj.userSet && 
(!validateObj.userPerm)){
-                                       
this.popupCallBack(localization.tt('msg.addUserPermission'),validateObj);
-                               }else if((!validateObj.userSet) && 
(validateObj.userPerm)) {
-                                       
this.popupCallBack(localization.tt('msg.addUser'),validateObj);
-                                               
-                               }else
-                                       this.savePolicy();
-                       }
-                       
-               },
-               savePolicy : function(){
-                       var that = this;
-                       this.form.beforeSave();
-                       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("#!/hdfs/"+that.assetModel.id+"/policies",{trigger: 
true});
-                                               return;
-                                       }
-                                       
-                                       
App.appRouter.navigate("#!/hdfs/"+that.assetModel.id+"/policies",{trigger: 
true});
-                                       
-                                       var view = 
require('views/hdfs/HDFSTableLayout');
-                                       var resourceListForAsset = new 
VXResourceList([],{
-                                                  queryParams : {
-                                                          'assetId' : 
that.assetModel.id 
-                                                  }
-                                          });
-                                       resourceListForAsset.fetch({
-                                               cache : true,
-                                               'data' : {
-                               //                      
'resourceType':XAEnums.AssetType.ASSET_HDFS.value,
-                                                       'assetId' 
:that.assetModel.id
-                                               }
-                                       }).done(function(){
-                                               var newColl = 
resourceListForAsset;
-                                               
resourceListForAsset.getLastPage({
-                                                       cache : false,
-                                                       data  : {
-                       //                                      'resourceType' 
: XAEnums.AssetType.ASSET_HDFS.value,
-                                                               'assetId' : 
that.assetModel.id
-                                                       }
-                                               }).done(function(){
-                                                       var model = 
newColl.get(that.model.id);
-                                                       if(model){
-                                                               
model.trigger("model: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{
-                                                       
that.form.fields.name.setError(response.responseJSON.msgDesc);
-                                                       
XAUtil.scrollToField(that.form.fields.name.$el);
-                                                       
//XAUtil.notifyError('Error', response.responseJSON.msgDesc);
-                                                   }
-                                               }else{
-                                                   
//that.form.fields.name.setError(response.responseJSON.msgDesc);
-                                                   
//XAUtil.scrollToField(that.form.fields.name.$el);
-                                                   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("#!/hdfs/"+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("#!/hdfs/"+this.assetModel.id+"/policies",{trigger: 
true});
-
-               },
-               /** on close */
-               onClose: function(){
-                       XAUtil.allowNavigation();
-               }
-
-       });
-
-       return PolicyCreate;
-});

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/policy/PolicyForm.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/views/policy/PolicyForm.js 
b/security-admin/src/main/webapp/scripts/views/policy/PolicyForm.js
deleted file mode 100644
index 1ad8ca1..0000000
--- a/security-admin/src/main/webapp/scripts/views/policy/PolicyForm.js
+++ /dev/null
@@ -1,501 +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 VXAuditMap          = require('models/VXAuditMap');
-       var VXPermMap           = require('models/VXPermMap');
-       var VXPermMapList       = require('collections/VXPermMapList');
-       var VXGroupList         = require('collections/VXGroupList');
-       var VXAuditMapList      = require('collections/VXAuditMapList');
-       var VXUserList          = require('collections/VXUserList');
-       var FormInputItemList = require('views/common/FormInputItemList');
-       var UserPermissionList = require('views/common/UserPermissionList');
-
-       require('backbone-forms.list');
-       require('backbone-forms.templates');
-       require('backbone-forms');
-       require('backbone-forms.XAOverrides');
-       require('jquery-ui');
-       require('tag-it');
-
-       var PolicyForm = Backbone.Form.extend(
-       /** @lends PolicyForm */
-       {
-               _viewName : 'PolicyForm',
-
-       /**
-               * 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();
-               },
-
-               initializeCollection: function(){
-                       this.permMapList = this.model.isNew() ? new 
VXPermMapList() : this.model.get('permMapList');
-                       this.auditList = this.model.isNew() ? new 
VXAuditMapList() : this.model.get('auditList');
-                       
-                       //this.userList.fetch();
-                       
-
-                       /*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);
-
-               },
-               /** all events binding here */
-               bindEvents : function(){
-                       this.on('_vAuditListToggle:change', function(form, 
fieldEditor){
-                       this.evAuditChange(form, fieldEditor);
-               });
-                       this.on('isRecursive:change', function(form, 
fieldEditor){
-                       this.evRecursiveChange(form, fieldEditor);
-               });
-                       this.on('resourceStatus:change', function(form, 
fieldEditor){
-                       this.evResourceStatusChange(form, fieldEditor);
-               });
-               },
-
-               /** fields for the form
-               */
-               fields: ['name', 'description', '_vAuditListToggle', 
'isEncrypt','isRecursive'],
-               schema :{
-                       policyName : {
-                                  type                 : 'Text',
-                                  title                : 
localization.tt("lbl.policyName"),
-//                                validators   : [{'type' :'required'}]
-                                  editorAttrs  :{ maxlength: 255},
-                       },
-                       name : {
-                          type                 : 'Text',
-                          title                : 
localization.tt("lbl.resourcePath") +' *',
-                          validators   : [{'type' :'required'},
-                                  function checkPath(resourcePaths, 
formValues) {
-                                          var errorPath=[];
-                                          
_.each(resourcePaths.split(','),function(path){
-                                                  
if(!(/^(\/(|[a-zA-Z0-9*?_/\.\-\\])*)$/i).test(path)){
-                                                          if(!_.isEmpty(path)){
-                                                                  
errorPath.push(path);
-                                                          }
-                                                          return;
-                                                  }
-                                          });
-                                          if(!_.isEmpty(errorPath))
-                                                  return {
-                                                          type: 'name',
-                                                          message: 'Please 
enter valid resource path : '+errorPath.join(',')
-                                                  };
-                                  }
-                               ] 
-                       },
-                       isRecursive : {
-                               type            : 'Switch',
-                               title           : 
localization.tt('lbl.includesAllPathsRecursively'),
-                               switchOn        : false,
-                               onText          : 'YES',
-                               offText         : 'NO'
-                       },
-                       description : { 
-                               type            : 'TextArea',
-                               title           : 
localization.tt("lbl.description"), 
-                       //      validators      : [/^[A-Za-z ,.'-]+$/i],
-                               template        :_.template('<div 
class="altField" data-editor></div>')
-                       },
-                       _vAuditListToggle : {
-                               type            : 'Switch',
-                               title           : 
localization.tt("lbl.auditLogging"),
-                               listType        : 'VNameValue',
-                               switchOn        : true
-                       },
-                       isEncrypt : {
-                               type            : 'Switch',
-                               title           : 
localization.tt("lbl.encrypted"),
-                               switchOn        : false,
-                               fieldAttrs : {style : 'display:none;'}
-                       },
-                       isEnabled : {
-                               type            : 'Switch',
-                               title           : 
localization.tt("lbl.policyStatus"),
-                               onText          : 'enabled',
-                               offText         : 'disabled',
-                               width           : '80',
-                               switchOn        : true
-                       },
-                       permMapList : {
-                               getValue : function(){
-                                       console.log(this);
-                               }
-                       },
-                       userIdList : {
-                               getValue : function(){
-                                       console.log("userIdList : "+this);
-                               }
-                       },
-                       resourceStatus : {
-                               type            : 'Switch',
-                               title           : 
localization.tt("lbl.policyStatus"),
-                               onText          : 'enabled',
-                               offText         : 'disabled',
-                               width           : '85',
-                               switchOn        : true
-                       }
-               },
-               /** on render callback */
-               render: function(options) {
-                       var that = this;
-                        Backbone.Form.prototype.render.call(this, options);
-
-                       this.initializePlugins();
-                       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')
-                                       
-                               })));
-                       }
-               },
-               formValidation : function(){
-                       var groupSet = false,permSet = false,auditStatus= 
false,encryptStatus= false,groupPermSet = false,
-                                                       userSet=false,userPerm 
= false,isUsers =false;
-                       console.log('validation called..');
-                       var breakFlag =false;
-                       this.formInputList.each(function(m){
-                               if(m.has('groupId') ||  m.has('_vPermList')){
-                                       if(! breakFlag){
-                                               groupSet = m.has('groupId') ? 
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') || 
m.has('userName') ? 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();
-                       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,permSet : permSet,auditLoggin :auditLoggin,encrypted : encrypted,
-                               userSet : 
userSet,userPerm:userPerm,isUsers:isUsers};
-               },
-               setUpSwitches :function(){
-                       var that = this;
-                       var encryptStatus = false,auditStatus = 
false,recursiveStatus = 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;
-                               if(parseInt(that.model.get('isRecursive')) == 
m.value)
-                                       recursiveStatus =  (m.label == 
XAEnums.BooleanValue.BOOL_TRUE.label) ? true : false;
-                       });
-                       this.fields.isEncrypt.editor.setValue(encryptStatus);
-                       
this.fields.isRecursive.editor.setValue(recursiveStatus);
-                       if(parseInt(this.model.get('resourceStatus')) != 
XAEnums.BooleanValue.BOOL_TRUE.value)
-                               
this.fields.resourceStatus.editor.setValue(false);
-               },
-               /** 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_HDFS.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_HDFS.value
-                                       }).render().el);
-                       });
-               },
-       
-               beforeSave : function(){
-                       //TODO FIXME remove the hard coding
-                       var that = this;
-                       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'),
-                                               //                      id : 
perm.id,
-                                                                       
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});
-                                                       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'),
-                                                       //              id : 
perm.id,
-                                                                       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});
-                                                       //TODO FIXME remove the 
hardcoding
-                                                       permMapList.add(new 
VXPermMap(params));
-                                               }, this);
-                                       });
-                               }
-                       }, this);
-                       
-                       if(!_.isUndefined(this.model.get('name')) && 
_.isUndefined(this.model.get('name').split(','))){
-                               this.model.set('name', 
_.unique(this.model.get('name').split(',')).join());
-                       }
-                       this.model.set('permMapList', permMapList);
-                       //this.model.set('_vPermMapList', permMapList);
-                       this.model.unset('userIdList');
-                       
this.model.set('resourceType',XAEnums.ResourceType.RESOURCE_PATH.value);
-                       if(this.model.get('resourceStatus') != 
XAEnums.BooleanValue.BOOL_TRUE.value){
-                               this.model.set('resourceStatus', 
XAEnums.ActiveStatus.STATUS_DISABLED.value);
-                       }
-                       
-                       
-               },
-               /** all post render plugin initialization */
-               initializePlugins: function(){
-                       var that= this; 
-                       function split( val ) {
-                               return val.split( /,\s*/ );
-                       }
-                       function extractLast( term ) {
-                               return split( term ).pop();
-                       }
-
-                       this.fields.name.editor.$el.bind( "keydown", function( 
event ) {
-                               // don't navigate away from the field on tab 
when selecting an item
-                               /*if ( event.keyCode === $.ui.keyCode.TAB && $( 
this ).data( "ui-autocomplete" ).menu.active ) {
-                                       event.preventDefault();
-                               }
-                               //TODO FIXME This is not working. We need a way 
so that when user enters  and presses ENTER
-                               // the text box should contain /app/billing* . 
Currently the '*' is getting removed.
-                               if ( event.keyCode === $.ui.keyCode.ENTER ) {
-                                       event.preventDefault();
-                                       event.stopPropagation();
-                                       $(this).tagit("createTag", 
"brand-new-tag");
-                                       //$(this).autocomplete('close');
-                                       //$(this).val($(this).val() + ', ');
-                                       
-                               }*/
-                       }).tagit({
-                               autocomplete : {
-                                       cache: false,
-                                       source: function( request, response ) {
-                                               var p = $.getJSON( 
"service/assets/hdfs/resources", {
-                                                       dataSourceName: 
that.assetModel.get('name'),
-                                                       baseDirectory: 
extractLast( request.term )
-                                               }).done(function(data){
-                                                       if(data.vXStrings){
-                                                               
response(data.vXStrings);
-                                                       } else {
-                                                               response();
-                                                       }
-
-                                               }).error(function(){
-                                                       response();
-
-                                               });
-                                               setTimeout(function(){ 
-                                                       p.abort();
-                                                       console.log('connection 
timeout for resource path request...!!');
-                                               }, 7000);
-                                       },
-                                       open : function(){
-                                               $(this).removeClass('working');
-                                       },
-                                       search: function() {
-                                               if(!_.isUndefined(this.value) 
&& _.contains(this.value,',')){ 
-                                                       
_.each(this.value.split(',') , function(tag){
-                                                               
that.fields.name.editor.$el.tagit("createTag", tag);
-                                                       });
-                                               return false;
-                                       }       
-                                               var term = extractLast( 
this.value );
-                                               $(this).addClass('working');
-                                               if ( term.length < 1 ) {
-                                                       return false;
-                                               }
-                                       },
-                                       focus: function(event, ui) {
-                                               var terms = split( this.value );
-                                               terms.pop();
-                                               terms.push( ui.item.value );
-                                               this.value = terms.join( ", " );
-                                               return false;
-                                       },
-                                       select: function( event, ui ) {
-                                               var terms = split( this.value );
-                                               terms.pop();
-                                               terms.push( ui.item.value );
-                                               terms.push( "" );
-                                               this.value = terms.join( ", " );
-                                               return false;
-                                       }
-                                       
-                               },
-                               beforeTagAdded: function(event, ui) {
-                               // do something special
-                                       
that.fields.name.$el.removeClass('error');
-                               
that.fields.name.$el.find('.help-inline').html('');
-                                       var tags =  [];
-                               console.log(ui.tag);
-                               if(ui.tagLabel.lastIndexOf('/') < 0 || 
-                                               ui.tagLabel.lastIndexOf('/') == 
ui.tagLabel.length -1 && ui.tagLabel.lastIndexOf('/') != 0){
-                                       tags = 
ui.tagLabel.substr(0,ui.tagLabel.lastIndexOf('/'));
-                                       that.fields.name.$el.addClass('error');
-                                       
that.fields.name.$el.find('.help-inline').html('Please enter valid resource 
path : ' + ui.tagLabel);
-                                       return false;
-                               }
-//                             this.value = tags;
-                               /*if(_.contains(ui.tagLabel,','))
-                                       tags = ui.tagLabel.split(',');
-                                       this.value = tags;*/
-                                       }
-                       });
-                       /*this.fields.name.editor.$el.tagit({
-                               beforeTagAdded: function(event, ui) {
-                       // do something special
-                               var tags =  [];
-                       console.log(ui.tag);
-                       if(_.contains(ui.tagLabel,','))
-                               tags = ui.tagLabel.split(',');
-                               this.value = tags;
-                               }
-                       });*/
-                       
-               },
-
-               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); 
-               },
-               evRecursiveChange : function(form, fieldEditor){
-                       XAUtil.checkDirtyFieldForToggle(fieldEditor);
-               },
-               evResourceStatusChange : function(form, fieldEditor){
-                       XAUtil.checkDirtyFieldForToggle(fieldEditor);
-               }
-       });
-
-       return PolicyForm;
-});

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/policymanager/PolicyManagerLayout.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policymanager/PolicyManagerLayout.js
 
b/security-admin/src/main/webapp/scripts/views/policymanager/PolicyManagerLayout.js
deleted file mode 100644
index e3ba907..0000000
--- 
a/security-admin/src/main/webapp/scripts/views/policymanager/PolicyManagerLayout.js
+++ /dev/null
@@ -1,123 +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 XALinks                     = require('modules/XALinks');
-       var XAEnums                     = require('utils/XAEnums');
-       var XAUtil                              = require('utils/XAUtils');
-       var SessionMgr                  = require('mgrs/SessionMgr');
-       
-       var PolicymanagerlayoutTmpl = 
require('hbs!tmpl/common/PolicyManagerLayout_tmpl');
-       return Backbone.Marionette.Layout.extend(
-       /** @lends PolicyManagerLayout */
-       {
-               _viewName : name,
-               
-       template: PolicymanagerlayoutTmpl,
-
-               templateHelpers: function(){
-                       var groupedCol = this.collection.groupBy('assetType');
-                       return {
-                               hdfsList : 
groupedCol[XAEnums.AssetType.ASSET_HDFS.value],
-                               hiveList : 
groupedCol[XAEnums.AssetType.ASSET_HIVE.value],
-                               hbaseList: 
groupedCol[XAEnums.AssetType.ASSET_HBASE.value],
-                               knoxList : 
groupedCol[XAEnums.AssetType.ASSET_KNOX.value],
-                               stormList: 
groupedCol[XAEnums.AssetType.ASSET_STORM.value],
-                               hdfsVal  : XAEnums.AssetType.ASSET_HDFS.value,
-                               hiveVal  : XAEnums.AssetType.ASSET_HIVE.value,
-                               hbaseVal : XAEnums.AssetType.ASSET_HBASE.value,
-                               knoxVal  : XAEnums.AssetType.ASSET_KNOX.value,
-                               stormVal  : XAEnums.AssetType.ASSET_STORM.value,
-                               assetCreateHref : 
XALinks.get('AssetCreate').href,
-                               isSysAdmin : SessionMgr.isSystemAdmin()
-                       };
-               },
-       breadCrumbs :[XALinks.get('RepositoryManager')],
-
-               /** Layout sub regions */
-       regions: {},
-
-       /** ui selector cache */
-       ui: {},
-
-               /** ui events hash */
-               events : function(){
-                       var events = {};
-                       events['click .deleteRep']              = 
'onDeleteRepository';
-                       return events;
-               },
-       /**
-               * intialize a new PolicyManagerLayout Layout 
-               * @constructs
-               */
-               initialize: function(options) {
-                       console.log("initialized a PolicyManagerLayout Layout");
-
-                       _.extend(this, _.pick(options, 'collection'));
-                       this.bindEvents();
-               },
-
-               /** all events binding here */
-               bindEvents : function(){
-                       /*this.listenTo(communicator.vent,'someView:someEvent', 
this.someEventHandler, this)'*/
-                       this.listenTo(this.collection, "sync", this.render, 
this);
-                       this.listenTo(this.collection, "request", function(){
-                               
this.$('[data-id="r_tableSpinner"]').removeClass('display-none').addClass('loading');
-                       }, this);
-               },
-
-               /** on render callback */
-               onRender: function() {
-                       
this.$('[data-id="r_tableSpinner"]').removeClass('loading').addClass('display-none');
-                       this.initializePlugins();
-               },
-
-               /** all post render plugin initialization */
-               initializePlugins: function(){
-               },
-               onDeleteRepository : function(e){
-                       var that = this;
-                       var model = 
this.collection.get($(e.currentTarget).data('id'));
-                       if(model){
-                               model = new 
this.collection.model(model.attributes);
-                               XAUtil.confirmPopup({
-                                       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'));
-                                                       
XAUtil.notifySuccess('Success', 'Repository deleted successfully');
-                                                       that.render();
-                                               }});
-                                       }
-                               });
-                       }
-               },
-               /** on close */
-               onClose: function(){
-               }
-
-       });
-});

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js 
b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js
index 0c29c2c..525418d 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayout.js
@@ -28,6 +28,7 @@ define(function(require){
        var XAUtil                              = require('utils/XAUtils');
        var SessionMgr                  = require('mgrs/SessionMgr');
        var RangerServiceList   = require('collections/RangerServiceList');
+       var RangerService       = require('models/RangerService');
        
        var ServicemanagerlayoutTmpl = 
require('hbs!tmpl/common/ServiceManagerLayout_tmpl');
        return Backbone.Marionette.Layout.extend(
@@ -39,24 +40,26 @@ define(function(require){
 
                templateHelpers: function(){
                        var groupedServices = this.services.groupBy("type");
-
                        return {
                                isSysAdmin : SessionMgr.isSystemAdmin(),
                                serviceDefs : this.collection.models,
                                services : groupedServices
                        };
                },
-       breadCrumbs :[XALinks.get('RepositoryManager')],
+       breadCrumbs :[XALinks.get('ServiceManager')],
 
                /** Layout sub regions */
        regions: {},
 
        /** ui selector cache */
-       ui: {},
+       ui: {
+               'btnDelete' : '.deleteRepo',
+       },
 
                /** ui events hash */
                events : function(){
                        var events = {};
+                       events['click ' + this.ui.btnDelete]    = 'onDelete';
                        return events;
                },
        /**
@@ -85,7 +88,6 @@ define(function(require){
                        
this.$('[data-id="r_tableSpinner"]').removeClass('loading').addClass('display-none');
                        this.initializePlugins();
                },
-
                /** all post render plugin initialization */
                initializePlugins: function(){
 
@@ -98,6 +100,25 @@ define(function(require){
                        });
 
                },
+               onDelete : function(e){
+                       var that = this;
+                       var model = 
this.services.get($(e.currentTarget).data('id'));
+                       if(model){
+                               model = new RangerService(model.attributes);
+                               XAUtil.confirmPopup({
+                                       msg :'Are you sure want to delete ?',
+                                       callback : function(){
+                                               XAUtil.blockUI();
+                                               model.destroy({success: 
function(model, response) {
+                                                       
XAUtil.blockUI('unblock');
+                                                       
that.services.remove(model.get('id'));
+                                                       
XAUtil.notifySuccess('Success', 'Service deleted successfully');
+                                                       that.render();
+                                               }});
+                                       }
+                               });
+                       }
+               },
                /** on close */
                onClose: function(){
                }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/286acf6d/security-admin/src/main/webapp/scripts/views/service/ServiceCreate.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/service/ServiceCreate.js 
b/security-admin/src/main/webapp/scripts/views/service/ServiceCreate.js
index d37a2db..b4dd88b 100644
--- a/security-admin/src/main/webapp/scripts/views/service/ServiceCreate.js
+++ b/security-admin/src/main/webapp/scripts/views/service/ServiceCreate.js
@@ -72,7 +72,7 @@ define(function(require){
                        var events = {};
                        events['click ' + this.ui.btnSave]              = 
'onSave';
                        events['click ' + this.ui.btnCancel]    = 'onCancel';
-//                     events['click ' + this.ui.btnDelete]    = 'onDelete';
+                       events['click ' + this.ui.btnDelete]    = 'onDelete';
 //                     events['click ' + this.ui.btnTestConn]  = 
'onTestConnection';
                        return events;
                },
@@ -156,7 +156,7 @@ define(function(require){
                                success: function () {
                                        XAUtil.blockUI('unblock');
                                        XAUtil.allowNavigation();
-                                       var msg = that.editService ? 
'Repository updated successfully' :'Repository created successfully';
+                                       var msg = that.editService ? 'Service 
updated successfully' :'Service created successfully';
                                        XAUtil.notifySuccess('Success', msg);
                                        
                                        if(that.editService){
@@ -201,15 +201,16 @@ define(function(require){
                                                success: function(model, 
response) {
                                                        
XAUtil.blockUI('unblock');
                                                        
XAUtil.allowNavigation();
-                                                       
XAUtil.notifySuccess('Success', 'Repository delete successfully');
+                                                       
XAUtil.notifySuccess('Success', 'Service delete successfully');
                                                        
App.appRouter.navigate("#!/policymanager",{trigger: true});
                                                },
                                                error: function (model, 
response, options) {
                                                        
XAUtil.blockUI('unblock');
                                                        if ( response && 
response.responseJSON && response.responseJSON.msgDesc){
                                                                        
XAUtil.notifyError('Error', response.responseJSON.msgDesc);
-                                                       }else
+                                                       }else{
                                                                
XAUtil.notifyError('Error', 'Error occured while deleting service!');
+                                                       }
                                                }
                                        });
                                        

Reply via email to