moodle/lib/cookies.js
urs_hunkler c24a1ccd08 I added all code to handle the cookies and the sideblock content, the icon and the patches for hiding/showing the content of the sideblocks.
How it works:
_ within the "sideblockheading" a DIV with class="hide-show" holds a link calling the JS containerDisplaySwitching(). To the user it's represented by the icon "switch.gif" (a plus in a square) at the right end side of the header.
_ all content of the sideblock is surounded by a new <div class="blockcontent" id="'.$attributes['id']."_cont\">"
_ a call of the JS containerDisplaySwitching() changes the state of the appropriate DIV with the content to "display:none/inline" and writes this state into a cookie.
_ at the end of every block I added a call to the JS "containerDisplaySet()". This reads the block's state and hides the content or leaves it visible with every page load.
_ in the stylesheet I added the positioning of the icon:
.sideblockheading .hide-show {
    float:right;
}
.sideblockheading a img.hide-show-image {
    padding-top:0.25em;
}
2005-02-05 21:37:53 +00:00

85 lines
2.4 KiB
JavaScript

/*******************************************************
COOKIE FUNCTIONALITY
Based on "Night of the Living Cookie" by Bill Dortch
(c) 2003, Ryan Parman
http://www.skyzyx.com
Distributed according to SkyGPL 2.1, http://www.skyzyx.com/license/
*******************************************************/
function cookie(name, value, expires, path, domain, secure)
{
// Passed Values
this.name=name;
this.value=value;
this.expires=expires;
this.path=path;
this.domain=domain;
this.secure=secure;
// Read cookie
this.read=function()
{
// To allow for faster parsing
var ck=document.cookie;
var arg = this.name + "=";
var alen = arg.length;
var clen = ck.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (ck.substring(i, j) == arg)
{
var endstr = ck.indexOf (";", j);
if (endstr == -1) endstr = ck.length;
return unescape(ck.substring(j, endstr));
}
i = ck.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}
// Set cookie
this.set=function()
{
// Store initial value of "this.expires" for re-initialization.
expStore=this.expires;
// Set time to absolute zero.
exp = new Date();
base = new Date(0);
skew = base.getTime();
if (skew > 0) exp.setTime (exp.getTime() - skew);
exp.setTime(exp.getTime() + (this.expires*24*60*60*1000));
this.expires=exp;
document.cookie = this.name + "=" + escape (this.value) +
((this.expires) ? "; expires=" + this.expires.toGMTString() : "") +
((this.path) ? "; path=" + this.path : "") +
((this.domain) ? "; domain=" + this.domain : "") +
((this.secure) ? "; secure" : "");
// Re-initialize
this.expires=expStore;
}
// Kill cookie
this.kill=function()
{
document.cookie = this.name + "=" +
((this.path) ? "; path=" + this.path : "") +
((this.domain) ? "; domain=" + this.domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
// Change cookie settings.
this.changeName=function(chName) { this.kill(); this.name=chName; this.set(); }
this.changeVal=function(chVal) { this.kill(); this.value=chVal; this.set(); }
this.changeExp=function(chExp) { this.kill(); this.expires=chExp; this.set(); }
this.changePath=function(chPath) { this.kill(); this.path=chPath; this.set(); }
this.changeDomain=function(chDom) { this.kill(); this.domain=chDom; this.set(); }
this.changeSecurity=function(chSec) { this.kill(); this.secure=chSec; this.set(); }
}