diff --git a/r2/r2/controllers/wiki.py b/r2/r2/controllers/wiki.py
index 2ebe65123..ffe5c3d57 100644
--- a/r2/r2/controllers/wiki.py
+++ b/r2/r2/controllers/wiki.py
@@ -37,6 +37,7 @@ from r2.lib.template_helpers import join_urls
from r2.lib.validator import (
nop,
validate,
+ VBoolean,
VExistingUname,
VInt,
VMarkdown,
@@ -217,7 +218,7 @@ class WikiController(RedditController):
def GET_wiki_listing(self):
def check_hidden(page):
- return this_may_view(page)
+ return page.listed and this_may_view(page)
pages, linear_pages = WikiPage.get_listing(c.site, filter_check=check_hidden)
return WikiListing(pages, linear_pages).render()
@@ -236,7 +237,8 @@ class WikiController(RedditController):
@validate(page=VWikiPage('page', restricted=True, modonly=True))
def GET_wiki_settings(self, page):
- settings = {'permlevel': page._get('permlevel', 0)}
+ settings = {'permlevel': page._get('permlevel', 0),
+ 'listed': page.listed}
mayedit = page.get_editor_accounts()
restricted = (not page.special) and page.restricted
show_editors = not restricted
@@ -247,16 +249,27 @@ class WikiController(RedditController):
@validate(VModhash(),
page=VWikiPage('page', restricted=True, modonly=True),
- permlevel=VInt('permlevel'))
- def POST_wiki_settings(self, page, permlevel):
+ permlevel=VInt('permlevel'),
+ listed=VBoolean('listed'))
+ def POST_wiki_settings(self, page, permlevel, listed):
oldpermlevel = page.permlevel
try:
page.change_permlevel(permlevel)
except ValueError:
self.handle_error(403, 'INVALID_PERMLEVEL')
- description = 'Page: %s, Changed from %s to %s' % (page.name, oldpermlevel, permlevel)
- ModAction.create(c.site, c.user, 'wikipermlevel',
- description=description)
+ if page.listed != listed:
+ page.listed = listed
+ page._commit()
+ verb = 'Relisted' if listed else 'Delisted'
+ description = '%s page %s' % (verb, page.name)
+ ModAction.create(c.site, c.user, 'wikipagelisted',
+ description=description)
+ if oldpermlevel != permlevel:
+ description = 'Page: %s, Changed from %s to %s' % (
+ page.name, oldpermlevel, permlevel
+ )
+ ModAction.create(c.site, c.user, 'wikipermlevel',
+ description=description)
return self.GET_wiki_settings(page=page.name)
def on_validation_error(self, error):
diff --git a/r2/r2/lib/jsontemplates.py b/r2/r2/lib/jsontemplates.py
index 0853200da..7264f72dc 100755
--- a/r2/r2/lib/jsontemplates.py
+++ b/r2/r2/lib/jsontemplates.py
@@ -779,6 +779,7 @@ class WikiSettingsJsonTemplate(ThingJsonTemplate):
def data(self, thing):
editors = [Wrapped(e).render() for e in thing.mayedit]
return dict(permlevel=thing.permlevel,
+ listed=thing.listed,
editors=editors)
class WikiRevisionJsonTemplate(ThingJsonTemplate):
diff --git a/r2/r2/lib/pages/wiki.py b/r2/r2/lib/pages/wiki.py
index 43673af55..ca230f332 100644
--- a/r2/r2/lib/pages/wiki.py
+++ b/r2/r2/lib/pages/wiki.py
@@ -73,6 +73,7 @@ class WikiPageSettings(Templated):
def __init__(self, settings, mayedit, show_editors=True,
show_settings=True, page=None, **context):
self.permlevel = settings['permlevel']
+ self.listed = settings['listed']
self.show_settings = show_settings
self.show_editors = show_editors
self.page = page
diff --git a/r2/r2/models/modaction.py b/r2/r2/models/modaction.py
index c7b8b2700..64168feb2 100644
--- a/r2/r2/models/modaction.py
+++ b/r2/r2/models/modaction.py
@@ -56,7 +56,7 @@ class ModAction(tdb_cassandra.UuidThing, Printable):
'invitemoderator', 'uninvitemoderator', 'acceptmoderatorinvite',
'removemoderator', 'addcontributor', 'removecontributor',
'editsettings', 'editflair', 'distinguish', 'marknsfw',
- 'wikibanned', 'wikicontributor', 'wikiunbanned',
+ 'wikibanned', 'wikicontributor', 'wikiunbanned', 'wikipagelisted',
'removewikicontributor', 'wikirevise', 'wikipermlevel',
'ignorereports', 'unignorereports', 'setpermissions', 'sticky',
'unsticky')
@@ -81,6 +81,7 @@ class ModAction(tdb_cassandra.UuidThing, Printable):
'wikibanned': _('ban from wiki'),
'wikiunbanned': _('unban from wiki'),
'wikicontributor': _('add wiki contributor'),
+ 'wikipagelisted': _('delist/relist wiki pages'),
'removewikicontributor': _('remove wiki contributor'),
'wikirevise': _('wiki revise page'),
'wikipermlevel': _('wiki page permissions'),
@@ -112,6 +113,7 @@ class ModAction(tdb_cassandra.UuidThing, Printable):
'editflair': _('edited flair'),
'wikirevise': _('edited wiki page'),
'wikipermlevel': _('changed wiki page permission level'),
+ 'wikipagelisted': _('changed wiki page listing preference'),
'distinguish': _('distinguished'),
'marknsfw': _('marked nsfw'),
'ignorereports': _('ignored reports'),
diff --git a/r2/r2/models/wiki.py b/r2/r2/models/wiki.py
index 43284d289..077695263 100644
--- a/r2/r2/models/wiki.py
+++ b/r2/r2/models/wiki.py
@@ -91,7 +91,7 @@ class WikiRevision(tdb_cassandra.UuidThing, Printable):
_str_props = ('pageid', 'content', 'author', 'reason')
_bool_props = ('hidden')
-
+
cache_ignore = set(list(_str_props)).union(Printable.cache_ignore).union(['wikipage'])
def get_author(self):
@@ -192,8 +192,9 @@ class WikiPage(tdb_cassandra.Thing):
_date_props = ('last_edit_date')
_str_props = ('revision', 'name', 'last_edit_by', 'content', 'sr')
_int_props = ('permlevel')
- _bool_props = ('listed_')
-
+ _bool_props = ('listed')
+ _defaults = {'listed': True}
+
def get_author(self):
if self._get('last_edit_by'):
return Account._byID36(self.last_edit_by, data=True)
@@ -225,7 +226,7 @@ class WikiPage(tdb_cassandra.Thing):
if not name or not sr:
raise ValueError
name = name.lower()
- kw = dict(sr=sr._id36, name=name, permlevel=0, content='', listed_=False)
+ kw = dict(sr=sr._id36, name=name, permlevel=0, content='')
page = cls(**kw)
page._commit()
return page
diff --git a/r2/r2/public/static/css/reddit.less b/r2/r2/public/static/css/reddit.less
index ca2ff2375..9326218c6 100755
--- a/r2/r2/public/static/css/reddit.less
+++ b/r2/r2/public/static/css/reddit.less
@@ -6875,6 +6875,7 @@ body:not(.gold) .allminus-link {
.modactions.wikibanned,
.modactions.wikiunbanned,
.modactions.wikicontributor,
+.modactions.wikipagelisted,
.modactions.removewikicontributor,
.modactions.ignorereports,
.modactions.unignorereports,
@@ -6920,6 +6921,7 @@ body:not(.gold) .allminus-link {
.modactions.removecontributor {
background-image: url(../modactions_removecontributor.png); /* SPRITE */
}
+.modactions.wikipagelisted,
.modactions.editsettings {
background-image: url(../modactions_editsettings.png); /* SPRITE */
}
diff --git a/r2/r2/templates/wikipagesettings.html b/r2/r2/templates/wikipagesettings.html
index 2628c4f50..8165b99a7 100644
--- a/r2/r2/templates/wikipagesettings.html
+++ b/r2/r2/templates/wikipagesettings.html
@@ -49,6 +49,14 @@
%endif
/>
%utils:line_field>
+
+ <%utils:line_field title=" ${_('show this page on the listing?')}">
+
+ %utils:line_field>
%endif
%if thing.show_editors and thing.permlevel != 2: