/* */
-
detachAllEvt('common', 'run');
attachEvt("common", "run", rdetailDraw);
attachEvt("rdetail", "recordDrawn", rdetailBuildStatusColumns);
attachEvt("rdetail", "recordDrawn", rdetailBuildInfoRows);
attachEvt("rdetail", "recordDrawn", rdetailGetPageIds);
+/* Per-skin configuration settings */
+var rdetailLocalOnly = true;
+var rdetailShowLocal = true;
+var rdetailShowCopyLocation = true;
+var rdetailGoogleBookPreview = true;
+var rdetailDisplaySerialHoldings = true;
+var rdetailEnableRefWorks = false;
+var rdetailRefWorksHost = 'http://refworks.scholarsportal.info';
+var enableHoldsOnAvailable = false;
+
+/* vars vars vars */
var record = null;
var cp_statuses = null;
var recordsCache = [];
var numStatuses = null;
var defaultCN;
var callnumberCache = {};
-var rdetailLocalOnly = true;
var globalCNCache = {};
var localTOC;
var cachedRecords;
var _statusPositions = {};
-
-var rdetailShowLocal = true;
-var rdetailShowCopyLocation = true;
-var googleBookPreview = true;
-var enableHoldsOnAvailable = false;
-var displaySerialHoldings = true;
var opac_strings;
-/* serials are currently the only use of Dojo strings in the OPAC */
-if (displaySerialHoldings) {
- dojo.requireLocalization("openils.opac", "opac");
- opac_strings = dojo.i18n.getLocalization("openils.opac", "opac");
-}
-
var nextContainerIndex;
-function rdetailReload() {
- var args = {};
- args[PARAM_LOCATION] = getNewSearchLocation();
- args[PARAM_DEPTH] = depthSelGetDepth();
- goTo(buildOPACLink(args));
-}
-
var nextRecord;
var prevRecord;
var rdetailStart = null;
var rdetailEnd = null;
+/* serials are currently the only use of Dojo strings in the OPAC */
+if (rdetailDisplaySerialHoldings) {
+ dojo.require("dijit.Menu");
+ dojo.require("dijit.form.Button");
+ dojo.requireLocalization("openils.opac", "opac");
+ opac_strings = dojo.i18n.getLocalization("openils.opac", "opac");
+}
+function rdetailReload() {
+ var args = {};
+ args[PARAM_LOCATION] = getNewSearchLocation();
+ args[PARAM_DEPTH] = depthSelGetDepth();
+ goTo(buildOPACLink(args));
+}
/* looks to see if we have a next and/or previous record in the
record cache, if so, set up the nav links */
req.callback(_rdetailDraw);
req.send();
- if (displaySerialHoldings) {
+ if (rdetailDisplaySerialHoldings) {
var req = new Request(FETCH_MFHD_SUMMARY, getRid());
req.callback(_holdingsDraw);
req.send();
+ if (isXUL()) {
+ var here = findOrgUnit(getLocation());
+ dojo.place("<div id='mfhd_ad_menu></div>", "rdetail_details_table", "after");
+ var mfhd_add = new dijit.Menu({style:"float: right;"});
+ new dijit.MenuItem({onClick:function(){
+ var req = new Request(CREATE_MFHD_RECORD, G.user.session, 1, here.id(), getRid());
+ var res = req.send();
+ alert(dojo.string.substitute(opac_strings.CREATED_MFHD_RECORD, [here.name()]));
+ }, label:opac_strings.CREATE_MFHD}).placeAt(mfhd_add);
+ mfhd_add.placeAt(mfhd_ad_menu);
+ }
}
detachAllEvt("result", "idsReceived");
if (!holdings) { return null; }
dojo.forEach(holdings, _holdingsDrawMFHD);
+
}
function _holdingsDrawMFHD(holdings, entryNum) {
+
var here = findOrgUnit(getLocation());
if (getDepth() > 0 || getDepth === 0 ) {
while (getDepth() < findOrgDepth(here))
if ( hh.length == 0 && hch.length == 0 && hs.length == 0 &&
hcs.length == 0 && hi.length == 0 && hci.length == 0 &&
- ho.length == 0 && hm.length == 0 && hinc.length == 0 && !isXUL()
+ ho.length == 0 && hm.length == 0 && hinc.length == 0
) {
- return null;
+
+ if (isXUL()) {
+ /*
+ * If we have a record, but nothing to show for it, then the
+ * record is likely empty or corrupt. This gives cataloguers a
+ * chance to add holdings or correct the record
+ */
+ hh = 'PLACEHOLDER';
+ } else {
+ return null;
+ }
}
- dojo.place("<table style='width: 100%;'><caption id='mfhdHoldingsCaption' class='rdetail_header color_1'>" +
+ dojo.place("<table style='width: 100%;'><caption id='mfhdHoldingsCaption" + entryNum + "' class='rdetail_header color_1'>" +
dojo.string.substitute(opac_strings.HOLDINGS_TABLE_CAPTION, [hloc]) +
"</caption><tbody id='rdetail_holdings_tbody_" + entryNum +
"'></tbody></table>", "rdetail_details_table", "after"
if (isXUL()) {
dojo.require('openils.Event');
dojo.require('openils.PermaCrud');
- dojo.place("<span> - </span><a class='classic_link' href='javascript:loadMarcEditor(" +
- holdings.id() + ")'>" + opac_strings.EDIT_LABEL + "</a>",
- "mfhdHoldingsCaption", "last"
- );
+ var mfhd_edit = new dijit.Menu({});
+ new dijit.MenuItem({onClick: function(){loadMarcEditor(holdings.id())}, label:opac_strings.EDIT_MFHD_RECORD}).placeAt(mfhd_edit, "first");
+ new dijit.MenuItem({onClick:function(){
+ var pcrud = new openils.PermaCrud({"authtoken": G.user.session});
+ var mfhd_rec = pcrud.retrieve("sre", holdings.id());
+ if (mfhd_rec) {
+ pcrud.eliminate(mfhd_rec);
+ alert(dojo.string.substitute(opac_strings.DELETED_MFHD_RECORD, [holdings.id()]));
+ }
+ }, label:opac_strings.DELETE_MFHD}).placeAt(mfhd_edit, "last");
+ // new dijit.MenuItem({onClick:function(){alert("Edit properties " + holdings.id());}, label:opac_strings.EDIT_PROPERTIES}).placeAt(mfhd_edit, "last");
+ var mfhd_mb = new dijit.form.DropDownButton({dropDown: mfhd_edit, label:opac_strings.EDIT_MFHD_MENU, style:"float:right"});
+ mfhd_mb.placeAt("mfhdHoldingsCaption" + entryNum, "last");
+ mfhd_edit.startup();
}
}
$('rdetail_place_hold').setAttribute(
'href','javascript:holdsDrawEditor({record:"'+record.doc_id()+'",type:"T"});');
+ var RW = $('rdetail_exp_refworks');
+ if (RW && rdetailEnableRefWorks) {
+
+ var here = (findOrgUnit(getLocation())).name();
+ var org_name = here.replace(" ", "+");
+ var cgi = new CGI();
+
+ RW.setAttribute(
+ 'href',
+ rdetailRefWorksHost + '/express/expressimport.asp?vendor='
+ + org_name
+ + '&filter=MARC+Format&database=All+MARC+Formats&encoding=65001&url=http%3A%2F%2F'
+ + cgi.server_name + '/opac/extras/supercat/marctxt/record/'
+ + record.doc_id()
+ );
+
+ RW.setAttribute('target', 'RefWorksMain');
+
+ unHideMe($('rdetail_exp_refworks_span'));
+ }
+
$('rdetail_img_link').setAttribute('href', buildISBNSrc(cleanISBN(record.isbn()), 'large'));
G.ui.rdetail.image.setAttribute("src", buildISBNSrc(cleanISBN(record.isbn())));
runEvt("rdetail", "recordDrawn");
* Check for a Google Book preview
*/
function rdetailCheckForGBPreview() {
- if (!googleBookPreview) return;
+ if (!rdetailGoogleBookPreview) return;
searchForGBPreview( cleanISBN(record.isbn()) );
}