<div class="col-md-9">
<ul class="nav nav-pills nav-pills-like-tabs">
<li ng-class="{active : tab == 'checkout', disabled : !patron()}">
- <a href="./circ/patron/{{patron().id()}}/checkout">[% l('Checkout') %]</a>
+ <a href="./circ/patron/{{patron().id()}}/checkout">[% l('Check Out') %]</a>
</li>
<li ng-class="{active : tab == 'items_out', disabled : !patron()}">
<a href="./circ/patron/{{patron().id()}}/items_out">[% l('Items Out') %]</a>
--- /dev/null
+<div>
+
+ <!-- FIXME: move image file -->
+ <img src='/xul/server/skin/media/images/stop_sign.png'>
+
+ <div class="row" ng-if="patron().alert_message()">
+ <div class="col-md-12">
+ <div class="panel panel-warning">
+ <div class="panel-heading">
+ <div class="panel-title text-center">[% l('Alert Message') %]</div>
+ </div>
+ <div class="panel-body">
+ {{patron().alert_message()}}
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="row" ng-if="patron().standing_penalties().length">
+ <div class="col-md-12">
+ <div class="panel panel-warning">
+ <div class="panel-heading">
+ <div class="panel-title text-center">[% l('Penalties') %]</div>
+ </div>
+ <div class="panel-body">
+ <div class="row"
+ ng-repeat="penalty in patron().standing_penalties()">
+ <div class="col-md-2">
+ {{penalty.org_unit().shortname()}}
+ </div>
+ <div class="col-md-8"
+ title="{{penalty.standing_penalty().name()}}">
+ {{penalty.standing_penalty().label()}}
+ <div>{{penalty.note()}}</div><!-- force newline -->
+ </div>
+ <div class="col-md-2">
+ {{penalty.set_date() | date:'shortDate'}}
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <br/>
+ <div class="well">
+[% l('Press a navigation button above (for example, Check Out) to clear this alert.') %]
+ </div>
+</div>
<div class="row"
ng-class="{'patron-summary-divider' : !$index}"
ng-repeat="penalty in patron().standing_penalties()">
- <div class="col-md-9 patron-summary-alert"
+ <div
+ ng-if="penalty.standing_penalty().block_list()"
+ class="col-md-9 patron-summary-alert"
title="{{penalty.standing_penalty().name()}}">
{{penalty.note() || penalty.standing_penalty().label()}}
</div>
- <div class="col-md-3">
+ <div class="col-md-3"
+ ng-if="penalty.standing_penalty().block_list()">
{{penalty.set_date() | date:'shortDate'}}
</div>
</div>
resolve : resolver
});
- $routeProvider.when('/circ/patron/:id/credentials', {
- templateUrl: './circ/patron/t_credentials',
- controller: 'PatronVerifyCredentialsCtrl',
+ // the following require a patron ID
+
+ $routeProvider.when('/circ/patron/:id/alerts', {
+ templateUrl: './circ/patron/t_alerts',
+ controller: 'PatronAlertsCtrl',
resolve : resolver
});
resolve : resolver
});
+ $routeProvider.when('/circ/patron/:id/credentials', {
+ templateUrl: './circ/patron/t_credentials',
+ controller: 'PatronVerifyCredentialsCtrl',
+ resolve : resolver
+ });
- // default page / bucket view
$routeProvider.otherwise({redirectTo : '/circ/patron/search'});
})
service.holds = [];
service.hold_ids = [];
service.checkout_overrides = {};
+ service.alertsShown = false;
}
service.resetPatronLists(); // initialize
egCore.auth.token(),
$scope.barcode,
$scope.username
+
).then(function(resp) {
if (Number(resp)) {
}
}])
+.controller('PatronAlertsCtrl',
+ ['$scope','$routeParams','$location','egCore','patronSvc',
+function($scope, $routeParams , $location , egCore , patronSvc) {
+ patronSvc.alertsShown = true;
+
+ // called with a patron, pre-populate the form args
+ $scope.initTab('other', $routeParams.id).then(
+ function() {
+ }
+ );
+}])
+
+
angular.module('egPatronApp').controller('PatronCheckoutCtrl',
['$scope','$q','$modal','$routeParams','egCore','egUser','patronSvc',
- 'egGridDataProvider',
+ 'egGridDataProvider','$location',
-function($scope, $q, $modal, $routeParams, egCore, egUser, patronSvc ,
- egGridDataProvider) {
+function($scope , $q , $modal , $routeParams , egCore , egUser , patronSvc ,
+ egGridDataProvider , $location) {
- $scope.initTab('checkout', $routeParams.id);
+ $scope.initTab('checkout', $routeParams.id).then(
+ function() {
+ var p = $scope.patron();
+ if (!patronSvc.alertsShown &&
+ (p.standing_penalties().length || p.alert_message())) {
+ $location.path('/circ/patron/' + p.id() + '/alerts');
+ }
+ }
+ );
$scope.focusMe = true;
$scope.checkouts = patronSvc.checkouts;