On 01/28/2011 02:04 PM, Adam Young wrote:


_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

From 70cb968ffd8cda67e7be1cf5422e6ec906ad619a Mon Sep 17 00:00:00 2001
From: Adam Young <ayo...@redhat.com>
Date: Fri, 28 Jan 2011 13:06:34 -0500
Subject: [PATCH] services list

Declaritive Service definition

https://fedorahosted.org/freeipa/ticket/442
---
 install/ui/entity.js  |    4 +
 install/ui/service.js |  249 ++++++++++++++++---------------------------------
 install/ui/widget.js  |    1 +
 3 files changed, 87 insertions(+), 167 deletions(-)

diff --git a/install/ui/entity.js b/install/ui/entity.js
index 69dd444f83c9ae32a88f8ae53b0995f1033627a0..ec4a2adc1baf23e5355c8ae2fe4f2a24ee750b0d 100644
--- a/install/ui/entity.js
+++ b/install/ui/entity.js
@@ -111,6 +111,10 @@ IPA.entity = function (spec) {
     };
 
     that.add_dialog = function(dialog) {
+        return that.dialog(dialog);
+    }
+
+    that.dialog = function(dialog) {
         dialog.entity_name = that.name;
         that.dialogs.push(dialog);
         that.dialogs_by_name[dialog.name] = dialog;
diff --git a/install/ui/service.js b/install/ui/service.js
index f67d755def899cac912431cc7b468756d31ba310..44c411c56c75c53441ddc75b1d803999a24e3653 100644
--- a/install/ui/service.js
+++ b/install/ui/service.js
@@ -25,143 +25,89 @@
 
 IPA.entity_factories.service = function () {
 
-    var that = IPA.entity({
+    return  IPA.entity({
         'name': 'service'
-    });
-
-    that.init = function() {
-
-        that.create_association({
+    }).
+        association({
             'name': 'host',
             'add_method': 'add_host',
             'remove_method': 'remove_host'
-        });
-
-        var dialog = IPA.service_add_dialog({
-            'name': 'add',
-            'title': 'Add New Service'
-        });
-        that.add_dialog(dialog);
-
-        var facet = IPA.service_search_facet({
-            'name': 'search',
-            'label': 'Search'
-        });
-        that.add_facet(facet);
-
-        facet = IPA.service_details_facet({
-            'name': 'details'
-        });
-        that.add_facet(facet);
-
-        facet = IPA.service_managedby_host_facet({
+        }).
+        dialog(
+            IPA.service_add_dialog({
+                'name': 'add',
+                'title': 'Add New Service'
+            })).
+        facet( IPA.search_facet().
+               column({name:'krbprincipalname'})).
+        facet( IPA.service_details_facet()).
+        facet( IPA.service_managedby_host_facet({
             'name': 'managedby_host',
-            'label': IPA.messages.association.managedby+' '+IPA.metadata['host'].label,
+            'label': IPA.messages.association.managedby
+                +' '+IPA.metadata['host'].label,
             'other_entity': 'host'
-        });
-        that.add_facet(facet);
-
-        that.entity_init();
-    };
-
-    return that;
+        }));
 };
 
 
+IPA.service_select_widget = function (spec){
+
+    var that = IPA.text_widget(spec);
+    var known_services = ["", "cifs", "DNS", "ftp", "HTTP","imap", "ldap",
+                          "libvirt","nfs","qpidd","smtp"];
+
+    var select_widget = $('<select/>');
+    for (var i = 0; i < known_services.length; i += 1){
+        select_widget.append($('<option/>',{
+            text: known_services[i],
+            click: function(){
+                that.input.val(this.value);
+            }
+
+        }));
+    }
+
+    that.parent_create = that.create;
+
+    that.create = function(container) {
+        that.parent_create(container);
+        container.append(select_widget);
+    }
+
+    return that;
+
+}
+
+
+/*TODO: the following labels etc. all need to be replaced with I18N strings */
+
 IPA.service_add_dialog = function (spec) {
 
     spec = spec || {};
 
-    var that = IPA.add_dialog(spec);
-
-    that.init = function() {
-
-        that.add_field(IPA.widget({
+    var that = IPA.add_dialog(spec).
+        field(IPA.widget({
             name: 'krbprincipalname'
-        }));
-
-        // TODO: Replace with i18n label
-        that.add_field(IPA.text_widget({
+        })).
+        field(IPA.service_select_widget({
             'name': 'service',
             'label': 'Service',
             'size': 20,
             'undo': false
-        }));
-
-        // TODO: Replace with i18n label
-        that.add_field(IPA.text_widget({
+        })).
+        field(IPA.text_widget({
             'name': 'host',
             'label': 'Host Name',
             'size': 40,
             'undo': false
-        }));
-
-        // TODO: Replace with i18n label
-        that.add_field(IPA.checkbox_widget({
+        })).
+        field(IPA.checkbox_widget({
             name: 'force',
             label: 'Force',
             tooltip: 'force principal name even if not in DNS',
             undo: false
         }));
 
-        that.add_dialog_init();
-    };
-
-    that.create = function() {
-
-        var table = $('<table/>').appendTo(that.container);
-
-        var field = that.get_field('service');
-
-        var tr = $('<tr/>').appendTo(table);
-
-        var td = $('<td/>', {
-            style: 'vertical-align: top;',
-            title: field.label
-        }).appendTo(tr);
-        td.append(field.label+': ');
-
-        td = $('<td/>', {
-            'style': 'vertical-align: top;'
-        }).appendTo(tr);
-
-        var span = $('<span/>', { 'name': 'service' }).appendTo(td);
-        field.create(span);
-
-        field = that.get_field('host');
-
-        tr = $('<tr/>').appendTo(table);
-
-        td = $('<td/>', {
-            style: 'vertical-align: top;',
-            title: field.label
-        }).appendTo(tr);
-        td.append(field.label+': ');
-
-        td = $('<td/>', {
-            'style': 'vertical-align: top;'
-        }).appendTo(tr);
-
-        span = $('<span/>', { 'name': 'host' }).appendTo(td);
-        field.create(span);
-
-        field = that.get_field('force');
-
-        tr = $('<tr/>').appendTo(table);
-
-        td = $('<td/>', {
-            style: 'vertical-align: top;',
-            title: field.label
-        }).appendTo(tr);
-        td.append(field.label+': ');
-
-        td = $('<td/>', {
-            'style': 'vertical-align: top;'
-        }).appendTo(tr);
-
-        span = $('<span/>', { 'name': 'force' }).appendTo(td);
-        field.create(span);
-    };
 
     that.save = function(record) {
 
@@ -181,78 +127,47 @@ IPA.service_add_dialog = function (spec) {
 };
 
 
-IPA.service_search_facet = function (spec) {
-
-    spec = spec || {};
-
-    var that = IPA.search_facet(spec);
-
-    that.init = function() {
-
-        that.create_column({name:'krbprincipalname'});
-        that.search_facet_init();
-    };
-
-    return that;
-};
-
-
 IPA.service_details_facet = function (spec) {
 
     spec = spec || {};
 
-    var that = IPA.details_facet(spec);
-
-    that.init = function() {
-
-        var section = IPA.details_list_section({
+    var that = IPA.details_facet(spec).
+        section(IPA.stanza({
             name: 'details',
             label: 'Service Settings'
-        });
-        that.add_section(section);
-
-        section.create_field({
+        }).
+        input({
             name: 'krbprincipalname'
-        });
-
-        // TODO: Replace with i18n label
-        section.create_field({
+        }).
+        input({
             name: 'service',
             label: 'Service',
             load: service_service_load
-        });
-
-        // TODO: Replace with i18n label
-        section.create_field({
+        }).
+        input({
             name: 'host',
             label: 'Host Name',
             load: service_host_load
-        });
+        })).
+        section(
+            IPA.stanza({
+                name: 'provisioning',
+                label: 'Provisioning'
+            }).
+                custom_input(service_provisioning_status_widget({
+                    name: 'provisioning_status',
+                    label: 'Status'
+                }))).
+        section(
+            IPA.stanza({
+                name: 'certificate',
+                label: 'Service Certificate'
+            }).
+                custom_input((service_certificate_status_widget({
+                    name: 'certificate_status',
+                    label: 'Status'
+                }))));
 
-        section = IPA.details_list_section({
-            name: 'provisioning',
-            label: 'Provisioning'
-        });
-        that.add_section(section);
-
-        section.add_field(service_provisioning_status_widget({
-            name: 'provisioning_status',
-            label: 'Status'
-        }));
-
-        section = IPA.details_list_section({
-            name: 'certificate',
-            label: 'Service Certificate'
-        });
-        that.add_section(section);
-
-        section.add_field(service_certificate_status_widget({
-            name: 'certificate_status',
-            label: 'Status'
-        }));
-
-        that.details_facet_init();
-    };
 
     return that;
 };
diff --git a/install/ui/widget.js b/install/ui/widget.js
index 3bb5c0f5a28f70c233ead511247de6c8cbb5ebf6..19dc4d121dbd8faabe9342fefae7cabacfe2f0bf 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -262,6 +262,7 @@ IPA.text_widget = function(spec) {
         undo.click(function() {
             that.reset();
         });
+        that.input = input;
     };
 
     that.load = function(record) {
-- 
1.7.3.5

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to