You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by pr...@apache.org on 2021/06/07 15:14:09 UTC
[ranger] branch master updated (4738389 -> 617d8dd)
This is an automated email from the ASF dual-hosted git repository.
pradeep pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git.
from 4738389 RANGER-3305: Service version update improvements
new 0c7c12d RANGER-3301: [UI] in admin audit log tables are not formatted correctly for long string value for resources.
new 617d8dd RANGER-3306: Allow comma in policy resource text field.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../src/main/webapp/libs/bower/tag-it/js/tag-it.js | 4 +-
security-admin/src/main/webapp/scripts/Init.js | 2 +-
.../src/main/webapp/scripts/modules/XAOverrides.js | 48 ++++++++++-----
.../src/main/webapp/scripts/utils/XAUtils.js | 10 ++--
.../scripts/views/policies/RangerPolicyForm.js | 69 ++++++++++------------
.../views/security_zone/ZoneResourceForm.js | 41 +++++--------
.../scripts/views/security_zone/zoneResource.js | 8 ++-
.../scripts/views/service/AuditFilterConfig.js | 9 ++-
.../views/service/ServiceAuditFilterResources.js | 49 +++++----------
security-admin/src/main/webapp/styles/xa.css | 5 ++
.../PlugableServicePolicyDeleteDiff_tmpl.html | 2 +-
.../reports/PlugableServicePolicyDiff_tmpl.html | 2 +-
12 files changed, 119 insertions(+), 130 deletions(-)
[ranger] 01/02: RANGER-3301: [UI] in admin audit log tables are not
formatted correctly for long string value for resources.
Posted by pr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
pradeep pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 0c7c12d1da2162d8a605ad394359490d083c38bf
Author: Nitin Galave <ni...@apache.org>
AuthorDate: Thu Jun 3 18:10:33 2021 +0530
RANGER-3301: [UI] in admin audit log tables are not formatted correctly for long string value for resources.
Signed-off-by: pradeep <pr...@apache.org>
---
security-admin/src/main/webapp/styles/xa.css | 1 +
.../webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html | 2 +-
.../main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/security-admin/src/main/webapp/styles/xa.css b/security-admin/src/main/webapp/styles/xa.css
index 9762a3b..0435174 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -1477,6 +1477,7 @@ ul.tabs > li > a {
}
.change-row {
background-color: #fef7cd;
+ white-space: nowrap;
}
.add-text {
background-color: #e1f2d3;
diff --git a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html
index 3166402..e9131cd 100644
--- a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html
+++ b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDeleteDiff_tmpl.html
@@ -26,7 +26,7 @@
{{#if collection.length}}
<h5 class="bold wrap-header m-t-sm">Policy Details:</h5>
- <div class="diff">
+ <div class="diff table-responsive">
<div class="diff-left">
<h3>Fields</h3>
<ol class="attr">
diff --git a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html
index 5a54d62..2470059 100644
--- a/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html
+++ b/security-admin/src/main/webapp/templates/reports/PlugableServicePolicyDiff_tmpl.html
@@ -28,7 +28,7 @@
<div class="no-margin label-size13-weightbold">Created By: {{userName}}</div>
{{#if collection.length}}
<h5 class="bold wrap-header m-t-sm">Policy Details:</h5>
- <div class="diff">
+ <div class="diff table-responsive">
<div class="diff-left">
<h3>Fields</h3>
<ol class="attr">
[ranger] 02/02: RANGER-3306: Allow comma in policy resource text
field.
Posted by pr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
pradeep pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 617d8dd74d1479829b7af9754b5b714059788d8e
Author: Nitin Galave <ni...@apache.org>
AuthorDate: Mon Jun 7 18:47:51 2021 +0530
RANGER-3306: Allow comma in policy resource text field.
Signed-off-by: pradeep <pr...@apache.org>
---
.../src/main/webapp/libs/bower/tag-it/js/tag-it.js | 4 +-
security-admin/src/main/webapp/scripts/Init.js | 2 +-
.../src/main/webapp/scripts/modules/XAOverrides.js | 48 ++++++++++-----
.../src/main/webapp/scripts/utils/XAUtils.js | 10 ++--
.../scripts/views/policies/RangerPolicyForm.js | 69 ++++++++++------------
.../views/security_zone/ZoneResourceForm.js | 41 +++++--------
.../scripts/views/security_zone/zoneResource.js | 8 ++-
.../scripts/views/service/AuditFilterConfig.js | 9 ++-
.../views/service/ServiceAuditFilterResources.js | 49 +++++----------
security-admin/src/main/webapp/styles/xa.css | 4 ++
10 files changed, 116 insertions(+), 128 deletions(-)
diff --git a/security-admin/src/main/webapp/libs/bower/tag-it/js/tag-it.js b/security-admin/src/main/webapp/libs/bower/tag-it/js/tag-it.js
index 04e36b1..ab36e1a 100644
--- a/security-admin/src/main/webapp/libs/bower/tag-it/js/tag-it.js
+++ b/security-admin/src/main/webapp/libs/bower/tag-it/js/tag-it.js
@@ -241,7 +241,6 @@
// Tab will also create a tag, unless the tag input is empty,
// in which case it isn't caught.
if (
- (event.which === $.ui.keyCode.COMMA && event.shiftKey === false) ||
event.which === $.ui.keyCode.ENTER ||
(
event.which == $.ui.keyCode.TAB &&
@@ -297,7 +296,7 @@
this.tagInput.autocomplete(autocompleteOptions).bind('autocompleteopen.tagit', function(event, ui) {
that.tagInput.data('autocomplete-open', true);
}).bind('autocompleteclose.tagit', function(event, ui) {
- that.tagInput.data('autocomplete-open', false)
+ that.tagInput.data('autocomplete-open', false);
});
this.tagInput.autocomplete('widget').addClass('tagit-autocomplete');
@@ -588,4 +587,3 @@
});
})(jQuery);
-
diff --git a/security-admin/src/main/webapp/scripts/Init.js b/security-admin/src/main/webapp/scripts/Init.js
index aa970be..e155fa3 100644
--- a/security-admin/src/main/webapp/scripts/Init.js
+++ b/security-admin/src/main/webapp/scripts/Init.js
@@ -132,7 +132,7 @@ require.config({
'bootstrap-notify': '../libs/bower/bootstrap-notify/js/bootstrap-notify',
'jquery.cookie': '../libs/other/jquery-cookie/js/jquery.cookie',
'jquery-toggles': '../libs/bower/jquery-toggles/js/toggles.min',
- 'tag-it': '../libs/bower/tag-it/js/tag-it.min',
+ 'tag-it': '../libs/bower/tag-it/js/tag-it',
'select2': '../libs/bower/select2/select2',
'bootbox': '../libs/bower/bootbox/js/bootbox',
'visualsearch': '../libs/other/visualsearch/js/visualsearch',
diff --git a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
index 1c4e457..9237abd 100644
--- a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
+++ b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
@@ -528,25 +528,33 @@
this.renderSameLevelResource();
return this;
},
- renderResource : function(def) {
- var that = this;
- var Vent = require('modules/Vent');
- if(!_.isNull(this.value) && !_.isEmpty(this.value)){
- this.value.values = _.map(this.value.values, function(val){ return _.escape(val); });
- // Set initial value for resources.
- if (_.isUndefined(def)) {
- this.$resource.val(this.value.values.toString());
+ renderResource : function(def) {
+ var that = this;
+ var Vent = require('modules/Vent');
+ if(!_.isNull(this.value) && !_.isEmpty(this.value)){
+ if (!_.isUndefined(this.key) && (this.key == "path" || this.key == "relativepath")) {
+ this.value.values = this.value.values.join('||');
+ // Set initial value for resources.
+ if (_.isUndefined(def)) {
+ this.$resource.val((this.value.values));
+ }
+ } else {
+ this.value.values = _.map(this.value.values, function(val){ return _.escape(val)});
+ // Set initial value for resources.
+ if (_.isUndefined(def)) {
+ this.$resource.val(JSON.stringify(this.value.values));
+ }
}
//to preserve resources values to text field
if(!_.isUndefined(this.value.resourceType)){
- this.preserveResourceValues[this.value.resourceType] = this.value.values.toString();
+ this.preserveResourceValues[this.value.resourceType] = this.value.values;
}else{
- this.preserveResourceValues[this.name] = this.value.values.toString();
+ this.preserveResourceValues[this.name] = this.value.values;
}
}
//check dirtyField for input
this.$resource.on('change', function(e) {
- if(_.isUndefined(that.resourceOpts.select2Opts)){
+ if(_.isUndefined(that.resourceOpts.select2Opts)){
// that.checkDirtyFieldForSelect2($(e.currentTarget), that, this.value);
}
});
@@ -559,7 +567,11 @@
if(_.has(def, 'validationRegEx') && !_.isEmpty(def.validationRegEx)){
opts['regExpValidation'] = {'type': 'regexp', 'regexp':new RegExp(def.validationRegEx), 'message' : def.validationMessage};
}
- opts['lookupURL'] = "service/plugins/services/lookupResource/"+this.form.rangerService.get('name');
+ if(!_.isUndefined(this.form.serviceName)) {
+ opts['lookupURL'] = "service/plugins/services/lookupResource/"+this.form.serviceName;
+ } else {
+ opts['lookupURL'] = "service/plugins/services/lookupResource/"+this.form.rangerService.get('name');
+ }
opts['type'] = def.name;
this.resourceOpts['select2Opts'] = that.form.getPlugginAttr(true, opts);
}else{
@@ -636,8 +648,8 @@
}
this.$resourceType.on('change', function(e,onChangeResources) {
if(!_.isUndefined(that.preserveResourceValues[e.currentTarget.value])){
- var val = _.isEmpty(that.preserveResourceValues[e.currentTarget.value]) ? '' : that.preserveResourceValues[e.currentTarget.value].split(',');
- that.$resource.select2('val', val)
+ var val = _.isEmpty(that.preserveResourceValues[e.currentTarget.value]) ? '' : that.preserveResourceValues[e.currentTarget.value];
+ that.$resource.val(JSON.stringify(val))
}else{
that.$resource.select2('val', "");
}
@@ -683,13 +695,17 @@
});
}
},
- getValue: function() {
+ getValue: function(fieldName) {
var that = this;
//checkParent
if(this.$el.parents('.form-group').hasClass('hideResource')){
return null;
}
- this.value['resource'] = this.$resource.val();
+ if (that.key == "path" || that.key == "relativepath") {
+ this.value['resource'] = this.$resource.tagit("assignedTags");
+ } else {
+ this.value['resource'] = this.$resource.select2('data');
+ }
//validation
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index b90f885..4266876 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -1515,7 +1515,7 @@ define(function(require) {
closeOnSelect : true,
width :'220px',
allowClear: true,
- tokenSeparators: ["," , " "],
+ tokenSeparators: [" "],
minimumInputLength: 1,
initSelection : function (element, callback) {
var data = [];
@@ -1525,9 +1525,11 @@ define(function(require) {
return;
}
//this is form multi-select value
- $(element.val().split(",")).each(function () {
- data.push({id: this, text: this});
- });
+ if(_.isArray(JSON.parse(element.val()))) {
+ $(JSON.parse(element.val())).each(function () {
+ data.push({id: this, text: this});
+ })
+ }
callback(data);
},
createSearchChoice: function(term, data) {
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 b52579a..4f08c75 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -571,7 +571,13 @@ define(function(require){
//single value support
// if(! XAUtil.isSinglevValueInput(obj) ){
if(!_.isUndefined(tmpObj) && _.isObject(tmpObj) && !_.isEmpty(tmpObj.resource)){
- rPolicyResource.set('values',tmpObj.resource.split(','));
+ rPolicyResource.set('values',_.map(tmpObj.resource, function(m) {
+ if(obj.type == "path") {
+ return m
+ } else {
+ return m.text
+ }
+ }));
if(!_.isUndefined(tmpObj.isRecursive)){
rPolicyResource.set('isRecursive', tmpObj.isRecursive)
}
@@ -681,25 +687,19 @@ define(function(require){
if(!this.model.isNew() && !_.isUndefined(this.model.get('path'))){
defaultValue = this.model.get('path').values;
}
- function split( val ) {
- return val.split( /,\s*/ );
- }
- function extractLast( term ) {
- return split( term ).pop();
- }
- var tagitOpts = {}
- if(!_.isUndefined(options.lookupURL) && options.lookupURL){
- tagitOpts["autocomplete"] = {
- cache: false,
+ var tagitOpts = {}
+ if(!_.isUndefined(options.lookupURL) && options.lookupURL){
+ tagitOpts["autocomplete"] = {
+ cache: false,
source: function( request, response ) {
var url = "service/plugins/services/lookupResource/"+that.rangerService.get('name');
var context ={
- 'userInput' : extractLast( request.term ),
+ 'userInput' : request.term,
'resourceName' : that.pathFieldName,
'resources' : {}
};
- var val = that.fields[that.pathFieldName].editor.getValue();
- context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource.split(",");
+ var val = that.fields[that.pathFieldName].editor.getValue('pathField');
+ context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource;
var p = $.ajax({
url : url,
type : "POST",
@@ -724,9 +724,9 @@ define(function(require){
$(this).removeClass('working');
},
search: function() {
- if(!_.isUndefined(this.value) && (/[ ,]+/).test(this.value)){
- var values = this.value.trim().split(/[ ,]+/);
- if (values.length > 1) {
+ if(!_.isUndefined(this.value) && this.value.includes('||')) {
+ var values = this.value.trim().split('||');
+ if (values.length > 1) {
for (var i = 0; i < values.length; i++) {
that.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit("createTag", values[i]);
}
@@ -734,28 +734,24 @@ define(function(require){
} else {
return val
}
- }
- var term = extractLast( this.value );
- $(this).addClass('working');
- if ( term.length < 1 ) {
- return false;
- }
- },
- }
- }
- tagitOpts['beforeTagAdded'] = function(event, ui) {
+ }
+ }
+ }
+ }
+ tagitOpts['beforeTagAdded'] = function(event, ui) {
// do something special
that.fields[that.pathFieldName].$el.removeClass('error');
that.fields[that.pathFieldName].$el.find('.help-inline').html('');
var tags = [];
- console.log(ui.tag);
if(!_.isUndefined(options.regExpValidation) && !options.regExpValidation.regexp.test(ui.tagLabel)){
that.fields[that.pathFieldName].$el.addClass('error');
that.fields[that.pathFieldName].$el.find('.help-inline').html(options.regExpValidation.message);
return false;
}
}
- this.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit(tagitOpts).on('change', function(e){
+ tagitOpts['singleFieldDelimiter'] = '||';
+ tagitOpts['singleField'] = false;
+ this.fields[that.pathFieldName].editor.$el.find('input[data-js="resource"]').tagit(tagitOpts).on('change', function(e){
//check dirty field for tagit input type : `path`
XAUtil.checkDirtyField($(e.currentTarget).val(), defaultValue.toString(), $(e.currentTarget));
});
@@ -772,18 +768,15 @@ define(function(require){
multiple: true,
minimumInputLength: 1,
width :'220px',
- tokenSeparators: [",", " "],
+ tokenSeparators: [' '],
initSelection : function (element, callback) {
var data = [];
//to set single select value
- if(!_.isUndefined(options.singleValueInput) && options.singleValueInput){
- callback({ id : element.val(), text : element.val() });
- return;
+ if(_.isArray(JSON.parse(element.val()))) {
+ $(JSON.parse(element.val())).each(function () {
+ data.push({id: this, text: this});
+ })
}
- //this is form multi-select value
- $(element.val().split(",")).each(function () {
- data.push({id: this, text: this});
- });
callback(data);
},
createSearchChoice: function(term, data) {
@@ -879,7 +872,7 @@ define(function(require){
}else{
val = this.fields[name].getValue();
}
- resources[name] = _.isNull(val) ? [] : val.resource.split(',');
+ resources[name] = _.isNull(val) ? [] : val.resource;
if(!_.isEmpty(currentResource.parent)){
name = currentResource.parent;
}else{
diff --git a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js
index f87e7a0..1725670 100644
--- a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js
+++ b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js
@@ -240,14 +240,6 @@ define(function(require) {
if (!this.model.isNew() && !_.isUndefined(this.model.get('path'))) {
defaultValue = this.model.get('path').values;
}
-
- function split(val) {
- return val.split(/,\s*/);
- }
-
- function extractLast(term) {
- return split(term).pop();
- }
var tagitOpts = {}
if (!_.isUndefined(options.lookupURL) && options.lookupURL) {
tagitOpts["autocomplete"] = {
@@ -255,12 +247,12 @@ define(function(require) {
source: function(request, response) {
var url = "service/plugins/services/lookupResource/" + that.rangerService.get('name');
var context = {
- 'userInput': extractLast(request.term),
+ 'userInput': request.term,
'resourceName': that.pathFieldName,
'resources': {}
};
- var val = that.fields[that.pathFieldName].editor.getValue();
- context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource.split(",");
+ var val = that.fields[that.pathFieldName].editor.getValue('pathField');
+ context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource;
var p = $.ajax({
url: url,
type: "POST",
@@ -286,8 +278,8 @@ define(function(require) {
},
search: function() {
$('.tagit-autocomplete').addClass('tagit-position');
- if (!_.isUndefined(this.value) && (/[ ,]+/).test(this.value)) {
- var values = this.value.trim().split(/[ ,]+/);
+ if(!_.isUndefined(this.value) && this.value.includes('||')) {
+ var values = this.value.trim().split('||');
if (values.length > 1) {
for (var i = 0; i < values.length; i++) {
that.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit("createTag", values[i]);
@@ -297,11 +289,6 @@ define(function(require) {
return val
}
}
- var term = extractLast(_.escape(this.value));
- $(this).addClass('working');
- if (term.length < 1) {
- return false;
- }
},
}
}
@@ -310,13 +297,14 @@ define(function(require) {
that.fields[that.pathFieldName].$el.removeClass('error');
that.fields[that.pathFieldName].$el.find('.help-inline').html('');
var tags = [];
- console.log(ui.tag);
if (!_.isUndefined(options.regExpValidation) && !options.regExpValidation.regexp.test(ui.tagLabel)) {
that.fields[that.pathFieldName].$el.addClass('error');
that.fields[that.pathFieldName].$el.find('.help-inline').html(options.regExpValidation.message);
return false;
}
}
+ tagitOpts['singleFieldDelimiter'] = '||';
+ tagitOpts['singleField'] = false;
this.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit(tagitOpts).on('change', function(e) {
//check dirty field for tagit input type : `path`
XAUtil.checkDirtyField($(e.currentTarget).val(), defaultValue.toString(), $(e.currentTarget));
@@ -344,7 +332,7 @@ define(function(require) {
multiple: true,
minimumInputLength: 1,
width: '220px',
- tokenSeparators: [",", " "],
+ tokenSeparators: [" "],
initSelection: function(element, callback) {
var data = [];
//to set single select value
@@ -356,12 +344,11 @@ define(function(require) {
return;
}
//this is form multi-select value
- $(element.val().split(",")).each(function() {
- data.push({
- id: this,
- text: this
- });
- });
+ if(_.isArray(JSON.parse(element.val()))) {
+ $(JSON.parse(element.val())).each(function () {
+ data.push({id: this, text: this});
+ })
+ }
callback(data);
},
createSearchChoice: function(term, data) {
@@ -474,7 +461,7 @@ define(function(require) {
} else {
val = this.fields[name].getValue();
}
- resources[name] = _.isNull(val) ? [] : val.resource.split(',');
+ resources[name] = _.isNull(val) ? [] : val.resource;
if (!_.isEmpty(currentResource.parent)) {
name = currentResource.parent;
} else {
diff --git a/security-admin/src/main/webapp/scripts/views/security_zone/zoneResource.js b/security-admin/src/main/webapp/scripts/views/security_zone/zoneResource.js
index 7634eab..8c19c0a 100644
--- a/security-admin/src/main/webapp/scripts/views/security_zone/zoneResource.js
+++ b/security-admin/src/main/webapp/scripts/views/security_zone/zoneResource.js
@@ -40,7 +40,7 @@ define(function(require) {
var resources = _.map(this.model.get('resources'), function(val, key) {
return {
'key': key,
- 'value': val
+ 'value': val.join(", ")
}
})
return {
@@ -197,7 +197,11 @@ define(function(require) {
_.each(that.rangerServiceDefModel.get('resources'), function(obj) {
var tmpObj = that.form.model.get(obj.name);
if (!_.isUndefined(tmpObj) && _.isObject(tmpObj) && !_.isEmpty(tmpObj.resource)) {
- tmpResource[obj.name] = tmpObj.resource.split(',');
+ if (obj.type == "path") {
+ tmpResource[obj.name] = tmpObj.resource;
+ } else {
+ tmpResource[obj.name] = _.map(tmpObj.resource, function(val){return val.text});
+ }
that.form.model.unset(obj.name);
}
});
diff --git a/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js b/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
index 2032da1..27e2aae 100644
--- a/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
+++ b/security-admin/src/main/webapp/scripts/views/service/AuditFilterConfig.js
@@ -358,8 +358,13 @@ define(function(require) {
var tmpObj = that.form.model.get(obj.name);
if (!_.isUndefined(tmpObj) && _.isObject(tmpObj) && !_.isEmpty(tmpObj.resource)) {
tmpResource[obj.name] ={}, resource[obj.name] ={};
- tmpResource[obj.name].values = tmpObj.resource.split(',');
- resource[obj.name].values = tmpObj.resource.split(',');
+ if (obj.type == "path") {
+ tmpResource[obj.name].values = tmpObj.resource;
+ resource[obj.name].values = tmpObj.resource;
+ } else {
+ tmpResource[obj.name].values = _.map(tmpObj.resource, function(val){return val.text});
+ resource[obj.name].values = _.map(tmpObj.resource, function(val){return val.text});
+ }
if (obj.excludesSupported) {
resource[obj.name]['isExcludes'] = tmpObj.isExcludes;
}
diff --git a/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js b/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js
index c08f745..318cdcb 100644
--- a/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js
+++ b/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js
@@ -234,14 +234,6 @@ define(function(require) {
if (!this.model.isNew() && !_.isUndefined(this.model.get('path'))) {
defaultValue = this.model.get('path').values;
}
-
- function split(val) {
- return val.split(/,\s*/);
- }
-
- function extractLast(term) {
- return split(term).pop();
- }
var tagitOpts = {}
if (!_.isUndefined(options.lookupURL) && options.lookupURL) {
tagitOpts["autocomplete"] = {
@@ -249,12 +241,12 @@ define(function(require) {
source: function(request, response) {
var url = "service/plugins/services/lookupResource/" + that.serviceName;
var context = {
- 'userInput': extractLast(request.term),
+ 'userInput': request.term,
'resourceName': that.pathFieldName,
'resources': {}
};
- var val = that.fields[that.pathFieldName].editor.getValue();
- context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource.split(",");
+ var val = that.fields[that.pathFieldName].editor.getValue('pathField');
+ context.resources[that.pathFieldName] = _.isNull(val) || _.isEmpty(val) ? [] : val.resource;
var p = $.ajax({
url: url,
type: "POST",
@@ -280,8 +272,8 @@ define(function(require) {
},
search: function() {
$('.tagit-autocomplete').addClass('tagit-position');
- if (!_.isUndefined(this.value) && (/[ ,]+/).test(this.value)) {
- var values = this.value.trim().split(/[ ,]+/);
+ if(!_.isUndefined(this.value) && this.value.includes('||')) {
+ var values = this.value.trim().split('||');
if (values.length > 1) {
for (var i = 0; i < values.length; i++) {
that.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit("createTag", values[i]);
@@ -291,11 +283,6 @@ define(function(require) {
return val
}
}
- var term = extractLast(_.escape(this.value));
- $(this).addClass('working');
- if (term.length < 1) {
- return false;
- }
},
}
}
@@ -304,13 +291,14 @@ define(function(require) {
that.fields[that.pathFieldName].$el.removeClass('error');
that.fields[that.pathFieldName].$el.find('.help-inline').html('');
var tags = [];
- console.log(ui.tag);
if (!_.isUndefined(options.regExpValidation) && !options.regExpValidation.regexp.test(ui.tagLabel)) {
that.fields[that.pathFieldName].$el.addClass('error');
that.fields[that.pathFieldName].$el.find('.help-inline').html(options.regExpValidation.message);
return false;
}
}
+ tagitOpts['singleFieldDelimiter'] = '||';
+ tagitOpts['singleField'] = false;
this.fields[that.pathFieldName].editor.$el.find('[data-js="resource"]').tagit(tagitOpts).on('change', function(e) {
//check dirty field for tagit input type : `path`
XAUtil.checkDirtyField($(e.currentTarget).val(), defaultValue.toString(), $(e.currentTarget));
@@ -338,24 +326,15 @@ define(function(require) {
multiple: true,
minimumInputLength: 1,
width: '220px',
- tokenSeparators: [",", " "],
+ tokenSeparators: [" "],
initSelection: function(element, callback) {
var data = [];
- //to set single select value
- if (!_.isUndefined(options.singleValueInput) && options.singleValueInput) {
- callback({
- id: element.val(),
- text: element.val()
- });
- return;
- }
//this is form multi-select value
- $(element.val().split(",")).each(function() {
- data.push({
- id: this,
- text: this
- });
- });
+ if(_.isArray(JSON.parse(element.val()))) {
+ $(JSON.parse(element.val())).each(function () {
+ data.push({id: this, text: this});
+ })
+ }
callback(data);
},
createSearchChoice: function(term, data) {
@@ -468,7 +447,7 @@ define(function(require) {
} else {
val = this.fields[name].getValue();
}
- resources[name] = _.isNull(val) ? [] : val.resource.split(',');
+ resources[name] = _.isNull(val) ? [] : val.resource;
if (!_.isEmpty(currentResource.parent)) {
name = currentResource.parent;
} else {
diff --git a/security-admin/src/main/webapp/styles/xa.css b/security-admin/src/main/webapp/styles/xa.css
index 0435174..f170d47 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -979,6 +979,10 @@ ul.tagit li.tagit-choice .tagit-close {
border-radius: 0 !important;
}
+.ui-menu.ui-widget.ui-widget-content.ui-autocomplete.ui-front.tagit-autocomplete {
+ width: 50% !important;
+}
+
table.backgrid tr > td > .label {
float: left;
margin: 0 3px 2px 0;