--- /dev/null
+<div class="container-fluid" style="text-align:center">
+ <div class="alert alert-info alert-less-pad strong-text-2">
+ <span>[% l('Pending Patrons') %]</span>
+ </div>
+</div>
+
+<span>[% l('Home Library: ' ) %]</span>
+<span><eg-org-selector selected="context_org"></eg-org-selector></span>
+<hr/>
+
+<eg-grid
+ id-field="id"
+ features="-sort,-multisort"
+ items-provider="grid_data_provider"
+ grid-controls="grid_controls"
+ persist-key="circ.pending_patrons.list">
+
+ <eg-grid-menu-item handler="load_patron"
+ label="[% l('Load Patron') %]"></eg-grid-menu-item>
+
+ <eg-grid-field path='user.row_date' label="[% l('Create Date') %]"></eg-grid-field>
+ <eg-grid-field path='user.first_given_name' label="[% l('First Name') %]"></eg-grid-field>
+ <eg-grid-field path='user.second_given_name' label="[% l('Middle Name') %]"></eg-grid-field>
+ <eg-grid-field path='user.family_name' label="[% l('Last Name') %]"></eg-grid-field>
+ <eg-grid-field path='user.email' label="[% l('Email') %]"></eg-grid-field>
+ <eg-grid-field path='user.home_ou.shortname' label="[% l('Home Library') %]"></eg-grid-field>
+ <eg-grid-field path='mailing_address.street1' label="[% l('Street 1') %]"></eg-grid-field>
+ <eg-grid-field path='mailing_address.city' label="[% l('City') %]"></eg-grid-field>
+ <eg-grid-field path='mailing_address.post_code' label="[% l('Post Code') %]"></eg-grid-field>
+ <eg-grid-field path='user.usrname' label="[% l('Requested Username') %]"></eg-grid-field>
+ <eg-grid-field path='user.*' parent-idl-class="stgu" hidden></eg-grid-field>
+ <eg-grid-field path='mailing_address.*' parent-idl-class="stgma" hidden></eg-grid-field>
+</eg-grid>
+
<a href="./circ/patron/search" target="_self"
eg-accesskey="[% l('alt+s') %]"
eg-accesskey-desc="[% l('Patron search by name, address, etc.') %]">
- <span class="glyphicon glyphicon-search"></span>
+ <span class="glyphicon glyphicon-user"></span>
<span eg-accesskey-label>[% l('Search for Patrons') %]</span>
</a>
</li>
<li>
<a href="./cat/item/search" target="_self">
- <span class="glyphicon glyphicon-search"></span>
+ <span class="glyphicon glyphicon-barcode"></span>
<span>[% l('Search for Copies by Barcode') %]</span>
</a>
</li>
[% l('Retrieve Last Patron') %]
</a>
</li>
+ <li>
+ <a href="./circ/pending_patrons/list" target="_self">
+ <span class="glyphicon glyphicon-thumbs-up"></span>
+ [% l('Pending Patrons') %]
+ </a>
+ </li>
<li class="divider"></li>
<li>
<a href="./circ/patron/credentials" target="_self">
--- /dev/null
+angular.module('egPendingPatronsApp',
+ ['ngRoute', 'ui.bootstrap', 'egCoreMod', 'egUiMod', 'egGridMod'])
+
+.config(function($routeProvider, $locationProvider, $compileProvider) {
+ $locationProvider.html5Mode(true);
+ $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|blob):/); // grid export
+
+ var resolver = {delay :
+ ['egStartup', function(egStartup) {return egStartup.go()}]}
+
+ $routeProvider.when('/circ/pending_patrons/list', {
+ templateUrl: './circ/pending_patrons/t_list',
+ controller: 'PendingPatronsCtrl',
+ resolve : resolver
+ });
+
+ $routeProvider.otherwise({redirectTo : '/circ/pending_patrons/list'});
+})
+
+.controller('PendingPatronsCtrl',
+ ['$scope','$q','$routeParams','$window','$location','egCore','egGridDataProvider',
+function($scope , $q , $routeParams , $window , $location , egCore , egGridDataProvider) {
+
+ var pending_patrons = [];
+ var provider = egGridDataProvider.instance({});
+ $scope.grid_data_provider = provider;
+
+ function load_patron(item) {
+ if (angular.isArray(item)) item = item[0];
+ if (!item) return;
+ // TODO: where does patron editor w/ no context patron live?
+ }
+
+ $scope.grid_controls = {
+ activateItem : load_patron
+ }
+
+ function refresh_page() {
+ pending_patrons = [];
+ provider.refresh();
+ }
+
+ provider.get = function(offset, count) {
+ var deferred = $q.defer();
+ var recv_index = 0;
+
+ egCore.net.request(
+ 'open-ils.actor',
+ 'open-ils.actor.user.stage.retrieve.by_org',
+ egCore.auth.token(), $scope.context_org.id()
+
+ ).then(
+ deferred.resolve, null,
+ function(user) {
+ user.id = user.user.row_id();
+ user.user.home_ou(egCore.org.get(user.user.home_ou()));
+
+ // only one (mailing) address is captured during patron
+ // self-registration
+ user.mailing_address = user.mailing_addresses[0];
+ pending_patrons[offset + recv_index++] = user;
+ deferred.notify(user);
+ }
+ );
+
+ return deferred.promise;
+ }
+
+ $scope.context_org = egCore.org.get(egCore.auth.user().ws_ou())
+ $scope.$watch('context_org', function(newVal, oldVal) {
+ if (newVal && newVal != oldVal) refresh_page();
+ });
+}])
+