Remove magic flags from files_external backend params
This commit is contained in:
parent
2d1d89ee29
commit
f4e1a1677b
|
@ -587,6 +587,19 @@ MountOptionsDropdown.prototype = {
|
||||||
var MountConfigListView = function($el, options) {
|
var MountConfigListView = function($el, options) {
|
||||||
this.initialize($el, options);
|
this.initialize($el, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MountConfigListView.ParameterFlags = {
|
||||||
|
OPTIONAL: 1,
|
||||||
|
USER_PROVIDED: 2
|
||||||
|
};
|
||||||
|
|
||||||
|
MountConfigListView.ParameterTypes = {
|
||||||
|
TEXT: 0,
|
||||||
|
BOOLEAN: 1,
|
||||||
|
PASSWORD: 2,
|
||||||
|
HIDDEN: 3
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @memberOf OCA.External.Settings
|
* @memberOf OCA.External.Settings
|
||||||
*/
|
*/
|
||||||
|
@ -961,16 +974,15 @@ MountConfigListView.prototype = _.extend({
|
||||||
*/
|
*/
|
||||||
writeParameterInput: function($td, parameter, placeholder, classes) {
|
writeParameterInput: function($td, parameter, placeholder, classes) {
|
||||||
var hasFlag = function(flag) {
|
var hasFlag = function(flag) {
|
||||||
return placeholder.indexOf(flag) !== -1;
|
return (placeholder.flags & flag) === flag;
|
||||||
};
|
};
|
||||||
classes = $.isArray(classes) ? classes : [];
|
classes = $.isArray(classes) ? classes : [];
|
||||||
classes.push('added');
|
classes.push('added');
|
||||||
if (placeholder.indexOf('&') === 0) {
|
if (hasFlag(MountConfigListView.ParameterFlags.OPTIONAL)) {
|
||||||
classes.push('optional');
|
classes.push('optional');
|
||||||
placeholder = placeholder.substring(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasFlag('@')) {
|
if (hasFlag(MountConfigListView.ParameterFlags.USER_PROVIDED)) {
|
||||||
if (this._isPersonal) {
|
if (this._isPersonal) {
|
||||||
classes.push('user_provided');
|
classes.push('user_provided');
|
||||||
} else {
|
} else {
|
||||||
|
@ -980,17 +992,13 @@ MountConfigListView.prototype = _.extend({
|
||||||
|
|
||||||
var newElement;
|
var newElement;
|
||||||
|
|
||||||
var trimmedPlaceholder = placeholder;
|
var trimmedPlaceholder = placeholder.value;
|
||||||
var flags = ['@', '*', '!', '#', '&']; // used to determine what kind of parameter
|
if (placeholder.type === MountConfigListView.ParameterTypes.PASSWORD) {
|
||||||
while(flags.indexOf(trimmedPlaceholder[0]) !== -1) {
|
|
||||||
trimmedPlaceholder = trimmedPlaceholder.substr(1);
|
|
||||||
}
|
|
||||||
if (hasFlag('*')) {
|
|
||||||
newElement = $('<input type="password" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" placeholder="'+ trimmedPlaceholder+'" />');
|
newElement = $('<input type="password" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" placeholder="'+ trimmedPlaceholder+'" />');
|
||||||
} else if (hasFlag('!')) {
|
} else if (placeholder.type === MountConfigListView.ParameterTypes.BOOLEAN) {
|
||||||
var checkboxId = _.uniqueId('checkbox_');
|
var checkboxId = _.uniqueId('checkbox_');
|
||||||
newElement = $('<input type="checkbox" id="'+checkboxId+'" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" /><label for="'+checkboxId+'">'+ trimmedPlaceholder+'</label>');
|
newElement = $('<input type="checkbox" id="'+checkboxId+'" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" /><label for="'+checkboxId+'">'+ trimmedPlaceholder+'</label>');
|
||||||
} else if (hasFlag('#')) {
|
} else if (placeholder.type === MountConfigListView.ParameterTypes.HIDDEN) {
|
||||||
newElement = $('<input type="hidden" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" />');
|
newElement = $('<input type="hidden" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" />');
|
||||||
} else {
|
} else {
|
||||||
newElement = $('<input type="text" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" placeholder="'+ trimmedPlaceholder+'" />');
|
newElement = $('<input type="text" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" placeholder="'+ trimmedPlaceholder+'" />');
|
||||||
|
|
|
@ -131,27 +131,11 @@ class DefinitionParameter implements \JsonSerializable {
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function jsonSerialize() {
|
public function jsonSerialize() {
|
||||||
$prefix = '';
|
return [
|
||||||
switch ($this->getType()) {
|
'value' => $this->getText(),
|
||||||
case self::VALUE_BOOLEAN:
|
'flags' => $this->getFlags(),
|
||||||
$prefix = '!';
|
'type' => $this->getType()
|
||||||
break;
|
];
|
||||||
case self::VALUE_PASSWORD:
|
|
||||||
$prefix = '*';
|
|
||||||
break;
|
|
||||||
case self::VALUE_HIDDEN:
|
|
||||||
$prefix = '#';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->isFlagSet(self::FLAG_OPTIONAL)) {
|
|
||||||
$prefix = '&' . $prefix;
|
|
||||||
}
|
|
||||||
if ($this->isFlagSet(self::FLAG_USER_PROVIDED)) {
|
|
||||||
$prefix = '@' . $prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $prefix . $this->getText();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isOptional() {
|
public function isOptional() {
|
||||||
|
|
|
@ -27,18 +27,34 @@ class DefinitionParameterTest extends \Test\TestCase {
|
||||||
|
|
||||||
public function testJsonSerialization() {
|
public function testJsonSerialization() {
|
||||||
$param = new Param('foo', 'bar');
|
$param = new Param('foo', 'bar');
|
||||||
$this->assertEquals('bar', $param->jsonSerialize());
|
$this->assertEquals([
|
||||||
|
'value' => 'bar',
|
||||||
|
'flags' => 0,
|
||||||
|
'type' => 0
|
||||||
|
], $param->jsonSerialize());
|
||||||
|
|
||||||
$param->setType(Param::VALUE_BOOLEAN);
|
$param->setType(Param::VALUE_BOOLEAN);
|
||||||
$this->assertEquals('!bar', $param->jsonSerialize());
|
$this->assertEquals([
|
||||||
|
'value' => 'bar',
|
||||||
|
'flags' => 0,
|
||||||
|
'type' => Param::VALUE_BOOLEAN
|
||||||
|
], $param->jsonSerialize());
|
||||||
|
|
||||||
$param->setType(Param::VALUE_PASSWORD);
|
$param->setType(Param::VALUE_PASSWORD);
|
||||||
$param->setFlag(Param::FLAG_OPTIONAL);
|
$param->setFlag(Param::FLAG_OPTIONAL);
|
||||||
$this->assertEquals('&*bar', $param->jsonSerialize());
|
$this->assertEquals([
|
||||||
|
'value' => 'bar',
|
||||||
|
'flags' => Param::FLAG_OPTIONAL,
|
||||||
|
'type' => Param::VALUE_PASSWORD
|
||||||
|
], $param->jsonSerialize());
|
||||||
|
|
||||||
$param->setType(Param::VALUE_HIDDEN);
|
$param->setType(Param::VALUE_HIDDEN);
|
||||||
$param->setFlags(Param::FLAG_NONE);
|
$param->setFlags(Param::FLAG_NONE);
|
||||||
$this->assertEquals('#bar', $param->jsonSerialize());
|
$this->assertEquals([
|
||||||
|
'value' => 'bar',
|
||||||
|
'flags' => Param::FLAG_NONE,
|
||||||
|
'type' => Param::VALUE_HIDDEN
|
||||||
|
], $param->jsonSerialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateValueProvider() {
|
public function validateValueProvider() {
|
||||||
|
|
|
@ -58,8 +58,13 @@ describe('OCA.External.Settings tests', function() {
|
||||||
'identifier': '\\OC\\TestBackend',
|
'identifier': '\\OC\\TestBackend',
|
||||||
'name': 'Test Backend',
|
'name': 'Test Backend',
|
||||||
'configuration': {
|
'configuration': {
|
||||||
'field1': 'Display Name 1',
|
'field1': {
|
||||||
'field2': '&Display Name 2'
|
'value': 'Display Name 1'
|
||||||
|
},
|
||||||
|
'field2': {
|
||||||
|
'value': 'Display Name 2',
|
||||||
|
'flags': 1
|
||||||
|
}
|
||||||
},
|
},
|
||||||
'authSchemes': {
|
'authSchemes': {
|
||||||
'builtin': true,
|
'builtin': true,
|
||||||
|
@ -70,8 +75,13 @@ describe('OCA.External.Settings tests', function() {
|
||||||
'identifier': '\\OC\\AnotherTestBackend',
|
'identifier': '\\OC\\AnotherTestBackend',
|
||||||
'name': 'Another Test Backend',
|
'name': 'Another Test Backend',
|
||||||
'configuration': {
|
'configuration': {
|
||||||
'field1': 'Display Name 1',
|
'field1': {
|
||||||
'field2': '&Display Name 2'
|
'value': 'Display Name 1'
|
||||||
|
},
|
||||||
|
'field2': {
|
||||||
|
'value': 'Display Name 2',
|
||||||
|
'flags': 1
|
||||||
|
}
|
||||||
},
|
},
|
||||||
'authSchemes': {
|
'authSchemes': {
|
||||||
'builtin': true,
|
'builtin': true,
|
||||||
|
@ -82,12 +92,30 @@ describe('OCA.External.Settings tests', function() {
|
||||||
'identifier': '\\OC\\InputsTestBackend',
|
'identifier': '\\OC\\InputsTestBackend',
|
||||||
'name': 'Inputs test backend',
|
'name': 'Inputs test backend',
|
||||||
'configuration': {
|
'configuration': {
|
||||||
'field_text': 'Text field',
|
'field_text': {
|
||||||
'field_password': '*Password field',
|
'value': 'Text field'
|
||||||
'field_bool': '!Boolean field',
|
},
|
||||||
'field_hidden': '#Hidden field',
|
'field_password': {
|
||||||
'field_text_optional': '&Text field optional',
|
'value': ',Password field',
|
||||||
'field_password_optional': '&*Password field optional'
|
'type': 2
|
||||||
|
},
|
||||||
|
'field_bool': {
|
||||||
|
'value': 'Boolean field',
|
||||||
|
'type': 1
|
||||||
|
},
|
||||||
|
'field_hidden': {
|
||||||
|
'value': 'Hidden field',
|
||||||
|
'type': 3
|
||||||
|
},
|
||||||
|
'field_text_optional': {
|
||||||
|
'value': 'Text field optional',
|
||||||
|
'flags': 1
|
||||||
|
},
|
||||||
|
'field_password_optional': {
|
||||||
|
'value': 'Password field optional',
|
||||||
|
'flags': 1,
|
||||||
|
'type': 2
|
||||||
|
}
|
||||||
},
|
},
|
||||||
'authSchemes': {
|
'authSchemes': {
|
||||||
'builtin': true,
|
'builtin': true,
|
||||||
|
|
Loading…
Reference in New Issue