added server method and opac code to use new cn browse api
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 22 Jun 2006 21:44:11 +0000 (21:44 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 22 Jun 2006 21:44:11 +0000 (21:44 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@4720 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Search.pm
Open-ILS/src/perlmods/OpenILS/Application/Search/Biblio.pm
Open-ILS/web/opac/common/js/config.js
Open-ILS/web/opac/skin/default/js/cn_browse.js

index 7911182..8c0deb4 100644 (file)
@@ -13,6 +13,7 @@ use OpenILS::Application::Search::Biblio;
 use OpenILS::Application::Search::Authority;
 use OpenILS::Application::Search::Z3950;
 use OpenILS::Application::Search::Zips;
+use OpenILS::Application::Search::CNBrowse;
 
 
 use OpenILS::Application::AppUtils;
index 99a5ab9..509faff 100644 (file)
@@ -1154,6 +1154,17 @@ sub rec_to_mr_rec_descriptors {
 
 
 
+__PACKAGE__->register_method(
+       method => 'copies_created_on',  
+);
+
+
+sub copies_created_on {
+       my( $self, $conn, $auth, $org, $date ) = @_;
+       my $e = new_editor(authtoken=>$auth);
+       return $e->event unless $e->checkauth;
+}
+
 
 1;
 
index 2a8d2b8..abe9c3f 100644 (file)
@@ -298,9 +298,12 @@ var FETCH_ADV_MARC_MRIDS           = "open-ils.search:open-ils.search.biblio.marc:1";
 var FETCH_ADV_ISBN_RIDS                        = "open-ils.search:open-ils.search.biblio.isbn";
 var FETCH_ADV_ISSN_RIDS                        = "open-ils.search:open-ils.search.biblio.issn";
 var FETCH_ADV_TCN_RIDS                 = "open-ils.search:open-ils.search.biblio.tcn";
+/*
 var FETCH_CNBROWSE_TARGET              = 'open-ils.search:open-ils.search.callnumber.browse.target';
 var FETCH_CNBROWSE_PREV                        = 'open-ils.search:open-ils.search.callnumber.browse.page_up';
 var FETCH_CNBROWSE_NEXT                        = 'open-ils.search:open-ils.search.callnumber.browse.page_down';
+*/
+var FETCH_CNBROWSE                             = 'open-ils.search:open-ils.search.callnumber.browse';
 var FETCH_CONTAINERS                           = 'open-ils.actor:open-ils.actor.container.retrieve_by_class';
 var FETCH_CONTAINERS                           = 'open-ils.actor:open-ils.actor.container.retrieve_by_class';
 var CREATE_CONTAINER                           = 'open-ils.actor:open-ils.actor.container.create';
index 4abe7c3..388e7b8 100644 (file)
-var cnBrowseCurrent;
-var cnBrowseTopCn;
-var cnBrowseTopId;
-var cnBrowseBottomCn;
-var cnBrowseBottomId;
-var cnBrowseDepth;
-var cnBrowseCache = {};
-var cnBrowseShowNext = false;
-var cnBrowseShowPrev = false;
-var MAX_CN = 9;
+var cnOffset = 0;
+var cnCount = 9;
+var cnBrowseCN;
+var cnBrowseOrg;
 
 if( findCurrentPage() == CNBROWSE ) {
        attachEvt("common", "run", cnBrowseLoadSearch);
        attachEvt( "common", "locationUpdated", cnBrowseResubmit );
+       attachEvt( "common", "depthChanged", cnBrowseResubmit );
 }
 
+
 function cnBrowseLoadSearch() {
        unHideMe($('cn_browse'));
        cnBrowseGo(getCallnumber(), getLocation(), getDepth());
 }
 
+
 function cnBrowseResubmit() {
        var args = {}
-       args[PARAM_CN] = cnBrowseCurrent;
-       args[PARAM_DEPTH] = getNewSearchDepth();
+       args[PARAM_CN] = cnBrowseCN;
+       args[PARAM_DEPTH] = depthSelGetDepth();
        args[PARAM_LOCATION] = getNewSearchLocation();
        goTo(buildOPACLink(args));
 }
 
+
+
 function cnBrowseGo(cn, org, depth) { 
        if(depth == null) depth = getDepth();
-       cnBrowseDepth = depth;
-       cnBrowseCurrent = cn;
-       var req = new Request( FETCH_CNBROWSE_TARGET, 
-               'org_unit', org, 
-               'depth', cnBrowseDepth, 
-               'label', cnBrowseCurrent,
-               'page_size', MAX_CN );
-       req.callback( cnBrowseDraw );
-       req.send();
 
-       var o = findOrgUnit(getLocation());
-       var d = findOrgDepth(o);
-       var x = 0;
-       while( d > depth ) {
-               o = findOrgUnit(o.parent_ou());
-               d = findOrgDepth(o);
-       }
-       appendClear($('cn_browse_where'), text(o.name()));
-}
+       org = findOrgUnit(org);
 
-function cnBrowseNext() {
-       cnBrowseShowNext = true;
-       if( cnBrowseCache.next )  /* if we have it, show it */
-               cnBrowseClearNext(cnBrowseCache.next);
-}
+       do {
+               var t = findOrgType(org.ou_type());
+               if( t.depth() > depth ) 
+                       org = findOrgUnit(org.parent_ou());
+               else break;
+       } while(true); 
 
-function cnBrowsePrev() {
-       cnBrowseShowPrev = true;
-       if( cnBrowseCache.prev ) 
-               cnBrowseClearPrev(cnBrowseCache.prev);
-}
+       cnBrowseOrg = org;
+       cnBrowseCN = cn;
 
-function cnBrowseGrabNext() {
-       var req = new Request( FETCH_CNBROWSE_NEXT, 
-               'org_unit', getLocation(), 
-               'depth', cnBrowseDepth,
-               'label', cnBrowseBottomCn, 
-               'boundry_id', cnBrowseBottomId,
-               'page_size', MAX_CN );
-       req.callback( cnBrowseCacheMe );
-       req.request.next = true;
-       req.send();
+       _cnBrowseGo( cn, org );
+       appendClear($('cn_browse_where'), text(org.name()));
 }
 
 
-function cnBrowseGrabPrev() {
-       var req = new Request( FETCH_CNBROWSE_PREV,
-               'org_unit', getLocation(), 
-               'depth', cnBrowseDepth,
-               'label', cnBrowseTopCn, 
-               'boundry_id', cnBrowseTopId,
-               'page_size', MAX_CN );
-       req.callback( cnBrowseCacheMe );
-       req.request.prev = true;
+function _cnBrowseGo( cn, org ) {
+       var req = new Request( FETCH_CNBROWSE, cn, org.id(), cnCount, cnOffset );
+       req.callback( cnBrowseDraw );
        req.send();
 }
 
-function cnBrowseClearNext(list) {
-       cnBrowseCache.next = null; 
-       cnBrowseShowNext = false;
-       _cnBrowseDraw(list);
-}
-
-function cnBrowseClearPrev(list) {
-       cnBrowseCache.prev = null; 
-       cnBrowseShowPrev = false;
-       _cnBrowseDraw(list);
+function cnBrowseNext() {
+       cnOffset++;
+       _cnBrowseGo( cnBrowseCN, cnBrowseOrg );
 }
 
-/* cache next and previous calls unless they are 
-needed immediately */
-function cnBrowseCacheMe(r) {
-       var list = r.getResultObject();
-       if( r.next ) {
-               cnBrowseCache.next = list;
-               if( cnBrowseShowNext ) {
-                       cnBrowseClearNext(list);
-               } 
-
-       } else if( r.prev ) {
-               cnBrowseCache.prev = list;
-               if( cnBrowseShowPrev )  {
-                       cnBrowseClearPrev(list);
-               } 
-       }
+function cnBrowsePrev() {
+       cnOffset--;
+       _cnBrowseGo( cnBrowseCN, cnBrowseOrg );
 }
 
 
@@ -147,14 +93,10 @@ function _cnBrowseDraw( list ) {
                currentRow.appendChild(currentTd);
 
                var td = cnTdT.cloneNode(true);
-               var label       = list[idx][0];
-               var lib         = list[idx][1];
-               var record      = list[idx][2];
-               var id          = list[idx][3];
 
-               if( idx == 0 ) { cnBrowseTopCn = label; cnBrowseTopId = id; } 
-               cnBrowseBottomCn = label;
-               cnBrowseBottomId = id;
+               var obj = list[idx];
+               var cn  = obj.cn;
+               var mods = obj.mods;
 
                var cn_td                       = $n(currentTd, 'cn_browse_cn');
                var lib_td                      = $n(currentTd, 'cn_browse_lib');
@@ -162,39 +104,30 @@ function _cnBrowseDraw( list ) {
                var author_td           = $n(currentTd, 'cn_browse_author');
                var pic_td                      = $n(currentTd, 'cn_browse_pic');
 
-               cn_td.appendChild(text(label));
-               lib_td.appendChild(text(findOrgUnit(lib).name()));
-
-               var req = new Request( FETCH_RMODS, record );
-               req.request.title_td            = title_td;
-               req.request.author_td   = author_td;
-               req.request.pic_td              = pic_td;
-               req.callback( cnBrowseDrawTitle );
-               req.send();
+               cn_td.appendChild(text(cn.label()));
+               lib_td.appendChild(text(findOrgUnit(cn.owning_lib()).name()));
+               cnBrowseDrawTitle(mods, title_td, author_td, pic_td);
 
-       
                if( counter++ % 3 == 0 ) {
                        counter = 1;
                        currentRow = cnRowT.cloneNode(true);
                        cnTbody.appendChild(currentRow);
                }
        }
-       cnBrowseGrabNext();
-       cnBrowseGrabPrev();
 }
 
-function cnBrowseDrawTitle(r) {
-       var mods = r.getResultObject();
 
-       buildTitleDetailLink(mods, r.title_td); 
-       buildSearchLink(STYPE_AUTHOR, mods.author(), r.author_td);
-       r.pic_td.setAttribute("src", buildISBNSrc(cleanISBN(mods.isbn())));
+function cnBrowseDrawTitle(mods, title_td, author_td, pic_td) {
+
+       buildTitleDetailLink(mods, title_td); 
+       buildSearchLink(STYPE_AUTHOR, mods.author(), author_td);
+       pic_td.setAttribute("src", buildISBNSrc(cleanISBN(mods.isbn())));
 
        var args = {};
        args.page = RDETAIL;
        args[PARAM_OFFSET] = 0;
        args[PARAM_RID] = mods.doc_id();
        args[PARAM_MRID] = 0;
-       r.pic_td.parentNode.setAttribute("href", buildOPACLink(args));
+       pic_td.parentNode.setAttribute("href", buildOPACLink(args));
 }