On 1/5/2012 10:21 AM, Endi Sukma Dewata wrote:
The user search facet has been modified to show the account status.
The IPA.boolean_format has been converted into a class to allow
behavior customization.

Ticket #1996

Fixed jslint warning.

--
Endi S. Dewata
From da2ce1b9f4b78da5bcd70abe116617a3c1992f9e Mon Sep 17 00:00:00 2001
From: Endi Sukma Dewata <edew...@redhat.com>
Date: Thu, 5 Jan 2012 09:10:11 -0600
Subject: [PATCH] Added account status into user search facet.

The user search facet has been modified to show the account status.
The IPA.boolean_format has been converted into a class to allow
behavior customization.

Ticket #1996
---
 install/ui/hbac.js     |    2 +-
 install/ui/hbactest.js |   21 ++++++++++----
 install/ui/host.js     |   62 ++++++++++++++++++++++++----------------
 install/ui/rule.js     |    2 +-
 install/ui/sudo.js     |    2 +-
 install/ui/user.js     |    9 ++++++
 install/ui/widget.js   |   72 ++++++++++++++++++++++++++++++++++++++----------
 7 files changed, 121 insertions(+), 49 deletions(-)

diff --git a/install/ui/hbac.js b/install/ui/hbac.js
index 2a18396aaed0899d5604cf54855c86a18b3e7056..3346d0b01126c24e9c25ccc9db8da829776a3006 100644
--- a/install/ui/hbac.js
+++ b/install/ui/hbac.js
@@ -42,7 +42,7 @@ IPA.hbac.rule_entity = function(spec) {
                 'cn',
                 {
                     name: 'ipaenabledflag',
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 },
                 'description'
             ]
diff --git a/install/ui/hbactest.js b/install/ui/hbactest.js
index 26aed6e0002307bd6a6d5e2dec3bfa10dd7832ea..26e8085d41f36ac00730095fbe78497143a2d699 100644
--- a/install/ui/hbactest.js
+++ b/install/ui/hbactest.js
@@ -46,7 +46,16 @@ IPA.hbac.test_entity = function(spec) {
             columns: [
                 'uid',
                 'givenname',
-                'sn'
+                'sn',
+                {
+                    name: 'nsaccountlock',
+                    format: IPA.boolean_format({
+                        true_value: IPA.messages.objects.user.active,
+                        false_value: IPA.messages.objects.user.inactive,
+                        invert_value: true
+                    }),
+                    label: IPA.messages.objects.user.account_status
+                }
             ]
         }).
         facet({
@@ -62,7 +71,7 @@ IPA.hbac.test_entity = function(spec) {
                 {
                     name: 'has_keytab',
                     label: IPA.messages.objects.host.enrolled,
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 }
             ]
         }).
@@ -91,7 +100,7 @@ IPA.hbac.test_entity = function(spec) {
                 {
                     name: 'has_keytab',
                     label: IPA.messages.objects.host.enrolled,
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 }
             ]
         }).
@@ -106,7 +115,7 @@ IPA.hbac.test_entity = function(spec) {
                 'cn',
                 {
                     name: 'ipaenabledflag',
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 },
                 'description'
             ]
@@ -123,11 +132,11 @@ IPA.hbac.test_entity = function(spec) {
                 {
                     name: 'matched',
                     label: IPA.messages.objects.hbactest.matched,
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 },
                 {
                     name: 'ipaenabledflag',
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 },
                 'description'
             ]
diff --git a/install/ui/host.js b/install/ui/host.js
index c23cd9965a991035e049db4b478a1cf6b4bc9822..90e6bde71ef61782ea95de50cac7988ab8879f3c 100644
--- a/install/ui/host.js
+++ b/install/ui/host.js
@@ -40,7 +40,7 @@ IPA.host.entity = function(spec) {
                 {
                     name: 'has_keytab',
                     label: IPA.messages.objects.host.enrolled,
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 }
             ]
         }).
@@ -466,30 +466,42 @@ IPA.field_factories['host_dnsrecord_entity_link'] = IPA.host_dnsrecord_entity_li
 IPA.widget_factories['host_dnsrecord_entity_link'] = IPA.link_widget;
 
 /* Take an LDAP format date in UTC and format it */
-IPA.utc_date_column_format = function(value){
-    if (!value) {
-        return "";
-    }
-    if (value.length  != "20101119025910Z".length){
-        return value;
-    }
-    /* We only handle GMT */
-    if (value.charAt(value.length -1) !== 'Z'){
-        return value;
-    }
-
-    var date = new Date();
-
-    date.setUTCFullYear(
-        value.substring(0, 4),    // YYYY
-        value.substring(4, 6)-1,  // MM (0-11)
-        value.substring(6, 8));   // DD (1-31)
-    date.setUTCHours(
-        value.substring(8, 10),   // HH (0-23)
-        value.substring(10, 12),  // MM (0-59)
-        value.substring(12, 14)); // SS (0-59)
-    var formated = date.toString();
-    return  formated;
+IPA.utc_date_column_format = function(spec) {
+
+    spec = spec || {};
+
+    var that = IPA.format(spec);
+
+    that.format = function(value) {
+
+        if (!value) return '';
+
+        // verify length
+        if (value.length  != '20101119025910Z'.length) {
+            return value;
+        }
+
+        /* We only handle GMT */
+        if (value.charAt(value.length -1) !== 'Z') {
+            return value;
+        }
+
+        var date = new Date();
+
+        date.setUTCFullYear(
+            value.substring(0, 4),    // YYYY
+            value.substring(4, 6)-1,  // MM (0-11)
+            value.substring(6, 8));   // DD (1-31)
+
+        date.setUTCHours(
+            value.substring(8, 10),   // HH (0-23)
+            value.substring(10, 12),  // MM (0-59)
+            value.substring(12, 14)); // SS (0-59)
+
+        return date.toString();
+    };
+
+    return that;
 };
 
 
diff --git a/install/ui/rule.js b/install/ui/rule.js
index e8be46ace3455b8c9a4a0cd2ebe037cd5ae1b2b4..720df3c0fabae7ccd4fd670fb2b7126160a6bddb 100644
--- a/install/ui/rule.js
+++ b/install/ui/rule.js
@@ -122,7 +122,7 @@ IPA.rule_association_table_widget = function(spec) {
                     name: that.external,
                     label: IPA.messages.objects.sudorule.external,
                     entity: that.other_entity,
-                    format: IPA.boolean_format,
+                    format: IPA.boolean_format(),
                     width: '200px'
                 });
             }
diff --git a/install/ui/sudo.js b/install/ui/sudo.js
index eb51fd038ce465f190fdd7cf4c1bd677fa885776..eb35699082ad4d1ba004bef9075248de4772cf07 100644
--- a/install/ui/sudo.js
+++ b/install/ui/sudo.js
@@ -40,7 +40,7 @@ IPA.sudo.rule_entity = function(spec) {
                 'cn',
                 {
                     name: 'ipaenabledflag',
-                    format: IPA.boolean_format
+                    format: IPA.boolean_format()
                 },
                 'description'
             ]
diff --git a/install/ui/user.js b/install/ui/user.js
index 879055edb70a6a3be396b4ceb7ef27806b9835ce..01d196cec97fee7b1502fd17d21fa822a6626cca 100644
--- a/install/ui/user.js
+++ b/install/ui/user.js
@@ -40,6 +40,15 @@ IPA.user.entity = function(spec) {
                 'uid',
                 'givenname',
                 'sn',
+                {
+                    name: 'nsaccountlock',
+                    format: IPA.boolean_format({
+                        true_value: IPA.messages.objects.user.active,
+                        false_value: IPA.messages.objects.user.inactive,
+                        invert_value: true
+                    }),
+                    label: IPA.messages.objects.user.account_status
+                },
                 'uidnumber',
                 'mail',
                 'telephonenumber',
diff --git a/install/ui/widget.js b/install/ui/widget.js
index 38646c99836060eafe1c72d69efd476b2f465a9b..9ae308ca26c39875768fa22f74ed96df847c6267 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -927,25 +927,67 @@ IPA.textarea_widget = function (spec) {
     return that;
 };
 
-IPA.boolean_format = function(value) {
+IPA.format = function(spec) {
 
-    if (value === undefined || value === null) return '';
+    spec = spec || {};
 
-    if (value instanceof Array) {
-        value = value[0];
-    }
+    var that = {};
 
-    var normalized_value = typeof value === 'string' ? value.toLowerCase() : '';
+    that.format = function(value) {
+        return value;
+    };
 
-    if (value === false || normalized_value === 'false') {
-        return IPA.messages['false'];
-    }
+    return that;
+};
 
-    if (value === true || normalized_value === 'true') {
-        return IPA.messages['true'];
-    }
+IPA.boolean_format = function(spec) {
 
-    return value;
+    spec = spec || {};
+
+    var that = IPA.format(spec);
+
+    that.true_value = spec.true_value || IPA.messages['true'];
+    that.false_value = spec.false_value || IPA.messages['false'];
+    that.show_false = spec.show_false;
+    that.invert_value = spec.invert_value;
+
+    that.format = function(value) {
+
+        if (value === undefined || value === null) return '';
+
+        if (value instanceof Array) {
+            value = value[0];
+        }
+
+        if (typeof value === 'string') {
+            value = value.toLowerCase();
+
+            if (value === 'true') {
+                value = true;
+            } else if (value === 'false') {
+                value = false;
+            } // leave other values unchanged
+        }
+
+        if (typeof value === 'boolean') {
+            if (that.invert_value) value = !value;
+
+            if (value) {
+                value = that.true_value;
+
+            } else {
+                if (that.show_false) {
+                    value = that.false_value;
+                } else {
+                    value = '';
+                }
+            }
+        }
+
+        return value;
+    };
+
+    return that;
 };
 
 /*
@@ -978,8 +1020,8 @@ IPA.column = function (spec) {
         container.empty();
 
         var value = record[that.name];
-        if (that.format && value) {
-            value = that.format(value);
+        if (that.format) {
+            value = that.format.format(value);
         }
         value = value ? value.toString() : '';
 
-- 
1.7.5.1

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

Reply via email to