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