patron reg
authorBill Erickson <berickxx@gmail.com>
Tue, 12 May 2015 21:57:00 +0000 (17:57 -0400)
committerBill Erickson <berickxx@gmail.com>
Tue, 12 May 2015 21:57:00 +0000 (17:57 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index 5c79b58..0de1c8e 100644 (file)
 [% formfield('au', 'alert_message') %]
 
 <!-- user settings -->
+<div class="row pad-all-min form-group">
+  <div class="col-md-3 reg-field-label">
+    <label>{{user_setting_types['opac.default_phone'].label()}}</label>
+  </div>
+  <div class="col-md-3 reg-field-input">
+    <input type='text' ng-model="user_settings['opac.default_phone']"/>
+  </div>
+</div>
+
+<div class="row pad-all-min form-group">
+  <div class="col-md-3 reg-field-label">
+    <label>{{user_setting_types['opac.default_pickup_location'].label()}}</label>
+  </div>
+  <div class="col-md-3 reg-field-input">
+    <eg-org-selector selected="" onchange=""></eg-org-selector>
+  </div>
+</div>
+
+<div class="row pad-all-min form-group">
+  <div class="col-md-3 reg-field-label">
+    <label>{{user_setting_types['circ.holds_behind_desk'].label()}}</label>
+  </div>
+  <div class="col-md-3 reg-field-input">
+    <div class='checkbox'>
+      <input type='checkbox' ng-model="user_settings['circ.holds_behind_desk']"/>
+    </div>
+  </div>
+</div>
+
+<div class="row pad-all-min form-group">
+  <div class="col-md-3 reg-field-label">
+    <label>[% l('Receive Holds Notices by Phone') %]</label>
+  </div>
+  <div class="col-md-3 reg-field-input">
+    <div class='checkbox'>
+      <input type='checkbox' ng-model="hold_notify_phone"/>
+    </div>
+  </div>
+</div>
+
+<div class="row pad-all-min form-group">
+  <div class="col-md-3 reg-field-label">
+    <label>[% l('Receive Holds Notices by Email') %]</label>
+  </div>
+  <div class="col-md-3 reg-field-input">
+    <div class='checkbox'>
+      <input type='checkbox' ng-model="hold_notify_email"/>
+    </div>
+  </div>
+</div>
+
+
+  <!--
+  <div class="btn-group" dropdown>
+    <button type="button" class="btn btn-default dropdown-toggle">
+      <span style="padding-right: 5px;">
+          {{patron.net_access_level.name() || "[% l('Net Access Level') %]"}}
+      </span>
+      <span class="caret"></span>
+    </button>
+    <ul class="dropdown-menu">
+      <li ng-repeat="level in net_access_levels">
+        <a href 
+          ng-click="patron.net_access_level = level">{{level.name()}}</a>
+      </li>
+    </ul>
+  </div>
+  -->
+
+
 <!-- addresses -->
 <!-- pending address -->
 <!-- stat cats -->
index 1133cc4..9f7a37e 100644 (file)
@@ -15,6 +15,7 @@ angular.module('egCoreMod')
             service.get_field_doc(),
             service.get_perm_groups(),
             service.get_ident_types(),
+            service.get_user_settings(),
             service.get_net_access_levels()
         ]);
     };
@@ -57,10 +58,74 @@ angular.module('egCoreMod')
         });
     };
 
+    service.get_user_settings = function() {
+        var org_ids = egCore.org.ancestors(egCore.auth.user().ws_ou(), true);
+        service.modified_user_settings = {};
+        service.user_setting_types = {};
+
+        return egCore.pcrud.search('cust', {
+            '-or' : [
+                {name : [
+                    'circ.holds_behind_desk', 
+                    'circ.collections.exempt', 
+                    'opac.hold_notify', 
+                    'opac.default_phone', 
+                    'opac.default_pickup_location', 
+                    'opac.default_sms_carrier', 
+                    'opac.default_sms_notify'
+                ]}, 
+                {name : {
+                    'in': {
+                        select : {atevdef : ['opt_in_setting']}, 
+                        from : 'atevdef',
+                        // we only care about opt-in settings for 
+                        // event_defs our users encounter
+                        where : {'+atevdef' : {owner : org_ids}}
+                    }
+                }}
+            ]
+        }, {}, {atomic : true}).then(function(setting_types) {
+
+            angular.forEach(setting_types, function(stype) {
+                service.user_setting_types[stype.name()] = stype;
+            });
+
+            if(service.patron_id) {
+
+                var setting_names = 
+                    setting_types.map(function(obj) { return obj.name() });
+
+                return egCore.net.request(
+                    'open-ils.actor', 
+                    'open-ils.actor.patron.settings.retrieve.authoritative',
+                    egCore.auth.token(),
+                    service.patron_id,
+                    setting_names
+                ).then(function(settings) {
+                    service.user_settings = settings;
+                });
+            }
+
+            // apply default user setting values
+            service.user_settings = {};
+            angular.forEach(setting_types, function(stype, index) {
+                if (stype.reg_default() != undefined) {
+                    service.modified_user_settings[setting.name()] = 
+                        service.user_settings[setting.name()] = 
+                        setting.reg_default();
+                }
+            });
+        });
+    }
+
     service.init_patron = function(current) {
-        return current ?
-            service.init_existing_patron(current) :
-            service.init_new_patron();
+
+        if (!current)
+            return service.init_new_patron();
+
+        service.patron = current;
+        service.patron_id = current.id();
+        return service.init_existing_patron(current)
     }
 
     /*
@@ -119,6 +184,9 @@ function PatronRegCtrl($scope, $routeParams,
         $scope.profiles = patronRegSvc.profiles;
         $scope.ident_types = patronRegSvc.ident_types;
         $scope.net_access_levels = patronRegSvc.net_access_levels;
+        $scope.user_settings = patronRegSvc.user_settings;
+        $scope.user_setting_types = patronRegSvc.user_setting_types;
+        $scope.modified_user_settings = patronRegSvc.modified_user_settings;
     });
 
     // returns the tree depth of the selected profile group tree node.