[open-ils-commits] [GIT] Evergreen ILS branch master updated. 8c1035bbd5821cd5b183a0aff895f48d6829bd80

Evergreen Git git at git.evergreen-ils.org
Fri Apr 22 09:55:12 EDT 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  8c1035bbd5821cd5b183a0aff895f48d6829bd80 (commit)
       via  a07656a4f6fda9c50d6b8acc0e4774506bc659bf (commit)
       via  87debaaadab41bb05d7a494f7ff1316452c70a48 (commit)
       via  c70a1988ed2be80559d1f79b420d60180afeb4f5 (commit)
       via  f64cb46b636d175fb5d2ea9ec5420ef7d29160b7 (commit)
       via  0705bc6051840c6b8783b52ea8246b0790eb79fb (commit)
       via  d7c5cd3dcf5abca7b7c2bc46ccf808bcfd135419 (commit)
       via  e0c30a7bd6d05fe9b3e263095838739d5d8af8c0 (commit)
       via  0d31cec39723e90643f09d69a278a4e17350c5a9 (commit)
       via  10f15b04854296c78b35224af1784cced716916a (commit)
       via  f9b0b5a7fd0424a5c63cfa545749134d8d91b538 (commit)
       via  2c20d1ce06dd7636e0fae03f1da9faefd494e830 (commit)
       via  9643e60d45a84a8562b8228b3d1d14ac0a93a25e (commit)
       via  636812ad7cba1f3aca1a5038485c4d4a91736844 (commit)
       via  34f53d9225556ec4553e5ddc4c5ed6fd09bd7b72 (commit)
       via  31dc20a3bdc4e0debe69ff41be8bed1a2ab8d410 (commit)
       via  43e7bc4fb44f46fc6374fb626e01004fcdf2d950 (commit)
       via  2b67c0ddf140b1667a3f0eff73af839740bd8302 (commit)
      from  d83938c811d51b81eb84e23b1302c2db2427cee7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 8c1035bbd5821cd5b183a0aff895f48d6829bd80
Author: Galen Charlton <gmc at esilibrary.com>
Date:   Wed Apr 20 11:20:36 2016 -0400

    LP#1554714: update to latest Collapse attribute
    
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>

diff --git a/Open-ILS/src/templates/staff/cat/share/t_marcedit.tt2 b/Open-ILS/src/templates/staff/cat/share/t_marcedit.tt2
index 352da20..fd2e133 100644
--- a/Open-ILS/src/templates/staff/cat/share/t_marcedit.tt2
+++ b/Open-ILS/src/templates/staff/cat/share/t_marcedit.tt2
@@ -149,7 +149,7 @@
       </div>
     </div>
     <div class="marcrecord pad-vert">
-      <div collapse="!showHelp">
+      <div uib-collapse="!showHelp">
         <div class="row">
           <div class="col-md-4">
             <ul>

commit a07656a4f6fda9c50d6b8acc0e4774506bc659bf
Author: Galen Charlton <gmc at esilibrary.com>
Date:   Wed Apr 20 11:11:47 2016 -0400

    LP#1554714: final $modal => $uibModal
    
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/cat/item/app.js b/Open-ILS/web/js/ui/default/staff/cat/item/app.js
index e42064b..a8781dc 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/item/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/item/app.js
@@ -139,8 +139,8 @@ function($scope , $location , egCore , egGridDataProvider , itemSvc) {
  * List view - grid stuff
  */
 .controller('ListCtrl', 
-       ['$scope','$q','$routeParams','$location','$timeout','$window','egCore','egGridDataProvider','itemSvc','egUser','$modal','egCirc','egConfirmDialog',
-function($scope , $q , $routeParams , $location , $timeout , $window , egCore , egGridDataProvider , itemSvc , egUser , $modal , egCirc , egConfirmDialog) {
+       ['$scope','$q','$routeParams','$location','$timeout','$window','egCore','egGridDataProvider','itemSvc','egUser','$uibModal','egCirc','egConfirmDialog',
+function($scope , $q , $routeParams , $location , $timeout , $window , egCore , egGridDataProvider , itemSvc , egUser , $uibModal , egCirc , egConfirmDialog) {
     var copyId = [];
     var cp_list = $routeParams.idList;
     if (cp_list) {
@@ -268,13 +268,13 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
         var copy_list = gatherSelectedHoldingsIds();
         if (copy_list.length == 0) return;
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_add_to_bucket',
             animation: true,
             size: 'md',
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
 
                 $scope.bucket_id = 0;
                 $scope.newBucketName = '';
@@ -302,7 +302,7 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
                         );
 
                         return $q.all(promises).then(function() {
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                         });
                     });
                 }
@@ -325,7 +325,7 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
                 }
 
                 $scope.cancel = function() {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                 }
             }]
         });
@@ -335,12 +335,12 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
         var copy_list = gatherSelectedHoldingsIds();
         if (copy_list.length == 0) return;
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_request_items',
             animation: true,
             controller:
-                   ['$scope','$modalInstance','egUser',
-            function($scope , $modalInstance , egUser) {
+                   ['$scope','$uibModalInstance','egUser',
+            function($scope , $uibModalInstance , egUser) {
                 $scope.user = null;
                 $scope.first_user_fetch = true;
 
@@ -389,11 +389,11 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
                         egCore.auth.token(), args, h.copy_list
                     );
 
-                    $modalInstance.close();
+                    $uibModalInstance.close();
                 }
 
                 $scope.cancel = function($event) {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }]
@@ -402,12 +402,12 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
 
     $scope.replaceBarcodes = function() {
         angular.forEach(copyGrid.selectedItems(), function (cp) {
-            $modal.open({
+            $uibModal.open({
                 templateUrl: './cat/share/t_replace_barcode',
                 animation: true,
                 controller:
-                           ['$scope','$modalInstance',
-                    function($scope , $modalInstance) {
+                           ['$scope','$uibModalInstance',
+                    function($scope , $uibModalInstance) {
                         $scope.isModal = true;
                         $scope.focusBarcode = false;
                         $scope.focusBarcode2 = true;
@@ -437,11 +437,11 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
                                 });
 
                             });
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                         }
 
                         $scope.cancel = function($event) {
-                            $modalInstance.dismiss();
+                            $uibModalInstance.dismiss();
                             $event.preventDefault();
                         }
                     }
@@ -456,12 +456,12 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
         egCore.hatch.getItem('eg.cat.marked_conjoined_record').then(function(target_record) {
             if (!target_record) return;
 
-            return $modal.open({
+            return $uibModal.open({
                 templateUrl: './cat/catalog/t_conjoined_selector',
                 animation: true,
                 controller:
-                       ['$scope','$modalInstance',
-                function($scope , $modalInstance) {
+                       ['$scope','$uibModalInstance',
+                function($scope , $uibModalInstance) {
                     $scope.update = false;
 
                     $scope.peer_type = null;
@@ -494,11 +494,11 @@ function($scope , $q , $routeParams , $location , $timeout , $window , egCore ,
                             promises.push(egCore.pcrud.create(n).then(function(){add_barcode_to_list(cp.barcode)}));
                         });
 
-                        return $q.all(promises).then(function(){$modalInstance.close()});
+                        return $q.all(promises).then(function(){$uibModalInstance.close()});
                     }
 
                     $scope.cancel = function($event) {
-                        $modalInstance.dismiss();
+                        $uibModalInstance.dismiss();
                         $event.preventDefault();
                     }
                 }]

commit 87debaaadab41bb05d7a494f7ff1316452c70a48
Author: Galen Charlton <gmc at esilibrary.com>
Date:   Wed Apr 20 11:07:43 2016 -0400

    LP#1554714: more drop-down fixes
    
    Should be the last of them.
    
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>

diff --git a/Open-ILS/src/templates/staff/cat/bucket/copy/t_bucket_selector.tt2 b/Open-ILS/src/templates/staff/cat/bucket/copy/t_bucket_selector.tt2
index 37eef80..e9aeacc 100644
--- a/Open-ILS/src/templates/staff/cat/bucket/copy/t_bucket_selector.tt2
+++ b/Open-ILS/src/templates/staff/cat/bucket/copy/t_bucket_selector.tt2
@@ -1,8 +1,8 @@
-<div class="btn-group text-left" dropdown>
-  <button type="button" class="btn btn-default dropdown-toggle">
+<div class="btn-group text-left" uib-dropdown>
+  <button type="button" class="btn btn-default" uib-dropdown-toggle>
     [% l('Buckets') %]<span class="caret"></span>
   </button>
-  <ul class="dropdown-menu">
+  <ul uib-dropdown-menu>
     <li>
       <a href='' ng-click="openCreateBucketDialog()">[% l('New Bucket') %]</a>
     </li>
diff --git a/Open-ILS/src/templates/staff/cat/bucket/record/t_bucket_selector.tt2 b/Open-ILS/src/templates/staff/cat/bucket/record/t_bucket_selector.tt2
index 37eef80..e9aeacc 100644
--- a/Open-ILS/src/templates/staff/cat/bucket/record/t_bucket_selector.tt2
+++ b/Open-ILS/src/templates/staff/cat/bucket/record/t_bucket_selector.tt2
@@ -1,8 +1,8 @@
-<div class="btn-group text-left" dropdown>
-  <button type="button" class="btn btn-default dropdown-toggle">
+<div class="btn-group text-left" uib-dropdown>
+  <button type="button" class="btn btn-default" uib-dropdown-toggle>
     [% l('Buckets') %]<span class="caret"></span>
   </button>
-  <ul class="dropdown-menu">
+  <ul uib-dropdown-menu>
     <li>
       <a href='' ng-click="openCreateBucketDialog()">[% l('New Bucket') %]</a>
     </li>
diff --git a/Open-ILS/src/templates/staff/cat/catalog/t_catalog.tt2 b/Open-ILS/src/templates/staff/cat/catalog/t_catalog.tt2
index 3dd6638..c57b542 100644
--- a/Open-ILS/src/templates/staff/cat/catalog/t_catalog.tt2
+++ b/Open-ILS/src/templates/staff/cat/catalog/t_catalog.tt2
@@ -25,11 +25,11 @@
     <button type="button" class="btn btn-default" ng-click="add_to_record_bucket()">
         [% l('Add To Bucket') %]
     </button>
-    <div class="btn-group" dropdown dropdown-append-to-body>
-        <button id="mark-for-button" type="button" class="btn btn-default" dropdown-toggle>
+    <div class="btn-group" uib-dropdown dropdown-append-to-body>
+        <button id="mark-for-button" type="button" class="btn btn-default" uib-dropdown-toggle>
             [% l('Mark for:') %] <span class="caret"></span>
         </button>
-        <ul class="dropdown-menu" role="menu" aria-labelledby="mark-for-button">
+        <ul uib-dropdown-menu role="menu" aria-labelledby="mark-for-button">
             <li role="menuitem">
                 <a ng-click="markOverlay()">
                     [% l('Overlay Target') %]
diff --git a/Open-ILS/src/templates/staff/cat/item/index.tt2 b/Open-ILS/src/templates/staff/cat/item/index.tt2
index a4f297c..a88b85f 100644
--- a/Open-ILS/src/templates/staff/cat/item/index.tt2
+++ b/Open-ILS/src/templates/staff/cat/item/index.tt2
@@ -76,11 +76,11 @@
       </button>
     </div>
     <!--
-    <div class="btn-group btn-pad" dropdown>
-      <button type="button" class="btn btn-default dropdown-toggle">
+    <div class="btn-group btn-pad" uib-dropdown>
+      <button type="button" class="btn btn-default" uib-dropdown-toggle>
         [% l('Actions for Catalogers') %]<span class="caret"></span>
       </button>
-      <ul class="dropdown-menu" role="menu">
+      <ul uib-dropdown-menu role="menu">
       </ul>
     </div>
     -->
diff --git a/Open-ILS/src/templates/staff/cat/share/t_physchar_wizard.tt2 b/Open-ILS/src/templates/staff/cat/share/t_physchar_wizard.tt2
index 630e00a..1f2e06e 100644
--- a/Open-ILS/src/templates/staff/cat/share/t_physchar_wizard.tt2
+++ b/Open-ILS/src/templates/staff/cat/share/t_physchar_wizard.tt2
@@ -8,13 +8,13 @@
     <div ng-if="step == 0">
       <div class="col-md-4">[% l('Category of Material') %]</div>
       <div class="col-md-4">
-        <div class="btn-group" dropdown>
-          <button type="button" class="btn btn-default dropdown-toggle">
+        <div class="btn-group" uib-dropdown>
+          <button type="button" class="btn btn-default" uib-dropdown-toggle>
            <span style="padding-right: 5px;" ng-if="selected_option">{{selected_option.label()}}</span>
            <span style="padding-right: 5px;" ng-if="!selected_option">[% l('<unset>') | html %]</span>
            <span class="caret"></span>
          </button>
-         <ul class="dropdown-menu">
+         <ul uib-dropdown-menu>
            <li ng-repeat="option in values_for_step">
              <a href ng-click="change_ptype(option)">
               {{option.label()}}
@@ -27,13 +27,13 @@
     <div ng-if="step != 0">
       <div class="col-md-4">{{label_for_step}}</div>
       <div class="col-md-6">
-        <div class="btn-group" dropdown>
-          <button type="button" class="btn btn-default dropdown-toggle">
+        <div class="btn-group" uib-dropdown>
+          <button type="button" class="btn btn-default" uib-dropdown-toggle>
            <span style="padding-right: 5px;" ng-if="selected_option">{{selected_option.label()}}</span>
            <span style="padding-right: 5px;" ng-if="!selected_option">[% l('<unset>') | html %]</span>
            <span class="caret"></span>
          </button>
-         <ul class="dropdown-menu">
+         <ul uib-dropdown-menu>
            <li ng-repeat="option in values_for_step">
              <a href ng-click="change_option(option)">
               {{option.label()}}

commit c70a1988ed2be80559d1f79b420d60180afeb4f5
Author: Galen Charlton <gmc at esilibrary.com>
Date:   Wed Apr 20 11:03:06 2016 -0400

    LP#1554714: specify resolution to make angular-animate happy
    
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/bower.json b/Open-ILS/web/js/ui/default/staff/bower.json
index 46444af..a03180f 100644
--- a/Open-ILS/web/js/ui/default/staff/bower.json
+++ b/Open-ILS/web/js/ui/default/staff/bower.json
@@ -30,5 +30,8 @@
     "ngtoast": "~2.0.0",
     "angular-tree-control": "~0.2.23",
     "angular-animate": "~1.5.3"
+  },
+  "resolutions": {
+    "angular": "1.5.5"
   }
 }

commit f64cb46b636d175fb5d2ea9ec5420ef7d29160b7
Author: Galen Charlton <gmc at esilibrary.com>
Date:   Wed Apr 20 10:50:27 2016 -0400

    LP#1554714: fix up more drop-down menus
    
    This patch intentionally doesn't change templates
    under cat/; that will come later.
    
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>

diff --git a/Open-ILS/src/templates/staff/admin/local/circ/age_to_lost.tt2 b/Open-ILS/src/templates/staff/admin/local/circ/age_to_lost.tt2
index 66bc9b4..f3471a6 100644
--- a/Open-ILS/src/templates/staff/admin/local/circ/age_to_lost.tt2
+++ b/Open-ILS/src/templates/staff/admin/local/circ/age_to_lost.tt2
@@ -28,12 +28,12 @@ you wish to age to a Lost status.  Note the descendants of these values
   <div xclass="form-inline">
     <div class="form-group">
       <label class="col-md-2">[% l('User Profile') %]</label>
-      <div class="btn-group" dropdown>
-        <button type="button" class="btn btn-default dropdown-toggle">
+      <div class="btn-group" uib-dropdown>
+        <button type="button" class="btn btn-default" uib-dropdown-toggle>
           <span style="padding-right: 5px;">{{selected_profile.name()}}</span>
           <span class="caret"></span>
         </button>
-        <ul class="dropdown-menu">
+        <ul uib-dropdown-menu>
           <li ng-repeat="grp in profiles">
             <a href
               style="padding-left: {{pgt_depth(grp) * 10 + 5}}px"
diff --git a/Open-ILS/src/templates/staff/admin/workstation/t_print_config.tt2 b/Open-ILS/src/templates/staff/admin/workstation/t_print_config.tt2
index 06067ac..ef5dafb 100644
--- a/Open-ILS/src/templates/staff/admin/workstation/t_print_config.tt2
+++ b/Open-ILS/src/templates/staff/admin/workstation/t_print_config.tt2
@@ -48,11 +48,11 @@
           <div class="row" ng-hide="isTestView">
             <div class="col-md-6">
               <div class="input-group">
-                <div class="input-group-btn" dropdown>
-                  <button type="button" class="btn btn-default dropdown-toggle">
+                <div class="input-group-btn" uib-dropdown>
+                  <button type="button" class="btn btn-default" uib-dropdown-toggle>
                     [% l('Select Printer') %]
                     <span class="caret"></span></button>
-                  <ul class="dropdown-menu">
+                  <ul uib-dropdown-menu>
                     <li ng-repeat="printer in printers">
                       <a href='' ng-click="setPrinter(printer.name)">
                         {{printer.name}}
diff --git a/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2 b/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2
index f6b81f2..9ce6ac7 100644
--- a/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2
+++ b/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2
@@ -135,12 +135,12 @@
     </div><!-- flex row -->
   </div><!-- col -->
   <div class="col-md-2">
-    <div class="input-group-btn" dropdown>
-      <button type="button" class="btn btn-default dropdown-toggle">
+    <div class="input-group-btn" uib-dropdown>
+      <button type="button" class="btn btn-default" uib-dropdown-toggle>
         [% l('Checkin Modifiers') %]
         <span class="caret"></span>
       </button>
-      <ul class="dropdown-menu pull-right">
+      <ul class="pull-right" uib-dropdown-menu>
         <li>
           <a href
             ng-click="toggle_mod('no_precat_alert')">
diff --git a/Open-ILS/src/templates/staff/circ/in_house_use/index.tt2 b/Open-ILS/src/templates/staff/circ/in_house_use/index.tt2
index 7946ce5..769d533 100644
--- a/Open-ILS/src/templates/staff/circ/in_house_use/index.tt2
+++ b/Open-ILS/src/templates/staff/circ/in_house_use/index.tt2
@@ -33,12 +33,12 @@
 
     <div class="col-md-6">
       <div class="input-group">
-        <div class="input-group-btn" dropdown>
-          <button type="button" class="btn btn-default dropdown-toggle">
+        <div class="input-group-btn" uib-dropdown>
+          <button type="button" class="btn btn-default" uib-dropdown-toggle>
             {{selectedNcType() || "[% l('Barcode') %]"}}
             <span class="caret"></span>
           </button>
-          <ul class="dropdown-menu">
+          <ul uib-dropdown-menu>
             <li><a href
               ng-click="args.noncat_type='barcode';bcFocus=true">
               [% l('Barcode') %]</a>
diff --git a/Open-ILS/src/templates/staff/circ/patron/index.tt2 b/Open-ILS/src/templates/staff/circ/patron/index.tt2
index 85b8866..07c967e 100644
--- a/Open-ILS/src/templates/staff/circ/patron/index.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/index.tt2
@@ -122,12 +122,12 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
       <li ng-class="{active : tab == 'edit', disabled : !patron()}">
         <a href="./circ/patron/{{patron().id()}}/edit">[% l('Edit') %]</a>
       </li>
-      <li class="dropdown" ng-class="{active : tab == 'other', disabled : !patron()}">
-        <a a-disabled="!patron()" href class="dropdown-toggle" data-toggle="dropdown">
+      <li uib-dropdown ng-class="{active : tab == 'other', disabled : !patron()}">
+        <a a-disabled="!patron()" href uib-dropdown-toggle>
             [% l('Other') %]
             <b class="caret"></b>
         </a>
-        <ul class="dropdown-menu">
+        <ul uib-dropdown-menu>
           <li>
             <a href="./circ/patron/{{patron().id()}}/alerts">
               [% l('Display Alert and Messages') %]
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2
index fb590a6..29974aa 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2
@@ -5,13 +5,13 @@
     <form ng-submit="checkout(checkoutArgs)" role="form" class="form-inline">
       <div class="input-group">
 
-        <div class="input-group-btn" dropdown>
-          <button type="button" class="btn btn-default dropdown-toggle"
+        <div class="input-group-btn" uib-dropdown>
+          <button type="button" class="btn btn-default" uib-dropdown-toggle
             ng-class="{disabled : disable_checkout()}">
             {{selectedNcType() || "[% l('Barcode') %]"}}
             <span class="caret"></span>
           </button>
-          <ul class="dropdown-menu">
+          <ul uib-dropdown-menu>
             <li><a href
               ng-click="checkoutArgs.noncat_type='barcode';focusMe=true">
               [% l('Barcode') %]</a>
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
index 5d94abe..c7427a0 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
@@ -407,15 +407,15 @@ within the "form" by name for validation.
 <div class="row reg-field-row" ng-show="show_field('au.profile')">
   [% draw_field_label('au', 'profile') %]
   <div class="col-md-3 reg-field-input">
-    <div class="btn-group" dropdown>
-      <button type="button" class="btn btn-default dropdown-toggle"
+    <div class="btn-group" uib-dropdown>
+      <button type="button" class="btn btn-default" uib-dropdown-toggle
           ng-class="{'ng-invalid' : invalid_profile()}">
         <span style="padding-right: 5px;">
           {{patron.profile.name() || "[% l('Profile Group') %]"}}
         </span>
         <span class="caret"></span>
       </button>
-      <ul class="dropdown-menu">
+      <ul uib-dropdown-menu>
         <li ng-repeat="grp in edit_profiles" 
           ng-class="{disabled : grp.usergroup() == 'f'}">
           <a href 
@@ -641,12 +641,12 @@ within the "form" by name for validation.
     <label>[% l('Default SMS Carrier') %]</label>
   </div>
   <div class="col-md-3 reg-field-input">
-    <div class="btn-group" dropdown>
-      <button type="button" class="btn btn-default dropdown-toggle">
+    <div class="btn-group" uib-dropdown>
+      <button type="button" class="btn btn-default" uib-dropdown-toggle>
         <span style="padding-right: 5px;"></span>
         <span class="caret"></span>
       </button>
-      <ul class="dropdown-menu">
+      <ul uib-dropdown-menu>
         <li ng-repeat="carrier in sms_carriers">
           <a href 
             ng-click="field_modified();user_settings['opac.default_sms_carrier'] = carrier">
@@ -859,13 +859,13 @@ within the "form" by name for validation.
     -->
     
     <div ng-if="cat.entries().length != 0">
-      <div class="btn-group" dropdown>
-        <button type="button" class="btn btn-default dropdown-toggle">
+      <div class="btn-group" uib-dropdown>
+        <button type="button" class="btn btn-default" uib-dropdown-toggle>
           <span style="padding-right: 5px;">
             {{stat_cat_entry_maps[cat.id()]}}</span>
           <span class="caret"></span>
         </button>
-        <ul class="dropdown-menu">
+        <ul uib-dropdown-menu>
           <li ng-repeat="entry in cat.entries()">
             <a href 
               ng-click="field_modified();stat_cat_entry_maps[cat.id()]=entry.value()"> 
@@ -901,14 +901,14 @@ within the "form" by name for validation.
       style="margin-bottom: 10px;">
       <div class="col-md-6">{{question.question()}}</div>
       <div class="col-md-6">
-        <div class="btn-group" dropdown>
-          <button type="button" class="btn btn-default dropdown-toggle">
+        <div class="btn-group" uib-dropdown>
+          <button type="button" class="btn btn-default" uib-dropdown-toggle>
             <span style="padding-right: 5px;">
               {{survey_responses[question.id()].answer()}}
             </span>
             <span class="caret"></span>
           </button>
-          <ul class="dropdown-menu">
+          <ul uib-dropdown-menu>
             <li ng-repeat="answer in question.answers()">
               <a href 
                 ng-click="field_modified();survey_responses[question.id()] = answer"> 
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_patron_groups_dialog.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_patron_groups_dialog.tt2
index 5dd8f3e..7c7f6b0 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_patron_groups_dialog.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_patron_groups_dialog.tt2
@@ -29,12 +29,12 @@ This does not affect circulation policy.
       </div>
       <div class="row pad-all-min">
         <div class="col-md-6">
-            <div class="btn-group" dropdown>
-              <button type="button" class="btn btn-default dropdown-toggle">
+            <div class="btn-group" uib-dropdown>
+              <button type="button" class="btn btn-default" uib-dropdown-toggle>
                 <span style="padding-right: 5px;">{{args.new_profile.name()}}</span>
                 <span class="caret"></span>
               </button>
-              <ul class="dropdown-menu scrollable-menu">
+              <ul class="scrollable-menu" uib-dropdown-menu>
                 <li ng-repeat="grp in args.edit_profiles">
                   <a href
                     style="padding-left: {{pgt_depth(grp) * 10 + 5}}px"
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_search.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_search.tt2
index 9304b33..bcbda5a 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_search.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_search.tt2
@@ -115,12 +115,12 @@
             typeahead-editable="false" />
             -->
 
-            <div class="btn-group patron-search-selector" dropdown>
-              <button type="button" class="btn btn-default dropdown-toggle">
+            <div class="btn-group patron-search-selector" uib-dropdown>
+              <button type="button" class="btn btn-default" uib-dropdown-toggle>
                 <span style="padding-right: 5px;">{{searchArgs.profile.name() || "[% l('Profile Group') %]"}}</span>
                 <span class="caret"></span>
               </button>
-              <ul class="dropdown-menu">
+              <ul uib-dropdown-menu>
                 <li ng-repeat="grp in profiles">
                   <a href
                     style="padding-left: {{pgt_depth(grp) * 10 + 5}}px"
diff --git a/Open-ILS/src/templates/staff/share/t_autogrid.tt2 b/Open-ILS/src/templates/staff/share/t_autogrid.tt2
index e96e2fb..82fa3b2 100644
--- a/Open-ILS/src/templates/staff/share/t_autogrid.tt2
+++ b/Open-ILS/src/templates/staff/share/t_autogrid.tt2
@@ -9,11 +9,11 @@
   <div class="eg-grid-primary-label">{{mainLabel}}</div>
 
   <div class="btn-group" 
-    is-open="gridMenuIsOpen" ng-if="menuLabel && showMenu" dropdown>
-    <button type="button" class="btn btn-default dropdown-toggle eg-grid-menu-item">
+    is-open="gridMenuIsOpen" ng-if="menuLabel && showMenu" uib-dropdown>
+    <button type="button" class="btn btn-default eg-grid-menu-item" uib-dropdown-toggle>
       {{menuLabel}}<span class="caret"></span>
     </button>
-    <ul class="dropdown-menu scrollable-menu">
+    <ul class="scrollable-menu" uib-dropdown-menu>
       <li ng-repeat="item in menuItems | filter : { standalone : 'false' }" ng-class="{divider: item.divider}">
         <a ng-if="!item.divider" href a-disabled="item.disabled()"
           ng-click="item.handler()">{{item.label}}</a>
@@ -85,11 +85,11 @@
     </button>
 
     <!-- actions drop-down menu -->
-    <div class="btn-group" ng-show="showActions" ng-if="actionGroups.length > 1 || actionGroups[0].actions.length" dropdown>                                                  
-      <button type="button" class="btn btn-default dropdown-toggle">
+    <div class="btn-group" ng-show="showActions" ng-if="actionGroups.length > 1 || actionGroups[0].actions.length" uib-dropdown>                                                  
+      <button type="button" class="btn btn-default" uib-dropdown-toggle>
         [% l('Actions') %] <span class="caret"></span>                       
       </button>                                                              
-      <ul class="dropdown-menu pull-right grid-action-dropdown scrollable-menu">                                  
+      <ul class="pull-right grid-action-dropdown scrollable-menu" uib-dropdown-menu>
         <li ng-repeat-start="group in actionGroups">
           <span style="padding-left: 1em;" ng-if="group.label"><strong><u>{{group.label}}</u></strong></span>
         </li>
@@ -101,13 +101,13 @@
       </ul>
     </div>
 
-    <div class="btn-group" dropdown is-open="gridRowCountIsOpen" ng-show="showPagination">
+    <div class="btn-group" uib-dropdown is-open="gridRowCountIsOpen" ng-show="showPagination">
       <button type="button" title="[% l('Select Row Count') %]"
-        class="btn btn-default dropdown-toggle">
+        class="btn btn-default" uib-dropdown-toggle>
         [% l('Rows [_1]', '{{limit()}}') %]
         <span class="caret"></span>
       </button>
-      <ul class="dropdown-menu">
+      <ul uib-dropdown-menu>
         <li ng-repeat="t in [5,10,25,50,100]">
           <a href ng-click='offset(0);limit(t);collect()'>
             {{t}}
@@ -119,13 +119,13 @@
       </ul>
     </div>
 
-    <div class="btn-group" dropdown is-open="gridPageSelectIsOpen" ng-show="showPagination">
+    <div class="btn-group" uib-dropdown is-open="gridPageSelectIsOpen" ng-show="showPagination">
       <button type="button" title="[% l('Select Page') %]"
-        class="btn btn-default dropdown-toggle">
+        class="btn btn-default" uib-dropdown-toggle>
         [% l('Page [_1]', '{{page()}}') %]
         <span class="caret"></span>
       </button>
-      <ul class="dropdown-menu">
+      <ul uib-dropdown-menu>
         <li>
           <div class="input-group">
             <input type="text" class="form-control"
@@ -146,12 +146,12 @@
       </ul>
     </div>
 
-    <div class="btn-group" dropdown is-open="gridColumnPickerIsOpen" ng-show="showPicker">
+    <div class="btn-group" uib-dropdown is-open="gridColumnPickerIsOpen" ng-show="showPicker">
       <button type="button" 
-        class="btn btn-default dropdown-toggle">
+        class="btn btn-default" uib-dropdown-toggle>
         <span class="caret"></span>
       </button>
-      <ul class="dropdown-menu pull-right eg-grid-column-picker">
+      <ul class="pull-right eg-grid-column-picker" uib-dropdown-menu>
         <li><a href ng-click="toggleConfDisplay()">
           <span class="glyphicon glyphicon-wrench"></span>
           [% l('Configure Columns') %]

commit 0705bc6051840c6b8783b52ea8246b0790eb79fb
Author: Galen Charlton <gmc at esilibrary.com>
Date:   Wed Apr 20 10:19:40 2016 -0400

    LP#1554714: (indirectly) bump up PhantomJS version
    
    It turns out that PhantomJS 2 or later is required for
    angular-mocks to succesfully inject dependencies; this patch
    updates karma-phantomjs-launcher to a version that will
    bring in a recent-enough version of PhantomJS.
    
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
    Signed-off-by: Bill Erickson <berickxx at gmail.com>

diff --git a/Open-ILS/web/js/ui/default/staff/package.json b/Open-ILS/web/js/ui/default/staff/package.json
index 310ee6b..1776c0e 100644
--- a/Open-ILS/web/js/ui/default/staff/package.json
+++ b/Open-ILS/web/js/ui/default/staff/package.json
@@ -17,7 +17,7 @@
     "grunt-karma": "^0.8.3",
     "karma": "^0.12.14",
     "karma-jasmine": "^0.1.5",
-    "karma-phantomjs-launcher": "^0.1.4",
+    "karma-phantomjs-launcher": "^1.0.0",
     "karma-script-launcher": "~0.1.0",
     "karma-spec-reporter": "0.0.12",
     "karma-story-reporter": "^0.2.2"

commit d7c5cd3dcf5abca7b7c2bc46ccf808bcfd135419
Author: Bill Erickson <berickxx at gmail.com>
Date:   Thu Apr 14 10:36:13 2016 -0400

    LP#1554714 Ang 1.5 org unit dropdown repair
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/web/js/ui/default/staff/services/ui.js b/Open-ILS/web/js/ui/default/staff/services/ui.js
index 4600b4f..e5eb40f 100644
--- a/Open-ILS/web/js/ui/default/staff/services/ui.js
+++ b/Open-ILS/web/js/ui/default/staff/services/ui.js
@@ -350,12 +350,12 @@ function($window , egStrings) {
 
         // any reason to move this into a TT2 template?
         template : 
-            '<div class="btn-group eg-org-selector" dropdown>'
-            + '<button type="button" class="btn btn-default dropdown-toggle" ng-disabled="disable_button">'
+            '<div class="btn-group eg-org-selector" uib-dropdown>'
+            + '<button type="button" class="btn btn-default" uib-dropdown-toggle ng-disabled="disable_button">'
              + '<span style="padding-right: 5px;">{{getSelectedName()}}</span>'
              + '<span class="caret"></span>'
            + '</button>'
-           + '<ul class="dropdown-menu scrollable-menu">'
+           + '<ul uib-dropdown-menu class="scrollable-menu">'
              + '<li ng-repeat="org in orgList" ng-hide="hiddenTest(org.id)">'
                + '<a href ng-click="orgChanged(org)" a-disabled="disableTest(org.id)" '
                  + 'style="padding-left: {{org.depth * 10 + 5}}px">'

commit e0c30a7bd6d05fe9b3e263095838739d5d8af8c0
Author: Bill Erickson <berickxx at gmail.com>
Date:   Thu Apr 14 10:19:24 2016 -0400

    LP#1554714 ng-date-input -> eg-date-input typo
    
    We're using eg-date-input, not ng-date-input.
    
    Thanks to Mike Rylander for pointing this out.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2 b/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
index edcbda4..3c25872 100644
--- a/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
+++ b/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
@@ -64,7 +64,7 @@
         <label for='shelf_expire_time'>[% l("Shelf Expire Date") %]</label>
       </div>
       <div class="col-md-7">
-        <ng-date-input id='shelf_expire_time'
+        <eg-date-input id='shelf_expire_time'
           ng-disabled="!args.modify_shelf_expire_time" ng-model="args.shelf_expire_time"/>
         </eg-date-input>
       </div>

commit 0d31cec39723e90643f09d69a278a4e17350c5a9
Author: Bill Erickson <berickxx at gmail.com>
Date:   Thu Mar 17 10:26:42 2016 -0400

    LP#1554714 Ang. 1.5 navbar menu repairs
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/src/templates/staff/navbar.tt2 b/Open-ILS/src/templates/staff/navbar.tt2
index 28d8fd9..c4e765b 100644
--- a/Open-ILS/src/templates/staff/navbar.tt2
+++ b/Open-ILS/src/templates/staff/navbar.tt2
@@ -29,12 +29,11 @@
         class="glyphicon glyphicon-home"></a><li>
 
       <!-- search -->
-      <li class="dropdown">
-        <a href="javascript:;" class="dropdown-toggle"
-          data-toggle="dropdown">[% l('Search') %]
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Search') %]
           <b class="caret"></b>
         </a>
-        <ul class="dropdown-menu">
+        <ul uib-dropdown-menu>
           <li>
             <a href="./circ/patron/search" target="_self"
               eg-accesskey="[% l('alt+s') %]" 
@@ -64,13 +63,11 @@
 
 
       <!-- circulation -->
-      <li class="dropdown">
-        <a href="javascript:;" class="dropdown-toggle"
-          data-toggle="dropdown">[% l('Circulation') %]
-          <b class="caret"></b>
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Circulation') %]<b class="caret"></b>
         </a>
 
-        <ul class="dropdown-menu">
+        <ul uib-dropdown-menu>
           <li>
             <a href="./circ/patron/bcsearch" target="_self"
               eg-accesskey="[% l('f1') %]" 
@@ -173,12 +170,10 @@
       </li><!-- circ -->
 
       <!-- cataloging -->
-      <li class="dropdown">
-        <a href="javascript:;" class="dropdown-toggle" 
-          data-toggle="dropdown">[% l('Cataloging') %]
-            <b class="caret"></b>
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Cataloging') %]<b class="caret"></b>
         </a>
-        <ul class="dropdown-menu">
+        <ul uib-dropdown-menu>
           <li>
             <a href="./cat/catalog/index" target="_self">
               <span class="glyphicon glyphicon-search"></span>
@@ -263,12 +258,9 @@
       </li>
 
       <!-- admin -->
-      <li class="dropdown">
-        <a href="javascript:;" class="dropdown-toggle" 
-          data-toggle="dropdown">[% l('Administration') %]
-            <b class="caret"></b>
-        </a>
-        <ul class="dropdown-menu">
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>[% l('Administration') %]<b class="caret"></b></a>
+        <ul uib-dropdown-menu>
           <li>
             <a href="./admin/workstation/index" target="_self">
               <span class="glyphicon glyphicon-hdd"></span>
@@ -303,12 +295,12 @@
       <!-- locale selector.  
         only shown if multiple locales are registered -->
       [% IF ctx.locales.keys.size > 1 %]
-      <li class="dropdown">
-        <a href='' class="dropdown-toggle" data-toggle="dropdown">
-            [% lcl = ctx.locale;  ctx.locales.$lcl %]
-            <span class="glyphicon glyphicon-flag"></span>
+      <li class="dropdown" uib-dropdown>
+        <a href uib-dropdown-toggle>
+          [% lcl = ctx.locale;  ctx.locales.$lcl %]
+          <span class="glyphicon glyphicon-flag"></span>
         </a>
-        <ul class="dropdown-menu">
+        <ul uib-dropdown-menu>
         [% FOR locale IN ctx.locales.keys.sort %]
           <!-- disable the selected locale -->
           <li ng-class="{disabled : '[% ctx.locale %]'=='[% locale %]'}">
@@ -321,10 +313,10 @@
       </li>
       [% END %]
 
-      <li class="dropdown" ng-show="username">
-        <a href='' class="dropdown-toggle glyphicon glyphicon-list" 
-          data-toggle="dropdown"></a>
-        <ul class="dropdown-menu">
+      <li class="dropdown" ng-show="username" uib-dropdown>
+        <a href class="glyphicon glyphicon-list" 
+          uib-dropdown-toggle></a>
+        <ul uib-dropdown-menu>
           <li class="disabled">
             <a href="" ng-click="" target="_self">
               <span class="glyphicon glyphicon-random"></span>

commit 10f15b04854296c78b35224af1784cced716916a
Author: Bill Erickson <berickxx at gmail.com>
Date:   Wed Mar 16 18:10:12 2016 -0400

    LP#1554714 Ang 1.5 requires service to return an object
    
    Return a {} from the dummy patronSvc service used by the standalone
    patron editor.  Ang 1.5 requires services to return non-null.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/register.js b/Open-ILS/web/js/ui/default/staff/circ/patron/register.js
index 2f7c208..148cad2 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/register.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/register.js
@@ -42,5 +42,5 @@ angular.module('egPatronRegApp', ['ui.bootstrap','ngRoute','egCoreMod', 'egUiMod
 })
 
 // dummy service so standalone patron editor can reference it
-.factory('patronSvc', function() {});
+.factory('patronSvc', function() { return { /* dummy */ } });
 

commit f9b0b5a7fd0424a5c63cfa545749134d8d91b538
Author: Bill Erickson <berickxx at gmail.com>
Date:   Wed Mar 16 18:09:51 2016 -0400

    LP#1554714 eg-date-input relays ng-blur
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/src/templates/staff/share/t_datetime.tt2 b/Open-ILS/src/templates/staff/share/t_datetime.tt2
index 3f2bd01..0e837f1 100644
--- a/Open-ILS/src/templates/staff/share/t_datetime.tt2
+++ b/Open-ILS/src/templates/staff/share/t_datetime.tt2
@@ -9,6 +9,7 @@
         is-open="datePickerIsOpen"
         ng-model="ngModel"
         ng-change="ngChange"
+        ng-blur="ngBlur"
         ng-disabled="ngDisabled"
         ng-required="ngRequired"
         close-text="{{closeText}}"/>
@@ -22,7 +23,7 @@
   </div>
   <!-- Time Picker
       let time picker break to a new line since it does not
-       not line up horizontally very well with the date picker -->
+      not line up horizontally very well with the date picker -->
   <div>
     <span>
       <uib-timepicker
@@ -30,6 +31,7 @@
         ng-model="ngModel"
         ng-disabled="ngDisabled"
         ng-required="ngRequired"
+        ng-blur="ngBlur"
         ng-change="ngChange">
       </uib-timepicker>
     </span>
diff --git a/Open-ILS/web/js/ui/default/staff/services/ui.js b/Open-ILS/web/js/ui/default/staff/services/ui.js
index b774050..4600b4f 100644
--- a/Open-ILS/web/js/ui/default/staff/services/ui.js
+++ b/Open-ILS/web/js/ui/default/staff/services/ui.js
@@ -466,6 +466,7 @@ function($window , egStrings) {
                 closeText : '@',
                 ngModel : '=',
                 ngChange : '=',
+                ngBlur : '=',
                 ngDisabled : '=',
                 ngRequired : '=',
                 hideDatePicker : '='

commit 2c20d1ce06dd7636e0fae03f1da9faefd494e830
Author: Bill Erickson <berickxx at gmail.com>
Date:   Thu Mar 10 13:08:00 2016 -0500

    LP#1554714 Migrate eg-date-input to ui-datepicker-popup
    
    Also add support for uib-timepicker as an option secondary component of
    the input.
    
    Refactor existing use of eg-date-input to use <eg-date-input/>-style
    declaration to better differentiate between a normal <input> and the
    more complete/stylized date input div.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/src/templates/staff/base_js.tt2 b/Open-ILS/src/templates/staff/base_js.tt2
index 4e5ab8f..54e6e7f 100644
--- a/Open-ILS/src/templates/staff/base_js.tt2
+++ b/Open-ILS/src/templates/staff/base_js.tt2
@@ -59,6 +59,7 @@
       '[% l('This page may have unsaved data.\n\nAre you sure you want to leave this page?') %]';
     s.EG_UNLOAD_PAGE_PROMPT_MSG = 
       '[% l('This page may have unsaved data.') %]';
+    s.EG_DATE_INPUT_CLOSE_TEXT = '[% l('Close') %]';
   }]);
 </script>
 
diff --git a/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2 b/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2
index ba3b332..f6b81f2 100644
--- a/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2
+++ b/Open-ILS/src/templates/staff/circ/checkin/t_checkin.tt2
@@ -80,8 +80,7 @@
       <div class="flex-cell"></div>
       <div class="pad-horiz">[% l('Effective Date') %]</div>
       <!-- date max= not yet supported -->
-      <div><input eg-date-input
-        class="form-control" ng-model="checkinArgs.backdate"/>
+      <div><eg-date-input ng-model="checkinArgs.backdate"></eg-date-input>
       </div>
     </div>
   </div>
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_bill_history.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_bill_history.tt2
index aef6084..d9c4543 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_bill_history.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_bill_history.tt2
@@ -15,17 +15,28 @@
 <div class="tab-content">
   <div class="tab-pane active">
 
-    <div class="flex-row padded">
-      <div ng-if="bill_tab == 'transactions'">[% l('Selected Billed:') %]</div>
-      <div ng-if="bill_tab == 'transactions'">{{totals.selected_billed() | currency}}</div>
-      <div>[% l('Selected Paid:') %]</div>
-      <div>{{totals.selected_paid() | currency}}</div>
-      <div class="flex-cell"></div>
-      <div><button class="btn btn-default" ng-click="actions.apply_date_range()">[% l('Apply') %]</button></div>
-      <div>[% l('Start Date:') %]</div>
-      <div><input eg-date-input class="form-control" ng-model="dates.xact_start"/></div>
-      <div>[% l('End Date:') %]</div>
-      <div><input eg-date-input class="form-control" ng-model="dates.xact_finish"/></div>
+    <div class="row padded">
+      <div class="col-md-2">
+        <span ng-if="bill_tab == 'transactions'">
+            <label>[% l('Selected Billed:') %]</label>
+            {{totals.selected_billed() | currency}}
+            <br/>
+        </span>
+        <label>[% l('Selected Paid:') %]</label>
+        <span>{{totals.selected_paid() | currency}}</span>
+      </div>
+      <div class="col-md-1">
+        <span><button class="btn btn-default" 
+            ng-click="actions.apply_date_range()">[% l('Apply') %]</button></span>
+      </div>
+      <div class="col-md-4 flex-row padded">
+        <label>[% l('Start Date:') %]</label>
+        <div><eg-date-input ng-model="dates.xact_start"></eg-date-input></div>
+      </div>
+      <div class="col-md-4 flex-row padded">
+        <label>[% l('End Date:') %]</label>
+        <div><eg-date-input ng-model="dates.xact_finish"></eg-date-input></div>
+      </div>
     </div><!-- top row -->
     <hr/>
     [% INCLUDE 'staff/circ/patron/t_bill_history_xacts.tt2' %]
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2
index 28bba44..fb590a6 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_checkout.tt2
@@ -50,8 +50,7 @@
       -->
       <!-- FIXME: This needs a time component as well, but type="datetime" 
             is not yet supported by any browsers -->
-      <div><input eg-date-input class="form-control" 
-        ng-model="checkoutArgs.due_date"/>
+      <div><eg-date-input ng-model="checkoutArgs.due_date"></eg-date-input>
       </div>
     </div>
   </div>
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
index 77e5c7f..5d94abe 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
@@ -260,15 +260,11 @@ within the "form" by name for validation.
 <div class="row reg-field-row" ng-show="show_field('au.dob')">
   [% draw_field_label('au', 'dob') %]
   <div class="col-md-3 reg-field-input">
-    <input
-      name="dob"
-      uib-datepicker-popup="shortDate" 
+    <eg-date-input 
+      ng-model="patron.dob"
       ng-change="field_modified()" 
-      ng-required="field_required('au', 'dob')"
-      ng-blur="handle_field_changed(patron, 'dob')"
-      is-open="dob_is_open" 
-      close-text="[% l('Close') %]"/>
-      class="form-control" ng-model="patron.dob"/>
+      ng-blur="handle_field_changed(patron, 'dob')">
+    </eg-date-input>
   </div>
   <div class="col-md-6 patron-reg-example">
     [% draw_example_text('au', 'dob') %]
@@ -438,9 +434,11 @@ within the "form" by name for validation.
 <div class="row reg-field-row" ng-show="show_field('au.expire_date')">
   [% draw_field_label('au', 'expire_date') %]
   <div class="col-md-3 reg-field-input">
-    <input eg-date-input 
+    <eg-date-input 
+      ng-change="field_modified()" 
       ng-blur="handle_field_changed(patron, 'expire_date')"
-      class="form-control" ng-model="patron.expire_date"/>
+      ng-model="patron.expire_date">
+    </eg-date-input>
   </div>
   <div class="col-md-3">
     <button class="btn btn-default" ng-click="set_expire_date()">
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_edit_due_date_dialog.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_edit_due_date_dialog.tt2
index dcca6d3..e1384b7 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_edit_due_date_dialog.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_edit_due_date_dialog.tt2
@@ -8,11 +8,11 @@
   </div>
   <div class="modal-body">
     <div class="form-group row pad-vert">
-      <div class="col-md-6">
+      <div class="col-md-4">
         [% l('Enter Due Date: ') %]
       </div>
-      <div class="col-md-6">
-        <input eg-date-input class="form-control" ng-model="args.due_date"/>
+      <div class="col-md-8">
+        <eg-date-input show-time-picker ng-model="args.due_date"></eg-date-input>
       </div>
     </div>
     <!-- TODO: time picker -->
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_messages.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_messages.tt2
index e23c258..f6a9e2f 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_messages.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_messages.tt2
@@ -27,13 +27,18 @@
 
 <div class="pad-vert"><hr/></div>
 
-<div class="pad-vert flex-row padded">
-  <div class="strong-text-2">[% l('Archived Penalties / Messages') %]</div>
-  <div class="flex-cell"></div>
-  <div>[% l('Set Date Start:') %]</div>
-  <div><input eg-date-input class="form-control" ng-model="dates.start_date"/></div>
-  <div>[% l('Set Date End:') %]</div>
-  <div><input eg-date-input class="form-control" ng-model="dates.end_date"/></div>
+<div class="pad-vert row padded">
+  <div class="col-md-4">
+    <div class="strong-text-2">[% l('Archived Penalties / Messages') %]</div>
+  </div>
+  <div class="col-md-4">
+    <label>[% l('Set Date Start:') %]</label>
+    <eg-date-input ng-model="dates.start_date"></eg-date-input>
+  </div>
+  <div class="col-md-4">
+    <label>[% l('Set Date End:') %]</label>
+    <eg-date-input ng-model="dates.end_date"></eg-date-input>
+  </div>
 </div>
 <eg-grid
   idl-class="ausp"
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_renew_with_date_dialog.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_renew_with_date_dialog.tt2
index d8112d0..c2e0958 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_renew_with_date_dialog.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_renew_with_date_dialog.tt2
@@ -13,8 +13,7 @@
   </div>
   <div class="pad-vert row">
     <div class="col-md-5">
-      <input eg-date-input required 
-        class="form-control" ng-model="args.date"/>
+      <eg-date-input required ng-model="args.date"></eg-date-input>
     </div>
   </div>
 </div>
diff --git a/Open-ILS/src/templates/staff/circ/renew/t_renew.tt2 b/Open-ILS/src/templates/staff/circ/renew/t_renew.tt2
index f8946d5..6e7d36e 100644
--- a/Open-ILS/src/templates/staff/circ/renew/t_renew.tt2
+++ b/Open-ILS/src/templates/staff/circ/renew/t_renew.tt2
@@ -33,7 +33,7 @@
       </div>
       <!-- FIXME: This needs a time component as well, but type="datetime" 
             is not yet supported by any browsers -->
-      <div><input eg-date-input class="form-control" ng-model="renewalArgs.due_date"/>
+      <div><eg-date-input ng-model="renewalArgs.due_date"></eg-date-input>
       </div>
     </div>
   </div>
diff --git a/Open-ILS/src/templates/staff/circ/share/t_backdate_dialog.tt2 b/Open-ILS/src/templates/staff/circ/share/t_backdate_dialog.tt2
index 034e909..2f18b77 100644
--- a/Open-ILS/src/templates/staff/circ/share/t_backdate_dialog.tt2
+++ b/Open-ILS/src/templates/staff/circ/share/t_backdate_dialog.tt2
@@ -13,8 +13,7 @@
   <div class="pad-vert row">
     <div class="col-md-6">[% l('Effective Date:') %]</div>
     <div class="col-md-6">
-      <input eg-date-input required 
-        class="form-control" ng-model="dialog.backdate"/>
+      <eg-date-input required ng-model="dialog.backdate"></eg-date-input>
     </div>
   </div>
 </div>
diff --git a/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2 b/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
index b145d0e..edcbda4 100644
--- a/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
+++ b/Open-ILS/src/templates/staff/circ/share/t_hold_dates.tt2
@@ -22,8 +22,9 @@
         <label for='thaw_date'>[% l("Hold Activate Date") %]</label>
       </div>
       <div class="col-md-7">
-        <input id='thaw_date' eg-date-input 
-          ng-disabled="!args.modify_thaw_date" ng-model="args.thaw_date"/>
+        <eg-date-input id='thaw_date'
+          ng-disabled="!args.modify_thaw_date" ng-model="args.thaw_date">
+        </eg-date-input>
       </div>
     </div>
     <div class="row">
@@ -35,8 +36,9 @@
         <label for='request_time'>[% l("Hold Request Date") %]</label>
       </div>
       <div class="col-md-7">
-        <input id='request_time' eg-date-input 
-          ng-disabled="!args.modify_request_time" ng-model="args.request_time"/>
+        <eg-date-input id='request_time'
+          ng-disabled="!args.modify_request_time" ng-model="args.request_time">
+        </eg-date-input>
       </div>
     </div>
     <div class="row">
@@ -48,8 +50,9 @@
         <label for='expire_time'>[% l("Hold Expire Date") %]</label>
       </div>
       <div class="col-md-7">
-        <input id='expire_time' eg-date-input 
-          ng-disabled="!args.modify_expire_time" ng-model="args.expire_time"/>
+        <eg-date-input id='expire_time'
+          ng-disabled="!args.modify_expire_time" ng-model="args.expire_time">
+        </eg-date-input>
       </div>
     </div>
     <div class="row">
@@ -61,8 +64,9 @@
         <label for='shelf_expire_time'>[% l("Shelf Expire Date") %]</label>
       </div>
       <div class="col-md-7">
-        <input id='shelf_expire_time' eg-date-input 
+        <ng-date-input id='shelf_expire_time'
           ng-disabled="!args.modify_shelf_expire_time" ng-model="args.shelf_expire_time"/>
+        </eg-date-input>
       </div>
     </div>
   </div>
diff --git a/Open-ILS/src/templates/staff/circ/share/t_mark_claims_returned_dialog.tt2 b/Open-ILS/src/templates/staff/circ/share/t_mark_claims_returned_dialog.tt2
index 858e242..d2828a0 100644
--- a/Open-ILS/src/templates/staff/circ/share/t_mark_claims_returned_dialog.tt2
+++ b/Open-ILS/src/templates/staff/circ/share/t_mark_claims_returned_dialog.tt2
@@ -14,8 +14,9 @@
   </div>
   <div class="pad-vert row">
     <div class="col-md-5">
-      <input eg-date-input required 
-        class="form-control" ng-model="args.date"/>
+      <eg-date-input ng-required="true"
+        class="form-control" ng-model="args.date">
+      </eg-date-input>
     </div>
   </div>
 </div>
diff --git a/Open-ILS/src/templates/staff/share/t_datetime.tt2 b/Open-ILS/src/templates/staff/share/t_datetime.tt2
new file mode 100644
index 0000000..3f2bd01
--- /dev/null
+++ b/Open-ILS/src/templates/staff/share/t_datetime.tt2
@@ -0,0 +1,38 @@
+<div>
+  <div>
+    <!-- Date Picker -->
+    <div class="input-group">
+      <input type="text"
+        class="form-control"
+        ng-show="!hideDatePicker"
+        uib-datepicker-popup="shortDate"
+        is-open="datePickerIsOpen"
+        ng-model="ngModel"
+        ng-change="ngChange"
+        ng-disabled="ngDisabled"
+        ng-required="ngRequired"
+        close-text="{{closeText}}"/>
+      <span class="input-group-btn">
+        <button type="button" class="btn btn-default"
+          ng-click="datePickerIsOpen=!datePickerIsOpen">
+          <i class="glyphicon glyphicon-calendar"></i>
+        </button>
+      </span>
+    </div>
+  </div>
+  <!-- Time Picker
+      let time picker break to a new line since it does not
+       not line up horizontally very well with the date picker -->
+  <div>
+    <span>
+      <uib-timepicker
+        ng-show="showTimePicker"
+        ng-model="ngModel"
+        ng-disabled="ngDisabled"
+        ng-required="ngRequired"
+        ng-change="ngChange">
+      </uib-timepicker>
+    </span>
+  </div>
+</div>
+
diff --git a/Open-ILS/web/js/ui/default/staff/services/ui.js b/Open-ILS/web/js/ui/default/staff/services/ui.js
index 3808a67..b774050 100644
--- a/Open-ILS/web/js/ui/default/staff/services/ui.js
+++ b/Open-ILS/web/js/ui/default/staff/services/ui.js
@@ -456,45 +456,30 @@ function($window , egStrings) {
 })
 
 /*
-http://stackoverflow.com/questions/18061757/angular-js-and-html5-date-input-value-how-to-get-firefox-to-show-a-readable-d
-
-This directive allows us to use html5 input type="date" (for Chrome) and 
-gracefully fall back to a regular ISO text input for Firefox.
-It also allows us to abstract away some browser finickiness.
+* Handy wrapper directive for uib-datapicker-popup
 */
 .directive(
-    'egDateInput',
-    function(dateFilter) {
+    'egDateInput', ['egStrings',
+    function(egStrings) {
         return {
+            scope : {
+                closeText : '@',
+                ngModel : '=',
+                ngChange : '=',
+                ngDisabled : '=',
+                ngRequired : '=',
+                hideDatePicker : '='
+            },
             require: 'ngModel',
-            template: '<input type="date"></input>',
+            templateUrl: './share/t_datetime',
             replace: true,
-            link: function(scope, elm, attrs, ngModelCtrl) {
-
-                // since this is a date-only selector, set the time
-                // portion to 00:00:00, which should better match the
-                // user's expectations.  Note this allows us to retain
-                // the timezone.
-                function strip_time(date) {
-                    if (!date) date = new Date();
-                    date.setHours(0);
-                    date.setMinutes(0);
-                    date.setSeconds(0);
-                    date.setMilliseconds(0);
-                    return date;
-                }
+            link : function(scope, elm, attrs) {
+                if (!scope.closeText)
+                    scope.closeText = egStrings.EG_DATE_INPUT_CLOSE_TEXT;
 
-                ngModelCtrl.$formatters.unshift(function (modelValue) {
-                    // apply strip_time here in case the user never 
-                    // modifies the date value.
-                    if (!modelValue) return '';
-                    return dateFilter(strip_time(modelValue), 'yyyy-MM-dd');
-                });
-                
-                ngModelCtrl.$parsers.unshift(function(viewValue) {
-                    if (!viewValue) return null;
-                    return strip_time(new Date(viewValue));
-                });
-            },
+                if ('showTimePicker' in attrs)
+                    scope.showTimePicker = true;
+            }
         };
-})
+    }
+])

commit 9643e60d45a84a8562b8228b3d1d14ac0a93a25e
Author: Bill Erickson <berickxx at gmail.com>
Date:   Wed Mar 9 14:00:27 2016 -0500

    LP#1554714 Patron reg DoB via datepicker
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
index a98d7fe..77e5c7f 100644
--- a/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
+++ b/Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
@@ -260,11 +260,14 @@ within the "form" by name for validation.
 <div class="row reg-field-row" ng-show="show_field('au.dob')">
   [% draw_field_label('au', 'dob') %]
   <div class="col-md-3 reg-field-input">
-    <input eg-date-input 
+    <input
       name="dob"
+      uib-datepicker-popup="shortDate" 
       ng-change="field_modified()" 
       ng-required="field_required('au', 'dob')"
       ng-blur="handle_field_changed(patron, 'dob')"
+      is-open="dob_is_open" 
+      close-text="[% l('Close') %]"/>
       class="form-control" ng-model="patron.dob"/>
   </div>
   <div class="col-md-6 patron-reg-example">

commit 636812ad7cba1f3aca1a5038485c4d4a91736844
Author: Bill Erickson <berickxx at gmail.com>
Date:   Wed Mar 9 14:01:31 2016 -0500

    LP#1554714 Patron reg DoB parse month bug repair
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
index 0e01761..b0b3486 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
@@ -703,7 +703,7 @@ angular.module('egCoreMod')
         var parts = dob.split('-');
         var d = new Date(); // always local time zone, yay.
         d.setFullYear(parts[0]);
-        d.setMonth(parts[1]);
+        d.setMonth(parts[1] - 1);
         d.setDate(parts[2]);
         return d;
     }

commit 34f53d9225556ec4553e5ddc4c5ed6fd09bd7b72
Author: Bill Erickson <berickxx at gmail.com>
Date:   Wed Mar 9 08:38:41 2016 -0500

    LP#1554714 Patron reg 1.5 controller consolidation
    
    Angular 1.4+ requires that each controller be instantiated via the
    module.controller() function.  No more global functions.  The patron
    reg. controller, shared by 2 different modules, was defined as a global
    function.  Resolve this by hanging it off the core module (when loaded).
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
index 2d484be..0e01761 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
@@ -1076,11 +1076,13 @@ angular.module('egCoreMod')
     }
 
     return service;
-}]);
+}])
 
-
-function PatronRegCtrl($scope, $routeParams, $q, $uibModal, $window, 
-    egCore, patronSvc, patronRegSvc, egUnloadPrompt, egAlertDialog) {
+.controller('PatronRegCtrl', 
+       ['$scope','$routeParams','$q','$uibModal','$window','egCore',
+        'patronSvc','patronRegSvc','egUnloadPrompt','egAlertDialog',
+function($scope , $routeParams , $q , $uibModal , $window , egCore , 
+         patronSvc , patronRegSvc , egUnloadPrompt, egAlertDialog) {
 
     $scope.page_data_loaded = false;
     $scope.clone_id = patronRegSvc.clone_id = $routeParams.clone_id;
@@ -1812,8 +1814,5 @@ function PatronRegCtrl($scope, $routeParams, $q, $uibModal, $window,
             }
         });
     }
-}
-
-PatronRegCtrl.$inject = ['$scope', '$routeParams', '$q', '$uibModal', 
-    '$window', 'egCore', 'patronSvc', 'patronRegSvc', 'egUnloadPrompt', 'egAlertDialog'];
+}])
 
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/register.js b/Open-ILS/web/js/ui/default/staff/circ/patron/register.js
index 49306f0..2f7c208 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/register.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/register.js
@@ -44,4 +44,3 @@ angular.module('egPatronRegApp', ['ui.bootstrap','ngRoute','egCoreMod', 'egUiMod
 // dummy service so standalone patron editor can reference it
 .factory('patronSvc', function() {});
 
-

commit 31dc20a3bdc4e0debe69ff41be8bed1a2ab8d410
Author: Bill Erickson <berickxx at gmail.com>
Date:   Tue Mar 8 16:12:48 2016 -0500

    LP#1554714 angular-bootstrap 1.4 uibModal migration
    
    angular-bootstrap's $modal module is now known as $uibModal.  Ditto
    $uibModalInstance.
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js b/Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
index da8d00d..e3b068e 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
@@ -211,9 +211,9 @@ angular.module('egCatCopyBuckets',
  * Hosts functions needed by all controllers.
  */
 .controller('CopyBucketCtrl',
-       ['$scope','$location','$q','$timeout','$modal',
+       ['$scope','$location','$q','$timeout','$uibModal',
         '$window','egCore','bucketSvc',
-function($scope,  $location,  $q,  $timeout,  $modal,  
+function($scope,  $location,  $q,  $timeout,  $uibModal,  
          $window,  egCore,  bucketSvc) {
 
     $scope.bucketSvc = bucketSvc;
@@ -264,13 +264,13 @@ function($scope,  $location,  $q,  $timeout,  $modal,
     }
 
     $scope.openCreateBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/copy/t_bucket_create',
             controller: 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }]
         }).result.then(function (args) {
             if (!args || !args.name) return;
@@ -288,10 +288,10 @@ function($scope,  $location,  $q,  $timeout,  $modal,
     }
 
     $scope.openEditBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/copy/t_bucket_edit',
             controller: 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
                 $scope.args = {
                     name : bucketSvc.currentBucket.name(),
@@ -304,9 +304,9 @@ function($scope,  $location,  $q,  $timeout,  $modal,
                     args.pub = args.pub ? 't' : 'f';
                     // close the dialog after edit has completed
                     bucketSvc.editBucket(args).then(
-                        function() { $modalInstance.close() });
+                        function() { $uibModalInstance.close() });
                 }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }]
         })
     }
@@ -314,13 +314,13 @@ function($scope,  $location,  $q,  $timeout,  $modal,
     // opens the delete confirmation and deletes the current
     // bucket if the user confirms.
     $scope.openDeleteBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/copy/t_bucket_delete',
             controller : 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.bucket = function() { return bucketSvc.currentBucket }
-                $scope.ok = function() { $modalInstance.close() }
-                $scope.cancel = function() { $modalInstance.dismiss() }
+                $scope.ok = function() { $uibModalInstance.close() }
+                $scope.cancel = function() { $uibModalInstance.dismiss() }
             }]
         }).result.then(function () {
             bucketSvc.deleteBucket(bucketSvc.currentBucket.id())
@@ -333,17 +333,17 @@ function($scope,  $location,  $q,  $timeout,  $modal,
 
     // retrieves the requested bucket by ID
     $scope.openSharedBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/copy/t_load_shared',
             controller :
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
                 $scope.ok = function(args) {
                     if (args && args.id) {
-                        $modalInstance.close(args.id)
+                        $uibModalInstance.close(args.id)
                     }
                 }
-                $scope.cancel = function() { $modalInstance.dismiss() }
+                $scope.cancel = function() { $uibModalInstance.dismiss() }
             }]
         }).result.then(function(id) {
             // RecordBucketCtrl $scope is not inherited by the
@@ -401,9 +401,9 @@ function($scope,  $routeParams,  bucketSvc , egGridDataProvider,   egCore) {
 }])
 
 .controller('ViewCtrl',
-       ['$scope','$q','$routeParams','$timeout','$window','$modal','bucketSvc','egCore','egUser',
+       ['$scope','$q','$routeParams','$timeout','$window','$uibModal','bucketSvc','egCore','egUser',
         'egConfirmDialog',
-function($scope,  $q , $routeParams , $timeout , $window , $modal , bucketSvc , egCore , egUser ,
+function($scope,  $q , $routeParams , $timeout , $window , $uibModal , bucketSvc , egCore , egUser ,
          egConfirmDialog) {
 
     $scope.setTab('view');
@@ -482,12 +482,12 @@ function($scope,  $q , $routeParams , $timeout , $window , $modal , bucketSvc ,
 
         if (copy_list.length == 0) return;
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_request_items',
             animation: true,
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
                 $scope.user = null;
                 $scope.first_user_fetch = true;
 
@@ -536,11 +536,11 @@ function($scope,  $q , $routeParams , $timeout , $window , $modal , bucketSvc ,
                         egCore.auth.token(), args, h.copy_list
                     );
 
-                    $modalInstance.close();
+                    $uibModalInstance.close();
                 }
 
                 $scope.cancel = function($event) {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }]
diff --git a/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js b/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js
index 9056b86..5c891d0 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js
@@ -242,9 +242,9 @@ angular.module('egCatRecordBuckets',
  * Hosts functions needed by all controllers.
  */
 .controller('RecordBucketCtrl',
-       ['$scope','$location','$q','$timeout','$modal',
+       ['$scope','$location','$q','$timeout','$uibModal',
         '$window','egCore','bucketSvc',
-function($scope,  $location,  $q,  $timeout,  $modal,  
+function($scope,  $location,  $q,  $timeout,  $uibModal,  
          $window,  egCore,  bucketSvc) {
 
     $scope.bucketSvc = bucketSvc;
@@ -295,13 +295,13 @@ function($scope,  $location,  $q,  $timeout,  $modal,
     }
 
     $scope.openCreateBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/record/t_bucket_create',
             controller: 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }]
         }).result.then(function (args) {
             if (!args || !args.name) return;
@@ -319,10 +319,10 @@ function($scope,  $location,  $q,  $timeout,  $modal,
     }
 
     $scope.openEditBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/record/t_bucket_edit',
             controller: 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
                 $scope.args = {
                     name : bucketSvc.currentBucket.name(),
@@ -335,9 +335,9 @@ function($scope,  $location,  $q,  $timeout,  $modal,
                     args.pub = args.pub ? 't' : 'f';
                     // close the dialog after edit has completed
                     bucketSvc.editBucket(args).then(
-                        function() { $modalInstance.close() });
+                        function() { $uibModalInstance.close() });
                 }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }]
         })
     }
@@ -346,13 +346,13 @@ function($scope,  $location,  $q,  $timeout,  $modal,
     // opens the delete confirmation and deletes the current
     // bucket if the user confirms.
     $scope.openDeleteBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/record/t_bucket_delete',
             controller : 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.bucket = function() { return bucketSvc.currentBucket }
-                $scope.ok = function() { $modalInstance.close() }
-                $scope.cancel = function() { $modalInstance.dismiss() }
+                $scope.ok = function() { $uibModalInstance.close() }
+                $scope.cancel = function() { $uibModalInstance.dismiss() }
             }]
         }).result.then(function () {
             bucketSvc.deleteBucket(bucketSvc.currentBucket.id())
@@ -365,17 +365,17 @@ function($scope,  $location,  $q,  $timeout,  $modal,
 
     // retrieves the requested bucket by ID
     $scope.openSharedBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/record/t_load_shared',
             controller : 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
                 $scope.ok = function(args) { 
                     if (args && args.id) {
-                        $modalInstance.close(args.id) 
+                        $uibModalInstance.close(args.id) 
                     }
                 }
-                $scope.cancel = function() { $modalInstance.dismiss() }
+                $scope.cancel = function() { $uibModalInstance.dismiss() }
             }]
         }).result.then(function(id) {
             // RecordBucketCtrl $scope is not inherited by the
@@ -387,13 +387,13 @@ function($scope,  $location,  $q,  $timeout,  $modal,
 
     // opens the record export dialog
     $scope.openExportBucketDialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/record/t_bucket_export',
             controller : 
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.args = {format : 'XML', encoding : 'UTF-8'}; // defaults
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function() { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function() { $uibModalInstance.dismiss() }
             }]
         }).result.then(function (args) {
             if (!args) return;
@@ -504,9 +504,9 @@ function($scope,  $routeParams,  bucketSvc , egGridDataProvider) {
 
 .controller('ViewCtrl',
        ['$scope','$q','$routeParams','bucketSvc','egCore','$window',
-        '$timeout','egConfirmDialog','$modal','egHolds',
+        '$timeout','egConfirmDialog','$uibModal','egHolds',
 function($scope,  $q , $routeParams,  bucketSvc,  egCore,  $window,
-         $timeout,  egConfirmDialog,  $modal,  egHolds) {
+         $timeout,  egConfirmDialog,  $uibModal,  egHolds) {
 
     $scope.setTab('view');
     $scope.bucketId = $routeParams.id;
@@ -542,12 +542,12 @@ function($scope,  $q , $routeParams,  bucketSvc,  egCore,  $window,
 
     // opens the record merge dialog
     $scope.openRecordMergeDialog = function(records) {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/bucket/record/t_merge_records',
             size: 'lg',
             windowClass: 'eg-wide-modal',
             controller:
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.records = [];
                 $scope.lead_id = 0;
                 $scope.editing_inplace = false;
@@ -555,12 +555,12 @@ function($scope,  $q , $routeParams,  bucketSvc,  egCore,  $window,
                     $scope.records.push({ id : rec.id });
                 });
                 $scope.ok = function() {
-                    $modalInstance.close({
+                    $uibModalInstance.close({
                         lead_id : $scope.lead_id,
                         records : $scope.records
                     });
                 }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
                 $scope.use_as_lead = function(rec) {
                     if ($scope.lead_id) {
                         $scope.records.push({ id : $scope.lead_id });
@@ -583,16 +583,16 @@ function($scope,  $q , $routeParams,  bucketSvc,  egCore,  $window,
                 }
                 $scope.edit_lead = function() {
                     var lead_id = $scope.lead_id;
-                    $modal.open({
+                    $uibModal.open({
                         templateUrl: './cat/bucket/record/t_edit_lead_record',
                         size: 'lg',
                         controller:
-                            ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                            ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                             $scope.focusMe = true;
                             $scope.record_id = lead_id;
                             $scope.dirty_flag = false;
-                            $scope.ok = function() { $modalInstance.close() }
-                            $scope.cancel = function () { $modalInstance.dismiss() }
+                            $scope.ok = function() { $uibModalInstance.close() }
+                            $scope.cancel = function () { $uibModalInstance.dismiss() }
                         }]
                     }).result.then(function() {
                         // TODO: need a way to force a refresh of the egRecordBreaker, as
@@ -670,13 +670,13 @@ function($scope,  $q , $routeParams,  bucketSvc,  egCore,  $window,
                     }
                 });
                 if (failures.length) {
-                    $modal.open({
+                    $uibModal.open({
                         templateUrl: './cat/bucket/record/t_records_not_deleted',
                         controller :
-                            ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                            ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                             $scope.failures = failures;
-                            $scope.ok = function() { $modalInstance.close() }
-                            $scope.cancel = function() { $modalInstance.dismiss() }
+                            $scope.ok = function() { $uibModalInstance.close() }
+                            $scope.cancel = function() { $uibModalInstance.dismiss() }
                             }]
                     });
                 }
diff --git a/Open-ILS/web/js/ui/default/staff/cat/catalog/app.js b/Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
index a635b9c..729469b 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/catalog/app.js
@@ -238,9 +238,9 @@ function($scope , $routeParams , $location , $window , $q , egCore) {
 
 .controller('CatalogCtrl',
        ['$scope','$routeParams','$location','$window','$q','egCore','egHolds','egCirc','egConfirmDialog','ngToast',
-        'egGridDataProvider','egHoldGridActions','$timeout','$modal','holdingsSvc','egUser','conjoinedSvc',
+        'egGridDataProvider','egHoldGridActions','$timeout','$uibModal','holdingsSvc','egUser','conjoinedSvc',
 function($scope , $routeParams , $location , $window , $q , egCore , egHolds , egCirc , egConfirmDialog , ngToast ,
-         egGridDataProvider , egHoldGridActions , $timeout , $modal , holdingsSvc , egUser , conjoinedSvc) {
+         egGridDataProvider , egHoldGridActions , $timeout , $uibModal , holdingsSvc , egUser , conjoinedSvc) {
 
     var holdingsSvcInst = new holdingsSvc();
 
@@ -288,13 +288,13 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
 
     $scope.add_to_record_bucket = function() {
         var recId = $scope.record_id;
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_add_to_bucket',
             animation: true,
             size: 'md',
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
 
                 $scope.bucket_id = 0;
                 $scope.newBucketName = '';
@@ -315,7 +315,7 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                         'open-ils.actor.container.item.create',
                         egCore.auth.token(), 'biblio', item
                     ).then(function(resp) {
-                        $modalInstance.close();
+                        $uibModalInstance.close();
                     });
                 }
 
@@ -337,7 +337,7 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                 }
 
                 $scope.cancel = function() {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                 }
             }]
         });
@@ -467,12 +467,12 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
 
         var conjoinedGridDataProviderRef = $scope.conjoinedGridDataProvider;
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_conjoined_selector',
             animation: true,
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
                 $scope.update = true;
 
                 $scope.peer_type = null;
@@ -491,13 +491,13 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                     });
     
                     return $q.all(promises)
-                        .then(function(){$modalInstance.close()})
+                        .then(function(){$uibModalInstance.close()})
                         .then(function(){return conjoinedSvc.fetch()})
                         .then(function(){conjoinedGridDataProviderRef.refresh()});
                 }
     
                 $scope.cancel = function($event) {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }]
@@ -552,13 +552,13 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
         var copy_list = gatherSelectedHoldingsIds();
         if (copy_list.length == 0) return;
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_add_to_bucket',
             animation: true,
             size: 'md',
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
 
                 $scope.bucket_id = 0;
                 $scope.newBucketName = '';
@@ -586,7 +586,7 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                         );
 
                         return $q.all(promises).then(function() {
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                         });
                     });
                 }
@@ -609,7 +609,7 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                 }
 
                 $scope.cancel = function() {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                 }
             }]
         });
@@ -619,12 +619,12 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
         var copy_list = gatherSelectedHoldingsIds();
         if (copy_list.length == 0) return;
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_request_items',
             animation: true,
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
                 $scope.user = null;
                 $scope.first_user_fetch = true;
 
@@ -673,11 +673,11 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                         egCore.auth.token(), args, h.copy_list
                     );
 
-                    $modalInstance.close();
+                    $uibModalInstance.close();
                 }
 
                 $scope.cancel = function($event) {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }]
@@ -691,12 +691,12 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
         var holdingsGridDataProviderRef = $scope.holdingsGridDataProvider;
 
         angular.forEach(copy_list, function (cp) {
-            $modal.open({
+            $uibModal.open({
                 templateUrl: './cat/share/t_replace_barcode',
                 animation: true,
                 controller:
-                           ['$scope','$modalInstance',
-                    function($scope , $modalInstance) {
+                           ['$scope','$uibModalInstance',
+                    function($scope , $uibModalInstance) {
                         $scope.isModal = true;
                         $scope.focusBarcode = false;
                         $scope.focusBarcode2 = true;
@@ -728,11 +728,11 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                                 });
 
                             });
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                         }
 
                         $scope.cancel = function($event) {
-                            $modalInstance.dismiss();
+                            $uibModalInstance.dismiss();
                             $event.preventDefault();
                         }
                     }
@@ -1008,12 +1008,12 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
     }
 
     $scope.markLibAsVolTarget = function() {
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/catalog/t_choose_vol_target_lib',
             animation: true,
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
 
                 var orgId = egCore.hatch.getLocalItem('eg.cat.volume_transfer_target') || 1;
                 $scope.org = egCore.org.get(orgId);
@@ -1023,10 +1023,10 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                         'eg.cat.volume_transfer_target',
                         org.id()
                     );
-                    $modalInstance.close();
+                    $uibModalInstance.close();
                 }
                 $scope.cancel = function($event) {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }]
@@ -1270,12 +1270,12 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
         egCore.hatch.getItem('eg.cat.marked_conjoined_record').then(function(target_record) {
             if (!target_record) return;
 
-            return $modal.open({
+            return $uibModal.open({
                 templateUrl: './cat/catalog/t_conjoined_selector',
                 animation: true,
                 controller:
-                       ['$scope','$modalInstance',
-                function($scope , $modalInstance) {
+                       ['$scope','$uibModalInstance',
+                function($scope , $uibModalInstance) {
                     $scope.update = false;
 
                     $scope.peer_type = null;
@@ -1296,11 +1296,11 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                             promises.push(egCore.pcrud.create(n));
                         });
     
-                        return $q.all(promises).then(function(){$modalInstance.close()});
+                        return $q.all(promises).then(function(){$uibModalInstance.close()});
                     }
     
                     $scope.cancel = function($event) {
-                        $modalInstance.dismiss();
+                        $uibModalInstance.dismiss();
                         $event.preventDefault();
                     }
                 }]
diff --git a/Open-ILS/web/js/ui/default/staff/cat/services/holdings.js b/Open-ILS/web/js/ui/default/staff/cat/services/holdings.js
index f33fa65..2742915 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/services/holdings.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/services/holdings.js
@@ -292,8 +292,8 @@ function(egCore , $q) {
         },
         templateUrl: './cat/share/t_volume_list',
         controller:
-                   ['$scope','holdingsSvc','egCore','egGridDataProvider','$modal',
-            function($scope , holdingsSvc , egCore , egGridDataProvider,  $modal) {
+                   ['$scope','holdingsSvc','egCore','egGridDataProvider','$uibModal',
+            function($scope , holdingsSvc , egCore , egGridDataProvider,  $uibModal) {
                 var holdingsSvcInst = new holdingsSvc();
 
                 $scope.holdingsGridControls = {};
@@ -324,16 +324,16 @@ function(egCore , $q) {
                         }
                     ).then(function(key) {
                         if (key) {
-                            $modal.open({
+                            $uibModal.open({
                                 templateUrl: './cat/share/t_embedded_volcopy',
                                 size: 'lg',
                                 windowClass: 'eg-wide-modal',
                                 controller:
-                                    ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                                    ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                                     $scope.volcopy_url = 
                                         egCore.env.basePath + 'cat/volcopy/' + key + '/embedded';
-                                    $scope.ok = function(args) { $modalInstance.close(args) }
-                                    $scope.cancel = function () { $modalInstance.dismiss() }
+                                    $scope.ok = function(args) { $uibModalInstance.close(args) }
+                                    $scope.cancel = function () { $uibModalInstance.dismiss() }
                                 }]
                             }).result.then(function() {
                                 load_holdings();
diff --git a/Open-ILS/web/js/ui/default/staff/cat/services/marcedit.js b/Open-ILS/web/js/ui/default/staff/cat/services/marcedit.js
index c4862f9..1e9460b 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/services/marcedit.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/services/marcedit.js
@@ -475,8 +475,8 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                   '</div>',
         scope: { field: "=", onKeydown: '=', contextFunctions: '=' },
         replace: true,
-        controller : ['$scope','$modal',
-            function ( $scope,  $modal ) {
+        controller : ['$scope','$uibModal',
+            function ( $scope,  $uibModal ) {
                 $scope.stackSubfields = $scope.$parent.$parent.stackSubfields;
                 $scope.isAuthorityControlled = function () {
                     return ($scope.$parent.$parent.record_type == 'bre') &&
@@ -495,16 +495,16 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                     });
                     var cs = $scope.$parent.$parent.controlSet;
                     var args = { changed : false };
-                    $modal.open({
+                    $uibModal.open({
                         templateUrl: './cat/share/t_authority_link_dialog',
                         size: 'lg',
-                        controller: ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                        controller: ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                             $scope.controlSet = cs;
                             $scope.bibField = fieldCopy;
                             $scope.focusMe = true;
                             $scope.args = args;
-                            $scope.ok = function(args) { $modalInstance.close(args) };
-                            $scope.cancel = function () { $modalInstance.dismiss() };
+                            $scope.ok = function(args) { $uibModalInstance.close(args) };
+                            $scope.cancel = function () { $uibModalInstance.dismiss() };
                         }]
                     }).result.then(function (args) {
                         if (args.changed) {
@@ -544,8 +544,8 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                       '</button>'+
                   '</div>',
         scope: { field: "=", onKeydown: '=', contextFunctions: '=' },
-        controller : ['$scope','$modal',
-            function ( $scope,  $modal) {
+        controller : ['$scope','$uibModal',
+            function ( $scope,  $uibModal) {
                 $scope.showPhysCharLink = function () {
                     return ($scope.$parent.$parent.record_type == 'bre') 
                         && $scope.field.tag == '007';
@@ -556,15 +556,15 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                         field : $scope.field,
                         orig_value : $scope.field.data
                     };
-                    $modal.open({
+                    $uibModal.open({
                         templateUrl: './cat/share/t_physchar_dialog',
-                        controller: ['$scope','$modalInstance',
-                            function( $scope , $modalInstance) {
+                        controller: ['$scope','$uibModalInstance',
+                            function( $scope , $uibModalInstance) {
                             $scope.focusMe = true;
                             $scope.args = args;
-                            $scope.ok = function(args) { $modalInstance.close(args) };
+                            $scope.ok = function(args) { $uibModalInstance.close(args) };
                             $scope.cancel = function () { 
-                                $modalInstance.dismiss();
+                                $uibModalInstance.dismiss();
                                 args.field.data = args.orig_value;
                             };
                         }],
@@ -1455,8 +1455,8 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
             controlSet : '=',
             changed : '='
         },
-        controller: ['$scope','$modal','egCore','egAuth',
-            function ($scope , $modal,  egCore,  egAuth) {
+        controller: ['$scope','$uibModal','egCore','egAuth',
+            function ($scope , $uibModal,  egCore,  egAuth) {
 
                 $scope.searchStr = '';
                 var cni = egCore.env.aous['cat.marc_control_number_identifier'] ||
@@ -1611,17 +1611,17 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                         egAuth.token()
                     ).then(function(newAuthority) {
                         if (spawn_editor) {
-                            $modal.open({
+                            $uibModal.open({
                                 templateUrl: './cat/share/t_edit_new_authority',
                                 size: 'lg',
                                 controller:
-                                    ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                                    ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                                     $scope.focusMe = true;
                                     $scope.args = args;
                                     $scope.dirty_flag = false;
                                     $scope.marc_xml = newAuthority,
-                                    $scope.ok = function(args) { $modalInstance.close(args) }
-                                    $scope.cancel = function () { $modalInstance.dismiss() }
+                                    $scope.ok = function(args) { $uibModalInstance.close(args) }
+                                    $scope.cancel = function () { $uibModalInstance.dismiss() }
                                 }]
                             }).result.then(function (args) {
                                 if (!args || !args.authority_id) return;
diff --git a/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js b/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
index 40efacc..8c9ce68 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
@@ -751,8 +751,8 @@ function(egCore , $q) {
  * Edit controller!
  */
 .controller('EditCtrl', 
-       ['$scope','$q','$window','$routeParams','$location','$timeout','egCore','egNet','egGridDataProvider','itemSvc','$modal',
-function($scope , $q , $window , $routeParams , $location , $timeout , egCore , egNet , egGridDataProvider , itemSvc , $modal) {
+       ['$scope','$q','$window','$routeParams','$location','$timeout','egCore','egNet','egGridDataProvider','itemSvc','$uibModal',
+function($scope , $q , $window , $routeParams , $location , $timeout , egCore , egNet , egGridDataProvider , itemSvc , $uibModal) {
 
     $scope.defaults = { // If defaults are not set at all, allow everything
         barcode_checkdigit : false,
@@ -1535,12 +1535,12 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
         var default_pub = Boolean($scope.defaults.copy_notes_pub);
         if (!angular.isArray(copy_list)) copy_list = [copy_list];
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './cat/volcopy/t_copy_notes',
             animation: true,
             controller:
-                   ['$scope','$modalInstance',
-            function($scope , $modalInstance) {
+                   ['$scope','$uibModalInstance',
+            function($scope , $uibModalInstance) {
                 $scope.focusNote = true;
                 $scope.note = {
                     creator : egCore.auth.user().id(),
@@ -1576,11 +1576,11 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
                         cp.notes().push( n );
                     });
 
-                    $modalInstance.close();
+                    $uibModalInstance.close();
                 }
 
                 $scope.cancel = function($event) {
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }]
diff --git a/Open-ILS/web/js/ui/default/staff/cat/z3950/app.js b/Open-ILS/web/js/ui/default/staff/cat/z3950/app.js
index 85c0ac0..c8f36e9 100644
--- a/Open-ILS/web/js/ui/default/staff/cat/z3950/app.js
+++ b/Open-ILS/web/js/ui/default/staff/cat/z3950/app.js
@@ -26,9 +26,9 @@ angular.module('egCatZ3950Search',
  * List view - grid stuff
  */
 .controller('Z3950SearchCtrl',
-       ['$scope','$q','$location','$timeout','$window','egCore','egGridDataProvider','egZ3950TargetSvc','$modal',
+       ['$scope','$q','$location','$timeout','$window','egCore','egGridDataProvider','egZ3950TargetSvc','$uibModal',
         'egConfirmDialog',
-function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvider,  egZ3950TargetSvc,  $modal,
+function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvider,  egZ3950TargetSvc,  $uibModal,
          egConfirmDialog) {
 
     // get list of targets
@@ -149,15 +149,15 @@ function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvi
         return egZ3950TargetSvc.rawSearchImpossible();
     }
     $scope.showRawSearchForm = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/z3950/t_raw_search',
             size: 'md',
             controller:
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 egZ3950TargetSvc.setRawSearch('');
                 $scope.focusMe = true;
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }]
         }).result.then(function (args) {
             if (!args || !args.raw_search) return;
@@ -252,17 +252,17 @@ function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvi
     $scope.spawn_editor = function() {
         var items = $scope.gridControls.selectedItems();
         var recId = 0;
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/z3950/t_marc_edit',
             size: 'lg',
             controller:
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
                 $scope.record_id = recId;
                 $scope.dirty_flag = false;
                 $scope.marc_xml = items[0]['marcxml'];
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
                 $scope.save_label = egCore.strings.IMPORT_BUTTON_LABEL;
                 $scope.import_record_callback = function (record_id) {
                     recId = record_id;
@@ -278,16 +278,16 @@ function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvi
 
     $scope.view_marc = function() {
         var items = $scope.gridControls.selectedItems();
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/z3950/t_marc_html',
             size: 'lg',
             controller:
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
                 $scope.marc_xml = items[0]['marcxml'];
                 $scope.isbn = (items[0].isbn() || '').replace(/ .*/, '');
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }]
         }).result.then(function (args) {
             if (!args || !args.name) return;
@@ -300,28 +300,28 @@ function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvi
         var args = {
             'marc_xml' : items[0]['marcxml']
         };
-        $modal.open({
+        $uibModal.open({
             templateUrl: './cat/z3950/t_overlay',
             size: 'lg',
             controller:
-                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                 $scope.focusMe = true;
                 $scope.overlay_target = overlay_target;
                 $scope.args = args;
-                $scope.ok = function(args) { $modalInstance.close(args) };
-                $scope.cancel = function () { $modalInstance.dismiss() };
+                $scope.ok = function(args) { $uibModalInstance.close(args) };
+                $scope.cancel = function () { $uibModalInstance.dismiss() };
                 $scope.editOverlayRecord = function() {
-                    $modal.open({
+                    $uibModal.open({
                         templateUrl: './cat/z3950/t_edit_overlay_record',
                         size: 'lg',
                         controller:
-                            ['$scope', '$modalInstance', function($scope, $modalInstance) {
+                            ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
                             $scope.focusMe = true;
                             $scope.record_id = 0;
                             $scope.dirty_flag = false;
                             $scope.args = args;
-                            $scope.ok = function(args) { $modalInstance.close(args) }
-                            $scope.cancel = function () { $modalInstance.dismiss() }
+                            $scope.ok = function(args) { $uibModalInstance.close(args) }
+                            $scope.cancel = function () { $uibModalInstance.dismiss() }
                         }]
                     }).result.then(function (args) {
                         if (!args || !args.name) return;
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/app.js b/Open-ILS/web/js/ui/default/staff/circ/patron/app.js
index 9cf3b45..652a35f 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/app.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/app.js
@@ -1062,8 +1062,8 @@ function($scope,  $q,  $routeParams,  $timeout,  $window,  $location,  egCore,
  * Manages messages
  */
 .controller('PatronMessagesCtrl',
-       ['$scope','$q','$routeParams','egCore','$modal','patronSvc','egCirc',
-function($scope , $q , $routeParams,  egCore , $modal , patronSvc , egCirc) {
+       ['$scope','$q','$routeParams','egCore','$uibModal','patronSvc','egCirc',
+function($scope , $q , $routeParams,  egCore , $uibModal , patronSvc , egCirc) {
     $scope.initTab('messages', $routeParams.id);
     var usr_id = $routeParams.id;
 
@@ -1288,8 +1288,8 @@ function($scope,  $routeParams , $location , egCore , patronSvc) {
 }])
 
 .controller('PatronNotesCtrl',
-       ['$scope','$routeParams','$location','egCore','patronSvc','$modal',
-function($scope,  $routeParams , $location , egCore , patronSvc , $modal) {
+       ['$scope','$routeParams','$location','egCore','patronSvc','$uibModal',
+function($scope,  $routeParams , $location , egCore , patronSvc , $uibModal) {
     $scope.initTab('other', $routeParams.id);
     var usr_id = $routeParams.id;
 
@@ -1307,15 +1307,15 @@ function($scope,  $routeParams , $location , egCore , patronSvc , $modal) {
 
     // open the new-note dialog and create the note
     $scope.newNote = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './circ/patron/t_new_note_dialog',
             controller: 
-                ['$scope', '$modalInstance',
-            function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance',
+            function($scope, $uibModalInstance) {
                 $scope.focusNote = true;
                 $scope.args = {};
-                $scope.ok = function(count) { $modalInstance.close($scope.args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(count) { $uibModalInstance.close($scope.args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }],
         }).result.then(
             function(args) {
@@ -1353,9 +1353,9 @@ function($scope,  $routeParams , $location , egCore , patronSvc , $modal) {
 
 .controller('PatronGroupCtrl',
        ['$scope','$routeParams','$q','$window','$timeout','$location','egCore',
-        'patronSvc','$modal','egPromptDialog','egConfirmDialog',
+        'patronSvc','$uibModal','egPromptDialog','egConfirmDialog',
 function($scope,  $routeParams , $q , $window , $timeout,  $location , egCore ,
-         patronSvc , $modal , egPromptDialog , egConfirmDialog) {
+         patronSvc , $uibModal , egPromptDialog , egConfirmDialog) {
 
     var usr_id = $routeParams.id;
 
@@ -1463,18 +1463,18 @@ function($scope,  $routeParams , $q , $window , $timeout,  $location , egCore ,
             egCore.pcrud.retrieve('au', card.usr())
             .then(function(user) {
                 user.card(card);
-                $modal.open({
+                $uibModal.open({
                     templateUrl: './circ/patron/t_move_to_group_dialog',
                     controller: [
-                                '$scope','$modalInstance',
-                        function($scope , $modalInstance) {
+                                '$scope','$uibModalInstance',
+                        function($scope , $uibModalInstance) {
                             $scope.user = user;
                             $scope.selected = selected;
                             $scope.outbound = outbound;
                             $scope.ok = 
-                                function(count) { $modalInstance.close() }
+                                function(count) { $uibModalInstance.close() }
                             $scope.cancel = 
-                                function () { $modalInstance.dismiss() }
+                                function () { $uibModalInstance.dismiss() }
                         }
                     ]
                 }).result.then(function() {
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js b/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js
index 80be1fe..0c366d8 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/bills.js
@@ -112,11 +112,9 @@ function($q , egCore , patronSvc) {
  */
 .controller('PatronBillsCtrl',
        ['$scope','$q','$routeParams','egCore','egConfirmDialog','$location',
-        'egGridDataProvider','billSvc','patronSvc','egPromptDialog','$modal',
-        'egBilling',
+        'egGridDataProvider','billSvc','patronSvc','egPromptDialog', 'egBilling',
 function($scope , $q , $routeParams , egCore , egConfirmDialog , $location,
-         egGridDataProvider , billSvc , patronSvc , egPromptDialog , $modal,
-         egBilling) {
+         egGridDataProvider , billSvc , patronSvc , egPromptDialog, egBilling) {
 
     $scope.initTab('bills', $routeParams.id);
     billSvc.userId = $routeParams.id;
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/checkout.js b/Open-ILS/web/js/ui/default/staff/circ/patron/checkout.js
index 9806d8f..3d6e9c6 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/checkout.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/checkout.js
@@ -4,10 +4,10 @@
 
 angular.module('egPatronApp').controller('PatronCheckoutCtrl',
 
-       ['$scope','$q','$modal','$routeParams','egCore','egUser','patronSvc',
+       ['$scope','$q','$routeParams','egCore','egUser','patronSvc',
         'egGridDataProvider','$location','$timeout','egCirc',
 
-function($scope , $q , $modal , $routeParams , egCore , egUser , patronSvc , 
+function($scope , $q , $routeParams , egCore , egUser , patronSvc , 
          egGridDataProvider , $location , $timeout , egCirc) {
 
     $scope.initTab('checkout', $routeParams.id).finally(function(){
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js b/Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
index 380c42c..5113591 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/items_out.js
@@ -6,9 +6,9 @@ angular.module('egPatronApp')
 
 .controller('PatronItemsOutCtrl',
        ['$scope','$q','$routeParams','$timeout','egCore','egUser','patronSvc','$location',
-        'egGridDataProvider','$modal','egCirc','egConfirmDialog','egBilling','$window',
+        'egGridDataProvider','$uibModal','egCirc','egConfirmDialog','egBilling','$window',
 function($scope,  $q,  $routeParams,  $timeout,  egCore , egUser,  patronSvc , $location, 
-         egGridDataProvider , $modal , egCirc , egConfirmDialog , egBilling , $window) {
+         egGridDataProvider , $uibModal , egCirc , egConfirmDialog , egBilling , $window) {
 
     // list of noncatatloged circulations. Define before initTab to 
     // avoid any possibility of race condition, since they are loaded
@@ -254,11 +254,11 @@ function($scope,  $q,  $routeParams,  $timeout,  egCore , egUser,  patronSvc , $
     $scope.edit_due_date = function(items) {
         if (!items.length) return;
 
-        $modal.open({
+        $uibModal.open({
             templateUrl : './circ/patron/t_edit_due_date_dialog',
             controller : [
-                        '$scope','$modalInstance',
-                function($scope , $modalInstance) {
+                        '$scope','$uibModalInstance',
+                function($scope , $uibModalInstance) {
 
                     // if there is only one circ, default to the due date
                     // of that circ.  Otherwise, default to today.
@@ -299,12 +299,12 @@ function($scope,  $q,  $routeParams,  $timeout,  egCore , egUser,  patronSvc , $
                         });
 
                         $q.all(promises).then(function() {
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                             provider.refresh();
                         });
                     }
                     $scope.cancel = function($event) {
-                        $modalInstance.dismiss();
+                        $uibModalInstance.dismiss();
                         $event.preventDefault();
                     }
                 }
@@ -406,17 +406,17 @@ function($scope,  $q,  $routeParams,  $timeout,  egCore , egUser,  patronSvc , $
         var barcodes = items.map(function(circ) 
             { return circ.target_copy().barcode() });
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl : './circ/patron/t_edit_due_date_dialog',
             templateUrl : './circ/patron/t_renew_with_date_dialog',
             controller : [
-                        '$scope','$modalInstance',
-                function($scope , $modalInstance) {
+                        '$scope','$uibModalInstance',
+                function($scope , $uibModalInstance) {
                     $scope.args = {
                         barcodes : barcodes,
                         date : new Date()
                     }
-                    $scope.cancel = function() {$modalInstance.dismiss()}
+                    $scope.cancel = function() {$uibModalInstance.dismiss()}
 
                     // Fire off the due-date updater for each circ.
                     // When all is done, close the dialog
@@ -429,7 +429,7 @@ function($scope,  $q,  $routeParams,  $timeout,  egCore , egUser,  patronSvc , $
                                 egCirc.renew({copy_barcode : bc, due_date : due})
                                 .finally(do_one);
                             } else {
-                                $modalInstance.close(); 
+                                $uibModalInstance.close(); 
                                 reset_page();
                             }
                         }
diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
index 69577d3..2d484be 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
@@ -1079,8 +1079,8 @@ angular.module('egCoreMod')
 }]);
 
 
-function PatronRegCtrl($scope, $routeParams, $q, $modal, $window, egCore, 
-    patronSvc, patronRegSvc, egUnloadPrompt, egAlertDialog) {
+function PatronRegCtrl($scope, $routeParams, $q, $uibModal, $window, 
+    egCore, patronSvc, patronRegSvc, egUnloadPrompt, egAlertDialog) {
 
     $scope.page_data_loaded = false;
     $scope.clone_id = patronRegSvc.clone_id = $routeParams.clone_id;
@@ -1426,16 +1426,16 @@ function PatronRegCtrl($scope, $routeParams, $q, $modal, $window, egCore,
     }
 
     $scope.cards_dialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './circ/patron/t_patron_cards_dialog',
             controller: 
-                   ['$scope','$modalInstance','cards', 'perms',
-            function($scope , $modalInstance , cards, perms) {
+                   ['$scope','$uibModalInstance','cards','perms',
+            function($scope , $uibModalInstance , cards , perms) {
                 // scope here is the modal-level scope
                 $scope.args = {cards : cards};
                 $scope.perms = perms;
-                $scope.ok = function() { $modalInstance.close($scope.args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function() { $uibModalInstance.close($scope.args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }],
             resolve : {
                 cards : function() {
@@ -1502,11 +1502,11 @@ function PatronRegCtrl($scope, $routeParams, $q, $modal, $window, egCore,
 
     // dialog for selecting additional permission groups
     $scope.secondary_groups_dialog = function() {
-        $modal.open({
+        $uibModal.open({
             templateUrl: './circ/patron/t_patron_groups_dialog',
             controller: 
-                   ['$scope','$modalInstance','linked_groups','pgt_depth',
-            function($scope , $modalInstance , linked_groups , pgt_depth) {
+                   ['$scope','$uibModalInstance','linked_groups','pgt_depth',
+            function($scope , $uibModalInstance , linked_groups , pgt_depth) {
 
                 $scope.pgt_depth = pgt_depth;
                 $scope.args = {
@@ -1533,8 +1533,8 @@ function PatronRegCtrl($scope, $routeParams, $q, $modal, $window, egCore,
                     $event.preventDefault(); // avoid close
                 }
 
-                $scope.ok = function() { $modalInstance.close($scope.args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function() { $uibModalInstance.close($scope.args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }],
             resolve : {
                 linked_groups : function() { return $scope.patron.groups },
@@ -1814,8 +1814,6 @@ function PatronRegCtrl($scope, $routeParams, $q, $modal, $window, egCore,
     }
 }
 
-// This controller may be loaded from different modules (patron edit vs.
-// register new patron), so we have to inject the controller params manually.
-PatronRegCtrl.$inject = ['$scope', '$routeParams', '$q', '$modal', 
+PatronRegCtrl.$inject = ['$scope', '$routeParams', '$q', '$uibModal', 
     '$window', 'egCore', 'patronSvc', 'patronRegSvc', 'egUnloadPrompt', 'egAlertDialog'];
 
diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/billing.js b/Open-ILS/web/js/ui/default/staff/circ/services/billing.js
index 9a2efb6..b01f9bf 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/services/billing.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/services/billing.js
@@ -6,8 +6,8 @@
 angular.module('egCoreMod')
 
 .factory('egBilling', 
-       ['$modal','$q','egCore',
-function($modal , $q , egCore) {
+       ['$uibModal','$q','egCore',
+function($uibModal , $q , egCore) {
 
     var service = {};
 
@@ -112,11 +112,11 @@ function($modal , $q , egCore) {
     //   patron OR patron_id
     service.showBillDialog = function(args) {
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_bill_patron_dialog',
             controller: 
-                   ['$scope','$modalInstance','$timeout','billingTypes','xact','patron',
-            function($scope , $modalInstance , $timeout , billingTypes , xact , patron) {
+                   ['$scope','$uibModalInstance','$timeout','billingTypes','xact','patron',
+            function($scope , $uibModalInstance , $timeout , billingTypes , xact , patron) {
                 console.debug('billing patron ' + patron.id());
                 $scope.focus = true;
                 if (xact && xact._isfieldmapper)
@@ -130,8 +130,8 @@ function($modal , $q , egCore) {
                     xact : xact,
                     patron_id : patron.id()
                 }
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
                 $scope.updateDefaultPrice = function() {
                     var type = billingTypes.filter(function(t) {
                         return t.id() == $scope.billArgs.billingType })[0];
diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
index 2ff641b..e74cc78 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js
@@ -6,8 +6,8 @@ angular.module('egCoreMod')
 
 .factory('egCirc',
 
-       ['$modal','$q','egCore','egAlertDialog','egConfirmDialog',
-function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
+       ['$uibModal','$q','egCore','egAlertDialog','egConfirmDialog',
+function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog) {
 
     var service = {
         // auto-override these events after the first override
@@ -600,20 +600,20 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
     // the returned event.
     service.override_dialog = function(evt, params, options, action) {
         if (!angular.isArray(evt)) evt = [evt];
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_event_override_dialog',
             controller: 
-                ['$scope', '$modalInstance', 
-                function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', 
+                function($scope, $uibModalInstance) {
                 $scope.events = evt;
                 $scope.auto_override =
                     evt.filter(function(e){
                         return service.checkout_auto_override_after_first.indexOf(evt.textcode) > -1;
                     }).length > 0;
                 $scope.copy_barcode = params.copy_barcode; // may be null
-                $scope.ok = function() { $modalInstance.close() }
+                $scope.ok = function() { $uibModalInstance.close() }
                 $scope.cancel = function ($event) { 
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }]
@@ -638,14 +638,14 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
 
     service.copy_not_avail_dialog = function(evt, params, options) {
         if (angular.isArray(evt)) evt = evt[0];
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_copy_not_avail_dialog',
             controller: 
-                       ['$scope','$modalInstance','copyStatus',
-                function($scope , $modalInstance , copyStatus) {
+                       ['$scope','$uibModalInstance','copyStatus',
+                function($scope , $uibModalInstance , copyStatus) {
                 $scope.copyStatus = copyStatus;
-                $scope.ok = function() {$modalInstance.close()}
-                $scope.cancel = function() {$modalInstance.dismiss()}
+                $scope.ok = function() {$uibModalInstance.close()}
+                $scope.cancel = function() {$uibModalInstance.dismiss()}
             }],
             resolve : {
                 copyStatus : function() {
@@ -678,18 +678,18 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
             params.noncat = true;
             var type = egCore.env.cnct.map[params.noncat_type];
 
-            return $modal.open({
+            return $uibModal.open({
                 templateUrl: './circ/share/t_noncat_dialog',
                 controller: 
-                    ['$scope', '$modalInstance',
-                    function($scope, $modalInstance) {
+                    ['$scope', '$uibModalInstance',
+                    function($scope, $uibModalInstance) {
                     $scope.focusMe = true;
                     $scope.type = type;
                     $scope.count = 1;
                     $scope.noncatMax = noncatMax;
-                    $scope.ok = function(count) { $modalInstance.close(count) }
+                    $scope.ok = function(count) { $uibModalInstance.close(count) }
                     $scope.cancel = function ($event) { 
-                        $modalInstance.dismiss() 
+                        $uibModalInstance.dismiss() 
                         $event.preventDefault();
                     }
                 }],
@@ -710,19 +710,19 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
     // Opens a dialog allowing the user to fill in pre-cat copy info.
     service.precat_dialog = function(params, options) {
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_precat_dialog',
             controller: 
-                ['$scope', '$modalInstance', 'circMods',
-                function($scope, $modalInstance, circMods) {
+                ['$scope', '$uibModalInstance', 'circMods',
+                function($scope, $uibModalInstance, circMods) {
                 $scope.focusMe = true;
                 $scope.precatArgs = {
                     copy_barcode : params.copy_barcode,
                     circ_modifier : circMods.length ? circMods[0].code() : null
                 };
                 $scope.circModifiers = circMods;
-                $scope.ok = function(args) { $modalInstance.close(args) }
-                $scope.cancel = function () { $modalInstance.dismiss() }
+                $scope.ok = function(args) { $uibModalInstance.close(args) }
+                $scope.cancel = function () { $uibModalInstance.dismiss() }
             }],
             resolve : {
                 circMods : function() { 
@@ -771,14 +771,14 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
 
     service.copy_in_transit_dialog = function(evt, params, options) {
         if (angular.isArray(evt)) evt = evt[0];
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_copy_in_transit_dialog',
             controller: 
-                       ['$scope','$modalInstance','transit',
-                function($scope , $modalInstance , transit) {
+                       ['$scope','$uibModalInstance','transit',
+                function($scope , $uibModalInstance , transit) {
                 $scope.transit = transit;
-                $scope.ok = function() { $modalInstance.close(transit) }
-                $scope.cancel = function() { $modalInstance.dismiss() }
+                $scope.ok = function() { $uibModalInstance.close(transit) }
+                $scope.cancel = function() { $uibModalInstance.dismiss() }
             }],
             resolve : {
                 // fetch the conflicting open transit w/ fleshed copy
@@ -845,17 +845,17 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
         var openCirc = evt.payload.old_circ;
         var sameUser = openCirc.usr() == params.patron_id;
         
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_circ_exists_dialog',
             controller: 
-                       ['$scope','$modalInstance',
-                function($scope , $modalInstance) {
+                       ['$scope','$uibModalInstance',
+                function($scope , $uibModalInstance) {
                 $scope.args = {forgive_fines : false};
                 $scope.circDate = openCirc.xact_start();
                 $scope.sameUser = sameUser;
-                $scope.ok = function() { $modalInstance.close($scope.args) }
+                $scope.ok = function() { $uibModalInstance.close($scope.args) }
                 $scope.cancel = function($event) { 
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault(); // form, avoid calling ok();
                 }
             }]
@@ -892,11 +892,11 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
     }
 
     service.backdate_dialog = function(circ_ids) {
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_backdate_dialog',
             controller: 
-                       ['$scope','$modalInstance',
-                function($scope , $modalInstance) {
+                       ['$scope','$uibModalInstance',
+                function($scope , $uibModalInstance) {
 
                 var today = new Date();
                 $scope.dialog = {
@@ -912,7 +912,7 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
 
 
                 $scope.cancel = function() { 
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                 }
 
                 $scope.ok = function() { 
@@ -921,7 +921,7 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
                     service.batch_backdate(circ_ids, bd)
                     .then(
                         function() { // on complete
-                            $modalInstance.close({backdate : bd});
+                            $uibModalInstance.close({backdate : bd});
                         },
                         null,
                         function(resp) { // on response
@@ -981,11 +981,11 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
     service.mark_claims_returned_dialog = function(copy_barcodes) {
         if (!copy_barcodes.length) return;
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_mark_claims_returned_dialog',
             controller: 
-                       ['$scope','$modalInstance',
-                function($scope , $modalInstance) {
+                       ['$scope','$uibModalInstance',
+                function($scope , $uibModalInstance) {
 
                 var today = new Date();
                 $scope.args = {
@@ -998,7 +998,7 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
                         $scope.args.backdate = today;
                 });
 
-                $scope.cancel = function() {$modalInstance.dismiss()}
+                $scope.cancel = function() {$uibModalInstance.dismiss()}
                 $scope.ok = function() { 
 
                     var date = $scope.args.date.toISOString().replace(/T.*/,'');
@@ -1011,7 +1011,7 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
                         var bc = copy_barcodes.pop();
                         if (!bc) {
                             deferred.resolve();
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                             return;
                         }
 
@@ -1374,11 +1374,11 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
             if (options.auto_print_holds_transits) 
                 return print_transit();
 
-            return $modal.open({
+            return $uibModal.open({
                 templateUrl: tmpl,
                 controller: [
-                            '$scope','$modalInstance',
-                    function($scope , $modalInstance) {
+                            '$scope','$uibModalInstance',
+                    function($scope , $uibModalInstance) {
 
                     $scope.today = new Date();
 
@@ -1387,10 +1387,10 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
                         $scope[key] = val;
                     });
 
-                    $scope.ok = function() {$modalInstance.close()}
+                    $scope.ok = function() {$uibModalInstance.close()}
 
                     $scope.print = function() { 
-                        $modalInstance.close();
+                        $uibModalInstance.close();
                         print_transit();
                     }
                 }]
@@ -1422,14 +1422,14 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
         var ok = service.check_barcode(bc);
         if (ok) return $q.when();
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_bad_barcode_dialog',
             controller: 
-                ['$scope', '$modalInstance', 
-                function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance', 
+                function($scope, $uibModalInstance) {
                 $scope.barcode = bc;
-                $scope.ok = function() { $modalInstance.close() }
-                $scope.cancel = function() { $modalInstance.dismiss() }
+                $scope.ok = function() { $uibModalInstance.close() }
+                $scope.cancel = function() { $uibModalInstance.dismiss() }
             }]
         }).result;
     }
@@ -1469,11 +1469,11 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
     }
 
     service.create_penalty = function(user_id) {
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_new_message_dialog',
             controller: 
-                   ['$scope','$modalInstance','staffPenalties',
-            function($scope , $modalInstance , staffPenalties) {
+                   ['$scope','$uibModalInstance','staffPenalties',
+            function($scope , $uibModalInstance , staffPenalties) {
                 $scope.focusNote = true;
                 $scope.penalties = staffPenalties;
                 $scope.require_initials = service.require_initials;
@@ -1481,9 +1481,9 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
                 $scope.setPenalty = function(id) {
                     args.penalty = id;
                 }
-                $scope.ok = function(count) { $modalInstance.close($scope.args) }
+                $scope.ok = function(count) { $uibModalInstance.close($scope.args) }
                 $scope.cancel = function($event) { 
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }],
@@ -1509,11 +1509,11 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
 
     // assumes, for now anyway,  penalty type is fleshed onto usr_penalty.
     service.edit_penalty = function(usr_penalty) {
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './circ/share/t_new_message_dialog',
             controller: 
-                   ['$scope','$modalInstance','staffPenalties',
-            function($scope , $modalInstance , staffPenalties) {
+                   ['$scope','$uibModalInstance','staffPenalties',
+            function($scope , $uibModalInstance , staffPenalties) {
                 $scope.focusNote = true;
                 $scope.penalties = staffPenalties;
                 $scope.require_initials = service.require_initials;
@@ -1522,9 +1522,9 @@ function($modal , $q , egCore , egAlertDialog , egConfirmDialog) {
                     note : usr_penalty.note()
                 }
                 $scope.setPenalty = function(id) { args.penalty = id; }
-                $scope.ok = function(count) { $modalInstance.close($scope.args) }
+                $scope.ok = function(count) { $uibModalInstance.close($scope.args) }
                 $scope.cancel = function($event) { 
-                    $modalInstance.dismiss();
+                    $uibModalInstance.dismiss();
                     $event.preventDefault();
                 }
             }],
diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/holds.js b/Open-ILS/web/js/ui/default/staff/circ/services/holds.js
index ea83238..461f6ef 100644
--- a/Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+++ b/Open-ILS/web/js/ui/default/staff/circ/services/holds.js
@@ -6,8 +6,8 @@ angular.module('egCoreMod')
 
 .factory('egHolds',
 
-       ['$modal','$q','egCore','egConfirmDialog','egAlertDialog',
-function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
+       ['$uibModal','$q','egCore','egConfirmDialog','egAlertDialog',
+function($uibModal , $q , egCore , egConfirmDialog , egAlertDialog) {
 
     var service = {};
 
@@ -58,11 +58,11 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
 
     service.cancel_holds = function(hold_ids) {
        
-        return $modal.open({
+        return $uibModal.open({
             templateUrl : './circ/share/t_cancel_hold_dialog',
             controller : 
-                ['$scope', '$modalInstance', 'cancel_reasons',
-                function($scope, $modalInstance, cancel_reasons) {
+                ['$scope', '$uibModalInstance', 'cancel_reasons',
+                function($scope, $uibModalInstance, cancel_reasons) {
                     $scope.args = {
                         cancel_reason : 5,
                         cancel_reasons : cancel_reasons,
@@ -70,7 +70,7 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
                     };
                     
                     $scope.cancel = function($event) {
-                        $modalInstance.dismiss();
+                        $uibModalInstance.dismiss();
                         $event.preventDefault();
                     }
 
@@ -79,7 +79,7 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
                         function cancel_one() {
                             var hold_id = hold_ids.pop();
                             if (!hold_id) {
-                                $modalInstance.close();
+                                $uibModalInstance.close();
                                 return;
                             }
                             egCore.net.request(
@@ -110,17 +110,17 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
 
     service.uncancel_holds = function(hold_ids) {
        
-        return $modal.open({
+        return $uibModal.open({
             templateUrl : './circ/share/t_uncancel_hold_dialog',
             controller : 
-                ['$scope', '$modalInstance',
-                function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance',
+                function($scope, $uibModalInstance) {
                     $scope.args = {
                         num_holds : hold_ids.length
                     };
                     
                     $scope.cancel = function($event) {
-                        $modalInstance.dismiss();
+                        $uibModalInstance.dismiss();
                         $event.preventDefault();
                     }
 
@@ -129,7 +129,7 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
                         function uncancel_one() {
                             var hold_id = hold_ids.pop();
                             if (!hold_id) {
-                                $modalInstance.close();
+                                $uibModalInstance.close();
                                 return;
                             }
                             egCore.net.request(
@@ -170,22 +170,22 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
 
     service.set_copy_quality = function(hold_ids) {
         if (!hold_ids.length) return $q.when();
-        return $modal.open({
+        return $uibModal.open({
             templateUrl : './circ/share/t_hold_copy_quality_dialog',
             controller : 
-                ['$scope', '$modalInstance',
-                function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance',
+                function($scope, $uibModalInstance) {
 
                     function update(val) {
                         var vals = hold_ids.map(function(hold_id) {
                             return {id : hold_id, mint_condition : val}})
                         service.update_holds(vals).finally(function() {
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                         });
                     }
                     $scope.good = function() { update(true) }
                     $scope.any = function() { update(false) }
-                    $scope.cancel = function() { $modalInstance.dismiss() }
+                    $scope.cancel = function() { $uibModalInstance.dismiss() }
                 }
             ]
         }).result;
@@ -193,11 +193,11 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
 
     service.edit_pickup_lib = function(hold_ids) {
         if (!hold_ids.length) return $q.when();
-        return $modal.open({
+        return $uibModal.open({
             templateUrl : './circ/share/t_hold_edit_pickup_lib',
             controller : 
-                ['$scope', '$modalInstance',
-                function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance',
+                function($scope, $uibModalInstance) {
                     $scope.cant_be_pickup = function (id) { return !egCore.org.CanHaveUsers(id); };
                     $scope.args = {};
                     $scope.ok = function() { 
@@ -208,10 +208,10 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
                             }
                         });
                         service.update_holds(vals).finally(function() {
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                         });
                     }
-                    $scope.cancel = function() { $modalInstance.dismiss() }
+                    $scope.cancel = function() { $uibModalInstance.dismiss() }
                 }
             ]
         }).result;
@@ -225,11 +225,11 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
 
     service.edit_notify_prefs = function(hold_ids) {
         if (!hold_ids.length) return $q.when();
-        return $modal.open({
+        return $uibModal.open({
             templateUrl : './circ/share/t_hold_notification_prefs',
             controller : 
-                ['$scope', '$modalInstance', 'sms_carriers',
-                function($scope, $modalInstance, sms_carriers) {
+                ['$scope', '$uibModalInstance', 'sms_carriers',
+                function($scope, $uibModalInstance, sms_carriers) {
                     $scope.args = {}
                     $scope.sms_carriers = sms_carriers;
                     $scope.num_holds = hold_ids.length;
@@ -251,10 +251,10 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
                         });
 
                         service.update_holds(vals).finally(function() {
-                            $modalInstance.close();
+                            $uibModalInstance.close();
                         });
                     }
-                    $scope.cancel = function() { $modalInstance.dismiss() }
+                    $scope.cancel = function() { $uibModalInstance.dismiss() }
                 }
             ],
             resolve : {
@@ -285,11 +285,11 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
             return service.update_holds(vals);
         }
 
-        return $modal.open({
+        return $uibModal.open({
             templateUrl : './circ/share/t_hold_dates',
             controller : 
-                ['$scope', '$modalInstance',
-                function($scope, $modalInstance) {
+                ['$scope', '$uibModalInstance',
+                function($scope, $uibModalInstance) {
                     var today = new Date();
                     $scope.args = {
                         thaw_date : today,
@@ -299,9 +299,9 @@ function($modal , $q , egCore , egConfirmDialog , egAlertDialog) {
                     }
                     $scope.num_holds = hold_ids.length;
                     $scope.ok = function() { 
-                        relay_to_update($scope).then($modalInstance.close);
+                        relay_to_update($scope).then($uibModalInstance.close);
                     }
-                    $scope.cancel = function() { $modalInstance.dismiss() }
+                    $scope.cancel = function() { $uibModalInstance.dismiss() }
                 }
             ],
         }).result;
@@ -589,8 +589,8 @@ function($window , $location , $timeout , egCore , egHolds , egCirc) {
             showPatron : '='
         },
         controller : [
-                    '$scope','$modal','egCore','egHolds','egCirc',
-            function($scope , $modal , egCore , egHolds , egCirc) {
+                    '$scope','$uibModal','egCore','egHolds','egCirc',
+            function($scope , $uibModal , egCore , egHolds , egCirc) {
 
                 function draw() {
                     if (!$scope.holdId) return;
@@ -648,17 +648,17 @@ function($window , $location , $timeout , egCore , egHolds , egCirc) {
                 }
 
                 $scope.new_note = function() {
-                    return $modal.open({
+                    return $uibModal.open({
                         templateUrl : './circ/share/t_hold_note_dialog',
                         controller : 
-                            ['$scope', '$modalInstance',
-                            function($scope, $modalInstance) {
+                            ['$scope', '$uibModalInstance',
+                            function($scope, $uibModalInstance) {
                                 $scope.args = {};
                                 $scope.ok = function() {
-                                    $modalInstance.close($scope.args)
+                                    $uibModalInstance.close($scope.args)
                                 },
                                 $scope.cancel = function($event) {
-                                    $modalInstance.dismiss();
+                                    $uibModalInstance.dismiss();
                                     $event.preventDefault();
                                 }
                             }
@@ -678,17 +678,17 @@ function($window , $location , $timeout , egCore , egHolds , egCirc) {
                 }
 
                 $scope.new_notification = function() {
-                    return $modal.open({
+                    return $uibModal.open({
                         templateUrl : './circ/share/t_hold_notification_dialog',
                         controller : 
-                            ['$scope', '$modalInstance',
-                            function($scope, $modalInstance) {
+                            ['$scope', '$uibModalInstance',
+                            function($scope, $uibModalInstance) {
                                 $scope.args = {};
                                 $scope.ok = function() {
-                                    $modalInstance.close($scope.args)
+                                    $uibModalInstance.close($scope.args)
                                 },
                                 $scope.cancel = function($event) {
-                                    $modalInstance.dismiss();
+                                    $uibModalInstance.dismiss();
                                     $event.preventDefault();
                                 }
                             }
diff --git a/Open-ILS/web/js/ui/default/staff/services/ui.js b/Open-ILS/web/js/ui/default/staff/services/ui.js
index 95a60d6..3808a67 100644
--- a/Open-ILS/web/js/ui/default/staff/services/ui.js
+++ b/Open-ILS/web/js/ui/default/staff/services/ui.js
@@ -85,19 +85,19 @@ function($timeout , $parse) {
  */
 .factory('egAlertDialog', 
 
-        ['$modal','$interpolate',
-function($modal , $interpolate) {
+        ['$uibModal','$interpolate',
+function($uibModal , $interpolate) {
     var service = {};
 
     service.open = function(message, msg_scope) {
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './share/t_alert_dialog',
-            controller: ['$scope', '$modalInstance',
-                function($scope, $modalInstance) {
+            controller: ['$scope', '$uibModalInstance',
+                function($scope, $uibModalInstance) {
                     $scope.message = $interpolate(message)(msg_scope);
                     $scope.ok = function() {
                         if (msg_scope && msg_scope.ok) msg_scope.ok();
-                        $modalInstance.close()
+                        $uibModalInstance.close()
                     }
                 }
             ]
@@ -114,26 +114,26 @@ function($modal , $interpolate) {
  */
 .factory('egConfirmDialog', 
     
-       ['$modal','$interpolate',
-function($modal, $interpolate) {
+       ['$uibModal','$interpolate',
+function($uibModal, $interpolate) {
     var service = {};
 
     service.open = function(title, message, msg_scope, ok_button_label, cancel_button_label) {
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './share/t_confirm_dialog',
-            controller: ['$scope', '$modalInstance',
-                function($scope, $modalInstance) {
+            controller: ['$scope', '$uibModalInstance',
+                function($scope, $uibModalInstance) {
                     $scope.title = $interpolate(title)(msg_scope);
                     $scope.message = $interpolate(message)(msg_scope);
                     $scope.ok_button_label = $interpolate(ok_button_label || '')(msg_scope);
                     $scope.cancel_button_label = $interpolate(cancel_button_label || '')(msg_scope);
                     $scope.ok = function() {
                         if (msg_scope.ok) msg_scope.ok();
-                        $modalInstance.close()
+                        $uibModalInstance.close()
                     }
                     $scope.cancel = function() {
                         if (msg_scope.cancel) msg_scope.cancel();
-                        $modalInstance.dismiss();
+                        $uibModalInstance.dismiss();
                     }
                 }
             ]
@@ -156,25 +156,25 @@ function($modal, $interpolate) {
  */
 .factory('egPromptDialog', 
     
-       ['$modal','$interpolate',
-function($modal, $interpolate) {
+       ['$uibModal','$interpolate',
+function($uibModal, $interpolate) {
     var service = {};
 
     service.open = function(message, promptValue, msg_scope) {
-        return $modal.open({
+        return $uibModal.open({
             templateUrl: './share/t_prompt_dialog',
-            controller: ['$scope', '$modalInstance',
-                function($scope, $modalInstance) {
+            controller: ['$scope', '$uibModalInstance',
+                function($scope, $uibModalInstance) {
                     $scope.message = $interpolate(message)(msg_scope);
                     $scope.args = {value : promptValue || ''};
                     $scope.focus = true;
                     $scope.ok = function() {
                         if (msg_scope.ok) msg_scope.ok($scope.args.value);
-                        $modalInstance.close()
+                        $uibModalInstance.close()
                     }
                     $scope.cancel = function() {
                         if (msg_scope.cancel) msg_scope.cancel();
-                        $modalInstance.dismiss();
+                        $uibModalInstance.dismiss();
                     }
                 }
             ]

commit 43e7bc4fb44f46fc6374fb626e01004fcdf2d950
Author: Bill Erickson <berickxx at gmail.com>
Date:   Tue Mar 8 16:01:15 2016 -0500

    LP#1554714 Browser client dependency updates note
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/web/js/ui/default/staff/README.install b/Open-ILS/web/js/ui/default/staff/README.install
index 62668c1..ba0a912 100644
--- a/Open-ILS/web/js/ui/default/staff/README.install
+++ b/Open-ILS/web/js/ui/default/staff/README.install
@@ -83,6 +83,26 @@ from the Node package network.
 % grunt all
 ------------------------------------------------------------------------------
 
+== Updating Dependencies
+
+ * Remove the contents of the "dependencies" {} in bowser.json
+ * rm -r bower_components
+ * Re-install all dependencies:
+
+[source,sh]
+------------------------------------------------------------------------------
+bower install --save angular-latest
+bower install --save jquery
+bower install --save bootstrap
+bower install --save angular-route
+bower install --save angular-mocks
+bower install --save angular-bootstrap
+bower install --save angular-hotkeys
+bower install --save angular-file-saver
+bower install --save angular-location-update
+# ... others as needed
+------------------------------------------------------------------------------
+
 == TODO ==
 
  * Minification of app-specific JS files

commit 2b67c0ddf140b1667a3f0eff73af839740bd8302
Author: Bill Erickson <berickxx at gmail.com>
Date:   Tue Mar 8 15:58:33 2016 -0500

    LP#1554714 Angular 1.5 + deps bower.json updates
    
    Signed-off-by: Bill Erickson <berickxx at gmail.com>
    Signed-off-by: Galen Charlton <gmc at esilibrary.com>

diff --git a/Open-ILS/web/js/ui/default/staff/bower.json b/Open-ILS/web/js/ui/default/staff/bower.json
index 052978c..46444af 100644
--- a/Open-ILS/web/js/ui/default/staff/bower.json
+++ b/Open-ILS/web/js/ui/default/staff/bower.json
@@ -17,18 +17,16 @@
     "test",
     "tests"
   ],
-  "devDependencies": {
-    "bootstrap": "~3.1.1",
-    "jquery": "~2.1.3",
-    "angular": "~1.2.16",
-    "angular-route": "~1.2.16",
-    "angular-mocks": "~1.2.16",
-    "angular-bootstrap": "~0.11.0"
-  },
   "dependencies": {
-    "angular-hotkeys": "chieffancypants/angular-hotkeys#~1.3.0",
-    "angular-location-update": "./extern/angular-location-update/",
-    "angular-file-saver": "~1.0.2",
+    "AngularJS": "angular-latest#~1.5.0",
+    "jquery": "~2.2.1",
+    "bootstrap": "~3.3.6",
+    "angular-route": "~1.5.0",
+    "angular-mocks": "~1.5.0",
+    "angular-bootstrap": "~1.2.4",
+    "angular-hotkeys": "~0.2.2",
+    "angular-file-saver": "~1.1.0",
+    "angular-location-update": "~0.0.2",
     "ngtoast": "~2.0.0",
     "angular-tree-control": "~0.2.23",
     "angular-animate": "~1.5.3"

-----------------------------------------------------------------------

Summary of changes:
 .../staff/admin/local/circ/age_to_lost.tt2         |    6 +-
 .../staff/admin/workstation/t_print_config.tt2     |    6 +-
 Open-ILS/src/templates/staff/base_js.tt2           |    1 +
 .../staff/cat/bucket/copy/t_bucket_selector.tt2    |    6 +-
 .../staff/cat/bucket/record/t_bucket_selector.tt2  |    6 +-
 .../src/templates/staff/cat/catalog/t_catalog.tt2  |    6 +-
 Open-ILS/src/templates/staff/cat/item/index.tt2    |    6 +-
 .../src/templates/staff/cat/share/t_marcedit.tt2   |    2 +-
 .../staff/cat/share/t_physchar_wizard.tt2          |   12 +-
 .../src/templates/staff/circ/checkin/t_checkin.tt2 |    9 +-
 .../templates/staff/circ/in_house_use/index.tt2    |    6 +-
 Open-ILS/src/templates/staff/circ/patron/index.tt2 |    6 +-
 .../templates/staff/circ/patron/t_bill_history.tt2 |   33 ++++--
 .../src/templates/staff/circ/patron/t_checkout.tt2 |    9 +-
 .../src/templates/staff/circ/patron/t_edit.tt2     |   39 +++---
 .../staff/circ/patron/t_edit_due_date_dialog.tt2   |    6 +-
 .../src/templates/staff/circ/patron/t_messages.tt2 |   19 ++-
 .../staff/circ/patron/t_patron_groups_dialog.tt2   |    6 +-
 .../staff/circ/patron/t_renew_with_date_dialog.tt2 |    3 +-
 .../src/templates/staff/circ/patron/t_search.tt2   |    6 +-
 .../src/templates/staff/circ/renew/t_renew.tt2     |    2 +-
 .../staff/circ/share/t_backdate_dialog.tt2         |    3 +-
 .../templates/staff/circ/share/t_hold_dates.tt2    |   18 ++-
 .../circ/share/t_mark_claims_returned_dialog.tt2   |    5 +-
 Open-ILS/src/templates/staff/navbar.tt2            |   50 ++++-----
 Open-ILS/src/templates/staff/share/t_autogrid.tt2  |   30 +++---
 Open-ILS/src/templates/staff/share/t_datetime.tt2  |   40 +++++++
 Open-ILS/web/js/ui/default/staff/README.install    |   20 +++
 Open-ILS/web/js/ui/default/staff/bower.json        |   23 ++--
 .../web/js/ui/default/staff/cat/bucket/copy/app.js |   50 ++++----
 .../js/ui/default/staff/cat/bucket/record/app.js   |   72 ++++++------
 .../web/js/ui/default/staff/cat/catalog/app.js     |   74 ++++++------
 Open-ILS/web/js/ui/default/staff/cat/item/app.js   |   44 ++++----
 .../js/ui/default/staff/cat/services/holdings.js   |   12 +-
 .../js/ui/default/staff/cat/services/marcedit.js   |   38 +++---
 .../web/js/ui/default/staff/cat/volcopy/app.js     |   14 +-
 Open-ILS/web/js/ui/default/staff/cat/z3950/app.js  |   44 ++++----
 .../web/js/ui/default/staff/circ/patron/app.js     |   32 +++---
 .../web/js/ui/default/staff/circ/patron/bills.js   |    6 +-
 .../js/ui/default/staff/circ/patron/checkout.js    |    4 +-
 .../js/ui/default/staff/circ/patron/items_out.js   |   24 ++--
 .../web/js/ui/default/staff/circ/patron/regctl.js  |   39 +++----
 .../js/ui/default/staff/circ/patron/register.js    |    3 +-
 .../js/ui/default/staff/circ/services/billing.js   |   14 +-
 .../web/js/ui/default/staff/circ/services/circ.js  |  124 ++++++++++----------
 .../web/js/ui/default/staff/circ/services/holds.js |   88 +++++++-------
 Open-ILS/web/js/ui/default/staff/package.json      |    2 +-
 Open-ILS/web/js/ui/default/staff/services/ui.js    |  102 +++++++---------
 48 files changed, 611 insertions(+), 559 deletions(-)
 create mode 100644 Open-ILS/src/templates/staff/share/t_datetime.tt2


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list