[Rt-commit] rt branch, 4.2/user-info-via-ajax, created. rt-4.1.5-26-g88986a6

Thomas Sibley trs at bestpractical.com
Fri Dec 14 16:48:48 EST 2012


The branch, 4.2/user-info-via-ajax has been created
        at  88986a6229415cddb0388c05daa0cb01e86a96e5 (commit)

- Log -----------------------------------------------------------------
commit 88986a6229415cddb0388c05daa0cb01e86a96e5
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..65be2e6
--- /dev/null
+++ b/share/html/Helpers/UserInfo
@@ -0,0 +1,77 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%#
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%#                                          <sales at bestpractical.com>
+%#
+%# (Except where explicitly superseded by other copyright notices)
+%#
+%#
+%# LICENSE:
+%#
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%#
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%#
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+%#
+%#
+%# CONTRIBUTION SUBMISSION POLICY:
+%#
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%#
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%#
+%# END BPS TAGGED BLOCK }}}
+<%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