From 9bc275c140213d902dd0b1d74e82eda8046450dd Mon Sep 17 00:00:00 2001 From: KeyserSosa Date: Wed, 12 Aug 2009 11:28:05 -0700 Subject: [PATCH] bug fix to language preferences for unlogged in users. Also JS fix to all language pref pages. --- r2/r2/controllers/reddit_base.py | 12 +++++++++--- r2/r2/public/static/js/reddit.js | 8 ++++++++ r2/r2/templates/utils.html | 4 ++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/r2/r2/controllers/reddit_base.py b/r2/r2/controllers/reddit_base.py index b5ebe5378..065832aed 100644 --- a/r2/r2/controllers/reddit_base.py +++ b/r2/r2/controllers/reddit_base.py @@ -121,7 +121,8 @@ class UnloggedUser(FakeAccount): def _commit(self): if self._dirty: - self._t.update(self._dirties) + for k, (oldv, newv) in self._dirties.iteritems(): + self._t[k] = newv self._to_cookie(self._t) def _load(self): @@ -488,8 +489,13 @@ class RedditController(BaseController): c.user_is_loggedin = True else: c.user = UnloggedUser(get_browser_langs()) - c.user._load() - + # patch for fixing mangled language preferences + if (not isinstance(c.user.pref_lang, basestring) or + not all(isinstance(x, basestring) + for x in c.user.pref_content_langs)): + c.user.pref_lang = g.lang + c.user.pref_content_langs = [g.lang] + c.user._commit() if c.user_is_loggedin: if not c.user._loaded: c.user._load() diff --git a/r2/r2/public/static/js/reddit.js b/r2/r2/public/static/js/reddit.js index 97ff14de7..d850141e1 100644 --- a/r2/r2/public/static/js/reddit.js +++ b/r2/r2/public/static/js/reddit.js @@ -1036,6 +1036,14 @@ var toolbar_p = function(expanded_size, collapsed_size) { }; }; +function clear_all_langs(elem) { + $(elem).parents("form").find("input[type=checkbox]").attr("checked", false); +} + +function check_some_langs(elem) { + $(elem).parents("form").find("#some-langs").attr("checked", true); +} + /* The ready method */ $(function() { /* set function to be called on thing creation/replacement, diff --git a/r2/r2/templates/utils.html b/r2/r2/templates/utils.html index b11ce4871..b3eb69114 100644 --- a/r2/r2/templates/utils.html +++ b/r2/r2/templates/utils.html @@ -194,7 +194,7 @@ ${unsafe(txt)} all_checked, some_checked = some_checked, all_checked %> + onclick="clear_all_langs(this)" ${all_checked}/>
+ onclick="check_some_langs(this)" ${checked}/> %endfor