Repository: incubator-ranger
Updated Branches:
  refs/heads/stack 7a6412dcd -> 89f7103cc


Pluggable-service-model: UI updates: Resource is shown only if its parent is 
selected. Other minor fixes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/89f7103c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/89f7103c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/89f7103c

Branch: refs/heads/stack
Commit: 89f7103cc40040b82862ff6faa30dfb5186e32bd
Parents: 7a6412d
Author: Gautam Borad <[email protected]>
Authored: Wed Feb 11 19:05:45 2015 -0800
Committer: Madhan Neethiraj <[email protected]>
Committed: Wed Feb 11 19:05:45 2015 -0800

----------------------------------------------------------------------
 .../org/apache/ranger/common/package-info.java  | 26 -------
 .../scripts/models/BackboneFormDataType.js      | 24 ++++--
 .../main/webapp/scripts/models/RangerPolicy.js  | 15 ----
 .../main/webapp/scripts/modules/XAOverrides.js  | 18 +++--
 .../scripts/modules/globalize/message/en.js     | 12 +--
 .../src/main/webapp/scripts/utils/XAUtils.js    |  8 +-
 .../scripts/views/policies/RangerPolicyForm.js  | 80 ++++++++++++++++----
 security-admin/src/main/webapp/styles/xa.css    | 14 +++-
 .../templates/policies/PermissionItem.html      |  6 +-
 .../policies/RangerPolicyForm_tmpl.html         |  9 ++-
 10 files changed, 126 insertions(+), 86 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/ranger-util/src/gen/org/apache/ranger/common/package-info.java
----------------------------------------------------------------------
diff --git a/ranger-util/src/gen/org/apache/ranger/common/package-info.java 
b/ranger-util/src/gen/org/apache/ranger/common/package-info.java
deleted file mode 100644
index 233f419..0000000
--- a/ranger-util/src/gen/org/apache/ranger/common/package-info.java
+++ /dev/null
@@ -1,26 +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.
- */
- 
-/*
- * Generated by saveVersion.sh
- */
-@RangerVersionAnnotation(version="0.4.0", 
shortVersion="${ranger.version.shortname}",
-                         revision="a6f8050b54206dfa61d87a756d7434ec70131d88", 
branch="stack",
-                         user="mneethiraj", date="Tue Feb 10 17:06:21 PST 
2015", 
url="git://HW10963.local/Users/mneethiraj/Apache/git-commit2/incubator-ranger",
-                         srcChecksum="c0d896b805fcb51d32f80227c393ce33")
-package org.apache.ranger.common;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js 
b/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
index cff762a..464bf4c 100644
--- a/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
+++ b/security-admin/src/main/webapp/scripts/models/BackboneFormDataType.js
@@ -28,7 +28,7 @@ define(function(require) {
                        var samelevelFieldCreated = [];
                        _.each(configs, function(v, k,config) {
                                if (v != null) {
-                                       var formObj = {};
+                                       var formObj = {}, fieldName;
                                        switch (v.type) {
                                                case 'string':
                                                        if($.inArray(v.level, 
samelevelFieldCreated) >= 0){
@@ -47,6 +47,9 @@ define(function(require) {
                                                                formObj.name = 
v.name;
                                                                formObj.level = 
v.level;
                                                                
formObj.editorAttrs = {'data-placeholder': v.label };
+                                                               
formObj.fieldAttrs = { 'data-name' : 'field-'+v.name, 'parent' : v.parent };
+                                                               
+                                                               
                                                                //check whether 
resourceType drop down is created for same level or not 
                                                                var 
optionsAttrs = _.filter(config,function(field){ if(field.level == v.level) 
return field;})
                                                                
if(optionsAttrs.length > 1){
@@ -55,9 +58,12 @@ define(function(require) {
                                                                        
formObj['sameLevelOpts'] = optionsTitle;
                                                                        
samelevelFieldCreated.push(v.level);
 
-                                                                       
v.name='sameLevel'+v.level;
-                                                                       v.label 
= '';
+                                                                       
fieldName = 'sameLevel'+v.level;
+                                                                       
formObj.title = '';
+                                                                       
+                                                                       
formObj['formView'] = form;
                                                                }
+                                                               
                                                        }else{
                                                                formObj.type = 
'Text';
                                                        }
@@ -108,10 +114,12 @@ define(function(require) {
                                                        
                                                        
                                                        break;
+                                               case 'password':formObj.type = 
'Password';break;
                                                default:formObj.type = 
'Text';break;
                                        }
-
-                                       formObj.title = v.label || v.name;
+                                       if(_.isUndefined(formObj.title)){
+                                               formObj.title = v.label || 
v.name;
+                                       }
                                        formObj.validators = [];
                                        if (_.has(v, 'mandatory') && 
v.mandatory && v.type != 'bool') {
                                                
formObj.validators.push('required');
@@ -124,8 +132,10 @@ define(function(require) {
                                        }
                                        
                                        formObj['class'] = 'serviceConfig';
-                                       var name = v.name;
-                                       attrs[name] = formObj;
+                                       if(_.isUndefined(fieldName)){
+                                               fieldName = v.name;
+                                       }
+                                       attrs[fieldName] = formObj;
                                }
                        });
                        return attrs;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/scripts/models/RangerPolicy.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/models/RangerPolicy.js 
b/security-admin/src/main/webapp/scripts/models/RangerPolicy.js
index a0a0cd8..0d8574d 100644
--- a/security-admin/src/main/webapp/scripts/models/RangerPolicy.js
+++ b/security-admin/src/main/webapp/scripts/models/RangerPolicy.js
@@ -54,19 +54,11 @@ define(function(require){
 
                        // Overwrite your schema definition here
                        return _.extend(attrs,{
-                               id : {
-                                       type            : 'Text',
-                                       title           : 'Policy ID *',
-                                       validators      : ['required'],
-                                       editorAttrs     :{ 'disabled' : "true"},
-
-                               },
                                name : {
                                        type            : 'Text',
                                        title           : 'Policy Name *',
                                        validators      : ['required'],
                                        editorAttrs     :{ maxlength: 255},
-
                                },
                                description : {
                                        type            : 'TextArea',
@@ -81,13 +73,6 @@ define(function(require){
                                        width           : '80',
                                        switchOn        : true
                                },
-                               isRecursive : {
-                                       type            : 'Switch',
-                                       title           : 
localization.tt('lbl.includesAllPathsRecursively'),
-                                       onText          : 'YES',
-                                       offText         : 'NO',
-                                       switchOn        : false,
-                               },
                                isAuditEnabled : {
                                        type            : 'Switch',
                                        title           : 
localization.tt("lbl.auditLogging"),

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js 
b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
index bbacdac..e2fcc8f 100644
--- a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
+++ b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
@@ -361,7 +361,7 @@
                          initialize: function(options) {
                            Form.editors.Base.prototype.initialize.call(this, 
options);
                            _.extend(this, 
_.pick(this.schema,'excludeSupport','recursiveSupport','select2Opts','resourcesAtSameLevel','sameLevelOpts','level',
-                                       'initilializePathPlugin', 
'validators','name'));
+                                       'initilializePathPlugin', 
'validators','name','formView'));
 
                            this.template = this.getTemplate();
 //                         this.resourceObj = { 'level' : this.level};
@@ -377,7 +377,7 @@
                                                return optionsHtml += "<option 
value='"+option+"'>"+option+"</option>";
                                                
                                        },this);
-                                       selectTemplate = '<select 
data-js="resourceType" class="btn dropdown-toggle" style="margin-right: 
18px;margin-left: -116px;width: 100px;height: 29px;font-family: 
Tahoma;font-size: 14px;border-radius: 10px;border: 2px #cccccc solid;">\
+                                       selectTemplate = '<select 
data-js="resourceType" class="btn dropdown-toggle" style="margin-right: 
31px;margin-left: -130px;width: 100px;height: 29px;font-family: 
Tahoma;font-size: 14px;border-radius: 10px;border: 2px #cccccc solid;">\
                                                '+optionsHtml+'\
                                                </select>';
                                        
@@ -454,7 +454,7 @@
                                        this.$recursiveSupport.toggles({
                                                on: isRecursive,
                                                text : {on : 'recursive', off : 
'nonrecursive' },
-                                               width: 122,
+                                               width: 105
 //                                             height: 20
                                        }).on('toggle', function (e, active) {
                                            that.value.isRecursive = active;
@@ -464,6 +464,7 @@
                                if(!_.isUndefined(this.$resourceType) && 
this.$resourceType.length > 0){
                                        if(!_.isNull(this.value) && 
!_.isEmpty(this.value)){
                                                
this.$resourceType.val(this.value.resourceType);
+                                               //
                                        }
                                        this.$resourceType.on('change', 
function(e) {
                                                
if(!_.isUndefined(that.select2Opts)){
@@ -476,18 +477,25 @@
                                                          
that.$resource.val('');
                                                  }
                                                //reset values
-                                               that.value.isExcludes = true;
+                                               that.value.isExcludes = false;
                                                that.value.isRecursive = true;
                                                
that.$excludeSupport.trigger('toggleOn');
                                                
that.$recursiveSupport.trigger('toggleOn');
                                                
($(e.currentTarget).addClass('dirtyField'))
+                                               
+                                               //resource are shown if parent 
is selected or showned
+                                               
that.$el.parents('.control-group').attr('data-name', 'field-'+this.value);
+                                               
that.formView.trigger('policyForm:parentChildHideShow',true);
                                        });
                                }
                            return this;
                          },
                        
                          getValue: function() {
-                                 
+                                 //checkParent
+                                 
if(this.$el.parents('.control-group').hasClass('hideResource')){
+                                         return null;
+                                 }
                                  if(!_.isUndefined(this.$resourceType) && 
this.$resourceType.length > 0){
                                          this.value['resourceType'] = 
this.$resourceType.val();  
                                  }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js 
b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
index 5e3377a..6320028 100644
--- a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
+++ b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
@@ -298,14 +298,10 @@ define(function(require) {
                                searchByResourcePath            :'Search by 
resource path'
                        },
                        dialogMsg :{
-                               preventNavPolicyForm : 'HDFS policy form edit 
is in progress. Kindly save/cancel changes before navigating away!',
-                               preventNavHivePolicyForm : 'HIVE policy form 
edit is in progress. Kindly save/cancel changes before navigating away!',
-                               preventNavHbasePolicyForm : 'HBASE policy form 
edit is in progress. Kindly save/cancel changes before navigating away!',
-                               preventNavKnoxPolicyForm : 'KNOX policy form 
edit is in progress. Kindly save/cancel changes before navigating away!',
-                               preventNavStormPolicyForm : 'STORM policy form 
edit is in progress. Kindly save/cancel changes before navigating away!',
-                               preventNavRepositoryForm : 'Repository form 
edit is in progress. Kindly save/cancel changes before navigating away!',
-                               preventNavUserForm : 'User form edit is in 
progress. Kindly save/cancel changes before navigating away!',
-                               preventNavGroupForm : 'Group form edit is in 
progress. Kindly save/cancel changes before navigating away!'
+                               preventNavPolicyForm : 'Policy form edit is in 
progress. Please save/cancel changes before navigating away!',
+                               preventNavRepositoryForm : 'Repository form 
edit is in progress. Please save/cancel changes before navigating away!',
+                               preventNavUserForm : 'User form edit is in 
progress. Please save/cancel changes before navigating away!',
+                               preventNavGroupForm : 'Group form edit is in 
progress. Please save/cancel changes before navigating away!'
                                
                        },      
                        validationMessages : {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/scripts/utils/XAUtils.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js 
b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index b2514f3..2f3b3d7 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -701,13 +701,15 @@ define(function(require) {
            $.extend(PolicyConditions.prototype, {   
                render: function() {
                   this.$input = this.$tpl.find('input');
+                  var pluginOpts = {tags : true,width :'220px',multiple: 
true,minimumInputLength: 1,tokenSeparators: [",", ";"],}
+                  this.$input.select2(pluginOpts);
                },
                
               value2str: function(value) {
                   var str = '';
                   if(value) {
                       for(var k in value) {
-                          str = str + k + ':' + value[k] + ';';  
+                          str = str + k + ':' + value[k].toString() + ';';  
                       }
                   }
                   return str;
@@ -715,7 +717,7 @@ define(function(require) {
               
               value2input: function(value) {
                   _.each(value, function(val,name){
-                     this.$input.filter('[name='+name+']').val(value[name]);
+                          
this.$input.filter('[name='+name+']').select2('val',value[name]);
                   },this);
               },       
                   
@@ -723,7 +725,7 @@ define(function(require) {
                   var obj={};
                   _.each(this.$input,function(input){ 
                           var name = input.name;
-                          var val = 
this.$input.filter('[name="'+name+'"]').val() 
+                          var val = 
this.$input.filter('[name="'+name+'"]').select2('val'); 
                           obj[name] = val;
                   },this);
                   

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
index d077ca1..ee96226 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -22,7 +22,6 @@ define(function(require){
     'use strict';
 
        var Backbone            = require('backbone');
-
        var XAEnums                     = require('utils/XAEnums');
        var localization        = require('utils/XALangSupport');
        var XAUtil                      = require('utils/XAUtils');
@@ -53,6 +52,9 @@ define(function(require){
                * intialize a new RangerPolicyForm Form View 
                * @constructs
                */
+               templateData : function(){
+                       return { 'id' : this.model.id };
+               },
                initialize: function(options) {
                        console.log("initialized a RangerPolicyForm Form View");
                        _.extend(this, _.pick(options, 'rangerServiceDefModel', 
'rangerService'));
@@ -61,6 +63,7 @@ define(function(require){
 
                        this.initializeCollection();
                        this.bindEvents();
+                       this.defaultValidator={}
                },
                initializeCollection: function(){
                        this.formInputList              = 
XAUtil.makeCollForGroupPermission(this.model);
@@ -73,6 +76,7 @@ define(function(require){
                        this.on('isEnabled:change', function(form, fieldEditor){
                                this.evIsEnabledChange(form, fieldEditor);
                        });
+                       
this.on('policyForm:parentChildHideShow',this.renderParentChildHideShow);
                },
 
                /** fields for the form
@@ -85,9 +89,6 @@ define(function(require){
                        var attrs = {};
                        var basicSchema = ['id', 'name','isEnabled']
                        var schemaNames = ['description', 'isAuditEnabled'];
-                       if(this.model.isNew()){
-                               basicSchema.shift();
-                       }
                        
                        var formDataType = new BackboneFormDataType();
                        attrs = 
formDataType.getFormElements(this.rangerServiceDefModel.get('resources'),this.rangerServiceDefModel.get('enums'),
 attrs, this);
@@ -110,6 +111,51 @@ define(function(require){
                                this.setUpSwitches();
                        }
                        
this.$el.find('.field-isEnabled').find('.control-label').remove();
+                       //checkParent
+                       this.renderParentChildHideShow();
+               },
+               renderParentChildHideShow : function(onChangeOfSameLevelType) {
+                       var formDiv = this.$el.find('.policy-form');
+                       if(!this.model.isNew() && !onChangeOfSameLevelType){
+                               _.each(this.selectedResourceTypes, 
function(val, sameLevelName) {
+                                       
if(formDiv.find('.field-'+sameLevelName).length > 0){
+                                               
formDiv.find('.field-'+sameLevelName).attr('data-name','field-'+val)
+                                       }
+                               });
+                       }
+                       var resources = formDiv.find('.control-group');
+                       _.each(resources, function(rsrc){ 
+                               var parent = $(rsrc).attr('parent')
+                               if( !_.isUndefined(parent) && ! 
_.isEmpty(parent)){
+                                       console.log(formDiv.find())
+                                       var selector = 
"div[data-name='field-"+parent+"']"
+                                       if(formDiv.find(selector).length > 0 && 
!formDiv.find(selector).hasClass('hideResource')){
+                                                       
$(rsrc).removeClass('hideResource');
+                                       }else{
+                                               
$(rsrc).addClass('hideResource');
+                                       }
+                               }
+                       },this);
+                       
+                       _.each(this.fields, function(obj, key){
+                               if(obj.$el.hasClass('hideResource')){
+                                       
if($.inArray('required',obj.editor.validators) >= 0){
+                                               this.defaultValidator[key] = 
obj.editor.validators;
+                                               obj.editor.validators=[];
+                                               var label = 
obj.$el.find('label').html();
+                                               
obj.$el.find('label').html(label.replace('*', ''));
+                                       }
+                               }else{
+                                       
if(!_.isUndefined(this.defaultValidator[key])){
+                                               obj.editor.validators = 
this.defaultValidator[key];
+                                               
if($.inArray('required',obj.editor.validators) >= 0){
+                                                       var label = 
obj.$el.find('label').html();
+                                                       
obj.$el.find('label').html(label+"*");
+                                               }
+                                       }
+                               }
+                       }, this);
+//                     alert();
                },
                evAuditChange : function(form, fieldEditor){
                        XAUtil.checkDirtyFieldForToggle(fieldEditor.$el);
@@ -119,12 +165,15 @@ define(function(require){
                },
                setupForm : function() {
                        if(!this.model.isNew()){
+                               this.selectedResourceTypes = {};
                                
_.each(this.model.get('resources'),function(obj,key){
                                        var resourceDef = 
_.findWhere(this.rangerServiceDefModel.get('resources'),{'name':key})
                                        var sameLevelResourceDef = 
_.where(this.rangerServiceDefModel.get('resources'), {'level': 
resourceDef.level});
                                        if(sameLevelResourceDef.length > 1){
                                                obj['resourceType'] = key;
                                                
this.model.set('sameLevel'+resourceDef.level, obj)
+                                               //parentShowHide
+                                               
this.selectedResourceTypes['sameLevel'+resourceDef.level]=key;
                                        }else{
                                                
this.model.set(resourceDef.name, obj)
                                        }
@@ -171,11 +220,18 @@ define(function(require){
                        var that = this, resources = [];
 
                        var resources = {};
+                       //set sameLevel fieldAttr value with resource name
+                       _.each(this.model.attributes, function(val, key) {
+                if(key.indexOf("sameLevel") >= 0){ 
+                       this.model.set(val.resourceType,val);
+                       that.model.unset(key);
+                }
+                       },this);
                        
_.each(this.rangerServiceDefModel.get('resources'),function(obj){
                                if(!_.isNull(obj)){
-                                       var rPolicyResource = new 
RangerPolicyResource();
                                        var tmpObj =  that.model.get(obj.name);
                                        if(!_.isUndefined(tmpObj) && 
_.isObject(tmpObj)){
+                                               var rPolicyResource = new 
RangerPolicyResource();
                                                
rPolicyResource.set('values',tmpObj.resource.split(','));
                                                
if(!_.isUndefined(tmpObj.isRecursive)){
                                                        
rPolicyResource.set('isRecursive', tmpObj.isRecursive)
@@ -183,21 +239,13 @@ define(function(require){
                                                
if(!_.isUndefined(tmpObj.isExcludes)){
                                                        
rPolicyResource.set('isExcludes', tmpObj.isExcludes)
                                                }
+                                               resources[obj.name] = 
rPolicyResource;
+                                               that.model.unset(obj.name);
                                        }
-                                       if(rPolicyResource.has('values')){
-                                               if(!_.isUndefined(tmpObj) && 
!_.isUndefined(tmpObj.resourceType)){
-                                                       
resources[tmpObj.resourceType] = rPolicyResource;
-                                               }else{
-                                                       
if(_.isUndefined(resources[obj.name])){
-                                                               
resources[obj.name] = rPolicyResource;
-                                                       }
-                                               }
-                                       }
-                                       that.model.unset(obj.name);
                                }
                        });
+                       
                        this.model.set('resources',resources);
-                       this.model.unset('isRecursive');
                        this.model.unset('path');
                        
                        //Set UserGroups Permission

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/styles/xa.css
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/styles/xa.css 
b/security-admin/src/main/webapp/styles/xa.css
index 468155e..6c51ac0 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -285,8 +285,8 @@ body {
 .toggle-xa .toggle-slide .toggle-off,
 .toggle-xa .toggle-slide .toggle-blob {
   color: rgba(0, 0, 0, 0.7);
-  font-size: 14px;
-  font-weight: 700;
+  font-size: 13px;
+  font-weight: 600;
 }
 .toggle-xa .toggle-slide .toggle-on {
   background: #3ea211;
@@ -1740,4 +1740,14 @@ margin-top: -29px;
 .policy-form .help-inline {
        position: relative;
        top: 10px;
+}
+.hideResource{
+       display:none;
+}
+.btn-mini {
+       padding: 0px 8px;
+       font-size: 11.05px;
+}
+.label-ranger {
+       background-color: #3C9C11;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/templates/policies/PermissionItem.html
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/templates/policies/PermissionItem.html 
b/security-admin/src/main/webapp/templates/policies/PermissionItem.html
index 20b4c75..99c20fa 100644
--- a/security-admin/src/main/webapp/templates/policies/PermissionItem.html
+++ b/security-admin/src/main/webapp/templates/policies/PermissionItem.html
@@ -23,12 +23,14 @@
 {{#if policyConditions}}
 <td>   
        <a href="#" id="policyConditions" data-type="policyConditions" 
data-original-title="Policy Conditions" title="add/edit conditions"></a>
-       <span class="add-conditions link-tag" style="margin-left: 3%; color: 
green; cursor: pointer;" title="add"><i class="icon-plus"></i></span>
+       <button type="button" class="btn btn-mini add-conditions" title="Add" 
style="display: inline-block;"><i class="icon-plus"></i>
+       </button>
 </td>
 {{/if}}
 <td>   
        <a href="#" data-js="permissions" data-type="checklist" 
data-title="Select permissions" title="add/edit permissions" />
-       <span class="add-permissions link-tag" style="margin-left: 3%; color: 
green; cursor: pointer;" title="add"><i class="icon-plus"></i></span>
+       <button type="button" class="btn btn-mini add-permissions" title="Add" 
style="display: inline-block;"><i class="icon-plus"></i>
+       </button>
 </td>  
 <td style=" width: 12%; ">
        <input data-js="delegatedAdmin" type="checkbox">

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/89f7103c/security-admin/src/main/webapp/templates/policies/RangerPolicyForm_tmpl.html
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/templates/policies/RangerPolicyForm_tmpl.html 
b/security-admin/src/main/webapp/templates/policies/RangerPolicyForm_tmpl.html
index 0479ea8..270e53d 100644
--- 
a/security-admin/src/main/webapp/templates/policies/RangerPolicyForm_tmpl.html
+++ 
b/security-admin/src/main/webapp/templates/policies/RangerPolicyForm_tmpl.html
@@ -19,8 +19,13 @@
                <p class="formHeader">
                        Policy Details : 
                </p>
-               
-       <b data-fieldsets class="policy-form"></b>
+               {{#if id}}
+                       <div class="control-group field-id">
+                               <label class="control-label" 
for="c1836_id">Policy ID</label>
+                               <div class="controls"><label class="label 
label-ranger" style="margin-top: 5px; margin-left: 9px;">{{id}}</label></div>
+                       </div>
+               {{/if}}
+               <b data-fieldsets class="policy-form"></b>
        
        </fieldset>
         <fieldset>

Reply via email to