Fix for properly modifying click cookies, and accounting for malformed ones

This commit is contained in:
ketralnis
2008-09-19 11:42:34 -07:00
parent 418e479cfc
commit 52e44855dc
3 changed files with 18 additions and 17 deletions

View File

@@ -137,20 +137,18 @@ def set_user_cookie(name, val):
c.cookies[uname + '_' + name] = Cookie(value = val,
domain = domain)
valid_click_cookie = re.compile(r'(t[0-9]_[a-zA-Z0-9]+:)+').match
def read_click_cookie():
if c.user_is_loggedin:
cook = [s for s in read_user_cookie('click').split(':') if s]
if cook:
try:
things = Thing._by_fullname(cook, return_dict = False)
for t in things:
def foo(t1, user):
return lambda: t1._click(user)
utils.worker.do(foo(t, c.user))
except:
pass
finally:
set_user_cookie('click', '')
click_cookie = read_user_cookie('click')
if click_cookie and valid_click_cookie(click_cookie):
ids = [s for s in click_cookie.split(':') if s]
things = Thing._by_fullname(ids, return_dict = False)
for t in things:
def foo(t1, user):
return lambda: t1._click(user)
utils.worker.do(foo(t, c.user))
set_user_cookie('click', '')
def read_mod_cookie():

View File

@@ -482,7 +482,8 @@ function setClick(a, css_class) {
}
function setClickCookie(id) {
createCookie("click", readCookie("click") + id + ":");
var newcookie = readCookie("click") + id + ":";
createCookie("click", newcookie);
}

View File

@@ -25,14 +25,16 @@ function createLCookie(name,value,days) {
}
function createCookie(name, value, days) {
return createLCookie(cookieName(name));
return createLCookie(cookieName(name), value, days);
}
function readLCookie(nameEQ) {
nameEQ=nameEQ+'=';
var ca=document.cookie.split(';');
for(var i=0;i< ca.length;i++) {
var c =ca[i];
/* walk the list backwards so we always get the last cookie in the
list */
for(var i = ca.length-1; i >= 0; i--) {
var c = ca[i];
while(c.charAt(0)==' ') c=c.substring(1,c.length);
if(c.indexOf(nameEQ)==0) {
return unescape(c.substring(nameEQ.length,c.length));
@@ -42,7 +44,7 @@ function readLCookie(nameEQ) {
}
function readCookie(name) {
var nameEQ=cookieName(name) + "=";
var nameEQ=cookieName(name);
return readLCookie(nameEQ);
}