From 8c9b31d24423dd278208645fd7ae1b0ec9aa445a Mon Sep 17 00:00:00 2001 From: Brian Simpson Date: Tue, 8 Oct 2013 20:24:38 -0400 Subject: [PATCH] ServerSecondsBar can be made public. --- r2/r2/config/routing.py | 3 +++ r2/r2/controllers/api.py | 14 ++++++++++++++ r2/r2/lib/pages/pages.py | 6 +++++- r2/r2/models/account.py | 1 + r2/r2/public/static/css/reddit.less | 18 ++++++++++++++++++ r2/r2/templates/serversecondsbar.html | 19 +++++++++++++++++++ 6 files changed, 60 insertions(+), 1 deletion(-) mode change 100755 => 100644 r2/r2/lib/pages/pages.py diff --git a/r2/r2/config/routing.py b/r2/r2/config/routing.py index db4b24e84..384904f55 100644 --- a/r2/r2/config/routing.py +++ b/r2/r2/config/routing.py @@ -342,6 +342,9 @@ def make_map(): mc('/api/recommend/sr/:srnames', controller='api', action='subreddit_recommendations') + mc('/api/server_seconds_visibility', controller='api', + action='server_seconds_visibility') + mc("/api/multi/mine", controller="multiapi", action="my_multis") mc("/api/multi/copy", controller="multiapi", action="multi_copy") mc("/api/multi/rename", controller="multiapi", action="multi_rename") diff --git a/r2/r2/controllers/api.py b/r2/r2/controllers/api.py index 52d9df1a2..48b7d483f 100755 --- a/r2/r2/controllers/api.py +++ b/r2/r2/controllers/api.py @@ -3616,3 +3616,17 @@ class ApiController(RedditController, OAuth2ResourceController): to_omit=to_omit.values()) sr_data = [{'sr_name': sr.name} for sr in rec_srs] return json.dumps(sr_data) + + + @validatedForm( + VUser(), + VModhash(), + seconds_visibility=VOneOf( + "seconds_visibility", + ("public", "private"), + default="private", + ), + ) + def POST_server_seconds_visibility(self, form, jquery, seconds_visibility): + c.user.pref_public_server_seconds = seconds_visibility == "public" + c.user._commit() diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py old mode 100755 new mode 100644 index 6d75c5e93..872e39ea6 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -1607,7 +1607,8 @@ class ProfilePage(Reddit): from admin_pages import SponsorSidebar rb.push(SponsorSidebar(self.user)) - if c.user == self.user or c.user.employee: + if (c.user == self.user or c.user.employee or + self.user.pref_public_server_seconds): seconds_bar = ServerSecondsBar(self.user) if seconds_bar.message: rb.push(seconds_bar) @@ -1722,6 +1723,9 @@ class ServerSecondsBar(Templated): def __init__(self, user): Templated.__init__(self) + self.is_public = user.pref_public_server_seconds + self.is_user = c.user == user + seconds = 0. gold_payments = gold_payments_by_user(user) diff --git a/r2/r2/models/account.py b/r2/r2/models/account.py index f016619ec..d741ef9a4 100644 --- a/r2/r2/models/account.py +++ b/r2/r2/models/account.py @@ -93,6 +93,7 @@ class Account(Thing): pref_highlight_new_comments = True, pref_monitor_mentions=True, pref_collapse_left_bar=False, + pref_public_server_seconds=False, mobile_compress = False, mobile_thumbnail = True, trusted_sponsor = False, diff --git a/r2/r2/public/static/css/reddit.less b/r2/r2/public/static/css/reddit.less index 74474ffa6..08a1c3279 100755 --- a/r2/r2/public/static/css/reddit.less +++ b/r2/r2/public/static/css/reddit.less @@ -6362,6 +6362,24 @@ body:not(.gold) .allminus-link { padding: 10px; } +.server-seconds-public label { + margin: 0 5px; + position: relative; + top: -2px; +} + +.server-seconds-public.bottom { + margin-top: 10px; + padding-top: 10px; + text-align: left; +} + +.server-seconds-public .title { + float: left; + padding-left: 20px; + margin-right: 10px; +} + .comment-visits-box .title { font-weight: bold; font-size: 12px; diff --git a/r2/r2/templates/serversecondsbar.html b/r2/r2/templates/serversecondsbar.html index 4eec0dbc9..e0106e1e2 100644 --- a/r2/r2/templates/serversecondsbar.html +++ b/r2/r2/templates/serversecondsbar.html @@ -20,9 +20,28 @@ ## reddit Inc. All Rights Reserved. ############################################################################### +<%namespace file="utils.html" import="inline_radio_type"/> +
${thing.message} + %if thing.is_user: +
+
${_("visible to:")}
+
+ ${inline_radio_type("seconds_visibility", "private", _("only me"), checked=not thing.is_public)} + ${inline_radio_type("seconds_visibility", "public", _("everyone"), checked=thing.is_public)} +
+
+ %endif
+