[Rt-commit] rt branch, 4.2/user-info-via-ajax, created. rt-4.1.5-26-g4768617
Thomas Sibley
trs at bestpractical.com
Wed Dec 12 16:38:26 EST 2012
The branch, 4.2/user-info-via-ajax has been created
at 4768617fb07d70455b23f6d1f93d00440a9b9272 (commit)
- Log -----------------------------------------------------------------
commit 4768617fb07d70455b23f6d1f93d00440a9b9272
Author: Thomas Sibley <trs at bestpractical.com>
Date: Mon Dec 10 13:33:14 2012 -0800
Add an AJAX endpoint for requesting user information and formatting
Javascript which may want to display a formatted user now has a way to
fetch the preferred format, as well as retrieve user details. Multiple
users may be requested in a single call by specifying multiple values
for the "id" parameter. A JSON hash is returned with keys matching the
requested ids for easy client side lookup. The JSON object looks like:
{
"12" : {
"id" : "12",
"Name" : "root",
"RealName" : "Enoch Root",
"EmailAddress" : "root at localhost",
"Privileged" : true,
"_formatted" : "Enoch Root"
"_html" : "Enoch Root",
}
}
diff --git a/share/html/Helpers/UserInfo b/share/html/Helpers/UserInfo
new file mode 100644
index 0000000..97ffe0d
--- /dev/null
+++ b/share/html/Helpers/UserInfo
@@ -0,0 +1,30 @@
+<%args>
+$id
+</%args>
+<%init>
+my %users;
+
+$id = [$id] unless ref($id) eq 'ARRAY';
+
+for my $uid (@$id) {
+ next if exists $users{$uid};
+
+ my $user = RT::User->new($session{'CurrentUser'});
+ $user->Load($uid);
+
+ unless ($user->id) {
+ $users{$uid} = undef;
+ next;
+ }
+
+ my %user = map { $_ => $user->$_ }
+ qw(id Name EmailAddress RealName);
+ $user{Privileged} = $user->Privileged ? JSON::true : JSON::false;
+ $user{_formatted} = $user->Format;
+ $user{_html} = $m->scomp('/Elements/ShowUser', User => $user);
+ $users{$uid} = \%user;
+}
+$r->content_type('application/json; charset=utf-8');
+$m->out( JSON(\%users) );
+$m->abort;
+</%init>
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list