var allCardsTemplate;
var uEditCloneCopyAddr; // if true, copy addrs on clone instead of link
var homeOuTypes = {};
+var comboStores = {};
var dupeUsrname = false;
var dupeBarcode = false;
loadSurveys();
checkClaimsReturnCountPerm();
checkClaimsNoCheckoutCountPerm();
+ checkBarPatronPerm();
+ checkUnBarPatronPerm();
dojo.connect(replaceBarcode, 'onClick', replaceCardHandler);
dojo.connect(allCards, 'onClick', drawAllCards);
- if(patron.cards().length > 1)
+ dojo.connect(clearAlert, 'onClick', clearMessage);
+ dojo.connect(asAdult, 'onClick', RegAsAdult);
+ dojo.connect(plus, 'onClick', addOneMonth);
+ dojo.connect(plus6, 'onClick', addSixMonths);
+ dojo.connect(plus1, 'onClick', addOneYear);
+ dojo.connect(plus3, 'onClick', addThreeYears);
+ dojo.connect(genISM, 'onClick', replaceISMCard);
+
+// if(patron.cards().length > 1)
dojo.removeClass(dojo.byId('uedit-all-barcodes'), 'hidden');
var input = findWidget('ac', 'barcode');
}
var row = allCardsTemplate.cloneNode(true);
getByName(row, 'barcode').innerHTML = card.barcode();
+ getByName(row, 'creator').innerHTML = card.creator();
+ getByName(row, 'create_date').innerHTML = card.create_date();
getByName(row, 'active').appendChild(
openils.Util.isTrue(card.active()) ?
dojo.byId('true').cloneNode(true) :
dojo.byId('false').cloneNode(true)
);
+ if (openils.Util.isTrue(card.active())){
+ var act = new dijit.form.ToggleButton({label:"Disable", onClick: function() {disableCard(card.id());} },"disableButton");
+ getByName(row, 'state').appendChild(act.domNode);
+ }else{
+ var act = new dijit.form.Button({label:"Enable", onClick: function() {enableCard(card.id());} },"enableButton");
+ getByName(row, 'state').appendChild(act.domNode);
+ }
+ if (!first) {
+ var pri = new dijit.form.Button({label:"Make Primary", onClick: function() {makePrimaryCard(card.id());} },"primaryButton");
+ getByName(row, 'primary').appendChild(pri.domNode);
+ }
+
tbody.appendChild(row);
first = false;
allCardsDialog.show();
}
+function disableCard(id) {
+ var old = patron.cards().filter(function(c){return (c.id() == id)})[0];
+ old.active('f');
+ old.ischanged(1);
+ dojo.removeClass(dojo.byId('changesPending'),"hidden");
+}
+
+function enableCard(id) {
+ var old = patron.cards().filter(function(c){return (c.id() == id)})[0];
+ old.active('t');
+ old.ischanged(1);
+ dojo.removeClass(dojo.byId('changesPending'),"hidden");
+}
+
+function makePrimaryCard(id) {
+ patron.card().id(id);
+ patron.ischanged(1);
+ dojo.removeClass(dojo.byId('changesPending'),"hidden");
+}
+
+
+function clearMessage(){
+ var input = findWidget('au', 'alert_message');
+ input.widget.attr('disabled', false).attr('readOnly', false).attr('value', null).focus();
+}
+
+function RegAsAdult(){
+ var input = findWidget('au', 'ident_value2');
+ input.widget.attr('value', 'REGISTERED AS ADULT').focus();
+}
+
+function addOneMonth(){
+ var expire = findWidget('au', 'expire_date');
+ var newDate = new Date();
+ newDate.setDate(newDate.getDate() + 30);
+ expire.widget.attr('value', newDate).focus();
+}
+function addSixMonths(){
+ var expire = findWidget('au', 'expire_date');
+ var newDate = new Date();
+ newDate.setDate(newDate.getDate() + 180);
+ expire.widget.attr('value', newDate).focus();
+}
+function addOneYear(){
+ var expire = findWidget('au', 'expire_date');
+ var newDate = new Date();
+ newDate.setDate(newDate.getDate() + 365);
+ expire.widget.attr('value', newDate).focus();
+}
+function addThreeYears(){
+ var expire = findWidget('au', 'expire_date');
+ var newDate = new Date();
+ newDate.setDate(newDate.getDate() + 1095);
+ expire.widget.attr('value', newDate).focus();
+}
+
+
+function updateSuffix(){
+ var suffix = findWidget('au', 'suffix');
+ suffix.widget.attr('value',dojo.byId("suffixSelector").value);
+}
+
+function updateAddType(){
+ var addType = findWidget('aua', 'address_type');
+ addType.widget.attr('value',dojo.byId("addTypeSelector").value);
+}
+
+function replaceISMCard(){
+ var input = findWidget('ac', 'barcode');
+ var rnd = Math.floor(Math.random()*999999);
+ rnd = '555'+rnd;
+ input.widget.attr('disabled', false).attr('readOnly', true).attr('value', rnd).focus();
+ genISM.attr('disabled', true);
+
+ var profile = findWidget('au', 'profile');
+ profile.widget.attr('value',71);
+
+if (!patron.isnew()){
+ var old = patron.cards().filter(function(c){return (c.id() == patron.card().id())})[0];
+ old.active('f');
+ old.ischanged(1);
+
+ var newc = new fieldmapper.ac();
+ newc.id(uEditCardVirtId--);
+ newc.isnew(1);
+ newc.active('t');
+ patron.card(newc);
+ var t = patron.cards();
+ if (!t) { t = []; }
+ t.push(newc);
+ patron.cards(t);
+}
+}
+
/**
* Mark the current card inactive, create a new primary card
*/
// pull old card off the cards list so we don't have a dupe sitting in there
if (patron.cards().length > 0) {
var old = patron.cards().filter(function(c){return (c.id() == patron.card().id())})[0];
- old.active('f');
+ var add = confirm('Deactivate the original card?');
+ if (add) old.active('f');
old.ischanged(1);
}
f.widget.attr('value', patron.passwd());
f = findWidget('au', 'passwd2');
f.widget.attr('value', patron.passwd());
+//MIEG: if you use the phone number, reset to the phone number
+ if(uEditUsePhonePw) {
+ // if configured, use the last four digits of the day phone number as the password
+ var newVal = findWidget('au', 'day_phone').widget.value;
+ if(newVal && newVal.length >= 4) {
+ var pw1 = findWidget('au', 'passwd').widget;
+ var pw2 = findWidget('au', 'passwd2').widget;
+ pw1.attr('value', newVal.substring(newVal.length - 4));
+ pw2.attr('value', newVal.substring(newVal.length - 4));
+ }
+ }
}
/**
else if(isphone && orgSettings['ui.patron.edit.phone.example']) {
ftd.appendChild(document.createTextNode(localeStrings.EXAMPLE + orgSettings['ui.patron.edit.phone.example']));
}
- else if(fieldIdl.datatype == 'timestamp') {
+ else if(fieldIdl.datatype == 'timestamp' && !fmfield.match(/expire/)) {
ftd.appendChild(document.createTextNode(localeStrings.EXAMPLE + dojo.date.locale.format(new Date(1970,0,31),{selector: "date", fullYear: true, datePattern: (orgSettings['format.date'] ? orgSettings['format.date'] : null)})));
}
}
orgLimitPerms : ['UPDATE_USER'],
};
+ // handle comboBox data, create store if necessary
+ if (dojo.attr(row, 'combodata')) {
+
+ var dataName = dojo.attr(row, 'combodata');
+ if (!comboStores[dataName])
+ comboStores[dataName] = new dojo.data.ItemFileReadStore({data:comboData[dataName]});
+
+ wargs.dijitArgs.store = comboStores[dataName];
+ wargs.dijitArgs.searchAttr = comboData[dataName].identifier;
+ }
+
if(fmfield == 'profile') {
// fetch profile groups non-async so existing expire_date is
// not overwritten when the profile groups arrive and update
);
}
+/**
+ * if the user does not have the BAR_PATRON/UNBAR_PATRON perm
+ * This function checks the perm and disable/enables the widget.
+ */
+
+function checkBarPatronPerm() {
+ new openils.User().getPermOrgList(
+ 'BAR_PATRON',
+ function(orgList) {
+ var cr = findWidget('au', 'barred');
+ if(orgList.indexOf(patron.home_ou()) == -1)
+ cr.widget.attr('disabled', true);
+ else
+ cr.widget.attr('disabled', false);
+ },
+ true,
+ true
+ );
+}
+function checkUnBarPatronPerm(){
+ new openils.User().getPermOrgList(
+ 'UNBAR_PATRON',
+ function(orgList) {
+ var cr = findWidget('au', 'barred');
+ if(orgList.indexOf(patron.home_ou()) == -1)
+ cr.widget.attr('disabled', true);
+ else
+ cr.widget.attr('disabled', false);
+ },
+ true,
+ true
+ );
+}
function checkClaimsNoCheckoutCountPerm() {
new openils.User().getPermOrgList(
dojo.connect(widget.widget, 'onChange',
function() {
var barcode = this.attr('value');
+//MIEG: TADL Michigan ID to barcode voodo
+if (barcode.length > 22){
+ if (barcode.length == 25) {var bc = barcode.substr(0,13);}
+ if (barcode.length == 23) {var bc = barcode.substr(0,11);}
+ var dob = findWidget('au', 'dob');
+ var ident = findWidget('au', 'ident_value');
+ var id_type = findWidget('au', 'ident_type');
+ if (barcode.length == 25) {
+ var bc = barcode.substr(0,13);
+ if (!dob.widget.attr('value')){
+ var y = barcode.substr(13,4);
+ var m = barcode.substr(17,2);
+ var d = barcode.substr(19,2);
+ var bdate = new Date(y,m-1,d);
+ dob.widget.attr('value',bdate);
+ }
+ if (!ident.widget.attr('value'))
+ ident.widget.attr('value',bc);
+ id_type.widget.attr('value',1);
+ }
+ if (barcode.length == 23) {
+ var bc = barcode.substr(0,11);
+ if (!dob.widget.attr('value')){
+ var y = barcode.substr(11,4);
+ var m = barcode.substr(15,2);
+ var d = barcode.substr(17,2);
+ var bdate = new Date(y,m-1,d);
+ dob.widget.attr('value',bdate);
+ }
+ if (!ident.widget.attr('value'))
+ ident.widget.attr('value',bc);
+ id_type.widget.attr('value',4);
+ }
+ bc = bc.toLowerCase();
+ this.attr('value',bc);
+}
dupeBarcode = false;
dojo.addClass(dojo.byId('uedit-dupe-barcode-warning'), 'hidden');
fieldmapper.standardRequest(
var base = new Date();
base.setTime(base.getTime() - Number(openils.Util.intervalToSeconds(juvInterval) + '000'));
- if(newDob <= base) // older than global.juvenile_age_threshold
+ if(newDob <= base) { // older than global.juvenile_age_threshold
juvWidget.widget.attr('value', false);
- else
+ openils.Util.show('parentGuardian');
+ } else {
juvWidget.widget.attr('value', true);
+ }
}
);
return;
case 'au':
if(w._fmfield != 'passwd2')
patron[w._fmfield](val);
+//MIEG: dob kludge
+ if(w._fmfield == 'dob'){
+ var DOB = dojo.date.stamp.fromISOString(val);
+ DOB = dojo.date.add(DOB,'hour',4);
+ DOB = dojo.date.stamp.toISOString(DOB);
+ patron[w._fmfield](DOB);
+ }
break;
case 'ac':
<button dojoType='dijit.form.Button' jsId='replaceBarcode' scrollOnFocus='false'></button>
<span id='uedit-dupe-barcode-warning' style='color:red; font-weight:bold' class='hidden'>
</span>
+ <span id='ISMbutton' class='hidden'><button dojoType='dijit.form.Button' id='genISM' jsId='genISM' scrollOnFocus='false'>ISM Number</button></span>
</td>
<td id='uedit-all-barcodes' class='hidden'>
<button dojoType='dijit.form.Button' jsId='allCards' scrollOnFocus='false'></button>
<tr fmclass='au' fmfield='first_given_name' required='required'/>
<tr fmclass='au' fmfield='second_given_name'/>
<tr fmclass='au' fmfield='family_name' required='required'/>
- <tr fmclass='au' fmfield='suffix'/>
+<!--
+ <tr fmclass='au' fmfield='suffix' id='suffix'><td/><td/><td/>
+ <td>
+ <select id='suffixSelector' jsID='suffixSelector' dojoType='dijit.form.FilteringSelect' required='false'>
+ <option value=''></option>
+ <option value='Jr'>Jr</option>
+ <option value='Sr'>Sr</option>
+ <option value='II'>II</option>
+ <option value='III'>III</option>
+ <option value='AA'>AA</option>
+ <option value='AS'>AS</option>
+ <option value='AAS'>AAS</option>
+ <option value='BA'>BA</option>
+ <option value='BS'>BS</option>
+ <option value='CFPIM'>CFPIM</option>
+ <option value='CPA'>CPA</option>
+ <option value='CPIM'>CPIM</option>
+ <option value='CPM'>CPM</option>
+ <option value='CXE'>CXE</option>
+ <option value='DC'>DC</option>
+ <option value='DDS'>DDS</option>
+ <option value='DO '>DO</option>
+ <option value='DPM'>DPM</option>
+ <option value='DVM'>DVM</option>
+ <option value='Esq'>Esq</option>
+ <option value='FACAAI'>FACAAI</option>
+ <option value='FACP'>FACP</option>
+ <option value='FACS'>FACS</option>
+ <option value='FACEP'>FACEP</option>
+ <option value='FCP'>FCP</option>
+ <option value='FICS'>FICS</option>
+ <option value='GYN'>GYN</option>
+ <option value='JD'>JD</option>
+ <option value='LPN'>LPN</option>
+ <option value='MA'>MA</option>
+ <option value='MCSE'>MCSE</option>
+ <option value='MD'>MD</option>
+ <option value='MS'>MS</option>
+ <option value='NMD'>NMD</option>
+ <option value='OB'>OB</option>
+ <option value='PhD'>PhD</option>
+ <option value='RN'>RN</option>
+ </select>
+ </td>
+ </tr>
+
+
+ <tr fmfield='suffix' id='suffix'><td/><td>Suffix</td>
+ <td>
+ <select jsID='suffixSelector' dojoType='dijit.form.ComboBox' required='false' scrollOnFocus='false'>
+ <option value=''></option>
+ <option value='Jr'>Jr</option>
+ <option value='Sr'>Sr</option>
+ <option value='II'>II</option>
+ <option value='III'>III</option>
+ <option value='AA'>AA</option>
+ <option value='AS'>AS</option>
+ <option value='AAS'>AAS</option>
+ <option value='BA'>BA</option>
+ <option value='BS'>BS</option>
+ <option value='CFPIM'>CFPIM</option>
+ <option value='CPA'>CPA</option>
+ <option value='CPIM'>CPIM</option>
+ <option value='CPM'>CPM</option>
+ <option value='CXE'>CXE</option>
+ <option value='DC'>DC</option>
+ <option value='DDS'>DDS</option>
+ <option value='DO '>DO</option>
+ <option value='DPM'>DPM</option>
+ <option value='DVM'>DVM</option>
+ <option value='Esq'>Esq</option>
+ <option value='FACAAI'>FACAAI</option>
+ <option value='FACP'>FACP</option>
+ <option value='FACS'>FACS</option>
+ <option value='FACEP'>FACEP</option>
+ <option value='FCP'>FCP</option>
+ <option value='FICS'>FICS</option>
+ <option value='GYN'>GYN</option>
+ <option value='JD'>JD</option>
+ <option value='LPN'>LPN</option>
+ <option value='MA'>MA</option>
+ <option value='MCSE'>MCSE</option>
+ <option value='MD'>MD</option>
+ <option value='MS'>MS</option>
+ <option value='NMD'>NMD</option>
+ <option value='OB'>OB</option>
+ <option value='PhD'>PhD</option>
+ <option value='RN'>RN</option>
+ </select>
+ </td>
+ </tr>
+-->
+
+ <tr fmclass='au' fmfield='suffix' combodata='suffixes'/>
<tr fmclass='au' fmfield='alias'/>
- <tr fmclass='au' fmfield='dob'/>
- <tr fmclass='au' fmfield='juvenile'/>
- <tr fmclass='au' fmfield='ident_type' required='required'/>
<tr fmclass='au' fmfield='ident_value'/>
+ <tr fmclass='au' fmfield='ident_type' required='required'/>
<tr fmclass='au' fmfield='ident_value2'><td/><td id='parentGuardian'></td></tr>
+ <tr fmclass='au' fmfield='dob'/>
+ <tr fmclass='au' fmfield='juvenile'/>
<tr fmclass='au' fmfield='email'/>
<tr fmclass='au' fmfield='day_phone'/>
<tr fmclass='au' fmfield='evening_phone'/>
<tr fmclass='au' fmfield='master_account'/>
<tr fmclass='au' fmfield='claims_returned_count' wclass='dijit.form.NumberSpinner' wconstraints="{min:0,places:0}" wvalue='0'/>
<tr fmclass='au' fmfield='claims_never_checked_out_count' wclass='dijit.form.NumberSpinner' wconstraints="{min:0,places:0}" wvalue='0'/>
- <tr fmclass='au' fmfield='alert_message' wclass='dijit.form.Textarea' wstyle='height:5em'/>
+ <tr fmclass='au' fmfield='alert_message' wclass='dijit.form.Textarea' wstyle='height:5em'>
+ <td/><td/><td/>
+ <td>
+ <button dojoType='dijit.form.Button' jsId='clearAlert' scrollOnFocus='false'>Clear</button>
+ </td>
+ </tr>
<tr class='divider hidden' id='uedit-settings-divider'><td colspan='0' id='userSettings'></td></tr>
<tr class='hidden' id='uedit-user-setting-template'>
</td>
</tr>
+ <!--
+ <tr type='addr-template' id='address_type'>
+ <td></td>
+ <td>Type</td>
+ <td>
+ <select id='addTypeSelector' name='address_type' jsID='addTypeSelector' dojoType='dijit.form.ComboBox' required='required'>
+ <option value=''></option>
+ <option value='MAILING'>MAILING</option>
+ <option value='PHYSICAL'>PHYSICAL</option>
+ <option value='JUVENILE'>JUVENILE</option>
+ <option value='GUARDIAN'>GUARDIAN</option>
+ <option value='SCHOOL'>SCHOOL</option>
+ <option value='ALTERNATE'>ALTERNATE</option>
+ <option value='INSTITUTION'>INSTITUTION</option>
+ </select>
+ </td>
+ </tr>
+ -->
+
+ <!--
+ <tr type='addr-template' id='address_type' name='uedit-addr-type'>
+ <td></td>
+ <td>Type</td>
+ <td>
+ <input id='address_type_input' />
+ </td>
+ </tr>
+
+ <tr name='uedit-addr-type-row' fmfield='address_type' type='addr-template' required='required'>
+ <td class='uedit-help'></td>
+ <td>Type</td>
+ </tr>
+ -->
- <tr fmclass='aua' fmfield='address_type' type='addr-template' required='required'/>
+ <tr fmclass='aua' fmfield='address_type' type='addr-template' required='required' combodata='address_types'/>
<tr fmclass='aua' fmfield='post_code' type='addr-template' required='required'/>
<tr fmclass='aua' fmfield='street1' type='addr-template' required='required'/>
<tr fmclass='aua' fmfield='street2' type='addr-template' required='show'/>