/* Export some constants ----------------------------------------------------- */
-/* URL params */
-var PARAM_TERM = "term"; /* search term */
-var PARAM_STYPE = "stype"; /* search type */
-var PARAM_LOCATION = "location" /* current location */;
-var PARAM_DEPTH = "depth"; /* search depth */
-var PARAM_FORM = "format"; /* search format */
-var PARAM_OFFSET = "offset"; /* search offset */
-var PARAM_COUNT = "count"; /* hits per page */
-var PARAM_HITCOUNT = "hitcount"; /* hits per page */
-var PARAM_MRID = "mrid"; /* metarecord id */
-var PARAM_RID = "rid"; /* record id */
+/* URL param names */
+var PARAM_TERM = "term"; /* search term */
+var PARAM_STYPE = "stype"; /* search type */
+var PARAM_LOCATION = "location" /* current location */;
+var PARAM_DEPTH = "depth"; /* search depth */
+var PARAM_FORM = "format"; /* search format */
+var PARAM_OFFSET = "offset"; /* search offset */
+var PARAM_COUNT = "count"; /* hits per page */
+var PARAM_HITCOUNT = "hitcount"; /* hits per page */
+var PARAM_MRID = "mrid"; /* metarecord id */
+var PARAM_RID = "rid"; /* record id */
+var PARAM_ORIGLOC = "orgloc" /* the original location */
+
+/* URL param values (see comments above) */
+var TERM;
+var STYPE;
+var LOCATION;
+var DEPTH;
+var FORM;
+var OFFSET;
+var COUNT;
+var HITCOUNT;
+var RANKS;
+var FONTSIZE;
+var ORIGLOC;
+
+/* cookie values */
+var SBEXTRAS;
+var SKIN;
+
/* cookies */
var COOKIE_SB = "sbe";
var COOKIE_SES = "ses";
var COOKIE_IDS = "ids";
var COOKIE_FONT = "fnt";
+var COOKIE_SKIN = "skin";
/* these are the actual param values - set on page load */
var HOME = "home";
/* search type (STYPE) options */
-STYPE_AUTHOR = "author";
-STYPE_TITLE = "title";
-STYPE_SUBJECT = "subject";
-STYPE_SERIES = "series";
-STYPE_KEYWORD = "keyword";
+var STYPE_AUTHOR = "author";
+var STYPE_TITLE = "title";
+var STYPE_SUBJECT = "subject";
+var STYPE_SERIES = "series";
+var STYPE_KEYWORD = "keyword";
/* container for global variables shared accross pages */
/* themes */
config.themes = {};
-
/* set up images */
config.images = {};
config.images.logo = "main_logo.jpg";
var LOGIN_INIT = "open-ils.auth:open-ils.auth.authenticate.init";
var LOGIN_COMPLETE = "open-ils.auth:open-ils.auth.authenticate.complete";
var LOGIN_DELETE = "open-ils.auth:open-ils.auth.session.delete";
+var FETCH_USER_PREFS = "open-ils.actor:open-ils.actor.patron.settings.retrieve";
+var UPDATE_USER_PREFS = "open-ils.actor:open-ils.actor.patron.settings.update";
/* ---------------------------------------------------------------------------- */
attachEvt("common", "init", initParams);
attachEvt("common", "init", initCookies);
attachEvt("common", "init", drawOrgTree);
-attachEvt("common", "unload", _tree_killer);
-attachEvt("common", "unload", clearUIObjects);
-attachEvt("common", "unload", cleanRemoteRequests);
+
+//attachEvt("common", "unload", _tree_killer);
+//attachEvt("common", "unload", clearUIObjects);
+//attachEvt("common", "unload", cleanRemoteRequests);
function init() {
runEvt('common','init');
setFontSize(getFontSize());
runEvt("common", "run");
-
- /*
- switch(findCurrentPage()) {
- case MRESULT: runEvt('mresult', 'run'); break;
- case RRESULT: runEvt('rresult', 'run'); break;
- }
- */
+ checkUserSkin();
}
function windowUnload() { runEvt("common", "unload"); }
G.ui.searchbar.text.focus();
}
-var newCanvasNode;
-function swapCanvas(newNode) { newCanvasNode = newNode; setTimeout(_swapCanvas, 200); }
-function _swapCanvas() {
+function swapCanvas(newNode) {
for( var x in G.ui.altcanvas )
hideMe(G.ui.altcanvas[x]);
hideMe(G.ui.common.loading);
hideMe(G.ui.common.canvas_main);
- unHideMe(newCanvasNode);
+ unHideMe(newNode);
}
/* finds the name of the current page */
/* sets all of the params values ----------------------------- */
-var TERM, STYPE, LOCATION, DEPTH, FORM, OFFSET, COUNT,
- HITCOUNT, RANKS, SEARCHBAR_EXTRAS, FONTSIZE;
-
function initParams() {
var cgi = new CGI();
FORM = cgi.param(PARAM_FORM);
LOCATION = parseInt(cgi.param(PARAM_LOCATION));
+ ORIGLOC = parseInt(cgi.param(PARAM_ORIGLOC));
DEPTH = parseInt(cgi.param(PARAM_DEPTH));
OFFSET = parseInt(cgi.param(PARAM_OFFSET));
COUNT = parseInt(cgi.param(PARAM_COUNT));
if(isNaN(OFFSET)) OFFSET = 0;
if(isNaN(COUNT)) COUNT = 10;
if(isNaN(HITCOUNT)) HITCOUNT = 0;
- if(isNaN(SEARCHBAR_EXTRAS)) SEARCHBAR_EXTRAS = 0;
if(isNaN(MRID)) MRID = 0;
if(isNaN(RID)) RID = 0;
+ if(isNaN(ORIGLOC)) ORIGLOC = 0;
}
function initCookies() {
FONTSIZE = "medium";
var font = fontCookie.get(COOKIE_FONT);
if(font) FONTSIZE = font;
+ SKIN = skinCookie.get(COOKIE_SKIN);
}
/* URL param accessors */
function getOffset(){return OFFSET;}
function getDisplayCount(){return COUNT;}
function getHitCount(){return HITCOUNT;}
-function getSearchBarExtras(){return SEARCHBAR_EXTRAS;}
function getMrid(){return MRID;};
function getRid(){return RID;};
+function getOrigLocation(){return ORIGLOC;}
+function getSearchBarExtras(){return SBEXTRAS;}
function getFontSize(){return FONTSIZE;};
+function getSkin(){return SKIN;};
}
+/* sets the 'prefs' field of the user object to their preferences
+ and returns the preferences */
+function grabUserPrefs(user, force) {
+ if(user == null) user = G.user;
+ if(!force && user.prefs) return user.prefs;
+ var req = new Request(FETCH_USER_PREFS, user.session, user.id());
+ req.send(true);
+ user.prefs = req.result();
+ return user.prefs;
+}
+
function grabFleshedUser() {
if(!G.user || !G.user.session) {
return G.user;
}
+var skinCookie = new cookieObject("skin", 1, "/", COOKIE_SKIN);
+function checkUserSkin(new_skin) {
+
+ var user_skin = getSkin();
+ var cur_skin = grabSkinFromURL();
+
+ if(new_skin) user_skin = new_skin;
+
+ if(isNull(user_skin)) {
+
+ if(grabUser()) {
+ if(grabUserPrefs()) {
+ user_skin = G.user.prefs["opac.skin"];
+ skinCookie.put( COOKIE_SKIN, user_skin );
+ skinCookie.write();
+ }
+ }
+ }
+
+ if(isNull(user_skin)) return;
+
+ if( cur_skin != user_skin ) {
+ var url = buildOPACLink();
+ goTo(url.replace(cur_skin, user_skin));
+ }
+}
+
+function updateUserSetting(setting, value, user) {
+ if(user == null) user = G.user;
+ var a = {};
+ a[setting] = value;
+ var req = new Request( UPDATE_USER_PREFS, user.session, a );
+ req.send(true);
+ return req.result();
+}
+
+function grabSkinFromURL() {
+ var path = findBasePath();
+ path = path.replace("/xml/", "");
+ var skin = "";
+ for( var i = path.length - 1; i >= 0; i-- ) {
+ var ch = path.charAt(i);
+ if(ch == "/") break;
+ skin += ch;
+ }
+
+ var skin2 = "";
+ for( i = skin.length - 1; i >= 0; i--)
+ skin2 += skin.charAt(i);
+
+ return skin2;
+}
+
/* returns a fleshed G.user on success, false on failure */
function doLogin() {
var u = grabUser(auth_result, true);
if(u) updateLoc(u.home_ou(), findOrgDepth(u.home_ou()));
+ checkUserSkin();
+
return u;
}
hideMe(G.ui.sidebar.logoutbox);
unHideMe(G.ui.sidebar.loginbox);
hideMe(G.ui.sidebar.logged_in_as);
+ skinCookie.remove(COOKIE_SKIN);
+ checkUserSkin("default");
}