From cd38d4426a578a05ea5383e9248c4ff947c21a5c Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 24 Aug 2005 21:05:07 +0000 Subject: [PATCH] added user prefs grabbing user preferred skin is automatically loaded git-svn-id: svn://svn.open-ils.org/ILS/trunk@1720 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/web/opac/common/js/config.js | 55 +++++++++---- Open-ILS/web/opac/common/js/init.js | 15 ++-- Open-ILS/web/opac/common/js/opac_utils.js | 85 +++++++++++++++++--- Open-ILS/web/opac/skin/default/js/sidebar.js | 1 + 4 files changed, 120 insertions(+), 36 deletions(-) diff --git a/Open-ILS/web/opac/common/js/config.js b/Open-ILS/web/opac/common/js/config.js index 833bf55cd7..8fc5f10ea3 100644 --- a/Open-ILS/web/opac/common/js/config.js +++ b/Open-ILS/web/opac/common/js/config.js @@ -1,22 +1,42 @@ /* 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 */ @@ -29,11 +49,11 @@ var ADVANCED = "advanced"; 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 */ @@ -88,7 +108,6 @@ config.page[RDETAIL] = "rdetail.xml"; /* themes */ config.themes = {}; - /* set up images */ config.images = {}; config.images.logo = "main_logo.jpg"; @@ -161,6 +180,8 @@ var FETCH_SESSION = "open-ils.auth:open-ils.auth.session.retrieve"; 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"; /* ---------------------------------------------------------------------------- */ diff --git a/Open-ILS/web/opac/common/js/init.js b/Open-ILS/web/opac/common/js/init.js index aeabaf73a0..57418d0000 100644 --- a/Open-ILS/web/opac/common/js/init.js +++ b/Open-ILS/web/opac/common/js/init.js @@ -7,21 +7,16 @@ attachEvt("common", "init", loadUIObjects); 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"); } diff --git a/Open-ILS/web/opac/common/js/opac_utils.js b/Open-ILS/web/opac/common/js/opac_utils.js index 98d599b08d..9fb22ee608 100644 --- a/Open-ILS/web/opac/common/js/opac_utils.js +++ b/Open-ILS/web/opac/common/js/opac_utils.js @@ -24,15 +24,13 @@ function _showCanvas() { 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 */ @@ -66,9 +64,6 @@ function findCurrentPage() { /* 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(); @@ -77,6 +72,7 @@ function initParams() { 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)); @@ -90,15 +86,16 @@ function initParams() { 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 */ @@ -110,11 +107,13 @@ function getForm(){return FORM;} 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;}; @@ -271,6 +270,17 @@ function grabUser(ses, force) { } +/* 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) { @@ -299,6 +309,59 @@ function grabFleshedUser() { 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() { @@ -326,6 +389,8 @@ function doLogin() { var u = grabUser(auth_result, true); if(u) updateLoc(u.home_ou(), findOrgDepth(u.home_ou())); + checkUserSkin(); + return u; } @@ -344,7 +409,9 @@ function doLogout() { hideMe(G.ui.sidebar.logoutbox); unHideMe(G.ui.sidebar.loginbox); hideMe(G.ui.sidebar.logged_in_as); + skinCookie.remove(COOKIE_SKIN); + checkUserSkin("default"); } diff --git a/Open-ILS/web/opac/skin/default/js/sidebar.js b/Open-ILS/web/opac/skin/default/js/sidebar.js index dae282ce27..2f90176fe8 100644 --- a/Open-ILS/web/opac/skin/default/js/sidebar.js +++ b/Open-ILS/web/opac/skin/default/js/sidebar.js @@ -52,6 +52,7 @@ function initLogin() { swapCanvas(G.ui.login.box); G.ui.login.username.focus(); } + loginBoxVisible = !loginBoxVisible; G.ui.login.cancel.onclick = showCanvas; } -- 2.43.2