From dd55b9068b445ffcbf8fd553aa04c04521d5d5a5 Mon Sep 17 00:00:00 2001
From: Endi S. Dewata <edewata@redhat.com>
Date: Mon, 6 Dec 2010 16:30:10 -0600
Subject: [PATCH] Dialog i18n

The ipa_add_dialog has been fixed to initialize the fields which
will get the labels from metadata. Hard-coded labels have been
removed from field declarations.

The superior() method has been removed because it doesn't work with
multi-level inheritance. Superclass method for now is called using
<class name>_<method> (e.g. widget_init).
---
 install/static/add.js          |    3 ++-
 install/static/details.js      |    7 -------
 install/static/entity.js       |   17 ++---------------
 install/static/group.js        |   15 ++++++---------
 install/static/hbac.js         |    6 ++----
 install/static/hbacsvc.js      |   14 ++++----------
 install/static/hbacsvcgroup.js |    8 +++-----
 install/static/host.js         |    5 ++---
 install/static/hostgroup.js    |   14 ++++++--------
 install/static/netgroup.js     |   14 ++++++--------
 install/static/policy.js       |   34 ++++++++++++++--------------------
 install/static/service.js      |    9 ++++++---
 install/static/sudocmd.js      |   14 ++++----------
 install/static/sudocmdgroup.js |    8 +++-----
 install/static/sudorule.js     |    8 ++------
 install/static/user.js         |   15 +++++++--------
 install/static/widget.js       |   20 +++++---------------
 17 files changed, 74 insertions(+), 137 deletions(-)

diff --git a/install/static/add.js b/install/static/add.js
index d587b80d9525c26c5ad1ea73de3698366222f312..f2eebb8ac2992a5332f6aa929265b5c00898fb69 100644
--- a/install/static/add.js
+++ b/install/static/add.js
@@ -84,6 +84,8 @@ function ipa_add_dialog(spec) {
         that.add_button('Cancel', function() {
             that.close();
         });
+
+        that.dialog_init();
     };
 
     that.add = function(record, on_success, on_error) {
@@ -109,7 +111,6 @@ function ipa_add_dialog(spec) {
         ipa_cmd('add', args, options, on_success, on_error, that.entity_name);
     };
 
-    that.superior_init = that.superior('init');
     that.add_dialog_init = that.init;
 
     return that;
diff --git a/install/static/details.js b/install/static/details.js
index f0e24ac08213c8370291c1fb616f8444066d67d3..cc1a4e19d6872f3ca676905c3ca85e906f3ebcae 100644
--- a/install/static/details.js
+++ b/install/static/details.js
@@ -142,13 +142,6 @@ function ipa_details_section(spec){
     that.fields = [];
     that.fields_by_name = {};
 
-    that.superior = function(name) {
-        var method = that[name];
-        return function () {
-            return method.apply(that, arguments);
-        };
-    };
-
     that.__defineGetter__("entity_name", function(){
         return that._entity_name;
     });
diff --git a/install/static/entity.js b/install/static/entity.js
index dcb7e6f8290fe99dededdeecbe6f2d97da5c284b..9372d917ed98fa150abf4930d1e923ad9556adcf 100644
--- a/install/static/entity.js
+++ b/install/static/entity.js
@@ -47,13 +47,6 @@ function ipa_facet(spec) {
 
     that.create_action_panel = ipa_facet_create_action_panel;
 
-    that.superior = function(name) {
-        var method = that[name];
-        return function () {
-            return method.apply(that, arguments);
-        };
-    };
-
     function init() {
     }
 
@@ -105,13 +98,6 @@ function ipa_entity(spec) {
     that.associations = [];
     that.associations_by_name = {};
 
-    that.superior = function(name) {
-        var method = that[name];
-        return function () {
-            return method.apply(that, arguments);
-        };
-    };
-
     that.get_dialog = function(name) {
         return that.dialogs_by_name[name];
     };
@@ -273,7 +259,6 @@ function ipa_entity_set_add_definition(entity_name, data) {
         'title': data[1]
     });
     entity.add_dialog(dialog);
-    dialog.init();
 
     for (var i=0; i<data[2].length; i++) {
         var field = data[2][i];
@@ -284,6 +269,8 @@ function ipa_entity_set_add_definition(entity_name, data) {
             undo: false
         }));
     }
+
+    dialog.init();
 }
 
 function ipa_entity_get_add_dialog(entity_name) {
diff --git a/install/static/group.js b/install/static/group.js
index f3dba7b03169273fd68c9d97c0f3ff0470270a73..21a312570de276441ab5987c965b3b9cad6f4294 100644
--- a/install/static/group.js
+++ b/install/static/group.js
@@ -87,16 +87,13 @@ function ipa_group_add_dialog(spec) {
 
     that.init = function() {
 
+        that.add_field(ipa_text_widget({name:'cn', undo: false}));
+        that.add_field(ipa_text_widget({name:'description', undo: false}));
+        // TODO: Replace with i18n label
+        that.add_field(ipa_checkbox_widget({name:'posix', label:'Is this a POSIX group?', undo: false}));
+        that.add_field(ipa_text_widget({name:'gidnumber', undo: false}));
+
         that.add_dialog_init();
-
-        that.add_field(ipa_text_widget({name:'cn', entity_name:'group',
-                                        undo: false}));
-        that.add_field(ipa_text_widget({name:'description',
-                                        entity_name:'group', undo: false}));
-        that.add_field(ipa_checkbox_widget({name:'posix', entity_name:'group',
-                                            undo: false}));
-        that.add_field(ipa_text_widget({name:'gidnumber', entity_name:'group',
-                                        undo: false}));
     };
 
     return that;
diff --git a/install/static/hbac.js b/install/static/hbac.js
index d5105bace846887f64b1c0afb549b2dacd9bd311..0b642aec5e419d39af969b659b2f5c5fba515ca4 100755
--- a/install/static/hbac.js
+++ b/install/static/hbac.js
@@ -63,23 +63,21 @@ function ipa_hbac_add_dialog(spec) {
 
     that.init = function() {
 
-        that.add_dialog_init();
-
         that.add_field(ipa_text_widget({
             'name': 'cn',
-            'label': 'Rule Name',
             'undo': false
         }));
 
         that.add_field(ipa_radio_widget({
             'name': 'accessruletype',
-            'label': 'Rule type',
             'options': [
                 { 'value': 'allow', 'label': 'Allow' },
                 { 'value': 'deny', 'label': 'Deny' }
             ],
             'undo': false
         }));
+
+        that.add_dialog_init();
     };
 
     return that;
diff --git a/install/static/hbacsvc.js b/install/static/hbacsvc.js
index bf3c2ad71c0719c86c357a591052d44bc483b82b..40454412f633a70156942b0706031aab810eb09b 100755
--- a/install/static/hbacsvc.js
+++ b/install/static/hbacsvc.js
@@ -61,14 +61,12 @@ function ipa_hbacsvc_add_dialog(spec) {
 
     var that = ipa_add_dialog(spec);
 
-    that.superior_init = that.superior('init');
-
     that.init = function() {
 
-        that.superior_init();
+        that.add_field(ipa_text_widget({name:'cn', undo: false}));
+        that.add_field(ipa_text_widget({name:'description', undo: false}));
 
-        that.add_field(ipa_text_widget({name:'cn', label:'Name', undo: false}));
-        that.add_field(ipa_text_widget({name:'description', label:'Description', undo: false}));
+        that.add_dialog_init();
     };
 
     return that;
@@ -128,10 +126,6 @@ function ipa_hbacsvc_details_facet(spec) {
 
     var that = ipa_details_facet(spec);
 
-    that.superior_init = that.superior('init');
-    that.superior_create = that.superior('create');
-    that.superior_setup = that.superior('setup');
-
     that.init = function() {
 
         var section = ipa_details_list_section({
@@ -143,7 +137,7 @@ function ipa_hbacsvc_details_facet(spec) {
         section.create_field({'name': 'cn'});
         section.create_field({'name': 'description'});
 
-        that.superior_init();
+        that.details_facet_init();
     };
 
     return that;
diff --git a/install/static/hbacsvcgroup.js b/install/static/hbacsvcgroup.js
index 792bd44e6c230ef7227e5b6ad61de1201a9830b5..6e7460e0b20394a2fe7576ca6e325062124a0c4f 100755
--- a/install/static/hbacsvcgroup.js
+++ b/install/static/hbacsvcgroup.js
@@ -67,14 +67,12 @@ function ipa_hbacsvcgroup_add_dialog(spec) {
 
     var that = ipa_add_dialog(spec);
 
-    that.superior_init = that.superior('init');
-
     that.init = function() {
 
-        that.superior_init();
+        that.add_field(ipa_text_widget({name:'cn', undo: false}));
+        that.add_field(ipa_text_widget({name:'description', undo: false}));
 
-        that.add_field(ipa_text_widget({name:'cn', label:'Name', undo: false}));
-        that.add_field(ipa_text_widget({name:'description', label:'Description', undo: false}));
+        that.add_dialog_init();
     };
 
     return that;
diff --git a/install/static/host.js b/install/static/host.js
index 56e3eb30ad95422016afdadbdba0e41a0d32822a..d9ca3c153118816f0ff266953934763a57f164db 100644
--- a/install/static/host.js
+++ b/install/static/host.js
@@ -83,14 +83,13 @@ function ipa_host_add_dialog(spec) {
 
     that.init = function() {
 
-        that.add_dialog_init();
-
         that.add_field(ipa_text_widget({
             'name': 'fqdn',
-            entity_name:'host',
             'size': 40,
             'undo': false
         }));
+
+        that.add_dialog_init();
     };
 
     return that;
diff --git a/install/static/hostgroup.js b/install/static/hostgroup.js
index 99be7259986db3e00f335a79789b3434b79803e6..2fb32dbb815927e494f92d2cbde1303630681d31 100644
--- a/install/static/hostgroup.js
+++ b/install/static/hostgroup.js
@@ -47,19 +47,17 @@ IPA.add_entity( function() {
 
         var dialog = ipa_add_dialog({
             name: 'add',
-            title: 'Add Hostgroup',
-            entity_name:'hostgroup'
+            title: 'Add Hostgroup'
         });
-
         that.add_dialog(dialog);
+
+        dialog.add_field(ipa_text_widget({name: 'cn', undo: false}));
+        dialog.add_field(ipa_text_widget({name: 'description', undo: false}));
         dialog.init();
-        dialog.add_field(ipa_text_widget({ name: 'cn',
-                                           entity_name:'hostgroup'}));
-        dialog.add_field(ipa_text_widget({ name: 'description',
-                                           entity_name:'hostgroup' }));
+
         that.create_association_facets();
         that.entity_init();
-    }
+    };
     return that;
 }());
 
diff --git a/install/static/netgroup.js b/install/static/netgroup.js
index b0b2ede33dd504064b4d05857edc042e4f041676..9abf6ae78c9a2634a5286c3bd329d44127e187e4 100644
--- a/install/static/netgroup.js
+++ b/install/static/netgroup.js
@@ -47,19 +47,17 @@ IPA.add_entity( function() {
 
         var dialog = ipa_add_dialog({
             name: 'add',
-            title: 'Add Netgroup',
-            entity_name:'netgroup'
+            title: 'Add Netgroup'
         });
-
         that.add_dialog(dialog);
+
+        dialog.add_field(ipa_text_widget({ name: 'cn', undo: false}));
+        dialog.add_field(ipa_text_widget({ name: 'description', undo: false}));
         dialog.init();
-        dialog.add_field(ipa_text_widget({ name: 'cn',
-                                           entity_name:'netgroup'}));
-        dialog.add_field(ipa_text_widget({ name: 'description',
-                                           entity_name:'netgroup' }));
+
         that.create_association_facets();
         that.entity_init();
-    }
+    };
     return that;
 }());
 
diff --git a/install/static/policy.js b/install/static/policy.js
index 9b62a18f442f8098f7cfdfb35f71bdfc376f7b0b..df3970738115b1de13967f9c05132f2df17f02a1 100644
--- a/install/static/policy.js
+++ b/install/static/policy.js
@@ -64,23 +64,18 @@ IPA.add_entity(function (){
 
         var dialog = ipa_add_dialog({
             name: 'add',
-            title: 'Add DNS Zone',
-            entity_name:'dnszone'
+            title: 'Add DNS Zone'
         });
-
         that.add_dialog(dialog);
+
+        dialog.add_field(ipa_text_widget({ name: 'idnsname', undo: false}));
+        dialog.add_field(ipa_text_widget({ name: 'idnssoamname', undo: false}));
+        dialog.add_field(ipa_text_widget({ name: 'idnssoarname', undo: false}));
         dialog.init();
 
-        dialog.add_field(ipa_text_widget({ name: 'idnsname',
-                                           entity_name:'dnszone'}));
-        dialog.add_field(ipa_text_widget({ name: 'idnssoamname',
-                                           entity_name:'dnszone'}));
-        dialog.add_field(ipa_text_widget({ name: 'idnssoarname',
-                                           entity_name:'dnszone'}));
-
         that.create_association_facets();
         that.entity_init();
-    }
+    };
 
 
     return that;
@@ -521,14 +516,13 @@ IPA.add_entity(function (){
 
         var dialog = ipa_add_dialog({
             name: 'add',
-            title: 'Add Automount Location',
-            entity_name:'automountlocation'
+            title: 'Add Automount Location'
         });
-
         that.add_dialog(dialog);
+
+        dialog.add_field(ipa_text_widget({ name: 'cn', undo: false}));
         dialog.init();
-        dialog.add_field(ipa_text_widget({ name: 'cn',
-                                           entity_name:'automountlocation'}));
+
         that.create_association_facets();
         that.entity_init();
 
@@ -574,15 +568,15 @@ IPA.add_entity(function (){
             title: 'Add Password Policy',
             entity_name:'pwpolicy'
         });
-
         that.add_dialog(dialog);
+
+        dialog.add_field(ipa_text_widget({ name: 'cn', undo: false}));
         dialog.init();
-        dialog.add_field(ipa_text_widget({ name: 'cn',
-                                           entity_name:'pwpolicy'}));
+
         that.create_association_facets();
         that.entity_init();
 
-    }
+    };
     return that;
 }());
 
diff --git a/install/static/service.js b/install/static/service.js
index c028eb6ada38d9ffc93bfc1ef8ffd2e151f2178c..09fd2eab89032c6f78e4299278e1950d1ea62979 100644
--- a/install/static/service.js
+++ b/install/static/service.js
@@ -76,24 +76,27 @@ function ipa_service_add_dialog(spec) {
 
     that.init = function() {
 
-        that.add_dialog_init();
-
         that.add_field(ipa_widget({
             name: 'krbprincipalname'
         }));
 
+        // TODO: Replace with i18n label
         that.add_field(ipa_text_widget({
-            'name': 'service', 'label': 'Service',
+            'name': 'service',
+            'label': 'Service',
             'size': 20,
             'undo': false
         }));
 
+        // TODO: Replace with i18n label
         that.add_field(ipa_text_widget({
             'name': 'host',
             'label': 'Host Name',
             'size': 40,
             'undo': false
         }));
+
+        that.add_dialog_init();
     };
 
     that.create = function() {
diff --git a/install/static/sudocmd.js b/install/static/sudocmd.js
index 733344a2b457e67e6977d63053e253a690b24049..ebe96b0890dc7856210eb453ba518a895e3551fd 100755
--- a/install/static/sudocmd.js
+++ b/install/static/sudocmd.js
@@ -61,14 +61,12 @@ function ipa_sudocmd_add_dialog(spec) {
 
     var that = ipa_add_dialog(spec);
 
-    that.superior_init = that.superior('init');
-
     that.init = function() {
 
-        that.superior_init();
+        that.add_field(ipa_text_widget({name:'sudocmd', undo: false}));
+        that.add_field(ipa_text_widget({name:'description', undo: false}));
 
-        that.add_field(ipa_text_widget({name:'sudocmd', label:'Command', undo: false}));
-        that.add_field(ipa_text_widget({name:'description', label:'Description', undo: false}));
+        that.add_dialog_init();
     };
 
     return that;
@@ -130,10 +128,6 @@ function ipa_sudocmd_details_facet(spec) {
 
     var that = ipa_details_facet(spec);
 
-    that.superior_init = that.superior('init');
-    that.superior_create = that.superior('create');
-    that.superior_setup = that.superior('setup');
-
     that.init = function() {
 
         var section = ipa_details_list_section({
@@ -145,7 +139,7 @@ function ipa_sudocmd_details_facet(spec) {
         section.create_field({'name': 'sudocmd'});
         section.create_field({'name': 'description'});
 
-        that.superior_init();
+        that.details_facet_init();
     };
 
     return that;
diff --git a/install/static/sudocmdgroup.js b/install/static/sudocmdgroup.js
index 7941a5317aaa04cd8fea8490e789ab9d9d4bba60..4188bc47834b47455e04eddcd7f408c12ac6d3b2 100755
--- a/install/static/sudocmdgroup.js
+++ b/install/static/sudocmdgroup.js
@@ -67,14 +67,12 @@ function ipa_sudocmdgroup_add_dialog(spec) {
 
     var that = ipa_add_dialog(spec);
 
-    that.superior_init = that.superior('init');
-
     that.init = function() {
 
-        that.superior_init();
+        that.add_field(ipa_text_widget({name:'cn', undo: false}));
+        that.add_field(ipa_text_widget({name:'description', undo: false}));
 
-        that.add_field(ipa_text_widget({name:'cn', label:'Name', undo: false}));
-        that.add_field(ipa_text_widget({name:'description', label:'Description', undo: false}));
+        that.add_dialog_init();
     };
 
     return that;
diff --git a/install/static/sudorule.js b/install/static/sudorule.js
index 17c0267685338c2ed8bfd1dc123e78d90bc90c05..101f8c41fe171fb4ffcb376696c78fa55fcd3472 100755
--- a/install/static/sudorule.js
+++ b/install/static/sudorule.js
@@ -63,13 +63,9 @@ function ipa_sudorule_add_dialog(spec) {
 
     that.init = function() {
 
+        that.add_field(ipa_text_widget({name: 'cn', undo: false}));
+
         that.add_dialog_init();
-
-        that.add_field(ipa_text_widget({
-            'name': 'cn',
-            'label': 'Rule Name',
-            'undo': false
-        }));
     };
 
     return that;
diff --git a/install/static/user.js b/install/static/user.js
index 8eb412062b50d29b23a07f6df1d6ffbd9b7db682..3e1174ca61003447403a360c0b972ea40dec1de4 100644
--- a/install/static/user.js
+++ b/install/static/user.js
@@ -45,14 +45,13 @@ function ipa_user(){
             'name': 'add',
             'title': 'Add User'
         });
-
         that.add_dialog(dialog);
+
+        dialog.add_field(ipa_text_widget({ name: 'uid', undo: false }));
+        dialog.add_field(ipa_text_widget({ name: 'givenname', undo: false }));
+        dialog.add_field(ipa_text_widget({ name: 'sn', undo: false }));
         dialog.init();
-        dialog.add_field(ipa_text_widget({ name: 'uid',entity_name:'user' }));
-        dialog.add_field(ipa_text_widget({ name: 'givenname',
-                                           entity_name:'user' }));
-        dialog.add_field(ipa_text_widget({ name: 'sn',entity_name:'user' }));
-        
+
         /*eventually,  we need to call
           entity.create_association_facets();
           but we are currently defining the associator using the global
@@ -60,7 +59,7 @@ function ipa_user(){
 
 
         that.entity_init();
-    }
+    };
 
     function details_facet(spec) {
         spec = spec || {};
@@ -110,7 +109,7 @@ IPA.add_entity(ipa_user());
 
 ipa_entity_set_association_definition('user', {
     'group': { associator: 'serial' },
-    'netgroup': { associator: 'serial' },
+    'netgroup': { associator: 'serial' }
 });
 
 /* ATTRIBUTE CALLBACKS */
diff --git a/install/static/widget.js b/install/static/widget.js
index e864e8b505fc67ce54be9732384c5930e5615775..f4869c99a908b5264855dc569a9a83365cdfd824 100755
--- a/install/static/widget.js
+++ b/install/static/widget.js
@@ -44,13 +44,6 @@ function ipa_widget(spec) {
     that.save = spec.save || save;
     that.clear = spec.clear || clear;
 
-    that.superior = function(name) {
-        var method = that[name];
-        return function () {
-            return method.apply(that, arguments);
-        };
-    };
-
     that.__defineGetter__("entity_name", function(){
         return that._entity_name;
     });
@@ -793,13 +786,6 @@ function ipa_dialog(spec) {
     that.fields = [];
     that.fields_by_name = {};
 
-    that.superior = function(name) {
-        var method = that[name];
-        return function () {
-            return method.apply(that, arguments);
-        };
-    };
-
     that.__defineGetter__("entity_name", function(){
         return that._entity_name;
     });
@@ -821,12 +807,16 @@ function ipa_dialog(spec) {
     };
 
     that.add_field = function(field) {
-        field.entity_name = that.entity_name;
         that.fields.push(field);
         that.fields_by_name[field.name] = field;
     };
 
     that.init = function() {
+        for (var i=0; i<that.fields.length; i++) {
+            var field = that.fields[i];
+            field.entity_name = that.entity_name;
+            field.init();
+        }
     };
 
     /**
-- 
1.6.6.1