[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