NOBLE client-side customizations
authorblake <blake@mobiusconsortium.org>
Fri, 21 Jan 2022 17:53:39 +0000 (11:53 -0600)
committerMichele Morgan <mmorgan@noblenet.org>
Tue, 13 Dec 2022 21:48:14 +0000 (16:48 -0500)
action.pm            - add On Display status (107) to pull list (custom server-side)
actor.pm             - no stemmed patron keyword search (custom server-side)
AssetCommon.pm       - delete copy tags LP#1761615 (cherry pick)
Biblio.pm            - LP1955079 email bib records from catalog fails (cherry pick)
Checkin.pm           - LP1528301 (phone), email/sms, alias - Committed 3.9-beta
EGCatLoader.pm       - use Suzanne's better bookbag (custom server-side)
Item.pm              - LP1528301 (phone), email/sms - Committed 3.9-beta
MsgType.pm           - LP1528301 (phone) - Committed 3.9-beta
OverDrive.pm         - use v.2 of the API LP#1818144 (cherry pick)
Patron.pm            - NOBLE custom: holds alias
QueryParser.pm       - fix badge math LP#1796176 (custom server-side)
SuperCat.pm          - Don't quote eg.keyword search used by z39.50 (custom server-side)

1127-Computer-Error.wav  - two-tone warning sound
121-Computer-Error.wav   - bad chord error sound
ac_google_books.js   - NOBLE customizations
app.js (bucket)      - increase bucket from 500 to 10000 (web client)
app.js (volcopy)     - lp1821950 - allow empty volume label, first commit only (signed off 3.10)
avail.js             - fix Overdrive counts for always available - check lp#1711128
bleep.wav            - single high beep success sound
circ.js              - pref names on recpts
holds-validation.js  - suppress the phone option check box in holds
loggedin.js          - commented out checking for Overdrive checkouts at line 24
other_selfcheck.js   - say "scan" barcode
patron_search.js     - lp#1721131 testing on testcode - mmm (cherry pick)
regctl.js            - don't clone usrgroup
simple.js            - NOBLE customization to limit to electronic

Signed-off-by: blake <blake@mobiusconsortium.org>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
14 files changed:
Open-ILS/src/eg2/src/app/staff/catalog/record/actions.component.html
Open-ILS/src/eg2/src/app/staff/catalog/search-form.component.html
Open-ILS/src/eg2/src/app/staff/nav.component.html
Open-ILS/src/eg2/src/app/staff/splash.component.ts
Open-ILS/web/js/dojo/openils/circ/nls/selfcheck.js
Open-ILS/web/js/ui/default/opac/ac_google_books.js
Open-ILS/web/js/ui/default/opac/ebook_api/avail.js
Open-ILS/web/js/ui/default/opac/ebook_api/loggedin.js
Open-ILS/web/js/ui/default/opac/holds-validation.js
Open-ILS/web/js/ui/default/opac/simple.js
Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js
Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js
Open-ILS/web/js/ui/default/staff/circ/services/circ.js

index 810a470..4fef620 100644 (file)
 
 <div class="row ml-0 mr-0">
 
-  <a target="_blank" href="/eg/opac/record/{{recId}}">
-    <button class="btn btn-outline-primary ml-1" i18n>Patron View</button>
+  <!-- NOBLE add button to go back to traditional catalog -->
+  <!--<a target="_blank" href="/eg/opac/record/{{recId}}"> -->
+    <!--<button class="btn btn-outline-primary ml-1" i18n>Patron View</button> -->
+   <a href="/eg/staff/cat/catalog/record/{{recId}}" target="_blank">
+    <button class="btn btn-outline-primary ml-1" i18n>OPAC View</button>
   </a>
+  <!-- END NOBLE -->
 
   <a routerLink="/staff/catalog/hold/T" [queryParams]="{target: recId}"
     *ngIf="isHoldable">
index 18bae19..42bce61 100644 (file)
                 <option i18n value='contains'>Contains</option>
                 <option i18n value='nocontains'>Does not contain</option>
                 <option i18n value='phrase'>Contains phrase</option>
-                <option [disabled]="context.termSearch.fieldClass[idx]=='keyword'"
+                <!--<option [disabled]="context.termSearch.fieldClass[idx]=='keyword'"
                   i18n value='exact'>Matches exactly</option>
                 <option [disabled]="context.termSearch.fieldClass[idx]=='keyword'"
-                  i18n value='starts'>Starts with</option>
+                  i18n value='starts'>Starts with</option>--><!-- NOBLE options don't work correctly- hidding -->
               </select>
             </div>
             <div class="col-lg-4 pl-0 pr-2">
                     <option value='authorsort.descending' i18n>Author: Z to A</option>
                   </optgroup>
                   <optgroup label="Sort by Publication Date" i18n-label>
-                    <option value='pubdate.descending' i18n>Date: Newest to Oldest</option>
-                    <option value='pubdate' i18n>Date: Oldest to Newest</option>
+                    <option value='pubdate' i18n>Date: A to Z</option>
+                    <option value='pubdate.descending' i18n>Date: Z to A</option>
                   </optgroup>
                   <optgroup label="Sort by Popularity" i18n-label>
                     <option value='popularity' i18n>Most Popular</option>
             <div class="col-lg-3 mt-3">
               <select class="form-control" 
                 [(ngModel)]="context.termSearch.copyLocations" multiple="true">
-                <option value='' i18n>All Shelving Locations</option>
+                <option value='' i18n>All Copy Locations</option>
                 <option *ngFor="let loc of copyLocations" value="{{loc.id()}}" i18n>
                   {{loc.name()}} ({{orgName(loc.owning_lib())}})
                 </option>
index b7e0e08..944ef2d 100644 (file)
             egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
             keySpec="f3" keyDesc="Catalog">
             <span class="material-icons" aria-hidden="true">search</span>
-            <span i18n>Search the Catalog</span>
+            <span i18n>Search the Catalog (New)</span>
+          </a>
+          <a class="dropdown-item" href="/eg/staff/cat/catalog/index">
+            <span class="material-icons" aria-hidden="true">search</span>
+            <span i18n>Search the Catalog (Old)</span>
           </a>
         </div>
       </div>
             <span class="material-icons" aria-hidden="true">autorenew</span>
             <span i18n>Renew Items</span>
           </a>
+          <div class="dropdown-divider"></div>
+          <!-- NOBLE add patron search -->
+          <a class="dropdown-item" href="/eg/staff/circ/patron/search"
+            egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
+            keySpec="alt+s f4" keyDesc="Patron Search">
+            <span class="material-icons" aria-hidden="true">person</span>
+            <span i18n>Search for Patrons</span>
+          </a><!-- END NOBLE -->
           <a class="dropdown-item" href="/eg/staff/circ/patron/register"
             egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
             keySpec="shift+f1" keyDesc="Register Patron">
             <span class="material-icons" aria-hidden="true">format_list_bulleted</span>
             <span i18n>Holds Shelf</span>
           </a>
+          <!-- NOBLE -->
+          <a class="dropdown-item" href="/eg2/en-US/staff/hopeless">
+            <span class="material-icons" aria-hidden="true">format_list_bulleted</span>
+            <span i18n>Hopeless Holds</span>
+          </a>
+          <!-- END NOBLE -->
           <div class="dropdown-divider"></div>
           <a class="dropdown-item" href="/eg/staff/cat/item/replace_barcode/index">
             <span class="material-icons" aria-hidden="true">library_books</span>
             <span class="material-icons" aria-hidden="true">question_answer</span>
             <span i18n>Item Status</span>
           </a>
-          <a class="dropdown-item" routerLink="/staff/cat/item/missing_pieces">
+          <!--<a class="dropdown-item" href="/eg/staff/cat/item/missing_pieces">
             <span class="material-icons" aria-hidden="true">grid_on</span>
             <span i18n>Scan Item as Missing Pieces</span>
-          </a>
+          </a>--><!-- NOBLE commented out -->
           <div class="dropdown-divider"></div>
           <a class="dropdown-item" (click)="reprintLast()"
             egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
             egAccessKey keyCtx="navbar"i18n-keySpec i18n-keyDesc
             keySpec="f3" keyDesc="Catalog">
             <span class="material-icons" aria-hidden="true">search</span>
-            <span i18n>Search the Catalog</span>
+            <span i18n>Search the Catalog (New)</span>
           </a>
           <a href="/eg/staff/cat/catalog/index" class="dropdown-item">
             <span class="material-icons" aria-hidden="true">search</span>
-            <span i18n>Search the Catalog (Traditional)</span>
+            <span i18n>Search the Catalog (Old)</span>
           </a>
           <a class="dropdown-item" href="/eg/staff/cat/item/search"
             egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
             <span i18n>Item Buckets</span>
           </a>
           <div class="dropdown-divider"></div>
-          <a routerLink="/staff/cat/bib-from/id" class="dropdown-item">
+          <!--<a routerLink="/staff/cat/bib-from/id" class="dropdown-item">
             <span class="material-icons" aria-hidden="true">collections</span>
             <span i18n>Retrieve Bib Record by ID</span>
-          </a>
-          <a routerLink="/staff/cat/bib-from/tcn" class="dropdown-item"
+          </a>-->
+          <a href="/eg/staff/cat/catalog/retrieve_by_id" class="dropdown-item">
+            <span class="material-icons">collections</span>
+            <span i18n>Retrieve Bib Record by ID</span>
+          </a><!-- NOBLE replaced with traditional catalog link -->
+          <!--<a routerLink="/staff/cat/bib-from/tcn" class="dropdown-item"
             egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
             keySpec="shift+f3" keyDesc="Retrieve Bib Record by TCN">
             <span class="material-icons" aria-hidden="true">collections_bookmark</span>
             <span i18n>Retrieve Bib Record by TCN</span>
-          </a>
+          </a>-->
+          <a href="/eg/staff/cat/catalog/retrieve_by_tcn"
+            class="dropdown-item"
+            egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
+            keySpec="shift+f3" keyDesc="Retrieve Bib Record by TCN">
+            <span class="material-icons">collections_bookmark</span>
+            <span i18n>Retrieve Bib Record by TCN</span>
+          </a><!-- NOBLE replace with traditional catalog link -->
           <a (click)="retrieveLastRecord()"
             egAccessKey keyCtx="navbar" i18n-keySpec i18n-keyDesc
             keySpec="shift+f8" keyDesc="Retrieve Last Bib Record">
             <span class="material-icons" aria-hidden="true">cloud_download</span>
             <span i18n>Import Record from Z39.50</span>
           </a>
+          <!-- NOBLE added -->
+          <a class="dropdown-item" href="/eg/staff/cat/catalog/vandelay" class="dropdown-item">
+            <span class="material-icons" aria-hidden="true">import_export</span>
+            <span i18n>MARC Batch Import/Export (Original)</span>
+          </a><!-- END NOBLE -->
           <a routerLink="/staff/cat/vandelay/import" class="dropdown-item">
             <span class="material-icons" aria-hidden="true">import_export</span>
-            <span i18n>MARC Batch Import/Export</span>
+            <span i18n>MARC Batch Import/Export (New Interface)</span>
           </a>
           <a routerLink="/staff/cat/marcbatch" class="dropdown-item">
             <span class="material-icons" aria-hidden="true">format_paint</span>
             <span i18n>MARC Batch Edit</span>
           </a>
           <div class="dropdown-divider"></div>
-          <a href="/eg/staff/cat/catalog/verifyURLs" class="dropdown-item">
+          <!--<a href="/eg/staff/cat/catalog/verifyURLs" class="dropdown-item">
             <span class="material-icons" aria-hidden="true">link</span>
             <span i18n>Link Checker</span>
           </a>
           <a routerLink="/staff/cat/authority/edit" class="dropdown-item">
             <span class="material-icons" aria-hidden="true">collections</span>
             <span i18n>Retrieve Authority Record by ID</span>
+          </a>--><!-- NOBLE commented out -->
+          <a routerLink="/staff/admin/server/asset/call_number_prefix" class="dropdown-item">
+            <span class="material-icons" aria-hidden="true">format_paint</span>
+            <span i18n>Call Number Suffix</span>
+          </a>
+          <a routerLink="/staff/admin/server/asset/call_number_suffix" class="dropdown-item">
+            <span class="material-icons" aria-hidden="true">format_paint</span>
+            <span i18n>Call Number Prefix</span>
           </a>
+          <a class="dropdown-item" href="/eg/staff/cat/volcopy/edit_templates">
+            <span class="material-icons" aria-hidden="true">format_paint</span>
+            <span i18n>Holdings Template Editor</span>
+          </a>
+          <a class="dropdown-item" routerLink="/staff/admin/local/asset/copy_location">
+            <span class="material-icons" aria-hidden="true">format_paint</span>
+            <span i18n>Shelving Locations Editor</span>
+          </a>
+          <a class="dropdown-item" href="/eg/staff/admin/local/asset/stat_cat_editor">
+            <span class="material-icons" aria-hidden="true">format_paint</span>
+            <span i18n>Statistical Categories Editor</span>
+          </a><!-- END NOBLE -->
         </div>
       </div>
     </div>
           Acquisitions
         </a>
         <div class="dropdown-menu" ngbDropdownMenu>
-          <a class="dropdown-item" 
+          <a class="dropdown-item"
             routerLink="/staff/acq/search">
             <span class="material-icons" aria-hidden="true">search</span>
             <span i18n>General Search</span>
           </a>
           <div class="dropdown-divider"></div>
-          <a class="dropdown-item" 
+          <a class="dropdown-item"
             routerLink="/staff/acq/provider">
             <span class="material-icons" aria-hidden="true">search</span>
             <span i18n>Provider Search</span>
             <span class="material-icons" aria-hidden="true">view_list</span>
             <span i18n>Selection Lists</span>
           </a>
-          <a class="dropdown-item" 
+          <a class="dropdown-item"
             href="/eg/staff/acq/legacy/picklist/brief_record">
             <span class="material-icons" aria-hidden="true">edit</span>
             <span i18n>New Brief Record</span>
           </a>
-          <a class="dropdown-item" 
+          <!--<a class="dropdown-item"
             href="/eg/staff/acq/legacy/picklist/user_request">
             <span class="material-icons" aria-hidden="true">thumb_up</span>
             <span i18n>Patron Requests</span>
-          </a>
-          <a class="dropdown-item" 
+          </a>--><!-- NOBLE commented out -->
+          <a class="dropdown-item"
             href="/eg/staff/acq/legacy/picklist/bib_search">
             <span class="material-icons" aria-hidden="true">cloud_download</span>
             <span i18n>MARC Federated Search</span>
           </a>
-          <a class="dropdown-item" 
+          <a class="dropdown-item"
             href="/eg/staff/acq/legacy/picklist/from_bib">
             <span class="material-icons" aria-hidden="true">trending_down</span>
             <span i18n>Load Catalog Record IDs</span>
           </a>
           <div class="dropdown-divider"></div>
-          <a class="dropdown-item" 
+          <a class="dropdown-item"
             href="/eg/staff/acq/legacy/picklist/upload">
             <span class="material-icons" aria-hidden="true">cloud_upload</span>
             <span i18n>Load MARC Order Records</span>
             <span i18n>Create Purchase Order</span>
           </a>
           <div class="dropdown-divider"></div>
-          <a class="dropdown-item" 
+          <!--<a class="dropdown-item"
             href="/eg/staff/acq/legacy/financial/claim_eligible">
             <span class="material-icons" aria-hidden="true">contact_phone</span>
             <span i18n>Claim-Ready Items</span>
-          </a>
+          </a>--><!-- NOBLE commented out -->
           <a class="dropdown-item"
             routerLink="/staff/acq/search/invoices">
             <span class="material-icons" aria-hidden="true">attach_money</span>
             <span i18n>Invoices</span>
           </a>
-          <a class="dropdown-item" 
+          <a class="dropdown-item"
             href="/eg/staff/acq/legacy/invoice/view?create=1">
             <span class="material-icons" aria-hidden="true">monetization_on</span>
             <span i18n>Create Invoice</span>
           </a>
+          <a class="dropdown-item"
+            href="/eg/staff/admin/acq/fund/list">
+            <span class="material-icons" aria-hidden="true">attach_money</span>
+            <span i18n>Funds</span>
+          </a>
+          <a class="dropdown-item"
+            href="/eg/staff/admin/acq/funding_source/list">
+            <span class="material-icons" aria-hidden="true">attach_money</span>
+            <span i18n>Funding Sources</span>
+          </a>
+          <a class="dropdown-item"
+            href="/eg/staff/admin/acq/conify/distribution_formula">
+            <span class="material-icons" aria-hidden="true">add</span>
+            <span i18n>Distribution Formulas</span>
+          </a><!-- END NOBLE add -->
+        </div>
+      </div>
+    </div>
+
+    <!-- NOBLE Course Reserves -->
+    <div class="navbar-nav">
+      <div ngbDropdown class="nav-item dropdown">
+        <a ngbDropdownToggle i18n class="nav-link dropdown-toggle">
+          Course Reserves
+        </a>
+        <div class="dropdown-menu" ngbDropdownMenu>
+          <a class="dropdown-item" routerLink="/staff/admin/local/asset/course_list">
+            <span class="material-icons" aria-hidden="true">add</span>
+            <span i18n>Course List</span>
+          </a>
+          <!--<a class="dropdown-item" href="/eg/opac/course_search">
+            <span class="material-icons" aria-hidden="true">add</span>
+            <span i18n>Search for Courses</span>
+          </a>-->
         </div>
       </div>
     </div>
+    <!-- END NOBLE -->
 
     <div class="navbar-nav">
       <div ngbDropdown class="nav-item dropdown">
index b310cd3..aef99f1 100644 (file)
@@ -103,11 +103,18 @@ export class StaffSplashComponent implements OnInit {
 
     searchCatalog(): void {
         if (!this.catSearchQuery) { return; }
-
+        /* NOBLE revert back to angular js search box */
+        /* Route to angular6 catalog
         this.router.navigate(
             ['/staff/catalog/search'],
             {queryParams: {query : this.catSearchQuery}}
         );
+        */
+        // NOBLE Temporary Route to AngularJS / TPAC catalog
+        window.location.href =
+            '/eg/staff/cat/catalog/results?query=' +
+            encodeURIComponent(this.catSearchQuery);
+            // END NOBLE
     }
 }
 
index 438d556..3932861 100644 (file)
@@ -21,8 +21,8 @@
     "TOTAL_FINES_SELECTED" : "Selected total: $${0}",
     "WELCOME_BANNER" : "Welcome, ${0}",
     "ENTER_PASSWORD" : "Please enter your password",
-    "PLEASE_LOGIN" : "Please log in with your username or library barcode.",
-    "ENTER_BARCODE" : "Please enter an item barcode",
+    "PLEASE_LOGIN" : "Please scan your library barcode",
+    "ENTER_BARCODE" : "Please scan an item barcode",
     "MISCELLANEOUS" : "Miscellaneous",
     "FAIL_PART_actor_usr_barred": "The patron is barred",
     "FAIL_PART_asset_copy_circulate": "The item does not circulate",
index 861bdf4..f495266 100644 (file)
       GBPBadge.style.margin = '0.5em 0 0 0';
       GBPBadgelink = document.createElement('a');
       GBPBadgelink.id = 'gbpbadge_link';
-      GBPBadgelink.addEventListener('click', GBDisplayPreview);
+
+      /*NOBLE -- Open link in a new window instead of in panel below */
+      GBPBadgelink.setAttribute('href',GBPreviewLink );
+      GBPBadgelink.setAttribute('target',"_blank" );
+      //GBPBadgelink.addEventListener('click', GBDisplayPreview);
+      /* END NOBLE */
+
       GBExtrasActivate(true);
       GBPBadgelink.appendChild(GBPBadge);
-      document.getElementById('rdetail_title_div').appendChild(GBPBadgelink);
-      document.getElementById('gbp_extra').style.display = 'block';
+      /* NOBLE moved button to actions list
+      document.getElementById('rdetail_title_div').appendChild(GBPBadgelink); */
+      document.getElementById('rdetail_actions_div').appendChild(GBPBadgelink); //NOBLE
+
+      //NOBLE -- Remove the panel with Google Books below fold
+      document.getElementById('gbp_extra').style.display = 'none';
     }
   }
 
@@ -82,6 +92,7 @@
  *  a preview is available from Google if this link was made visible.
  */
   function GBDisplayPreview () {
+    /* NOBLE - THIS FUCNITON IS NEVER CALLED with changes to link behavior above */
     var GBPreviewPane = document.getElementById('rdetail_preview_div');
     if (GBPreviewPane === null || typeof GBPreviewPane.loaded === 'undefined' || GBPreviewPane.loaded === 'false') {
       GBPreviewPane = document.createElement('div');
index b822602..e985fbd 100644 (file)
@@ -33,7 +33,13 @@ dojo.addOnLoad(function() {
                                     dojo.create("li", { innerHTML: f.name }, formats_ul);
                                 });
                                 var status_node = dojo.byId(ebook.rec_id + '_status');
-                                var status_str = holdings.copies_available + ' of ' + holdings.copies_owned + ' available';
+
+                                if ( holdings.copies_owned > 9000)  {
+                                   var status_str = "Always available";
+                                }
+                                else {
+                                   var status_str = holdings.copies_available + ' of ' + holdings.copies_owned + ' available';
+                                }
                                 status_node.innerHTML = status_str;
                                 dojo.removeClass(ebook.rec_id + '_ebook_holdings', "hidden");
                                 if (holdings.copies_available > 0) {
index 9b7323a..fc48e23 100644 (file)
@@ -29,7 +29,7 @@ if (typeof ebook_action.title_id !== 'undefined') {
 }
 
 dojo.addOnLoad(function() {
-
+/* NOBLE - REMOVE GETTING PATRON CHECKOUT INFORMATION
     dojo.forEach(vendor_list, function(v) {
         var rel = new Relation(v, patron_id);
         relations.push(rel);
@@ -51,7 +51,7 @@ dojo.addOnLoad(function() {
             });
         });
     }
-
+*/
 });
 
 // Update current page with cross-vendor transaction totals.
index c4f21cb..6020648 100644 (file)
@@ -46,7 +46,8 @@ function validateMethodSelections (alertMethodCboxes) {
 
     var culprits = [];
     var emailOK = (needsEmail && hasEmail) || (!needsEmail);
-    var phoneOK = needsPhone && hasPhone || (!needsPhone);
+    var phoneOK = true; // NOBLE phone is always OK
+    //var phoneOK = needsPhone && hasPhone || (!needsPhone); NOBLE don't look at phone
     var smsOK = needsSms && hasSms || (!needsSms);
 
     if (!phoneOK) {
index ae5a80e..5f3cf01 100644 (file)
@@ -116,9 +116,96 @@ function exclude_onchange(checkbox) {
 
     }
 
+    /*****NOBLE make sure this AND electronic only not checked *******/
+    if (checkbox.checked)
+    {
+        document.getElementById("opac.result.elec").checked = false;
+        var search_box = get('search_box');
+        var reg = /-search_format\(allphysical\)/g;
+        search_box.value = search_box.value.replace(reg, "");
+        var search_format_inputs = document.querySelectorAll('input[type="hidden"][name="fi:-search_format"][value="allphysical"]');
+        for (var j = 0; j < search_format_inputs.length; j++) {
+            search_format_inputs[j].parentNode.removeChild(search_format_inputs[j]);
+        }
+    }
+    /********  END NOBLE **********/
+
     checkbox.form.submit();
 }
 
+/********* NOBLE Limit to Electronic *********/
+function include_onchange(checkbox)
+{
+    if (checkbox.form._adv && !checkbox.checked)
+    {
+        var search_box = get('search_box');
+        // Other functions' form submits may create duplicates of this, so /g
+        var reg = /-search_format\(allphysical\)/g;
+        search_box.value = search_box.value.replace(reg, "");
+        var search_format_inputs = document.querySelectorAll('input[type="hidden"][name="fi:-search_format"][value="allphysical');
+        for (var j = 0; j < search_format_inputs.length; j++) {
+            search_format_inputs[j].parentNode.removeChild(search_format_inputs[j]);
+        }
+    }
+
+    if (checkbox.checked)
+    {
+       document.getElementById("opac.result.excludeelec").checked = false;
+       var search_box = get('search_box');
+       var reg = /-search_format\(electronic\)/g;
+       search_box.value = search_box.value.replace(reg, "");
+       var search_format_inputs = document.querySelectorAll('input[type="hidden"][name="fi:-search_format"][value="electronic"]');
+       for (var j = 0; j < search_format_inputs.length; j++)
+       {
+            search_format_inputs[j].parentNode.removeChild(search_format_inputs[j]);
+       }
+    }
+
+    checkbox.form.submit();
+}
+
+function checkRefresh(value)
+{
+    document.form1.submit();
+}
+
+function uncheck(check)
+{
+    var prim = document.getElementById("opac.result.excludeelec");
+    var secn = document.getElementById("opac.result.elec");
+    if (prim.checked == true && secn.checked == true)
+    {
+        if(check == 1)
+        {
+            secn.checked = false;
+            checkRefresh();
+        }
+        else if(check == 2)
+        {
+            prim.checked = false;
+            checkRefresh();
+        }
+    }
+}
+
+function adv_exclude_elec(checkbox)
+{
+   if (checkbox.checked)
+   {
+       document.getElementById("opac.result.elec"). checked = false;
+   }
+}
+
+function adv_elec_only(checkbox)
+{
+   if (checkbox.checked)
+   {
+       document.getElementById("opac.result.excludeelec"). checked = false;
+   }
+}
+
+/***** END NOBLE *******/
+
 // prefs notify update holds-related code
 var hold_notify_prefs = [];
 document.addEventListener("DOMContentLoaded", function() {
index 0a126b5..5060db5 100644 (file)
@@ -496,7 +496,7 @@ function($scope,  $routeParams,  egCore , bucketSvc) {
         egCore.net.request(
             'open-ils.search',
             'open-ils.search.biblio.multiclass.query.staff', {   
-                limit : 500 // meh
+                limit : 10000 // meh
             }, bucketSvc.queryString, true
         ).then(function(resp) {
             bucketSvc.queryRecords = 
index e0c9722..3ab4cbc 100644 (file)
@@ -1101,10 +1101,18 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
         }
     };
 
+<<<<<<< HEAD
     egCore.org.settings('cat.require_call_number_labels').then(function(res) {
         $scope.require_label = res['cat.require_call_number_labels'];
     });
 
+=======
+  egCore.org.settings('cat.require_call_number_labels').then(
+  function(res) {
+        $scope.require_label = res['cat.require_call_number_labels'
+               ];
+    });
+>>>>>>> cd33336d7a (NOBLE client-side customizations)
     $scope.new_lib_to_add = egCore.org.get(egCore.auth.user().ws_ou());
     $scope.changeNewLib = function (org) {
         $scope.new_lib_to_add = org;
@@ -1805,7 +1813,11 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
                 itemSvc.copies,
                 function (i) {
                     if (!$scope.only_vols) {
+<<<<<<< HEAD
                         if (i.duplicate_barcode || i.empty_barcode) {
+=======
+                        if (i.duplicate_barcode || i.empty_barcode || i.call_number().empty_label  && $scope.require_label) {
+>>>>>>> cd33336d7a (NOBLE client-side customizations)
                             can_save = false;
                         }
                         if (i.call_number().empty_label && $scope.require_label) {
index 31bc4fe..32ce575 100644 (file)
@@ -1013,8 +1013,7 @@ angular.module('egCoreMod')
         var clone_fields = [
             'day_phone',
             'evening_phone',
-            'other_phone',
-            'usrgroup'
+            'other_phone'
         ]; 
 
         angular.forEach(clone_fields, function(field) {
index 72e34ec..711530e 100644 (file)
@@ -1864,6 +1864,22 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
                     });
                 }
                 print_context.patron = egCore.idl.toHash(data.patron);
+                 /* NOBLE -- update preferrd name to always have a value for name */
+                 var pref_prefix = print_context.patron.pref_prefix;
+                 if (!pref_prefix) print_context.patron.pref_prefix = print_context.patron.prefix;
+
+                 var pref_first = print_context.patron.pref_first_given_name;
+                 if (!pref_first) print_context.patron.pref_first_given_name = print_context.patron.first_given_name;
+
+                 var pref_second = print_context.patron.pref_second_given_name;
+                 if (!pref_second) print_context.patron.pref_second_given_name = print_context.patron.second_given_name;
+
+                 var pref_family = print_context.patron.pref_family_name;
+                 if (!pref_family) print_context.patron.pref_family_name = print_context.patron.family_name;
+
+                 var pref_suffix = print_context.patron.pref_suffix;
+                 if (!pref_suffix) print_context.patron.pref_suffix = print_context.patron.suffix;
+                 /* END - NOBLE */
             }
 
             var sound = 'info.checkin.transit';