Provide option to let users self-assign link flair.

This commit is contained in:
Logan Hanks
2012-04-17 10:33:03 -07:00
parent c570ec4948
commit fbc4859634
6 changed files with 38 additions and 7 deletions

View File

@@ -2293,10 +2293,13 @@ class ApiController(RedditController):
flair_position = VOneOf("flair_position", ("left", "right")),
link_flair_position = VOneOf("link_flair_position",
("", "left", "right")),
flair_self_assign_enabled = VBoolean("flair_self_assign_enabled"))
flair_self_assign_enabled = VBoolean("flair_self_assign_enabled"),
link_flair_self_assign_enabled =
VBoolean("link_flair_self_assign_enabled"))
@api_doc(api_section.flair)
def POST_flairconfig(self, form, jquery, flair_enabled, flair_position,
link_flair_position, flair_self_assign_enabled):
link_flair_position, flair_self_assign_enabled,
link_flair_self_assign_enabled):
if c.site.flair_enabled != flair_enabled:
c.site.flair_enabled = flair_enabled
ModAction.create(c.site, c.user, action='editflair',
@@ -2313,6 +2316,12 @@ class ApiController(RedditController):
c.site.flair_self_assign_enabled = flair_self_assign_enabled
ModAction.create(c.site, c.user, action='editflair',
details='flair_self_enabled')
if (c.site.link_flair_self_assign_enabled
!= link_flair_self_assign_enabled):
c.site.link_flair_self_assign_enabled = (
link_flair_self_assign_enabled)
ModAction.create(c.site, c.user, action='editflair',
details='link_flair_self_enabled')
c.site._commit()
jquery.refresh()
@@ -2444,9 +2453,11 @@ class ApiController(RedditController):
site = c.site
else:
site = Subreddit._byID(link.sr_id, data=True)
self_assign_enabled = site.link_flair_self_assign_enabled
else:
flair_type = USER_FLAIR
site = c.site
self_assign_enabled = site.flair_self_assign_enabled
if flair_template_id:
try:
@@ -2461,7 +2472,7 @@ class ApiController(RedditController):
text = None
if not site.is_moderator(c.user) and not c.user_is_admin:
if not site.flair_self_assign_enabled:
if not self_assign_enabled:
# TODO: serve error to client
g.log.debug('flair self-assignment not permitted')
return

View File

@@ -2519,7 +2519,9 @@ class FlairPane(Templated):
flair_enabled=c.site.flair_enabled,
flair_position=c.site.flair_position,
link_flair_position=c.site.link_flair_position,
flair_self_assign_enabled=c.site.flair_self_assign_enabled)
flair_self_assign_enabled=c.site.flair_self_assign_enabled,
link_flair_self_assign_enabled=
c.site.link_flair_self_assign_enabled)
class FlairList(Templated):
"""List of users who are tagged with flair within a subreddit."""
@@ -2694,6 +2696,9 @@ class FlairSelector(CachedTemplate):
target_wrapper = (
lambda flair_template: FlairSelectorLinkSample(
link, site, flair_template))
self_assign_enabled = (
c.user._id == link.author_id
and site.link_flair_self_assign_enabled)
else:
flair_type = USER_FLAIR
target = user
@@ -2705,14 +2710,17 @@ class FlairSelector(CachedTemplate):
user, subreddit=site, force_show_flair=True,
flair_template=flair_template,
flair_text_editable=admin or template.text_editable))
self_assign_enabled = site.flair_self_assign_enabled
text = getattr(target, attr_pattern % 'text', '')
css_class = getattr(target, attr_pattern % 'css_class', '')
templates, matching_template = self._get_templates(
site, flair_type, text, css_class)
if site.flair_self_assign_enabled or admin:
if self_assign_enabled or admin:
choices = [target_wrapper(template) for template in templates]
else:
choices = []
# If one of the templates is already selected, modify its text to match
# the user's current flair.

View File

@@ -91,8 +91,7 @@ class LinkButtons(PrintableButtons):
else:
show_unmarknsfw = False
# add "or is_author" to allow submitters to edit flair on their links
show_flair = thing.can_ban
show_flair = thing.can_ban or is_author
# do we show the delete button?
show_delete = is_author and delete and not thing._deleted

View File

@@ -93,6 +93,7 @@ class ModAction(tdb_cassandra.UuidThing, Printable):
'flair_position': _('toggle user flair position'),
'link_flair_position': _('toggle link flair position'),
'flair_self_enabled': _('toggle user assigned flair enabled'),
'link_flair_self_enabled': _('toggle submitter assigned link flair enabled'),
'flair_template': _('add/edit flair templates'),
'flair_delete_template': _('delete flair template'),
'flair_clear_template': _('clear flair templates'),

View File

@@ -77,6 +77,7 @@ class Subreddit(Thing, Printable):
flair_position = 'right', # one of ('left', 'right')
link_flair_position = '', # one of ('', 'left', 'right')
flair_self_assign_enabled = False,
link_flair_self_assign_enabled = False,
)
_essentials = ('type', 'name', 'lang')
_data_int_props = Thing._data_int_props + ('mod_actions', 'reported')

View File

@@ -49,6 +49,17 @@
<label for="sr_flair_self_assign_enabled">
${_("allow users to assign their own flair")}
</label>
<br>
<input type="checkbox"
id="sr_link_flair_self_assign_enabled"
name="link_flair_self_assign_enabled"
%if thing.link_flair_self_assign_enabled:
checked="checked"
%endif
/>
<label for="sr_link_flair_self_assign_enabled">
${_("allow submitters to assign their own link flair")}
</label>
</%utils:line_field>
<%utils:line_field title="${_('user flair position')}">
<table class="small-field">