summaryrefslogtreecommitdiffstats
path: root/install/ui/widget.js
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2011-02-01 13:06:58 -0500
committerEndi S. Dewata <edewata@redhat.com>2011-02-01 14:56:41 -0500
commitec59e618da26b3514c9e174b7a7e8aa3e0deb462 (patch)
treeda9d9319854cdd1974c5acf59f44113b6accce91 /install/ui/widget.js
parent5c6232e24d008d062bb5e70dae5b111c32e96169 (diff)
downloadfreeipa-ec59e618da26b3514c9e174b7a7e8aa3e0deb462.tar.gz
freeipa-ec59e618da26b3514c9e174b7a7e8aa3e0deb462.tar.xz
freeipa-ec59e618da26b3514c9e174b7a7e8aa3e0deb462.zip
use entity select widget for permissions
https://fedorahosted.org/freeipa/ticket/879
Diffstat (limited to 'install/ui/widget.js')
-rw-r--r--install/ui/widget.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/install/ui/widget.js b/install/ui/widget.js
index 4a77dda83..b5c02ee33 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -1,6 +1,7 @@
/*jsl:import ipa.js */
/* Authors:
* Endi Sukma Dewata <edewata@redhat.com>
+ * Adam Young <ayoung@redhat.com>
*
* Copyright (C) 2010 Red Hat
* see file 'COPYING' for use and warranty information
@@ -1061,3 +1062,93 @@ IPA.table_widget = function (spec) {
return that;
};
+IPA.entity_select_widget = function(spec){
+
+ var that = IPA.widget(spec);
+ var entity = spec.entity || 'group';
+
+ function populate_select(value){
+ function find_success(result){
+ $('option', that.entity_select).remove();
+ var entities = result.result.result;
+ for (var i =0; i < result.result.count; i +=1){
+ var option =
+ $('<option/>',{
+ text:entities[i].cn[0],
+ value:entities[i].cn[0]
+ }).
+ appendTo(that.entity_select);
+ if (value === entities[i].cn[0]){
+ option.attr('selected','selected');
+ }
+ }
+ }
+ function find_error(err){
+ }
+ IPA.command({
+ method: entity+'_find',
+ args:[that.entity_filter.val()],
+ options:{},
+ on_success:find_success,
+ on_error:find_error
+ }).execute();
+ }
+
+ that.create = function(container){
+ var dd = $('<dd/>').appendTo(container);
+
+ that.entity_select = $('<select/>', {
+ id: that.name + '-entity-select',
+ change: function(){
+
+ }
+ }).appendTo(dd);
+
+
+ that.entity_filter = $('<input/>',{
+ size:10,
+ type: 'text',
+ id: 'entity_filter',
+ style: 'display: none;',
+ keypress: function(){
+ populate_select();
+ }
+ }).appendTo(dd);
+
+ $('<a />',{
+ href:"",
+ text: 'add ' +entity + ' filter: ',
+ click:function(){
+ that.entity_filter.css('display','inline');
+ $(this).css('display','none');
+ return false;
+ }
+ }).appendTo(dd);
+ populate_select();
+ };
+ that.reset = function(){
+ that.entity_filter.val(that.values[0]);
+ populate_select(that.values[0]);
+
+ };
+
+ that.is_dirty = function(){
+ return (that.save()[0] !== that.values[0]);
+ };
+
+ that.load = function(record){
+ var value = record[that.name];
+ if (value instanceof Array) {
+ that.values = value;
+ } else {
+ that.values = value ? [value] : [''];
+ }
+ that.reset();
+ };
+
+ that.save = function(){
+ return [$('option:selected', that.entity_select).val()];
+ };
+
+ return that;
+}; \ No newline at end of file