adding
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 19 Aug 2005 19:26:30 +0000 (19:26 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 19 Aug 2005 19:26:30 +0000 (19:26 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1680 dcc99617-32d9-48b4-a31d-7c20da2025e4

25 files changed:
Open-ILS/web/opac/skin/default/css/layout.css [new file with mode: 0644]
Open-ILS/web/opac/skin/default/js/config.js [new file with mode: 0644]
Open-ILS/web/opac/skin/default/js/mresult.js [new file with mode: 0644]
Open-ILS/web/opac/skin/default/js/result_common.js [new file with mode: 0644]
Open-ILS/web/opac/skin/default/js/rresult.js [new file with mode: 0644]
Open-ILS/web/opac/skin/default/js/search_bar.js [new file with mode: 0644]
Open-ILS/web/opac/skin/default/js/sidebar.js [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/advanced.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/altcanvas.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/css_common.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/header.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/index.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/js_common.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/login.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/logo.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/mresult.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/myopac.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/orgtree.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/rdetail.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/result_common.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/result_table.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/rresult.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/searchbar.xml [new file with mode: 0644]
Open-ILS/web/opac/skin/default/xml/sidebar.xml [new file with mode: 0644]
Open-ILS/web/opac/theme/default/css/colors.css [new file with mode: 0644]

diff --git a/Open-ILS/web/opac/skin/default/css/layout.css b/Open-ILS/web/opac/skin/default/css/layout.css
new file mode 100644 (file)
index 0000000..fbece6e
--- /dev/null
@@ -0,0 +1,72 @@
+.main_header   { width: 100%; }
+.space                 { padding-right:5px; }
+.vert_space            { padding-top: 82px; width: 100%;}
+.right                 { position:absolute; right: 0px; }
+.hide_me                       {display:none; visibility: hidden;}
+
+/* ---------------------------------------------------------------------- */
+.canvas { float:right; width: 80%; text-align: left;}
+#loading_div { width: 100%;}
+
+.logo { height: 80px; width: 200px; position: absolute; top: 0px; left: 0px; }
+
+.org_tree { height: 500px; padding-left: 2px; padding-right: 2px;
+                                  overflow:-moz-scrollbars-vertical; overflow-y:scroll; overflow-x:hidden; }            
+
+.org_link { padding-right: 15px; }
+#org_link_container { margin-bottom: 5px; padding-left: 4px; padding-bottom: 3px; padding-top: 3px; width: 100%; }
+
+/* ---------------------------------------------------------------------- */
+.sidebar_div { float: left; width: 19%; }
+.side_bar_item { padding-left: 15px; padding-right: 10px; padding-top: 5px; padding-bottom: 5px; }
+.sidebar_chunk {margin-bottom: 2px;}
+.sidebar_extra_item { padding: 2px; }
+.sidebar_header { margin-top: 10px; padding-left: 3px; }
+
+/* ---------------------------------------------------------------------- */
+#searchbar { position: absolute; text-align: right; top: 2px; right: 3px; }
+
+.searchbar_item { text-align: center; padding: 3px; } 
+
+.searchbar_tag { text-align: right;  
+       padding-left: 5px; padding-right: 5px; padding-bottom: 3px; } 
+
+#searchbar_main { text-align: right; 
+       padding-top: 2px; padding-bottom: 3px; padding-right: 2px; padding-left: 3px; }
+
+.searchbar_extra_td { padding-top: 10px; }
+#searchbar_table { border-collapse: collapse; }
+
+/* ---------------------------------------------------------------------- */
+#login_box { width: 60%; padding: 5px;}
+
+.login_text { margin-left: 8px; }
+
+/* ---------------------------------------------------------------------- */
+#result_table_div { text-align: left; width: 100%; }
+
+#search_nav_links { width: 100%; }
+#result_info_box { text-align: left; }
+#next_prev_links { text-align: right; padding-left: 2px; padding-right: 2px;}
+#goto_page_links { text-align: left; padding-left: 2px; padding-right: 2px;}
+
+#next_prev_links_dead {padding-left: 5px; padding-right: 5px;}
+
+#res_table { width: 100%; }
+
+.result_table_pic_cell { width: 43px;}
+.result_table_pic { height: 50px; width: 40px; }
+.result_table_pic_header { width: 43px; }
+
+.result_table_row { text-align: left; }
+.result_table_subtable { width: 100%; border-collapse: collapse;}
+.result_table_subtbody { height: 100%; width: 100%; }
+.result_table_title_cell { text-align: left; }
+
+.copy_count_cell { width: 8%; text-align: center; padding: 0px; margin: 0px;}
+
+.search_page_nav_link { margin-right: 5px; }
+
+/* ---------------------------------------------------------------------- */
+
+
diff --git a/Open-ILS/web/opac/skin/default/js/config.js b/Open-ILS/web/opac/skin/default/js/config.js
new file mode 100644 (file)
index 0000000..9f38deb
--- /dev/null
@@ -0,0 +1,105 @@
+/* ---------------------------------------------------------------------------- */
+/* Set up ID's, CSS, etc. */
+/* ---------------------------------------------------------------------------- */
+config.ids.common.top_logo                     = "top_left_logo";
+
+config.css.color_1 = "color_1";
+config.css.color_2 = "color_2";
+config.css.color_3 = "color_3";
+
+/* result */
+config.ids.result = {};
+config.css.result = {};
+config.names.result = {};
+config.ids.result.offset_start = "offset_start";
+config.ids.result.offset_end           = "offset_end";
+config.ids.result.result_count = "result_count";
+config.ids.result.next_link            = 'next_link';
+config.ids.result.prev_link            = 'prev_link';
+config.ids.result.home_link            = 'search_home_link';
+config.ids.result.end_link                     = 'end_link';
+config.ids.result.main_table           = 'result_table';
+config.ids.result.row_template = 'result_table_template';
+config.ids.result.num_pages            = 'num_pages';
+config.ids.result.current_page = 'current_page';
+config.css.result.nav_active           = "nav_link_active";
+config.ids.result.top_div                      = "result_table_div";
+config.ids.result.nav_links            = "search_nav_links";
+config.ids.result.info                         = "result_info_div";
+config.css.result.cc_cell_even = "copy_count_cell_even";
+
+config.names.result.item_jacket        = "item_jacket";
+config.names.result.item_title = "item_title";
+config.names.result.item_author        = "item_author";
+config.names.result.counts_row = "counts_row";
+config.names.result.count_cell = "copy_count_cell";
+
+/* login page */
+config.ids.login = {};
+config.css.login = {};
+config.ids.login.box                   = "login_box";
+config.ids.login.username      = "login_username";
+config.ids.login.password      = "login_password";
+config.ids.login.button                = "login_button";
+config.ids.login.cancel                = "login_cancel_button";
+
+
+/* searchbar ids and css */
+config.ids.searchbar = {};
+config.css.searchbar = {};
+config.ids.searchbar.text                              = 'search_box'; 
+config.ids.searchbar.submit                    = 'search_submit';      
+config.ids.searchbar.type_selector     = 'search_type_selector';
+config.ids.searchbar.depth_selector    = 'depth_selector';
+config.ids.searchbar.form_selector     = 'form_selector';
+config.ids.searchbar.extra_row         = 'searchbar_extra';
+config.ids.searchbar.main_row                  = 'searchbar_main_row';
+config.ids.searchbar.table                             = 'searchbar_table';
+config.ids.searchbar.tag                               = 'search_tag_link';
+config.ids.searchbar.tag_on                    = 'searchbar_tag_on';
+config.ids.searchbar.tag_off                   = 'searchbar_tag_off';
+config.ids.searchbar.location_tag      = 'search_location_tag_link';
+
+
+/*  sidebar */
+config.ids.sidebar = {};
+config.css.sidebar = {};
+config.names.sidebar = {};
+config.css.sidebar.item = {};
+config.ids.sidebar.home                                = 'home_link_div';
+config.ids.sidebar.advanced            = 'advanced_link_div';
+config.ids.sidebar.myopac                      = 'myopac_link_div';
+config.ids.sidebar.prefs                       = 'prefs_link_div';
+config.ids.sidebar.mresult                     = 'mresult_link_div';
+config.ids.sidebar.rresult                     = 'result_link_div';
+config.ids.sidebar.login                       = 'login_link';
+config.ids.sidebar.logout                      = 'logout_link';
+config.ids.sidebar.logoutbox           = 'logout_link_div';
+config.ids.sidebar.loginbox            = 'login_link_div';
+config.ids.sidebar.logged_in_as        = 'logged_in_as_div';
+config.ids.sidebar.username_dest       = 'username_dest';
+config.ids.sidebar.subject                     = 'subject_sidebar';
+config.ids.sidebar.subject_item        = 'subject_item';
+config.ids.sidebar.author                      = 'author_sidebar';
+config.ids.sidebar.author_item = 'author_item';
+config.ids.sidebar.series                      = 'series_sidebar';
+config.ids.sidebar.series_item = 'series_item';
+
+config.ids.sidebar.home_link           = 'home_link'
+config.ids.sidebar.advanced_link       = 'advanced_link'
+config.ids.sidebar.myopac_link = 'myopac_link'
+
+config.names.sidebar.subject_item      = 'subject_item';
+config.names.sidebar.author_item       = 'author_item';
+config.names.sidebar.series_item       = 'series_item';
+
+
+/* ---------------------------------------------------------------------------- */
+/* These are pages that may replace the canvas */
+/* ---------------------------------------------------------------------------- */
+config.ids.altcanvas.login             = config.ids.login.box;
+config.ids.altcanvas.org_tree   = config.ids.common.org_container;
+
+
+
+
diff --git a/Open-ILS/web/opac/skin/default/js/mresult.js b/Open-ILS/web/opac/skin/default/js/mresult.js
new file mode 100644 (file)
index 0000000..e8c28b2
--- /dev/null
@@ -0,0 +1,109 @@
+var records = {};
+var ranks = {};
+var table;
+var rowtemplate;
+var idsCookie = new cookieObject("ids", 1, "/", COOKIE_IDS);
+
+G.evt.common.unload.push(mresultUnload);
+G.evt.mresult.run.push(mresultDoSearch);
+G.evt.mresult.idsReceived.push(mresultSetRecords, mresultCollectRecords); 
+
+function mresultUnload() { removeChildren(table); table = null;}
+
+function mresultDoSearch() {
+
+       table = G.ui.result.main_table;
+
+       hideMe(G.ui.result.row_template);
+       while( table.parentNode.rows.length <= getDisplayCount() )  /* add an extra row so IE and safari won't complain */
+               hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));
+
+       if(getOffset() == 0 || getHitCount() == null ) {
+       //      mresultGetCount(); 
+               mresultCollectIds(FETCH_MRIDS_FULL); 
+       } else { 
+               runEvt('result', 'hitCountReceived');
+               mresultCollectIds(FETCH_MRIDS);
+       }
+}
+
+function mresultGetCount() {
+       var form = (getForm() == "all") ? null : getForm();
+       var req = new Request(FETCH_MRCOUNT, 
+                       getStype(), getTerm(), getLocation(), getDepth(), form );
+       req.callback(mresultHandleCount);
+       req.send();
+}
+
+function mresultHandleCount(r) {
+       HITCOUNT = parseInt(r.getResultObject());
+       runEvt('result', 'hitCountReceived');
+}
+
+
+/* performs the actual search */
+function mresultCollectIds(method) {
+
+       if(getOffset() == 0) {
+               idsCookie.put(COOKIE_IDS,"");
+               idsCookie.write();
+
+       } else {
+               var c = JSON2js(idsCookie.get(COOKIE_IDS));
+               if(c && c.recs) { records = c.recs; ranks = c.ranks; } 
+       }
+
+       if(     getOffset() != 0 && 
+                       records[getOffset()] != null && 
+                       records[resultFinalPageIndex()] != null) {
+                       mresultCollectRecords(); 
+
+       } else {
+
+               var req = new Request(method, getStype(), getTerm(), 
+                       getLocation(), getDepth(), getDisplayCount() * 10, getOffset(), getForm() );
+               req.callback(mresultHandleMRIds);
+               req.send();
+       }
+}
+
+function mresultHandleMRIds(r) {
+       var res = r.getResultObject();
+
+       if(res.count != null) {
+               HITCOUNT = res.count;
+               runEvt('result', 'hitCountReceived');
+       } 
+       runEvt('mresult', 'idsReceived', res.ids);
+}
+
+function mresultSetRecords(idstruct) {
+       var o = getOffset();
+       for( var x = o; x < idstruct.length + o; x++ ) {
+               if(idstruct[x-o] == null) break;
+               records[x] = parseInt(idstruct[x - o][0]);
+               ranks[x] = parseFloat(idstruct[x - o][1]);
+       }
+       idsCookie.put(COOKIE_IDS, js2JSON({ recs: records, ranks : ranks }) );
+       idsCookie.write();
+}
+
+function mresultCollectRecords() {
+       var i = 0;
+       for( var x = getOffset(); x!= getDisplayCount() + getOffset(); x++ ) {
+               if(isNull(records[x])) break;
+               var req = new Request(FETCH_MRMODS, records[x]);
+               req.request.userdata = i++;
+               req.callback(mresultHandleMods);
+               req.send();
+       }
+}
+
+function mresultHandleMods(r) {
+       var rec = r.getResultObject();
+       var pagePosition = r.userdata;
+       runEvt('result', 'recordReceived', rec, pagePosition, true);
+       resultCollectCopyCounts(rec, pagePosition, FETCH_MR_COPY_COUNTS);
+}
+
+
diff --git a/Open-ILS/web/opac/skin/default/js/result_common.js b/Open-ILS/web/opac/skin/default/js/result_common.js
new file mode 100644 (file)
index 0000000..c14baf6
--- /dev/null
@@ -0,0 +1,241 @@
+var subjectCache = {};
+var authorCache = {};
+var seriesCache = {};
+
+var recordsHandled = 0;
+var recordsCache = [];
+
+/* set up the event handlers */
+G.evt.result.hitCountReceived.push(resultSetHitInfo, resultPaginate);
+G.evt.result.recordReceived.push(resultDisplayRecord, resultAddCopyCounts);
+G.evt.result.copyCountsReceived.push(resultDisplayCopyCounts);
+G.evt.result.allRecordsReceived.push(resultBuildCaches, resultDrawSubjects, resultDrawAuthors, resultDrawSeries);
+
+
+/* returns the last 'index' postion ocurring in this page */
+function resultFinalPageIndex() {
+       if(getHitCount() < (getOffset() + getDisplayCount())) 
+               return getHitCount() - 1;
+       return getOffset() + getDisplayCount() - 1;
+}
+
+/* set the search result info, number of hits, which results we're 
+       displaying, links to the next/prev pages, etc. */
+function resultSetHitInfo() { 
+       var c;  
+       if( getDisplayCount() > (getHitCount() - getOffset()))  c = getHitCount();
+       else c = getDisplayCount() + getOffset();
+
+       var pages = getHitCount() / getDisplayCount();
+       if(pages % 1) pages = parseInt(pages) + 1;
+
+       G.ui.result.current_page.appendChild(text( (getOffset()/getDisplayCount()) + 1));
+       G.ui.result.num_pages.appendChild(text(pages + ")")); /* the ) is dumb */
+
+       G.ui.result.offset_start.appendChild(text(getOffset() + 1));
+       G.ui.result.offset_end.appendChild(text(c));
+       G.ui.result.result_count.appendChild(text(getHitCount()));
+       unHideMe(G.ui.result.info);
+}
+
+
+function resultPaginate() {
+       var o = getOffset();
+
+       if( !((o + getDisplayCount()) >= getHitCount()) ) {
+
+               var args = {};
+               args[PARAM_OFFSET] = o + getDisplayCount();
+               G.ui.result.next_link.setAttribute("href", buildOPACLink(args)); 
+               addCSSClass(G.ui.result.next_link, config.css.result.nav_active);
+
+               args[PARAM_OFFSET] = getHitCount() - (getHitCount() % getDisplayCount());
+               G.ui.result.end_link.setAttribute("href", buildOPACLink(args)); 
+               addCSSClass(G.ui.result.end_link, config.css.result.nav_active);
+       }
+
+       if( o > 0 ) {
+
+               var args = {};
+               args[PARAM_OFFSET] = o - getDisplayCount();
+               G.ui.result.prev_link.setAttribute( "href", buildOPACLink(args)); 
+               addCSSClass(G.ui.result.prev_link, config.css.result.nav_active);
+
+               args[PARAM_OFFSET] = 0;
+               G.ui.result.home_link.setAttribute( "href", buildOPACLink(args)); 
+               addCSSClass(G.ui.result.home_link, config.css.result.nav_active);
+       }
+}
+
+
+/* display the record info in the record display table 'pos' is the 
+               zero based position the record should have in the display table */
+function resultDisplayRecord(rec, pos, is_mr) {
+
+       if(rec == null) rec = new mvr(); /* so the page won't die if there was an error */
+       recordsHandled++;
+       recordsCache.push(rec);
+
+       /* hide the 'now loading...' message */
+       hideMe(G.ui.common.loading);
+
+       var r = table.rows[pos];
+
+       var pic = findNodeByName(r, config.names.result.item_jacket);
+       pic.setAttribute("src", buildISBNSrc(cleanISBN(rec.isbn())));
+
+       var title_link = findNodeByName(r, config.names.result.item_title);
+       var author_link = findNodeByName(r, config.names.result.item_author);
+
+       if( is_mr )  buildTitleLink(rec, title_link); 
+       else  buildTitleDetailLink(rec, title_link); 
+       buildSearchLink(STYPE_AUTHOR, rec.author(), author_link);
+
+       findNodeByName(r, "result_table_title_cell").width = 
+               100 - (orgNodeTrail(findOrgUnit(getLocation())).length * 8) + "%";
+
+       unHideMe(r);
+
+       if(resultPageIsDone()) 
+               runEvt('result', 'allRecordsReceived', recordsCache);
+}
+
+function resultPageIsDone(pos) {
+       return (recordsHandled == getDisplayCount() 
+               || recordsHandled + getOffset() == getHitCount());
+}
+
+/* -------------------------------------------------------------------- */
+/* dynamically add the copy count rows based on the org type 'countsrow' 
+       is the row into which we will add TD's to hold the copy counts 
+       This code generates copy count cells with an id of
+       'copy_count_cell_<depth>_<pagePosition>'  */
+function resultAddCopyCounts(rec, pagePosition) {
+
+       var r = table.rows[pagePosition];
+       var countsrow = findNodeByName(r, config.names.result.counts_row );
+       var ccell = findNodeByName(countsrow, config.names.result.count_cell);
+
+       var nodes = orgNodeTrail(findOrgUnit(getLocation()));
+       var node = nodes[0];
+       var type = findOrgType(node.ou_type());
+       ccell.id = "copy_count_cell_" + type.depth() + "_" + pagePosition;
+       ccell.title = type.opac_label();
+       addCSSClass(ccell, config.css.result.cc_cell_even);
+
+       var lastcell = ccell;
+
+       if(nodes[1]) {
+
+               var x = 1;
+               var d = findOrgDepth(nodes[1]);
+               var d2 = findOrgDepth(nodes[nodes.length -1]);
+
+               for( var i = d; i <= d2 ; i++ ) {
+       
+                       ccell = ccell.cloneNode(true);
+
+                       if((i % 2))
+                               removeCSSClass(ccell, "copy_count_cell_even");
+                       else
+                               addCSSClass(ccell, "copy_count_cell_even");
+
+                       var node = nodes[x++];
+                       var type = findOrgType(node.ou_type());
+       
+                       ccell.id = "copy_count_cell_" + type.depth() + "_" + pagePosition;
+                       ccell.title = type.opac_label();
+                       countsrow.insertBefore(ccell, lastcell);
+                       lastcell = ccell;
+               }
+       }
+}
+
+/* collect copy counts for a record using method 'methodName' */
+function resultCollectCopyCounts(rec, pagePosition, methodName) {
+       if(rec == null || rec.doc_id() == null) return;
+       var req = new Request(methodName, getLocation(), rec.doc_id() );
+       req.request.userdata = [ rec, pagePosition ];
+       req.callback(resultHandleCopyCounts);
+       req.send();
+}
+
+function resultHandleCopyCounts(r) {
+       runEvt('result', 'copyCountsReceived', r.userdata[0], r.userdata[1], r.getResultObject()); 
+}
+
+
+/* display the collected copy counts */
+function resultDisplayCopyCounts(rec, pagePosition, copy_counts) {
+       if(copy_counts == null || rec == null) return;
+       var i = 0;
+       while(copy_counts[i] != null) {
+               var cell = getId("copy_count_cell_" + i +"_" + pagePosition);
+               cell.appendChild(text(copy_counts[i].available + " / " + copy_counts[i].count));
+               i++;
+       }
+}
+
+
+/* captures extraneous info from each record */
+function resultBuildCaches(records) {
+       for( var r in records ) {
+               var rec = records[r];
+               for( var s in rec.subject() ) 
+                       subjectCache[s] == null ? subjectCache[s] = 1 : subjectCache[s]++;
+               authorCache[rec.author()] = 1;
+               for( var s in rec.series() ) seriesCache[rec.series()[s]] = 1;
+       }
+}
+
+
+function resultSortSubjects(a, b) { return -(a.count - b.count); } /* sort in reverse */
+function resultDrawSubjects() {
+
+       var subjs = [];
+       for( var s in subjectCache )
+               subjs.push( { sub : s, count : subjectCache[s] } );
+       subjs.sort(resultSortSubjects);
+
+       var ss = [];
+       for( var s in subjs ) ss.push(subjs[s].sub);
+       resultDrawSidebarStuff(STYPE_SUBJECT, G.ui.sidebar.subject_item,  
+               config.names.sidebar.subject_item, ss, G.ui.sidebar.subject);
+}
+
+function resultDrawAuthors() {
+       var auths = new Array();
+       for( var s in authorCache ) auths.push(s);
+       resultDrawSidebarStuff(STYPE_AUTHOR, G.ui.sidebar.author_item,  
+               config.names.sidebar.author_item, auths.sort(), G.ui.sidebar.author);
+}
+
+function resultDrawSeries() {
+       var sers = new Array();
+       for( var s in seriesCache ) sers.push(s);
+       resultDrawSidebarStuff(STYPE_SERIES, G.ui.sidebar.series_item,  
+               config.names.sidebar.series_item, sers.sort(), G.ui.sidebar.series);
+}
+
+/* search type, template node, href link name, array of text, node to unhide */
+function resultDrawSidebarStuff(stype, node, linkname, items, wrapperNode) {
+       var parent = node.parentNode;
+       var template = parent.removeChild(node);
+       var x = 0;
+       var newnode = template.cloneNode(true);
+       var found = false;
+       for( var i in items ) {
+               if(isNull(items[i])) continue;
+               if(x++ > 7) break;
+               buildSearchLink(stype, items[i], findNodeByName(newnode, linkname), 100);
+               parent.appendChild(newnode);
+               newnode = template.cloneNode(true);
+               found = true;
+       }
+       if(found) unHideMe(wrapperNode);
+}
+
+
+
+
+
diff --git a/Open-ILS/web/opac/skin/default/js/rresult.js b/Open-ILS/web/opac/skin/default/js/rresult.js
new file mode 100644 (file)
index 0000000..a50f3dc
--- /dev/null
@@ -0,0 +1,49 @@
+var records = new Array();
+var table;
+var rowtemplate;
+
+function rresultUnload() { removeChildren(table); table = null;}
+
+G.evt.common.unload.push(rresultUnload);
+G.evt.rresult.run.push(rresultDoSearch);
+G.evt.rresult.idsReceived.push(rresultCollectRecords); 
+
+function rresultDoSearch() {
+       table = G.ui.result.main_table;
+       hideMe(G.ui.result.row_template);
+       while( table.parentNode.rows.length < getDisplayCount() ) 
+               hideMe(table.appendChild(G.ui.result.row_template.cloneNode(true)));
+       rresultCollectIds();
+}
+
+function rresultCollectIds() {
+       var form = (getForm() == "all") ? null : getForm();
+       var req = new Request(FETCH_RIDS, getMrid(), form );
+       req.callback( rresultHandleRIds );
+       req.send();
+}
+
+function rresultHandleRIds(r) {
+       var res = r.getResultObject();
+       HITCOUNT = parseInt(res.count);
+       runEvt('result', 'hitCountReceived');
+       runEvt('rresult', 'idsReceived', res.ids);
+}
+
+function rresultCollectRecords(ids) {
+       var x = 0;
+       for( var i = getOffset(); i!= getDisplayCount() + getOffset(); i++ ) {
+               if(ids[i] == null) break;
+               var req = new Request(FETCH_RMODS, parseInt(ids[i]));
+               req.callback(rresultHandleMods);
+               req.request.userdata = x++;
+               req.send();
+       }
+}
+
+function rresultHandleMods(r) {
+       var rec = r.getResultObject();
+       runEvt('result', 'recordReceived', rec, r.userdata, false);
+       resultCollectCopyCounts(rec, r.userdata, FETCH_R_COPY_COUNTS);
+}
+
diff --git a/Open-ILS/web/opac/skin/default/js/search_bar.js b/Open-ILS/web/opac/skin/default/js/search_bar.js
new file mode 100644 (file)
index 0000000..0702fbb
--- /dev/null
@@ -0,0 +1,78 @@
+var searchBarExpanded = false;
+/* our search selector boxes */
+var _ts, _fs, _ds;
+
+
+G.evt.common.init.push(searchBarInit);
+
+
+/* if set by the org selector, this will be the location used the
+       next time the search is submitted */
+var newSearchLocation; 
+
+function searchBarInit() {
+
+       _ts = G.ui.searchbar.type_selector;
+       _ds = G.ui.searchbar.depth_selector;
+       _fs = G.ui.searchbar.form_selector;
+
+       G.ui.searchbar.text.focus();
+       G.ui.searchbar.text.onkeydown = 
+               function(evt) {if(userPressedEnter(evt)) searchBarSubmit();};
+
+       G.ui.searchbar.submit.onclick = searchBarSubmit;
+       G.ui.searchbar.tag.onclick = searchBarToggle;
+
+       /* set up the selector objects, etc */
+       G.ui.searchbar.text.value = (getTerm() != null) ? getTerm() : "";
+       setSelector(_ts,        getStype());
+       setSelector(_ds,        getDepth());
+       setSelector(_fs,        getForm());
+       G.ui.searchbar.location_tag.onclick = _opacHandleLocationTagClick;
+}
+
+function _opacHandleLocationTagClick() {
+       orgTreeSelector.openTo(  
+               (newSearchLocation != null) ? parseInt(newSearchLocation) : getLocation(), true );
+       swapCanvas(G.ui.common.org_container);
+}
+
+function updateLoc(location, depth) {
+       if( location != null )
+               newSearchLocation = location;
+       if( depth != null ) 
+               setSelector(G.ui.searchbar.depth_selector, depth);
+}
+function searchBarSubmit() {
+
+       var text = G.ui.searchbar.text.value;
+       if(!text || text == "") return;
+
+
+       var args = {};
+       args.page                               = MRESULT;
+       args[PARAM_OFFSET]      = 0;
+       args[PARAM_TERM]                = text;
+       args[PARAM_STYPE]               = _ts.options[_ts.selectedIndex].value;
+       args[PARAM_LOCATION] = newSearchLocation;
+       args[PARAM_DEPTH]               = parseInt(_ds.options[_ds.selectedIndex].value);
+       args[PARAM_FORM]                = _fs.options[_fs.selectedIndex].value;
+
+       goTo(buildOPACLink(args));
+}
+
+
+function searchBarToggle() {
+       if(searchBarExpanded) {
+               hideMe(G.ui.searchbar.extra_row);
+               hideMe(G.ui.searchbar.tag_on);
+               unHideMe(G.ui.searchbar.tag_off);
+       } else {
+               unHideMe(G.ui.searchbar.extra_row);
+               hideMe(G.ui.searchbar.tag_off);
+               unHideMe(G.ui.searchbar.tag_on);
+       }
+       searchBarExpanded = !searchBarExpanded;
+}
+
+
diff --git a/Open-ILS/web/opac/skin/default/js/sidebar.js b/Open-ILS/web/opac/skin/default/js/sidebar.js
new file mode 100644 (file)
index 0000000..dae282c
--- /dev/null
@@ -0,0 +1,63 @@
+/* set up the colors in the sidebar 
+       Disables/Enables certain components based on various state data */
+
+attachEvt("common", "init", initSideBar);
+attachEvt("common", "init", setSidebarLinks);
+
+function initSideBar() {
+
+       for( var p in G.ui.sidebar ) 
+               removeCSSClass(p, config.css.color_2);
+
+       var page = findCurrentPage();
+       unHideMe(G.ui.sidebar[page]);
+       addCSSClass(G.ui.sidebar[page], config.css.color_2);
+
+       /* if we're logged in, show it and replace the Login link with the Logout link */
+       if(grabUser()) {
+               G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));
+               unHideMe(G.ui.sidebar.logoutbox);
+               unHideMe(G.ui.sidebar.logged_in_as);
+               hideMe(G.ui.sidebar.loginbox);
+       }
+
+       if(G.ui.sidebar.login) G.ui.sidebar.login.onclick = initLogin;
+       if(G.ui.sidebar.logout) G.ui.sidebar.logout.onclick = doLogout; 
+       G.ui.common.top_logo.setAttribute("src", buildImageLink(config.images.logo));
+}
+
+/* sets up the login ui components */
+var loginBoxVisible = false;
+function initLogin() {
+
+       var loginDance = function() {
+               if(doLogin()) {
+                       showCanvas();
+                       G.ui.sidebar.username_dest.appendChild(text(G.user.usrname()));
+                       unHideMe(G.ui.sidebar.logoutbox);
+                       unHideMe(G.ui.sidebar.logged_in_as);
+                       hideMe(G.ui.sidebar.loginbox);
+               }
+       }
+
+       G.ui.login.button.onclick = loginDance;
+       G.ui.login.username.onkeydown = 
+               function(evt) {if(userPressedEnter(evt)) loginDance();};
+       G.ui.login.password.onkeydown = 
+               function(evt) {if(userPressedEnter(evt)) loginDance();};
+
+       if(loginBoxVisible) {
+               showCanvas();
+       } else {
+               swapCanvas(G.ui.login.box);
+               G.ui.login.username.focus();
+       }
+       loginBoxVisible = !loginBoxVisible;
+       G.ui.login.cancel.onclick = showCanvas;
+}
+
+function setSidebarLinks() {
+       G.ui.sidebar.home_link.setAttribute("href", buildOPACLink({page:HOME}));
+       G.ui.sidebar.advanced_link.setAttribute("href", buildOPACLink({page:ADVANCED}));
+       G.ui.sidebar.myopac_link.setAttribute("href", buildOPACLink({page:MYOPAC}, false, true));
+}
diff --git a/Open-ILS/web/opac/skin/default/xml/advanced.xml b/Open-ILS/web/opac/skin/default/xml/advanced.xml
new file mode 100644 (file)
index 0000000..9dee9ec
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<!-- Advanced search page -->
+
+<html xmlns="http://www.w3.org/1999/xhtml" 
+       xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" lang="en">
+
+       <head>
+               <title>Evergreen: Advanced Search</title>
+               <xi:include href="css_common.xml#xpointer(//link)"/>
+               <xi:include href="js_common.xml#xpointer(//script)"/>
+       </head>
+
+       <body onload="init();">
+               <xi:include href="header.xml"/> 
+               <div id='canvas' class='canvas'>
+                       <xi:include href="altcanvas.xml"/>
+                       <div id='canvas_main'>Advanced Search Goes Here</div>
+               </div>
+       </body>
+
+</html>
diff --git a/Open-ILS/web/opac/skin/default/xml/altcanvas.xml b/Open-ILS/web/opac/skin/default/xml/altcanvas.xml
new file mode 100644 (file)
index 0000000..64709c9
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version='1.0'?>
+
+<!-- These are the UI components that may be needed on any given page.  The must be
+       set to class += 'hide_me' by default -->
+
+<div id='not_the_canvas' xmlns:xi="http://www.w3.org/2001/XInclude">
+
+       <!-- the login page -->
+       <xi:include href="login.xml"/> 
+
+       <!-- The org tree -->
+       <xi:include href="orgtree.xml"/> 
+
+</div>
diff --git a/Open-ILS/web/opac/skin/default/xml/css_common.xml b/Open-ILS/web/opac/skin/default/xml/css_common.xml
new file mode 100644 (file)
index 0000000..6611e27
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>
+
+<!-- CSS shared across pages goes here --> 
+
+<css>
+
+       <link type='text/css' rel='stylesheet' href='../css/layout.css'/>
+       <link type='text/css' rel='stylesheet' href='../../../common/css/dtree.css'/>
+
+       <!-- Our font CSS's -->
+       <link type='text/css' rel='stylesheet'                                  
+               href='../../../common/css/mediumfont.css' csstype='font'/>
+
+       <link type='text/css' rel='alternate stylesheet'        
+               href='../../../common/css/smallfont.css' title='Small Fonts' csstype='font'/>
+
+       <link type='text/css' rel='alternate stylesheet'        
+               href='../../../common/css/largefont.css' title='Large Fonts' csstype='font'/>
+
+       <!-- Our colors -->
+       <link type='text/css' rel="stylesheet" href="../../../theme/default/css/colors.css"  
+               name='default_colors' csstype='color'/>
+
+       <link type='text/css' rel="alternate stylesheet" href="../../../theme/blackonwhite/css/colors.css" 
+               title='Color Test' name='color_test' csstype="color" />
+
+</css>
diff --git a/Open-ILS/web/opac/skin/default/xml/header.xml b/Open-ILS/web/opac/skin/default/xml/header.xml
new file mode 100644 (file)
index 0000000..2e48e0e
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version='1.0'?>
+
+<div xmlns:xi="http://www.w3.org/2001/XInclude">
+       <xi:include href="logo.xml"/>
+       <xi:include href="searchbar.xml"/> 
+       <div class="vert_space"> </div>
+       <xi:include href="sidebar.xml"/> 
+</div>
diff --git a/Open-ILS/web/opac/skin/default/xml/index.xml b/Open-ILS/web/opac/skin/default/xml/index.xml
new file mode 100644 (file)
index 0000000..5efbd20
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude">
+
+       <head>
+               <title>Evergreen: Home</title>
+               <xi:include href="css_common.xml#xpointer(//link)"/>
+               <xi:include href="js_common.xml#xpointer(//script)"/>
+       </head>
+
+       <body onload="init();">
+               <xi:include href="header.xml"/> 
+
+               <div id='canvas' class='canvas'>
+                       <xi:include href="altcanvas.xml"/>
+                       <div id='canvas_main'>Home is here, show something interesting...</div>
+               </div>
+
+       </body>
+
+</html>
diff --git a/Open-ILS/web/opac/skin/default/xml/js_common.xml b/Open-ILS/web/opac/skin/default/xml/js_common.xml
new file mode 100644 (file)
index 0000000..0d6c420
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+
+<!-- Javascript shared across all pages -->
+
+<div xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" lang="en">
+       <script language='javascript' src='../../../common/js/utils.js'> </script>
+       <script language='javascript' src='../../../common/js//config.js'> </script>
+       <script language='javascript' src='../../../common/js/CGI.js'> </script>
+       <script language='javascript' src='../../../common/js/Cookie.js'> </script>
+       <script language='javascript' src='../../../common/js/md5.js'> </script>
+
+       <script language='javascript' src='../../../common/js/dtree.js'> </script>
+
+       <script language='javascript' src='../../../common/js/JSON.js'> </script>
+       <script language='javascript' src='../../../common/js/fmcore.js'> </script>
+       <script language='javascript' src='../../../common/js/fmgen.js'> </script>
+       <script language='javascript' src='../../../common/js/OrgTree.js'> </script>
+       <script language='javascript' src='../../../common/js/RemoteRequest.js'> </script>
+       <script language='javascript' src='../../../common/js/opac_utils.js'> </script>
+       <script language='javascript' src='../../../common/js/init.js'> </script>
+       <script language='javascript' src='../../../common/js/added_content.js'> </script>
+
+       <!-- our config settings -->
+       <script language='javascript' src='../js/config.js'> </script>
+</div>
+
diff --git a/Open-ILS/web/opac/skin/default/xml/login.xml b/Open-ILS/web/opac/skin/default/xml/login.xml
new file mode 100644 (file)
index 0000000..6ced600
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+
+<div id='login_box' class='hide_me color_1'>
+
+       <div class='login_text'>
+               <span> Login in with your username and password. </span>
+       </div>
+
+       <br/>
+       
+       <div>
+               <span class='login_text'><input id='login_username' type='text' size='16'> </input></span>
+               <span class='login_text'>Username</span>
+       </div>
+
+       <br/>
+
+       <div>
+               <span class='login_text'><input id='login_password' type='password' size='16'> </input></span>
+               <span class='login_text'>Password</span>
+       </div>
+
+       <br/>
+
+       <div class='login_links_div'>
+               <span class='login_text'><a href="javascript:void(0);" id='login_button'> Login </a></span>
+               <span class='login_text'><a href='javascript:void(0);' id='login_cancel_button'> Cancel </a></span>
+       </div>
+
+</div>
+
+
diff --git a/Open-ILS/web/opac/skin/default/xml/logo.xml b/Open-ILS/web/opac/skin/default/xml/logo.xml
new file mode 100644 (file)
index 0000000..3ef9349
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version='1.0'?>
+<div id='logo_div'>
+       <img id='top_left_logo' border='0' class='logo'> </img>
+</div>
diff --git a/Open-ILS/web/opac/skin/default/xml/mresult.xml b/Open-ILS/web/opac/skin/default/xml/mresult.xml
new file mode 100644 (file)
index 0000000..e86d496
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ]>
+
+<html xmlns="http://www.w3.org/1999/xhtml" 
+       xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" lang="en">
+
+       <head>
+               <title>Evergreen: Title Groups</title>
+               <xi:include href="css_common.xml#xpointer(//link)"/>
+               <xi:include href="js_common.xml#xpointer(//script)"/>
+               <script language='javascript' src='../js/mresult.js'> </script>
+               <script language='javascript' src='../js/result_common.js'> </script>
+       </head>
+
+       <body onload="init();">
+               <xi:include href="header.xml"/> 
+               <div id='canvas' class='canvas'>
+                       <xi:include href="altcanvas.xml"/>
+                       <xi:include href="result_common.xml"/>
+               </div>
+       </body>
+
+</html>
diff --git a/Open-ILS/web/opac/skin/default/xml/myopac.xml b/Open-ILS/web/opac/skin/default/xml/myopac.xml
new file mode 100644 (file)
index 0000000..accbf01
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<html xmlns="http://www.w3.org/1999/xhtml" 
+       xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" lang="en">
+
+       <head>
+               <title>Evergreen: My OPAC</title>
+               <xi:include href="css_common.xml#xpointer(//link)"/>
+               <xi:include href="js_common.xml"/>
+       </head>
+
+       <body onload="init();">
+               <xi:include href="header.xml"/> 
+               <div id='canvas' class='canvas'>
+                       <xi:include href="altcanvas.xml"/>
+                       <div id='canvas_main'>My OPAC Goes Here</div>
+               </div>
+       </body>
+
+</html>
diff --git a/Open-ILS/web/opac/skin/default/xml/orgtree.xml b/Open-ILS/web/opac/skin/default/xml/orgtree.xml
new file mode 100644 (file)
index 0000000..d01fcda
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ]>
+
+<!-- the org tree -->
+<div id='org_container' class='hide_me'>
+       <div id='org_link_container' class='color_1'>
+               <span class='org_link'><a onclick='orgTreeSelector.openAll();' href='javascript:void(0);'>Expand All</a></span>
+               <span class='org_link'><a onclick='orgTreeSelector.closeAll();' href='javascript:void(0);'>Close All</a></span>
+               <span class='org_link'><a onclick='showCanvas();' href='javascript:void(0);'> Exit </a></span>
+       </div>
+       <div id='org_tree' class='org_tree'> </div>
+</div>
diff --git a/Open-ILS/web/opac/skin/default/xml/rdetail.xml b/Open-ILS/web/opac/skin/default/xml/rdetail.xml
new file mode 100644 (file)
index 0000000..67a3681
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<html xmlns="http://www.w3.org/1999/xhtml" 
+       xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" lang="en">
+
+       <head>
+               <title>Evergreen: Titles</title>
+               <xi:include href="css_common.xml#xpointer(//link)"/>
+               <xi:include href="js_common.xml#xpointer(//script)"/>
+       </head>
+
+       <body onload="init();">
+               <xi:include href="header.xml"/> 
+               <div id='canvas' class='canvas'>
+                       <xi:include href="altcanvas.xml"/>
+                       <xi:include href="result_common.xml"/>
+               </div>
+       </body>
+
+</html>
diff --git a/Open-ILS/web/opac/skin/default/xml/result_common.xml b/Open-ILS/web/opac/skin/default/xml/result_common.xml
new file mode 100644 (file)
index 0000000..755c7aa
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<div id='canvas_main' xmlns:xi="http://www.w3.org/2001/XInclude" >
+
+       <table id='search_nav_links'>
+               <tbody>
+                       <tr>
+
+                               <!-- talk about the number of hits, etc. -->
+                               <td id='result_info_box'>
+                                       <div class='hide_me' id='result_info_div'>
+                                               <span> Results </span> 
+                                               <span id='offset_start'> </span>
+                                               <span> - </span>
+                                               <span id='offset_end'> </span>
+                                               <span> of </span>
+                                               <span id='result_count'> </span>
+                                               <span> (page </span>
+                                               <span id='current_page'> </span>
+                                               <span> of </span>
+                                               <span id='num_pages'> </span>
+                                       </div>
+                               </td>
+                               
+                               <!-- simple next/prev type navigation links -->
+                               <td id='next_prev_links'>
+                                       <a class='search_page_nav_link' id='search_home_link' title="First results page">Start</a>
+                                       <a class='search_page_nav_link' id='prev_link' title='Previus page'> &lt;&lt; </a>
+                                       <span class='search_page_nav_link' id='page_numbers'> </span>
+                                       <a  class='search_page_nav_link' id='next_link' title='Next Page'> &gt;&gt; </a>
+                                       <a  class='search_page_nav_link' id='end_link' title="Last results page">End</a>
+                               </td>
+
+                       </tr>
+               </tbody>
+       </table>
+
+       <!-- Load the result table -->
+       <xi:include href="result_table.xml"/>
+
+       <div id='loading_div' class='color_1'> Loading Results... </div>
+
+</div>
+
+
diff --git a/Open-ILS/web/opac/skin/default/xml/result_table.xml b/Open-ILS/web/opac/skin/default/xml/result_table.xml
new file mode 100644 (file)
index 0000000..619356c
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<!-- Search results are spit into this table -->
+
+<div id='result_table_div' xmlns:xi="http://www.w3.org/2001/XInclude">
+
+       <table id='res_table'> 
+
+               <!-- for some reason, this is the only way i can force the cell widths -->
+               <thead><td class='result_table_pic_header'></td><td/></thead>
+
+               <tbody id='result_table'>
+
+                       <!-- Template for displaying a search result.  This row template is cloned and inserted
+                                       for each result returned -->
+
+                       <tr id='result_table_template'>
+
+                               <!-- Jacket image goes here -->
+                               <td width="10%"><a><img name='item_jacket' class='result_table_pic'/></a></td>
+
+                               <td class='result_table_row'>
+                                       <table class='result_table_subtable'>
+                                               <tbody class='result_table_subtbody'>
+
+                                                       <tr name='counts_row'>
+
+                                                               <td class='result_table_title_cell' name='result_table_title_cell'>
+                                                                       <a title="View titles for this record" name='item_title' class='search_link'> 
+                                                                               <!-- Title goes here -->
+                                                                       </a>
+                                                               </td>
+
+                                                               <!-- Copy this td for each copy count appended -->
+                                                               <td nowrap='nowrap' name="copy_count_cell" class='copy_count_cell' rowspan='3'> </td>
+
+                                                       </tr>
+               
+                                                       <tr>
+                                                               <td class='result_table_author_cell'>
+                                                                       <a title="Perform an Author Search" name='item_author' class='search_link'> 
+                                                                               <!-- Author goes here -->
+                                                                       </a>
+                                                               </td>
+                                                       </tr>
+
+                                                       <tr>
+                                                               <td class='result_table_format_cell'>
+                                                                       <a class='search_link'> 
+                                                                               <!-- Item formats go here -->
+                                                                       </a>
+                                                               </td>
+                                                       </tr>
+
+                                               </tbody>
+                                       </table>
+                               </td>
+
+                       </tr>
+               </tbody>
+       </table>
+</div>
+
+
diff --git a/Open-ILS/web/opac/skin/default/xml/rresult.xml b/Open-ILS/web/opac/skin/default/xml/rresult.xml
new file mode 100644 (file)
index 0000000..fc83b7b
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<html xmlns="http://www.w3.org/1999/xhtml" 
+       xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" lang="en">
+
+       <head>
+               <title>Evergreen: Titles</title>
+               <xi:include href="css_common.xml#xpointer(//link)"/>
+               <xi:include href="js_common.xml#xpointer(//script)"/>
+               <script language='javascript' src='../js/rresult.js'> </script>
+               <script language='javascript' src='../js/result_common.js'> </script>
+       </head>
+
+       <body onload="init();">
+               <xi:include href="header.xml"/> 
+               <div id='canvas' class='canvas'>
+                       <xi:include href="altcanvas.xml"/>
+                       <xi:include href="result_common.xml"/>
+               </div>
+       </body>
+
+</html>
diff --git a/Open-ILS/web/opac/skin/default/xml/searchbar.xml b/Open-ILS/web/opac/skin/default/xml/searchbar.xml
new file mode 100644 (file)
index 0000000..52e5484
--- /dev/null
@@ -0,0 +1,105 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<!-- Searchbar for doing metarecord searches -->
+
+<div id='searchbar'>
+
+       <!-- load my js -->
+       <script language='javascript' src='../js/search_bar.js'> </script>
+
+       <div id='searchbar_main' class='color_1'>
+
+               <table>
+
+                       <tbody id='searchbar_table'>
+
+                               <tr id='searchbar_main_row'>
+               
+                                       <!-- Search query text box -->
+                                       <td align='left' class='searchbar_main_td'>
+                                               <span class="searchbar_item">
+                                                       <input id='search_box' type='text' size='19'/>
+                                               </span>
+                                       </td>
+               
+
+                                       <!-- Selector for choosing the search type -->
+                                       <td align='left' class='searchbar_main_td'>
+                                               <span class="searchbar_item">
+                                                       <select id='search_type_selector'>
+                                                               <option value='title' selected='selected'>Title</option>
+                                                               <option value='author'>Author</option>
+                                                               <option value='subject'>Subject</option>
+                                                               <option value='series'>Series</option>
+                                                               <option value='keyword'>Keyword</option>
+                                                       </select>
+                                               </span>
+       
+                                               <!-- Submit Search Button -->
+                                               <span class="searchbar_item" style='padding-left: 15px;'>
+                                                       <input type='button' id='search_submit' value='Go!' />
+                                               </span>
+                                       </td>
+       
+                               </tr>   
+               
+                               <!-- Row of extra search options -->
+                               <tr id='searchbar_extra' class='hide_me'>
+               
+                                       <!-- Search format selector -->
+                                       <td align='left' class='searchbar_extra_td'>
+                                               <span class="searchbar_item">
+                                                       <select id='form_selector'>
+                                                               <option value='all'>All Formats</option>
+                                                               <option value='at'>Books</option>
+                                                               <option value='at-d'>Large Print Books</option>
+                                                               <option value='i'>Audiobooks</option>
+                                                               <option value='g'>Video Recording</option>
+                                                               <option value='j'>Music</option>
+                                                               <option value='m'>Electronic Resources</option>
+                                                       </select>
+                                               </span>
+                                       </td>
+               
+                                       <!-- Search 'range' selector -->
+                                       <td  align='left' class='searchbar_extra_td'>
+                                               <span class="searchbar_item">
+                                                       <select id='depth_selector'>
+                                                               <option value='2' selected='selected'>In This Library</option>
+                                                               <option value='1'>In This Region</option>
+                                                               <option value='0'>In All PINES Libraries</option>
+                                                       </select>
+                                               </span>
+                                       </td>
+               
+                               </tr>
+               
+                       </tbody>
+               </table>
+
+       </div>
+
+       <!-- Search location changer -->
+       <span class='searchbar_tag color_1'>
+               <a id='search_location_tag_link' href='javascript:void(0);'>
+                       <span> Search Location </span>
+               </a>
+       </span>
+       
+       <!-- Link for expanding/contracting the extra search options -->
+       <span class='searchbar_tag color_1'>
+               <a id='search_tag_link' href='javascript:void(0);'>
+                       <span id='searchbar_tag_off'> More Options </span>
+                       <span id='searchbar_tag_on' class='hide_me'> Less Options </span>
+               </a>
+       </span>
+
+
+</div>
+
+
+
+
+
+
diff --git a/Open-ILS/web/opac/skin/default/xml/sidebar.xml b/Open-ILS/web/opac/skin/default/xml/sidebar.xml
new file mode 100644 (file)
index 0000000..0d9edaf
--- /dev/null
@@ -0,0 +1,85 @@
+<?xml version='1.0'?>
+<!DOCTYPE x [ <!ENTITY % ent SYSTEM "../../../locale/en-US/lang.dtd"> %ent; ] >
+
+<!-- Navigation bar -->
+
+<div id="sidebar_div" class="sidebar_div" xmlns:xi="http://www.w3.org/2001/XInclude">
+
+       <script language='javascript' src='../js/sidebar.js'> </script>
+
+       <div class='sidebar_chunk color_1'>
+
+               <div title="&navigate.home.title;" 
+                       id='home_link_div' class="side_bar_item">
+                       <a id='home_link' href='index.xml'>&navigate.home;</a>
+               </div>
+       
+               <div title="&navigate.advanced.title;"
+                       id='advanced_link_div' class="side_bar_item">
+                       <a id='advanced_link' href='advanced.xml'>&navigate.advanced;</a>
+               </div>
+
+               <div title="&navigate.myopac.title;"
+                       id='myopac_link_div' class="side_bar_item">
+                       <a  id='myopac_link' href='myopac/myopac.xml'>&navigate.myopac;</a>
+               </div>
+
+               <div title="&navigate.login.title;"
+                       id='login_link_div' class="side_bar_item">
+                       <a id='login_link' href='javascript:void(0);'>&navigate.login;</a>
+               </div>
+
+               <div title="&navigate.logout.title;"
+                       id='logout_link_div' class="side_bar_item hide_me">
+                       <a id='logout_link' href='javascript:void(0);'>&navigate.logout;</a>
+               </div>
+
+               <!-- Informational sidebar components -->
+
+               <div id='logged_in_as_div' title="&navigate.loggedinas.title;" class="side_bar_item hide_me">
+                       <span >&navigate.loggedinas; <b id='username_dest'> </b></span>
+               </div>
+
+               <div title="&navigate.titleGroupResults;" 
+                       id='mresult_link_div' class="side_bar_item hide_me">
+                       <span>&navigate.titleGroupResults;</span>
+               </div>
+       
+               <div title="&navigate.titleResults;"
+                       id='result_link_div' class="side_bar_item hide_me">
+                       <span>&navigate.titleResults;</span>
+               </div>
+
+       </div>
+
+
+       <div id='subject_sidebar' class='sidebar_chunk hide_me'> 
+               <div class='sidebar_header color_1'>&sidebar.relevantSubjects.headerLabel;</div>
+               <ul style='margin-left: 1em; padding-left: 1em;'>
+                       <li id='subject_item' class='sidebar_extra_item'>
+                               <a class='sidebar_extra_link' name='subject_item'> </a>
+                       </li>
+               </ul>
+       </div>
+
+       <div id='author_sidebar' class='sidebar_chunk hide_me'> 
+               <div class='sidebar_header color_1'>&sidebar.relevantAuthors.headerLabel;</div>
+               <ul style='margin-left: 1em; padding-left: 1em;'>
+                       <li id='author_item' class='sidebar_extra_item'>
+                               <a class='sidebar_extra_link' name='author_item'> </a>
+                       </li>
+               </ul>
+       </div>
+
+       <div id='series_sidebar' class='sidebar_chunk hide_me'> 
+               <div class='sidebar_header color_1'>&sidebar.relevantSeries.headerLabel;</div>
+               <ul style='margin-left: 1em; padding-left: 1em;'>
+                       <li id='series_item' class='sidebar_extra_item'>
+                               <a class='sidebar_extra_link' name='series_item'> </a>
+                       </li>
+               </ul>
+       </div>
+       
+
+</div>
+
diff --git a/Open-ILS/web/opac/theme/default/css/colors.css b/Open-ILS/web/opac/theme/default/css/colors.css
new file mode 100644 (file)
index 0000000..0bff262
--- /dev/null
@@ -0,0 +1,22 @@
+body a                 { color: black; }
+body a:visited { color: black; }
+body a:hover   { color: red; text-decoration: underline;}
+
+.color_1 { background: #A7EA9D; color: #000000; }
+.color_2 { background: #64EA4F; color: #000000; }
+.color_3 { background: #D8B4BE; color: #000000; }
+
+/* ---------------------------------------------------------------------- */
+.sidebar_chunk {border-right: 1px solid lightgrey;}
+.sidebar_extra_link { text-decoration: none; }
+#searchbar_tag_on { color: red; }
+.searchbar_item { color: black; } 
+#login_box { border-top: 1px solid #808080; border-bottom: 1px solid #808080; }
+#next_prev_links_dead { color: #808080; text-decoration: none; }
+.nav_link_active { text-decoration: underline; }
+.search_link { text-decoration: none; }
+.result_table_subtable { border-top: 1px solid #E0E0E0; }
+.copy_count_cell_even { border: 1px solid #E0E0E0; }
+/* ---------------------------------------------------------------------- */
+
+