patron reg cont.
authorBill Erickson <berickxx@gmail.com>
Tue, 19 May 2015 13:35:04 +0000 (09:35 -0400)
committerBill Erickson <berickxx@gmail.com>
Tue, 19 May 2015 13:35:04 +0000 (09:35 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/src/templates/staff/css/circ.css.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index 5262fc3..a7eace3 100644 (file)
@@ -2,7 +2,7 @@
 
 <div class="strong-text-2">[% l('Patron Edit') %]</div>
 
-<!-- IDL field documentation -->
+<!-- IDL field documentation window -->
 <fieldset id="reg-field-doc" ng-show="selected_field_doc">
     <legend>
     {{idl_fields[selected_field_doc.fm_class()][selected_field_doc.field()].label}}
 
 [% MACRO formfield(cls, field, path, input_type) BLOCK;
 
-    # input field generator for text/number/checkbox fields
+    # input field generator for common text/number/checkbox fields
 
     IF NOT input_type; input_type = 'text'; END %] 
 
 <div class="row pad-all-min form-group">
-    <div class="col-md-3 reg-field-label">
 
-        <!-- field label -->
+    <div class="col-md-3 reg-field-label"> <!-- field label -->
+
         <label>{{idl_fields.[% cls %].[% field %].label}}</label>
 
         <!-- field documentation img/link -->
@@ -27,8 +27,8 @@
             ng-click="selected_field_doc=field_doc.[% cls %].[% field %]"
             src='[% DOC_IMG %]'></img>
     </div>
-    <div class="col-md-3 reg-field-input">
-        <!-- field form input -->
+
+    <div class="col-md-3 reg-field-input"> <!-- field form input -->
 
         [%
         model = path ? 'patron.' _ path _ '.' _ field : 'patron.' _ field;
 [% formfield('au', 'family_name') %]
 [% formfield('au', 'suffix') %]
 [% formfield('au', 'alias') %]
-[% formfield('au', 'dob') %]
+
+<div class="row pad-all-min form-group">
+    <div class="col-md-3 reg-field-label">
+        <label>{{idl_fields.au.dob.label}}</label>
+        <img ng-show="field_doc.au.dob" 
+            ng-click="selected_field_doc=field_doc.au.dob"
+            src='[% DOC_IMG %]'></img>
+    </div>
+    <div class="col-md-3 reg-field-input">
+        <input eg-date-input 
+            class="form-control" ng-model="patron.dob"/>
+    </div>
+</div>
+
 [% formfield('au', 'juvenile', '', 'checkbox') %]
 
 <!-- ident_type -->
 [% formfield('au', 'claims_never_checked_out_count', '', 'number') %]
 [% formfield('au', 'alert_message') %]
 
-<!-- user settings -->
+<div class="alert alert-success row" role="alert">
+    <div class="col-md-6">[% l('User Settings') %]</div>
+</div>
+
 <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 class="row pad-all-min form-group">
   <div class="col-md-3 reg-field-label">
-    <label>[% l('Receive Holds Notices by Phone') %]</label>
+    <label>[% l('Holds Notices') %]</label>
   </div>
-  <div class="col-md-3 reg-field-input">
-    <div class='checkbox'>
+  <div class="col-md-3 reg-field-input flex-row">
+    <div class='flex-cell'>
       <input type='checkbox' ng-model="hold_notify_phone"/>
+      [% l('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'>
+    <div class='flex-cell'>
       <input type='checkbox' ng-model="hold_notify_email"/>
+      [% l('Email') %]
     </div>
-  </div>
-</div>
-
-<div class="row pad-all-min form-group" ng-if="org_settings['sms.enable']">
-  <div class="col-md-3 reg-field-label">
-    <label>[% l('Receive Holds Notices by SMS') %]</label>
-  </div>
-  <div class="col-md-3 reg-field-input">
-    <div class='checkbox'>
+    <div class='flex-cell'>
       <input type='checkbox' ng-model="hold_notify_sms"/>
+      [% l('SMS') %]
     </div>
   </div>
 </div>
   </div>
 </div>
 
+<div class="alert alert-success row" role="alert">
+    <div class="col-md-3">[% l('Address') %]</div>
+    <div class="col-md-3">
+        <span class='pad-all-min'>
+          [% l('Mailing') %] <input type='checkbox'/>
+        </span>
+        <span class='pad-all-min'>
+          [% l('Billing') %] <input type='checkbox'/>
+        </span>
+        <span class='pad-all-min'>
+          <button type="button" class="btn btn-danger">[% l('X') %]</button>
+        </span>
+    </div>
+</div>
 
 <!-- addresses -->
+
+[% formfield('aua', 'address_type', 'mailing_address') %]
+[% formfield('aua', 'post_code', 'mailing_address') %]
+[% formfield('aua', 'street1', 'mailing_address') %]
+[% formfield('aua', 'street2', 'mailing_address') %]
+[% formfield('aua', 'city', 'mailing_address') %]
+[% formfield('aua', 'county', 'mailing_address') %]
+[% formfield('aua', 'state', 'mailing_address') %]
+[% formfield('aua', 'country', 'mailing_address') %]
+[% formfield('aua', 'valid', 'mailing_address', 'checkbox') %]
+[% formfield('aua', 'within_city_limits', 'mailing_address', 'checkbox') %]
+
 <!-- pending address -->
-<!-- stat cats -->
 
-<div class="row pad-all-min form-group" ng-repeat="stat_cat in stat_cats">
+<div class="alert alert-success row" role="alert" ng-if="stat_cats.length > 0">
+    <div class="col-md-6">[% l('Statistical Categories') %]</div>
+</div>
+
+<div class="row pad-all-min form-group" ng-repeat="cat in stat_cats">
   <div class="col-md-3 reg-field-label">
-    <label>{{stat_cat.name()}}</label>
+    <label>{{cat.name()}}</label>
   </div>
   <div class="col-md-3 reg-field-input">
-
-    <div ng-if="!stat_cat.entries().length">
-        <input type='text'/>
+    <div ng-if="cat.entries().length == 0">
+      <input type="text" class="form-control"/>
     </div>
-
-    <div class="btn-group" dropdown ng-if="stat_cat.entries().length">
-      <button type="button" class="btn btn-default dropdown-toggle">
-        <span style="padding-right: 5px;"></span>
-        <span class="caret"></span>
-      </button>
-      <ul class="dropdown-menu">
-        <li ng-repeat="entry in stat_cat.entries()">
-          <a href ng-click="">{{entry.value()}}</a>
-        </li>
-      </ul>
+    <div ng-if="cat.entries().length != 0">
+      <div class="btn-group" dropdown>
+        <button type="button" class="btn btn-default dropdown-toggle">
+          <span style="padding-right: 5px;"></span>
+          <span class="caret"></span>
+        </button>
+        <ul class="dropdown-menu">
+          <li ng-repeat="entry in cat.entries()">
+            <a href ng-click=""> {{entry.value()}} </a>
+          </li>
+        </ul>
+      </div>
     </div>
   </div>
 </div>
 
 <!-- surveys -->
+
+<div class="alert alert-success row" role="alert" ng-if="surveys.length > 0">
+    <div class="col-md-6">[% l('Surveys') %]</div>
+</div>
+
+<div class="row pad-all-min form-group" ng-repeat="survey in surveys">
+  <div class="col-md-3 reg-field-label">
+    <label>{{survey.name()}}</label>
+  </div>
+  <div class="col-md-3 reg-field-input">
+      <div class="btn-group" dropdown>
+        <button type="button" class="btn btn-default dropdown-toggle">
+          <span style="padding-right: 5px;"></span>
+          <span class="caret"></span>
+        </button>
+        <ul class="dropdown-menu">
+          <li ng-repeat="question in survey.questions()">
+            <a href ng-click=""> {{question.question()}} </a>
+          </li>
+        </ul>
+      </div>
+  </div>
+</div>
+
+
+
index 6ffc407..30134bc 100644 (file)
@@ -59,14 +59,18 @@ but the ones I'm finding aren't quite cutting it..*/
 /* make all input widgets the same width, i.e. fill their column */
 
 .reg-field-input input:not([type="checkbox"]) { width: 100%; }
-.reg-field-input > .eg-org-selector,
-.reg-field-input > .eg-org-selector button,
-.reg-field-input > .btn-group,
-.reg-field-input > .btn-group > button {
+.reg-field-input .eg-org-selector,
+.reg-field-input .btn-group {
   width: 100%; 
   text-align: left;
 }
 
+.reg-field-input .eg-org-selector button,
+.reg-field-input .btn-group > button {
+  width: 100%; 
+  text-align: right;
+}
+
 
 /* floating div along top-right with field documentation */
 /* TODO: make this part of the floatin save/clone div */
index 0816062..1d5fc4e 100644 (file)
@@ -22,10 +22,23 @@ angular.module('egCoreMod')
             service.get_user_settings(),
             service.get_org_settings(),
             service.get_stat_cats(),
+            service.get_surveys(),
             service.get_net_access_levels()
         ]);
     };
 
+    service.get_surveys = function() {
+        var org_ids = egCore.org.ancestors(egCore.auth.user().ws_ou(), true);
+
+        return egCore.pcrud.search('asv', 
+            {owner : org_ids}, 
+            {flesh : 1, flesh_fields : {asv : ['questions']}}, 
+            {atomic : true}
+        ).then(function(surveys) {
+            service.surveys = surveys;
+        });
+    }
+
     service.get_stat_cats = function() {
         return egCore.net.request(
             'open-ils.circ',
@@ -255,6 +268,7 @@ angular.module('egCoreMod')
 
         patron.home_ou = egCore.org.get(patron.home_ou.id);
         patron.expire_date = new Date(Date.parse(patron.expire_date));
+        patron.dob = new Date(Date.parse(patron.dob));
         patron.profile = current.profile(); // pre-hash version
         patron.net_access_level = current.net_access_level();
         patron.ident_type = current.ident_type();
@@ -264,6 +278,11 @@ angular.module('egCoreMod')
             function(field) { patron[field] = patron[field] == 't'; }
         );
 
+        angular.forEach(patron.addresses, function(addr) {
+            addr.valid = addr.valid == 't';
+            addr.within_city_limits = addr.within_city_limits == 't';
+        });
+
         return patron;
     }
 
@@ -306,6 +325,7 @@ function PatronRegCtrl($scope, $routeParams,
         $scope.org_settings = prs.org_settings;
         $scope.sms_carriers = prs.sms_carriers;
         $scope.stat_cats = prs.stat_cats;
+        $scope.surveys = prs.surveys;
     });
 
     // returns the tree depth of the selected profile group tree node.