diff options
author | Pavel Vomacka <pvomacka@redhat.com> | 2016-04-22 10:45:49 +0200 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2016-06-29 15:41:58 +0200 |
commit | e7a55ef30b252a616f50c58f99a538e9b090037c (patch) | |
tree | 3ccfb3017f4a2b64c62cdb631ac819612829d646 | |
parent | 044d3c25de6806b68b1f1627863873ecb1a87957 (diff) | |
download | freeipa-e7a55ef30b252a616f50c58f99a538e9b090037c.tar.gz freeipa-e7a55ef30b252a616f50c58f99a538e9b090037c.tar.xz freeipa-e7a55ef30b252a616f50c58f99a538e9b090037c.zip |
Add Object adapter
Object adapter changes data to more useful format. Single value is reachable
as single value, property with more values is transformed to array.
https://fedorahosted.org/freeipa/ticket/5381
Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
-rw-r--r-- | install/ui/src/freeipa/field.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/install/ui/src/freeipa/field.js b/install/ui/src/freeipa/field.js index 12ef7f455..3f7e1d1b4 100644 --- a/install/ui/src/freeipa/field.js +++ b/install/ui/src/freeipa/field.js @@ -1266,6 +1266,45 @@ field.SshKeysAdapter = declare([field.Adapter], { } }); + +/** + * ObjectAdapter is basic adapter which converts object to more usable format. + * All properties which have only one value are tranformed this way: + * property1: {"__base64__": "value1"} => property1: "value1", + * property2: {"value2"} => property2: "value2", + * Works for __base64__ as well as for __datetime__ and __dns_name__ + * + * In case that the property has more values, then they are returned as array. + * + * @class + * @extends field.Adapter + */ +field.ObjectAdapter = declare([field.Adapter], { + + normalize_object: function(obj) { + for (var property in obj) { + if (obj.hasOwnProperty(property)) { + obj[property] = rpc.extract_objects([obj[property]]); + if (obj[property].length == 1) { + obj[property] = obj[property][0]; + } + } + } + }, + + load: function(data) { + + var record = this.get_record(data); + + for (var i=0; i<record.length; i++) { + this.normalize_object(record[i]); + } + + return record; + } +}); + + /** * Field for enabling/disabling entity * @@ -1536,6 +1575,7 @@ field.register = function() { v.register('same_password', field.same_password_validator); l.register('adapter', field.Adapter); + l.register('object_adapter', field.ObjectAdapter); }; phases.on('registration', field.register); |