NOBLE client-side customizations user/blake/noble_custon_client_side_3_7_2
authorblake <blake@mobiusconsortium.org>
Fri, 21 Jan 2022 17:53:39 +0000 (11:53 -0600)
committerblake <blake@mobiusconsortium.org>
Fri, 21 Jan 2022 17:53:39 +0000 (11:53 -0600)
Signed-off-by: blake <blake@mobiusconsortium.org>
18 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/share/holds/grid.component.html
Open-ILS/src/eg2/src/app/staff/splash.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/circ/selfcheck/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/app.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 78f4695..c27a8b0 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}">
     <button class="btn btn-outline-primary ml-1" i18n>Place Hold</button>
index c63c5e8..c57f62f 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">
               <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 bd57834..beba080 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 f0dce35..2fef276 100644 (file)
       <eg-grid-column i18n-label label="Pickup Library" path='pl_shortname'></eg-grid-column>
 
       <ng-template #titleTmpl let-hold="row">
-        <a class="no-href" routerLink="/staff/catalog/record/{{hold.record_id}}">
+        <a class="no-href" routerLink="/staff/catalog/record/{{hold.record_id}}" target="_blank">
           {{hold.title}}
-        </a>
+        </a><!-- NOBLE make title link open in a new tab by adding 'target = "_blank" -->
       </ng-template>
       <eg-grid-column i18n-label label="Title" [hidden]="true" name='title'
         [cellTemplate]="titleTmpl"></eg-grid-column>
index 450a3e5..1b7e4ce 100644 (file)
                 Check In Items
               </a>
             </div>
+            <!-- NOBLE added -->
+            <div class="list-group-item border-0 p-2">
+              <a href="/eg/staff/circ/patron/register" i18n>
+                <img src="/images/portal/registerpatron.png" alt="" role="presentation"/>
+                Patron Registration
+              </a>
+            </div>
             <div class="list-group-item border-0 p-2">
               <a href="/eg/staff/circ/patron/search" i18n>
                 <img src="/images/portal/retreivepatron.png" alt="" role="presentation"/>
                 Search For Patron By Name
               </a>
             </div>
+            <div class="list-group-item border-0 p-2">
+              <a href="/eg/staff/circ/holds/pull" i18n>
+                <img src="/images/portal/holds.png" alt="" role="presentation"/>
+                Pull Lists for Hold Requests
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a href="/eg/staff/circ/patron/bucket/view" i18n>
+                <img src="/images/portal/user_bucket.png" alt="" role="presentation"/>
+                User Buckets
+              </a>
+            </div><!-- END NOBLE add -->
           </div>
         </div>
       </div>
                   -->
               </div>
             </div>
+            <!-- NOBLE added -->
             <div class="list-group-item border-0 p-2">
+              <a href="/eg/staff/cat/catalog/index/advanced" i18n>
+                <img src="/images/portal/book.png" alt="" role="presentation"/>
+                Advanced Search
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a href="/eg/staff/cat/item/search" i18n>
+                <img src="/images/portal/book.png" alt="" role="presentation"/>
+                Item Status
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a href="/eg/staff/cat/catalog/vandelay" i18n>
+                <img src="/images/portal/batchimport.png" alt="" role="presentation"/>
+                MARC Batch Import / Export (Original)
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a href="/eg2/staff/cat/vandelay/import" i18n>
+                <img src="/images/portal/batchimport.png" alt="" role="presentation"/>
+                MARC Batch Import / Export (New Interface)
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a href="/eg/staff/cat/z3950/search" i18n>
+                <img src="/images/portal/z3950.png" alt="" role="presentation"/>
+                z39.50 Import
+              </a>
+            </div><!-- END NOBLE -->
+                        <div class="list-group-item border-0 p-2">
               <a href="/eg/staff/cat/bucket/record/" i18n>
                 <img src="/images/portal/bucket.png" alt="" role="presentation"/>
                 Record Buckets
         </div>
         <div class="card-body">
           <div class="list-group">
-            <div class="list-group-item border-0 p-2">
+            <!--<div class="list-group-item border-0 p-2">
               <a target="_top" href="http://docs.evergreen-ils.org/" i18n>
                 <img src="/images/portal/helpdesk.png" alt="" role="presentation"/>
                 Evergreen Documentation
               </a>
-            </div>
+            </div>--><!-- NOBLE hidden -->
             <div class="list-group-item border-0 p-2">
               <a target="_top" href="/eg/staff/admin/workstation/index" i18n>
                 <img src="/images/portal/helpdesk.png" alt="" role="presentation"/>
                 Workstation Administration
               </a>
             </div>
+            <!-- NOBLE added -->
+            <div class="list-group-item border-0 p-2">
+              <a target="_top" href="https://www.noblenet.org/sis/" i18n>
+                <img src="/images/portal/nblue_48x47.png" alt="" role="presentation"/>
+                Staff Information System
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a target="_top" href="https://dashboard.noblenet.org/" i18n>
+                <img src="/images/portal/nblue_48x47.png" alt="" role="presentation"/>
+                Statistics Dashboard
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a target="_top" href="https://tools.noblenet.org/list_maker/list_form.php" i18n>
+                <img src="/images/portal/nblue_48x47.png" alt="" role="presentation"/>
+                List Maker
+              </a>
+            </div>
+            <div class="list-group-item border-0 p-2">
+              <a target="_top" href="https://docs.google.com/document/d/16Alj2CtGtePEsM58ePNgH5vlD3VzFY1oL8KVkQ9mzXY/edit?usp=sharing" i18n>
+                <img src="/images/portal/nblue_48x47.png" alt="" role="presentation"/>
+                Known Issues
+              </a>
+            </div>
+            <!-- END NOBLE -->
             <div class="list-group-item border-0 p-2">
               <a target="_top" href="/eg/staff/reporter/legacy/main" i18n>
                 <img src="/images/portal/reports.png" alt="" role="presentation"/>
                 Reports
               </a>
             </div>
+            <!-- NOBLE added -->
+            <div class="list-group-item border-0 p-2">
+              <a target="_top" href="/eg/staff/admin/workstation/print/templates" i18n>
+                <img src="/images/portal/receipt_editor.png" alt="" role="presentation"/>
+                Edit Print Templates
+              </a>
+            </div><!-- END NOBLE -->
           </div>
         </div>
       </div>
index 6756b65..3ff4e41 100644 (file)
@@ -22,11 +22,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 002dd34..86a6e10 100644 (file)
@@ -467,8 +467,16 @@ SelfCheckManager.prototype.fetchPatron = function(barcode, usrname) {
     } else {
 
         this.handleAlert('', false, 'login-success');
-        dojo.byId('oils-selfck-user-banner').innerHTML = 
-            dojo.string.substitute(localeStrings.WELCOME_BANNER, [this.patron.first_given_name()]);
+
+        /***** NOBLE - added if for preferred name ****/
+        if (this.patron.pref_first_given_name()) {
+           dojo.byId('oils-selfck-user-banner').innerHTML =
+              dojo.string.substitute(localeStrings.WELCOME_BANNER, [this.patron.pref_first_given_name()]);
+        } else {
+           dojo.byId('oils-selfck-user-banner').innerHTML =
+               dojo.string.substitute(localeStrings.WELCOME_BANNER, [this.patron.first_given_name()]);
+        }
+        /***** END NOBLE - added if for preferred name ****/
 
         if (this.patron.email() && // they have an email address set and ...
             this.patron.email().match(/.*@.*/).length > 0 // it sorta looks like an email address
@@ -615,6 +623,20 @@ SelfCheckManager.prototype.updateFinesSummary = function() {
                     );
 
                 self.creditPayableBalance = summary.balance_owed();
+
+                /*----------- NOBLE ------------ */
+                var url = window.location.search.substring(1);
+                var pair = url.split("=");
+                var workstation = pair[1];
+
+                if ( (workstation.indexOf("PEA") != -1 || workstation.indexOf("PES") != -1 || workstation.indexOf("PEW") != -1)
+                      && summary.balance_owed() >= 10)
+                {
+                   alert("There's a problem with your account. Please see a staff member for assistance.");
+                   self.logoutPatron();
+                }
+
+                /*----------- NOBLE ------------ */
             }
         }
     );
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 569260c..854a0ec 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 58afd06..db2545c 100644 (file)
@@ -166,7 +166,9 @@ function($routeProvider , $locationProvider) {
         if (!$scope.cat_query) return;
         if ($event && $event.keyCode != 13) return; // input ng-keypress
         $window.location.href = 
-            '/eg2/staff/catalog/search?query=' +
+        // NOBLE switch back to angular js temporarily
+            //'/eg2/staff/catalog/search?query=' +
+            '/eg/staff/cat/catalog/results?query=' +
             encodeURIComponent($scope.cat_query);
     }
 }])
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 3a479b7..695bdc5 100644 (file)
@@ -643,7 +643,7 @@ function(egCore , $q) {
                 '</div>'+
                 '<div class="col-xs-2">'+
                     '<input class="form-control" type="text" ng-change="updateLabel()" ng-model="label"/>'+
-                    '<div class="label label-danger" ng-if="empty_label">{{empty_label_string}}</div>'+
+                    '<div class="label label-danger" ng-if="empty_label && require_label">{{empty_label_string}}</div>'+
                 '</div>'+
                 '<div class="col-xs-1">'+
                     '<select class="form-control" ng-model="suffix" ng-change="updateSuffix()" ng-options="s.label() for s in suffix_list"></select>'+
@@ -661,6 +661,9 @@ function(egCore , $q) {
                 if (!$scope.callNumber.label()) $scope.callNumber.empty_label = true;
 
                 $scope.empty_label = false;
+                egCore.org.settings('cat.require_call_number_labels').then(function(res) {
+                    $scope.require_label = res['cat.require_call_numbrer_labels'];
+               });
                 $scope.empty_label_string = window.empty_label_string;
 
                 $scope.idTracker = function (x) { if (x && x.id) return x.id() };
@@ -1054,6 +1057,11 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
         }
     };
 
+  egCore.org.settings('cat.require_call_number_labels').then(
+  function(res) {
+        $scope.require_label = res['cat.require_call_number_labels'
+               ];
+    });
     $scope.new_lib_to_add = egCore.org.get(egCore.auth.user().ws_ou());
     $scope.changeNewLib = function (org) {
         $scope.new_lib_to_add = org;
@@ -1754,10 +1762,13 @@ function($scope , $q , $window , $routeParams , $location , $timeout , egCore ,
                 itemSvc.copies,
                 function (i) {
                     if (!$scope.only_vols) {
-                        if (i.duplicate_barcode || i.empty_barcode || i.call_number().empty_label) {
+                        if (i.duplicate_barcode || i.empty_barcode || i.call_number().empty_label  && $scope.require_label) {
+                            can_save = false;
+                        }
+                        if (i.call_number().empty_label && $scope.require_label) {
                             can_save = false;
                         }
-                    } else if (i.call_number().empty_label) {
+                    } else if (i.call_number().empty_label && $scope.require_label) {
                         can_save = false;
                     }
                 }
index ac1894c..73611c1 100644 (file)
@@ -987,8 +987,7 @@ angular.module('egCoreMod')
         var clone_fields = [
             'day_phone',
             'evening_phone',
-            'other_phone',
-            'usrgroup'
+            'other_phone'
         ]; 
 
         angular.forEach(clone_fields, function(field) {
index 6f22aa8..cca9bb5 100644 (file)
@@ -50,11 +50,13 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
     }
 
     // these events can be overridden by staff during checkout
+    // NOBLE added PATRON_EXCEEDS_LONG_OVERDUE
     service.checkout_overridable_events = [
         'PATRON_EXCEEDS_OVERDUE_COUNT',
         'PATRON_EXCEEDS_CHECKOUT_COUNT',
         'PATRON_EXCEEDS_FINES',
         'PATRON_EXCEEDS_LONGOVERDUE_COUNT',
+        'PATRON_EXCEEDS_LONG_OVERDUE',
         'PATRON_BARRED',
         'CIRC_EXCEEDS_COPY_RANGE',
         'ITEM_DEPOSIT_REQUIRED',
@@ -87,12 +89,14 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog,  egAddCopyAl
 
 
     // overridable during renewal
+    // NOBLE added PATRON_EXCEEDS_LONG_OVERDUE
     service.renew_overridable_events = [
         'PATRON_EXCEEDS_OVERDUE_COUNT',
         'PATRON_EXCEEDS_LOST_COUNT',
         'PATRON_EXCEEDS_CHECKOUT_COUNT',
         'PATRON_EXCEEDS_FINES',
         'PATRON_EXCEEDS_LONGOVERDUE_COUNT',
+        'PATRON_EXCEEDS_LONG_OVERDUE',
         'CIRC_EXCEEDS_COPY_RANGE',
         'ITEM_DEPOSIT_REQUIRED',
         'ITEM_RENTAL_FEE_REQUIRED',
@@ -1841,6 +1845,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';