--- /dev/null
+[%
+ WRAPPER "staff/base.tt2";
+ ctx.page_title = l("Pending Patrons");
+ ctx.page_app = "egPendingPatronsApp";
+%]
+
+[% BLOCK APP_JS %]
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/grid.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/ui.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/user.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/patron/pending.js"></script>
+<link rel="stylesheet" href="[% ctx.base_path %]/staff/css/circ.css" />
+[% END %]
+
+<div ng-view></div>
+
+[% END %]
--- /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>
+
+++ /dev/null
-[%
- WRAPPER "staff/base.tt2";
- ctx.page_title = l("Pending Patrons");
- ctx.page_app = "egPendingPatronsApp";
-%]
-
-[% BLOCK APP_JS %]
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/grid.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/ui.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/services/user.js"></script>
-<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/pending_patrons/app.js"></script>
-<link rel="stylesheet" href="[% ctx.base_path %]/staff/css/circ.css" />
-[% END %]
-
-<div ng-view></div>
-
-[% END %]
+++ /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>
-
</li>
<li>
<a href="./circ/patron/register" target="_self">
- <span class="glyphicon glyphicon-refresh"></span>
+ <span class="glyphicon glyphicon-user"></span>
[% l('Register Patron') %]
</a>
</li>
</a>
</li>
<li>
- <a href="./circ/pending_patrons/list" target="_self">
+ <a href="./circ/patron/pending/list" target="_self">
<span class="glyphicon glyphicon-thumbs-up"></span>
[% l('Pending Patrons') %]
</a>
--- /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/patron/pending/list', {
+ templateUrl: './circ/patron/t_pending_list',
+ controller: 'PendingPatronsCtrl',
+ resolve : resolver
+ });
+
+ $routeProvider.otherwise({redirectTo : '/circ/patron/pending/list'});
+})
+
+.controller('PendingPatronsCtrl',
+ ['$scope','$q','$routeParams','$window','$location','egCore','egGridDataProvider',
+function($scope , $q , $routeParams , $window , $location , egCore , egGridDataProvider) {
+
+ console.log('HERE');
+
+ 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;
+ $window.open(
+ $location.path(
+ '/circ/patron/register/stage/' + item.user.usrname()).absUrl(),
+ '_blank'
+ ).focus();
+ }
+
+ $scope.load_patron = function(action, data, items) {
+ load_patron(items);
+ }
+
+ $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();
+ });
+}])
+
+++ /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();
- });
-}])
-