--- /dev/null
+[%
+ WRAPPER "staff/base.tt2";
+ ctx.page_title = l("Curbside Pickup");
+ ctx.page_app = "egCurbsideApp";
+%]
+
+[% 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/circ/curbside/app.js"></script>
+<script>
+angular.module('egCoreMod').run(['egStrings', function(s) {
+}]);
+</script>
+[% 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('Curbside Pickup') %]</span>
+ </div>
+</div>
+
+<div class="row col-md-12 pad-vert">
+ <div class="col-md-12">
+ <uib-tabset active="active_tab">
+ <!-- note that non-numeric index values must be enclosed in single-quotes,
+ otherwise selecting the active table won't work cleanly -->
+ <uib-tab index="'to-be-staged'" heading="[% l('To Be Staged') %]">
+ <div class="container-fluid">
+ XXX
+ </div>
+ </uib-tab>
+ <uib-tab index="'staged'" heading="[% l('Staged And Ready') %]">
+ <div class="container-fluid">
+ XXX
+ </div>
+ </uib-tab>
+ <uib-tab index="'arrived'" heading="[% l('Patron Is Outside') %]">
+ <div class="container-fluid">
+ XXX
+ </div>
+ </uib-tab>
+ <uib-tab index="'delivered'" heading="[% l('Delivered Today') %]">
+ <div class="container-fluid">
+ XXX
+ </div>
+ </uib-tab>
+ <uib-tab index="'schedule'" heading="[% l('Schedule Pickup') %]">
+ <div class="container-fluid">
+ XXX
+ </div>
+ </uib-tab>
+ </uib-tabset>
+ </div>
+</div>
<span>[% l('Offline Circulation') %]</span>
</a>
</li>
+ <li ng-if="enableCurbside" class="divider"></li>
+ <li ng-if="enableCurbside">
+ <a href="./circ/curbside/index" target="_self" ng-class="{disabled : curbsideDisabled()}">
+ <span class="glyphicon glyphicon-road"></span>
+ <span>[% l('Curbside Pickup') %]</span>
+ </a>
+ </li>
</ul>
</li><!-- circ -->
--- /dev/null
+angular.module('egCurbsideApp', ['ui.bootstrap','ngRoute','egCoreMod','egGridMod','ngToast','egCurbsideAppDep']);
+angular.module('egCurbsideAppDep', []);
+
+angular.module('egCurbsideApp')
+.config(['ngToastProvider', function(ngToastProvider) {
+ ngToastProvider.configure({
+ verticalPosition: 'bottom',
+ animation: 'fade'
+ });
+}])
+
+.config(function($routeProvider, $locationProvider, $compileProvider) {
+ $locationProvider.html5Mode(true);
+ $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|mailto|blob):/); // grid export
+
+ var resolver = {delay : function(egStartup) {return egStartup.go()}};
+
+ $routeProvider.when('/circ/curbside/index', {
+ templateUrl: './circ/curbside/t_main',
+ controller: 'CurbsideCtrl',
+ resolve : resolver
+ });
+
+ $routeProvider.when('/circ/curbside/:active_tab', {
+ templateUrl: './circ/curbside/t_main',
+ controller: 'CurbsideCtrl',
+ resolve : resolver
+ });
+
+ // default page
+ $routeProvider.otherwise({redirectTo : '/circ/curbside/index'});
+})
+
+.controller('CurbsideCtrl',
+ ['$scope','$routeParams','$location',
+function($scope , $routeParams , $location ) {
+ $scope.active_tab = $routeParams.active_tab ? $routeParams.active_tab : 'to-be-staged';
+
+ $scope.$watch('active_tab', function(newVal, oldVal) {
+ if (oldVal != newVal) {
+ var new_path = '/circ/curbside/' + $scope.active_tab;
+ $location.path(new_path);
+ }
+ });
+}])
egCore.org.settings([
'ui.staff.max_recent_patrons',
- 'ui.staff.angular_catalog.enabled'
+ 'ui.staff.angular_catalog.enabled',
+ 'circ.curbside'
]).then(function(s) {
var val = s['ui.staff.max_recent_patrons'];
$scope.showRecentPatron = val > 0;
$scope.showAngularCatalog =
s['ui.staff.angular_catalog.enabled'];
+ $scope.enableCurbside =
+ s['circ.curbside'];
});
}
// need to defer initialization of hotkeys to this point