standing penalty creation
authorBill Erickson <berick@esilibrary.com>
Fri, 6 Jun 2014 16:32:06 +0000 (12:32 -0400)
committerBill Erickson <berick@esilibrary.com>
Fri, 6 Jun 2014 16:32:06 +0000 (12:32 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/templates/staff/circ/patron/t_messages.tt2
Open-ILS/src/templates/staff/circ/patron/t_new_message_dialog.tt2 [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/circ/patron/app.js

index 71347e5..4fa23b4 100644 (file)
@@ -7,7 +7,7 @@
   sort="activeSort"
   revision="activeRevision">
 
-  <eg-grid-menu-item handler="applyPenalty"
+  <eg-grid-menu-item handler="createPenalty"
     label="[% l('Apply Penalty / Message') %]"></eg-grid-menu-item>
 
   <eg-grid-action label="[% l('Remove Penalty / Message') %]" 
diff --git a/Open-ILS/src/templates/staff/circ/patron/t_new_message_dialog.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_new_message_dialog.tt2
new file mode 100644 (file)
index 0000000..5f6ebab
--- /dev/null
@@ -0,0 +1,46 @@
+<form ng-submit="ok(args)" role="form">
+    <div class="modal-header">
+      <button type="button" class="close" ng-click="cancel()" 
+        aria-hidden="true">&times;</button>
+      <h4 class="modal-title">[% l('Apply Standing Penalty / Message') %]</h4>
+    </div>
+    <div class="modal-body">
+      <div class="row">
+        <div class="col-md-8">
+          <ul class="nav nav-pills">
+            <!-- 21 == SILENT_NOTE -->
+            <li ng-class="{active : args.penalty == 21}">
+              <a href ng-click="args.penalty=21">[% l('Note') %]</a>
+            </li>
+            <!-- 20 == ALERT_NOTE -->
+            <li ng-class="{active : args.penalty == 20}">
+              <a href ng-click="args.penalty=20">[% l('Alert') %]</a>
+            </li>
+            <!-- 25 == STAFF_CHR -->
+            <li ng-class="{active : args.penalty == 25}">
+              <a href ng-click="args.penalty=25">[% l('Block') %]</a>
+            </li>
+          </ul>
+        </div>
+        <div class="col-md-4 pull-right">
+          <select class="form-control" ng-model="args.penalty">
+            <option ng-selected="args.penalty < 100"></option>
+            <option ng-repeat="penalty in penalties" 
+              value="{{penalty.id()}}">{{penalty.label()}}</option>
+          </select>
+        </div>
+      </div>
+      <div class="form-group row pad-vert">
+        <div class="col-md-12">
+          <textarea class="form-control" 
+            ng-model="args.note" placeholder="[% l('Note...') %]">
+          </textarea>
+        </div>
+      </div>
+    </div>
+    <div class="modal-footer">
+      <input type="submit" class="btn btn-primary" value="[% l('OK') %]"/>
+      <button class="btn btn-warning" ng-click="cancel()">[% l('Cancel') %]</button>
+    </div>
+  </div> <!-- modal-content -->
+</form>
index 4d49211..c10b3d4 100644 (file)
@@ -730,8 +730,8 @@ function($scope,  $q,  $routeParams,  $timeout,  $window,  $location,  egCore,
  * Manages messages
  */
 .controller('PatronMessagesCtrl',
-       ['$scope','$routeParams','egCore', 
-function($scope,  $routeParams,  egCore) {
+       ['$scope','$routeParams','egCore','$modal',
+function($scope,  $routeParams,  egCore , $modal) {
     $scope.initTab('messages', $routeParams.id);
     var usr_id = $routeParams.id;
 
@@ -806,6 +806,43 @@ function($scope,  $routeParams,  egCore) {
         });
     }
 
+    $scope.createPenalty = function() {
+        $modal.open({
+            templateUrl: './circ/patron/t_new_message_dialog',
+            controller: 
+                   ['$scope','$modalInstance','staffPenalties',
+            function($scope , $modalInstance , staffPenalties) {
+                $scope.focusNote = true;
+                $scope.penalties = staffPenalties;
+                $scope.args = {penalty : 21}; // default to Note
+                $scope.setPenalty = function(id) {
+                    args.penalty = id;
+                }
+                $scope.ok = function(count) { $modalInstance.close($scope.args) }
+                $scope.cancel = function () { $modalInstance.dismiss() }
+            }],
+            resolve : {
+                staffPenalties : function() {
+                    return egCore.pcrud.search(
+                        // id <= 100 are reserved for system use
+                        'csp', {id : {'>': 100}}, {}, {atomic : true});
+                }
+            }
+        }).result.then(
+            function(args) {
+                var pen = new egCore.idl.ausp();
+                pen.usr(usr_id);
+                pen.org_unit(egCore.auth.user().ws_ou());
+                pen.note(args.note);
+                pen.standing_penalty(args.penalty);
+                pen.staff(egCore.auth.user().id());
+                pen.set_date('now');
+                egCore.pcrud.create(pen).then(
+                    function() { $scope.activeRevision++ });
+            }
+        );
+    }
+
 
 }])