You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by ke...@apache.org on 2019/01/03 14:57:15 UTC
[10/11] allura git commit: [#5461] don't show subscribe checkbox if
already subscribed to the tool
[#5461] don't show subscribe checkbox if already subscribed to the tool
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/ce7f1417
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/ce7f1417
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/ce7f1417
Branch: refs/heads/master
Commit: ce7f141790c62fea25ab6634ec5c380cc888971f
Parents: 5170721
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Dec 20 11:58:15 2018 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Fri Dec 21 12:07:41 2018 -0500
----------------------------------------------------------------------
Allura/allura/controllers/repository.py | 9 ++++---
Allura/allura/lib/widgets/repo.py | 13 +++++----
Allura/allura/model/artifact.py | 23 +++++++++-------
Allura/allura/templates/widgets/edit_post.html | 3 +--
.../templates/widgets/new_topic_post.html | 4 +--
.../allura/templates/widgets/threads_table.html | 2 +-
Allura/allura/tests/model/test_artifact.py | 28 ++++++++++++++++++++
ForgeBlog/forgeblog/main.py | 8 ++++--
.../forgeblog/templates/blog/edit_post.html | 2 +-
.../templates/blog_widgets/post_form.html | 3 +--
.../forgediscussion/controllers/root.py | 12 +++++----
ForgeDiscussion/forgediscussion/model/forum.py | 13 +++++++++
.../discussion_widgets/add_forum_short.html | 4 +--
.../discussionforums/create_topic.html | 3 ++-
.../templates/tracker/new_ticket.html | 2 +-
.../templates/tracker_widgets/ticket_form.html | 3 +--
ForgeTracker/forgetracker/tracker_main.py | 6 ++++-
.../forgewiki/templates/wiki/page_edit.html | 3 +--
ForgeWiki/forgewiki/wiki_main.py | 7 +++--
19 files changed, 103 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index db5f9a4..48a80f8 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -45,7 +45,7 @@ from allura.lib.diff import HtmlSideBySideDiff
from allura.lib.security import require_access, require_authenticated, has_access
from allura.lib.widgets import form_fields as ffw
from allura.lib.widgets.repo import SCMLogWidget, SCMRevisionWidget, SCMTreeWidget
-from allura.lib.widgets.repo import SCMMergeRequestWidget, SCMMergeRequestWidgetNew
+from allura.lib.widgets.repo import SCMMergeRequestWidget
from allura.lib.widgets.repo import SCMMergeRequestDisposeWidget, SCMCommitBrowserWidget
from allura.lib.widgets.subscriptions import SubscribeForm
from allura.controllers import AppDiscussionController
@@ -162,9 +162,12 @@ class RepoRootController(BaseController, FeedController):
target_branches = [
b.name
for b in c.app.repo.get_branches() + c.app.repo.get_tags()]
- return SCMMergeRequestWidgetNew(
+ subscribed_to_upstream = M.Mailbox.subscribed()
+ return SCMMergeRequestWidget(
source_branches=source_branches,
- target_branches=target_branches)
+ target_branches=target_branches,
+ show_subscribe_checkbox=not subscribed_to_upstream,
+ )
@without_trailing_slash
@expose('jinja:allura:templates/repo/request_merge.html')
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/Allura/allura/lib/widgets/repo.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/repo.py b/Allura/allura/lib/widgets/repo.py
index 3a9e7d9..60d358f 100644
--- a/Allura/allura/lib/widgets/repo.py
+++ b/Allura/allura/lib/widgets/repo.py
@@ -63,6 +63,7 @@ class SCMTreeWidget(ew_core.Widget):
class SCMMergeRequestWidget(ff.ForgeForm):
source_branches = []
target_branches = []
+ show_subscribe_checkbox = False
@property
def fields(self):
@@ -81,15 +82,13 @@ class SCMMergeRequestWidget(ff.ForgeForm):
ffw.MarkdownEdit(name='description')]
return result
-
-class SCMMergeRequestWidgetNew(SCMMergeRequestWidget):
-
@property
def buttons(self):
- # add to after the default submit button
- return ew_core.NameList([
- ew.Checkbox(name='subscribe', label='Subscribe to this merge request', value=True),
- ])
+ # add things after the default submit button
+ fields = ew_core.NameList()
+ if self.show_subscribe_checkbox:
+ fields.append(ew.Checkbox(name='subscribe', label='Subscribe to this merge request', value=True))
+ return fields
class SCMMergeRequestDisposeWidget(ff.ForgeForm):
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/Allura/allura/model/artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/artifact.py b/Allura/allura/model/artifact.py
index 8ae24c6..8f9c5b6 100644
--- a/Allura/allura/model/artifact.py
+++ b/Allura/allura/model/artifact.py
@@ -34,11 +34,10 @@ from allura.lib import security
from allura.lib import utils
from allura.lib import plugin
from allura.lib import exceptions as forge_exc
-
+from allura.lib.decorators import memoize
from allura.lib.search import SearchIndexable
from .session import main_orm_session
from .session import project_orm_session
-
from .session import artifact_orm_session
from .index import ArtifactReference
from .types import ACL, MarkdownCache
@@ -233,16 +232,22 @@ class Artifact(MappedClass, SearchIndexable):
app_config_id=self.app_config._id,
artifact_index_id=self.index_id())
- def subscribed(self, user=None):
+ @memoize # since its called many times from edit_post.html within threaded comments
+ def subscribed(self, user=None, include_parents=True):
from allura.model import Mailbox
if user is None:
user = c.user
- return Mailbox.subscribed(
- user_id=user._id,
- project_id=self.app_config.project_id,
- app_config_id=self.app_config._id,
- artifact=self,
- )
+ user_proj_app_q = dict(user_id=user._id,
+ project_id=self.app_config.project_id,
+ app_config_id=self.app_config._id)
+ art_subscribed = Mailbox.subscribed(artifact=self, **user_proj_app_q)
+ if art_subscribed:
+ return True
+ if include_parents:
+ tool_subscribed = Mailbox.subscribed(**user_proj_app_q)
+ if tool_subscribed:
+ return True
+ return False
def primary(self):
"""If an artifact is a "secondary" artifact (discussion of a ticket, for
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/Allura/allura/templates/widgets/edit_post.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/edit_post.html b/Allura/allura/templates/widgets/edit_post.html
index 63181b8..49a8242 100644
--- a/Allura/allura/templates/widgets/edit_post.html
+++ b/Allura/allura/templates/widgets/edit_post.html
@@ -32,8 +32,7 @@
<input type="file" class="text attachment_form_fields" style="display:none" multiple name="{{att_name}}" {% if att_id %}id="{{att_id}}"{% endif %}/>
<br>
<input type="submit" value="{{submit_text}}" />
- {% if primary_artifact and c.user and c.user != c.user.anonymous() %}
- {# TODO: if not already subscribed (to artifact, or to whole tool) #}
+ {% if primary_artifact and c.user and c.user != c.user.anonymous() and not primary_artifact.subscribed() %}
<label class="subscribe">
<input type="checkbox" checked name="subscribe">Subscribe to this {{ primary_artifact.type_name }}
</label>
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/Allura/allura/templates/widgets/new_topic_post.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/new_topic_post.html b/Allura/allura/templates/widgets/new_topic_post.html
index 46c806b..8910187 100644
--- a/Allura/allura/templates/widgets/new_topic_post.html
+++ b/Allura/allura/templates/widgets/new_topic_post.html
@@ -49,8 +49,8 @@
<div class="grid-19"> </div>
<div class="grid-19">
<input type="submit" value="{{submit_text}}">
- {% if c.user and c.user != c.user.anonymous() %}
- {# TODO: if not already subscribed to whole tool, or to forum #}
+ {% if c.user and c.user != c.user.anonymous() and not (subscribed or subscribed_to_tool) %}
+ {# subscribed is per-forum and won't change if they change the forum dropdown value, but better than nothing? :( #}
<label class="subscribe">
<input type="checkbox" checked name="subscribe">Subscribe to this topic
</label>
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/Allura/allura/templates/widgets/threads_table.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/threads_table.html b/Allura/allura/templates/widgets/threads_table.html
index c4f3d0b..e259446 100644
--- a/Allura/allura/templates/widgets/threads_table.html
+++ b/Allura/allura/templates/widgets/threads_table.html
@@ -40,7 +40,7 @@
{% if not c.user.is_anonymous() and allow_subscriptions %}
<td>
<input type="checkbox" name="threads-{{loop.index0}}.subscription"
- {%- if thread.subscribed() or forum_subscribed or tool_subscribed %} checked="checked" {% endif -%}
+ {%- if thread.subscribed(include_parents=False) or forum_subscribed or tool_subscribed %} checked="checked" {% endif -%}
{%- if forum_subscribed or tool_subscribed %}
disabled title="You are subscribed to this entire {% if forum_subscribed %}Forum. Unsubscribe with mail icon in upper right, or on Account - Subscriptions page.
{%- else %}Discussion tool. Unsubscribe on Account - Subscriptions page.{% endif %}"
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/Allura/allura/tests/model/test_artifact.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_artifact.py b/Allura/allura/tests/model/test_artifact.py
index 02a3052..017d0d3 100644
--- a/Allura/allura/tests/model/test_artifact.py
+++ b/Allura/allura/tests/model/test_artifact.py
@@ -299,3 +299,31 @@ def test_feed_from_username():
title='Something')
ThreadLocalORMSession.flush_all()
assert_equal(len(M.Feed.from_username('johndoe')), 1)
+
+
+@with_setup(setUp, tearDown)
+def test_subscribed():
+ pg = WM.Page(title='TestPage4a')
+ assert pg.subscribed(include_parents=True) # tool is subscribed to admins by default
+ assert not pg.subscribed(include_parents=False)
+
+
+@with_setup(setUp, tearDown)
+def test_subscribed_no_tool_sub():
+ pg = WM.Page(title='TestPage4b')
+ M.Mailbox.unsubscribe(user_id=c.user._id,
+ project_id=c.project._id,
+ app_config_id=c.app.config._id)
+ pg.subscribe()
+ assert pg.subscribed(include_parents=True)
+ assert pg.subscribed(include_parents=False)
+
+
+@with_setup(setUp, tearDown)
+def test_not_subscribed():
+ pg = WM.Page(title='TestPage4c')
+ M.Mailbox.unsubscribe(user_id=c.user._id,
+ project_id=c.project._id,
+ app_config_id=c.app.config._id)
+ assert not pg.subscribed(include_parents=True)
+ assert not pg.subscribed(include_parents=False)
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeBlog/forgeblog/main.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/main.py b/ForgeBlog/forgeblog/main.py
index f4706d9..7205610 100644
--- a/ForgeBlog/forgeblog/main.py
+++ b/ForgeBlog/forgeblog/main.py
@@ -296,7 +296,9 @@ class RootController(BaseController, FeedController):
post = dict(
state='published')
c.form = W.new_post_form
- return dict(post=post)
+ return dict(post=post,
+ subscribed_to_tool=M.Mailbox.subscribed(),
+ )
@memorable_forget()
@expose()
@@ -390,7 +392,9 @@ class PostController(BaseController, FeedController):
self.rate_limit(BM.BlogPost, 'Create/edit', c.app.config.url())
c.form = W.edit_post_form
c.attachment_list = W.attachment_list
- return dict(post=self.post)
+ return dict(post=self.post,
+ subscribed_to_tool=M.Mailbox.subscribed(),
+ )
@without_trailing_slash
@expose('jinja:forgeblog:templates/blog/post_history.html')
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeBlog/forgeblog/templates/blog/edit_post.html
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/templates/blog/edit_post.html b/ForgeBlog/forgeblog/templates/blog/edit_post.html
index c908a67..aa34e53 100644
--- a/ForgeBlog/forgeblog/templates/blog/edit_post.html
+++ b/ForgeBlog/forgeblog/templates/blog/edit_post.html
@@ -26,6 +26,6 @@
{% block content %}
<div class="content">
- {{c.form.display(value=post, action='save')}}
+ {{c.form.display(value=post, action='save', subscribed_to_tool=subscribed_to_tool)}}
</div>
{% endblock %}
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeBlog/forgeblog/templates/blog_widgets/post_form.html
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/templates/blog_widgets/post_form.html b/ForgeBlog/forgeblog/templates/blog_widgets/post_form.html
index 6a4f5ba..9030e87 100644
--- a/ForgeBlog/forgeblog/templates/blog_widgets/post_form.html
+++ b/ForgeBlog/forgeblog/templates/blog_widgets/post_form.html
@@ -51,8 +51,7 @@
{% for b in buttons %}
{{b.display()}}
{% endfor %}
- {% if c.user and c.user != c.user.anonymous() and widget.fields.subscribe|default %}
- {# TODO: if not already subscribed to whole tool #}
+ {% if c.user and c.user != c.user.anonymous() and widget.fields.subscribe|default and not subscribed_to_tool %}
<label class="subscribe">
<input type="checkbox" checked name="subscribe">Subscribe to this blog post
</label>
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeDiscussion/forgediscussion/controllers/root.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index bc70dbe..55c2e1f 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -39,6 +39,7 @@ from allura.lib.decorators import require_post, memorable_forget
from allura.controllers import BaseController, DispatchIndex
from allura.controllers.rest import AppRestControllerMixin
from allura.controllers.feed import FeedArgs, FeedController
+from allura import model as M
from .forum import ForumController
from forgediscussion import import_support
@@ -73,8 +74,6 @@ class RootController(BaseController, DispatchIndex, FeedController):
@with_trailing_slash
@expose('jinja:forgediscussion:templates/discussionforums/index.html')
def index(self, new_forum=False, **kw):
- c.new_topic = self.W.new_topic
- c.new_topic = self.W.new_topic
c.add_forum = self.W.add_forum
c.announcements_table = self.W.announcements_table
announcements = model.ForumThread.query.find(dict(
@@ -111,15 +110,18 @@ class RootController(BaseController, DispatchIndex, FeedController):
deleted=False))
c.new_topic = self.W.new_topic
my_forums = []
- forum_name = h.really_unicode(unquote(
- forum_name)) if forum_name else None
+ forum_name = h.really_unicode(unquote(forum_name)) if forum_name else None
current_forum = None
for f in forums:
if forum_name == f.shortname:
current_forum = f
if has_access(f, 'post')():
my_forums.append(f)
- return dict(forums=my_forums, current_forum=current_forum)
+ return dict(forums=my_forums,
+ current_forum=current_forum,
+ subscribed=M.Mailbox.subscribed(artifact=current_forum),
+ subscribed_to_tool=M.Mailbox.subscribed(),
+ )
@memorable_forget()
@h.vardec
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeDiscussion/forgediscussion/model/forum.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/model/forum.py b/ForgeDiscussion/forgediscussion/model/forum.py
index 94cb053..ce54156 100644
--- a/ForgeDiscussion/forgediscussion/model/forum.py
+++ b/ForgeDiscussion/forgediscussion/model/forum.py
@@ -185,6 +185,19 @@ class ForumThread(M.Thread):
def primary(self):
return self
+ def subscribed(self, user=None, include_parents=True):
+ subbed = super(ForumThread, self).subscribed(user=user, include_parents=include_parents)
+ if subbed:
+ return subbed
+ if include_parents:
+ if user is None:
+ user = c.user
+ forum = self.discussion
+ forum_subscribed = M.Mailbox.subscribed(artifact=forum, user_id=user._id)
+ if forum_subscribed:
+ return True
+ return False
+
def post(self, subject, text, message_id=None, parent_id=None, **kw):
post = super(ForumThread, self).post(text, message_id=message_id, parent_id=parent_id, **kw)
if not self.first_post_id:
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeDiscussion/forgediscussion/templates/discussion_widgets/add_forum_short.html
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/templates/discussion_widgets/add_forum_short.html b/ForgeDiscussion/forgediscussion/templates/discussion_widgets/add_forum_short.html
index b949cf1..a302222 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussion_widgets/add_forum_short.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussion_widgets/add_forum_short.html
@@ -21,11 +21,11 @@
<input type="hidden" name="add_forum.app_id" value="{{app and app.config._id}}">
<div class="grid-6">
<label class="cr">Forum Title:</label>
- <input type="text" name="add_forum.name" style="width:90%"/>
+ <input type="text" name="add_forum.name" style="width:90%" required/>
</div>
<div class="grid-6">
<label class="cr">Short Name (for URL):</label>
- <input type="text" name="add_forum.shortname" style="width:90%"/>
+ <input type="text" name="add_forum.shortname" style="width:90%" required/>
</div>
<div class="grid-7">
<label class="cr">Summary:</label>
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeDiscussion/forgediscussion/templates/discussionforums/create_topic.html
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/templates/discussionforums/create_topic.html b/ForgeDiscussion/forgediscussion/templates/discussionforums/create_topic.html
index 852c2d6..487553c 100644
--- a/ForgeDiscussion/forgediscussion/templates/discussionforums/create_topic.html
+++ b/ForgeDiscussion/forgediscussion/templates/discussionforums/create_topic.html
@@ -30,7 +30,8 @@
{% endif %}
{% else %}
<div class="editbox">
- {{c.new_topic.display(action=c.app.url + 'save_new_topic',show_subject=True,forums=forums, current_forum=current_forum)}}
+ {{c.new_topic.display(action=c.app.url + 'save_new_topic', show_subject=True, forums=forums,
+ current_forum=current_forum, subscribed=subscribed, subscribed_to_tool=subscribed_to_tool)}}
<div class="clear"></div>
</div>
{% endif %}
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeTracker/forgetracker/templates/tracker/new_ticket.html
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/templates/tracker/new_ticket.html b/ForgeTracker/forgetracker/templates/tracker/new_ticket.html
index e586a1c..b5c858d 100644
--- a/ForgeTracker/forgetracker/templates/tracker/new_ticket.html
+++ b/ForgeTracker/forgetracker/templates/tracker/new_ticket.html
@@ -25,7 +25,7 @@
{% block edit_box %}
<div class="editbox">
<div class="form_holder">
- {{c.ticket_form.display(action=action, value=url_params, help_msg=help_msg)}}
+ {{c.ticket_form.display(action=action, value=url_params, help_msg=help_msg, subscribed_to_tool=subscribed_to_tool)}}
</div>
</div>
{% endblock %}
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeTracker/forgetracker/templates/tracker_widgets/ticket_form.html
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/templates/tracker_widgets/ticket_form.html b/ForgeTracker/forgetracker/templates/tracker_widgets/ticket_form.html
index be256c1..bf280f8 100644
--- a/ForgeTracker/forgetracker/templates/tracker_widgets/ticket_form.html
+++ b/ForgeTracker/forgetracker/templates/tracker_widgets/ticket_form.html
@@ -126,8 +126,7 @@
<div style="clear:both"> </div>
<div class="grid-18">
{{widget.display_field_by_name('submit')|safe}}
- {% if c.user and c.user != c.user.anonymous() and not ticket %}
- {# TODO: if not already subscribed to whole tool #}
+ {% if c.user and c.user != c.user.anonymous() and not ticket and not subscribed_to_tool|default %}
<label class="subscribe">
<input type="checkbox" checked name="ticket_form.subscribe">Subscribe to this ticket
</label>
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index c065606..ad3b2b7 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -902,7 +902,11 @@ class RootController(BaseController, FeedController):
self.rate_limit(TM.Ticket, 'Ticket creation', redir='..')
c.ticket_form = W.ticket_form
help_msg = c.app.config.options.get('TicketHelpNew', '').strip()
- return dict(action=c.app.config.url() + 'save_ticket', help_msg=help_msg, url_params=kw)
+ return dict(action=c.app.config.url() + 'save_ticket',
+ help_msg=help_msg,
+ url_params=kw,
+ subscribed_to_tool=M.Mailbox.subscribed(),
+ )
@expose('jinja:allura:templates/markdown_syntax.html')
def markdown_syntax(self, **kw):
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeWiki/forgewiki/templates/wiki/page_edit.html
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/templates/wiki/page_edit.html b/ForgeWiki/forgewiki/templates/wiki/page_edit.html
index 2cb5f50..2b468e8 100644
--- a/ForgeWiki/forgewiki/templates/wiki/page_edit.html
+++ b/ForgeWiki/forgewiki/templates/wiki/page_edit.html
@@ -70,8 +70,7 @@
<div class="grid-20">
<input type="submit" value="Save">
<input type="reset" value="Cancel">
- {% if c.user and c.user != c.user.anonymous() %}
- {# TODO: if not already subscribed to whole tool #}
+ {% if c.user and c.user != c.user.anonymous() and not subscribed_to_tool %}
<label class="subscribe">
<input type="checkbox" checked name="subscribe">Subscribe to this wiki page
</label>
http://git-wip-us.apache.org/repos/asf/allura/blob/ce7f1417/ForgeWiki/forgewiki/wiki_main.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index cb5d893..c62ee0b 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -620,8 +620,11 @@ class PageController(BaseController, FeedController):
c.attachment_list = W.attachment_list
c.label_edit = W.label_edit
hide_left_bar = not c.app.show_left_bar
- return dict(page=page, page_exists=page_exists,
- hide_left_bar=hide_left_bar)
+ return dict(page=page,
+ page_exists=page_exists,
+ hide_left_bar=hide_left_bar,
+ subscribed_to_tool=M.Mailbox.subscribed(),
+ )
@without_trailing_slash
@expose('json:')