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:14 UTC
[09/11] allura git commit: [#5461] add subscribe option to new blog
posts
[#5461] add subscribe option to new blog posts
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/4a6f8c06
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/4a6f8c06
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/4a6f8c06
Branch: refs/heads/master
Commit: 4a6f8c06c66f11e68f87c7a80888351d8a535c41
Parents: 3e066d0
Author: Dave Brondsema <da...@brondsema.net>
Authored: Wed Dec 19 12:35:35 2018 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Thu Dec 20 11:59:01 2018 -0500
----------------------------------------------------------------------
ForgeBlog/forgeblog/main.py | 3 +-
ForgeBlog/forgeblog/model/blog.py | 8 ++-
.../templates/blog_widgets/post_form.html | 6 ++
ForgeBlog/forgeblog/widgets.py | 58 +++++++++++++-------
4 files changed, 50 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/4a6f8c06/ForgeBlog/forgeblog/main.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/main.py b/ForgeBlog/forgeblog/main.py
index 066c238..f4706d9 100644
--- a/ForgeBlog/forgeblog/main.py
+++ b/ForgeBlog/forgeblog/main.py
@@ -301,7 +301,8 @@ class RootController(BaseController, FeedController):
@memorable_forget()
@expose()
@require_post()
- @validate(form=W.edit_post_form, error_handler=new)
+ # both new & edit submit here, but validate with new since it adds a field (subscribe)
+ @validate(form=W.new_post_form, error_handler=new)
@without_trailing_slash
def save(self, **kw):
require_access(c.app, 'write')
http://git-wip-us.apache.org/repos/asf/allura/blob/4a6f8c06/ForgeBlog/forgeblog/model/blog.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/model/blog.py b/ForgeBlog/forgeblog/model/blog.py
index f20b228..0cbd8df 100644
--- a/ForgeBlog/forgeblog/model/blog.py
+++ b/ForgeBlog/forgeblog/model/blog.py
@@ -234,10 +234,11 @@ class BlogPost(M.VersionedArtifact, ActivityObject):
HC = self.__mongometa__.history_class
return HC.query.find({'artifact_id': self._id, 'version': int(version)}).one()
- def commit(self):
+ def commit(self, subscribe=False):
activity = functools.partial(g.director.create_activity, c.user,
related_nodes=[c.project], tags=['blog'])
- self.subscribe()
+ if subscribe:
+ self.subscribe()
super(BlogPost, self).commit()
if self.version > 1:
v1 = self.get_version(self.version - 1)
@@ -291,11 +292,12 @@ class BlogPost(M.VersionedArtifact, ActivityObject):
@classmethod
def new(cls, **kw):
post = cls()
+ subscribe = kw.pop('subscribe', False)
for k, v in kw.iteritems():
setattr(post, k, v)
post.neighborhood_id = c.project.neighborhood_id
post.make_slug()
- post.commit()
+ post.commit(subscribe=subscribe)
M.Thread.new(
discussion_id=post.app_config.discussion_id,
ref_id=post.index_id(),
http://git-wip-us.apache.org/repos/asf/allura/blob/4a6f8c06/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 b8216b0..6a4f5ba 100644
--- a/ForgeBlog/forgeblog/templates/blog_widgets/post_form.html
+++ b/ForgeBlog/forgeblog/templates/blog_widgets/post_form.html
@@ -51,6 +51,12 @@
{% 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 #}
+ <label class="subscribe">
+ <input type="checkbox" checked name="subscribe">Subscribe to this blog post
+ </label>
+ {% endif %}
<a href="{{c.app.url}}" class="btn link cancel_form">Cancel</a>
</div>
{% if widget.antispam %}{% for fld in g.antispam.extra_fields() %}
http://git-wip-us.apache.org/repos/asf/allura/blob/4a6f8c06/ForgeBlog/forgeblog/widgets.py
----------------------------------------------------------------------
diff --git a/ForgeBlog/forgeblog/widgets.py b/ForgeBlog/forgeblog/widgets.py
index 6b055fc..0110b40 100644
--- a/ForgeBlog/forgeblog/widgets.py
+++ b/ForgeBlog/forgeblog/widgets.py
@@ -29,31 +29,38 @@ class BlogPager(ffw.PageList):
template = 'jinja:forgeblog:templates/blog_widgets/page_list.html'
-class NewPostForm(forms.ForgeForm):
+class BlogPostForm(forms.ForgeForm):
template = 'jinja:forgeblog:templates/blog_widgets/post_form.html'
enctype = 'multipart/form-data'
- class fields(ew_core.NameList):
- title = ew.TextField(validator=fev.UnicodeString(not_empty=True,
- messages={'empty': "You must provide a Title"}),
- attrs=dict(placeholder='Enter your title here',
- title='Enter your title here',
- style='width: 425px'))
- text = ffw.MarkdownEdit(show_label=False,
- attrs=dict(
- placeholder='Enter your content here',
- title='Enter your content here'))
- state = ew.SingleSelectField(
- options=[
- ew.Option(py_value='draft', label='Draft'),
- ew.Option(py_value='published', label='Published')])
- labels = ffw.LabelEdit(placeholder='Add labels here',
- title='Add labels here')
- attachment = ew.InputField(label='Attachment', field_type='file', attrs={'multiple': 'True'},
- validator=fev.FieldStorageUploadConverter(if_missing=None))
+ @property
+ def fields(self):
+ return ew_core.NameList([
+ ew.TextField(name='title',
+ validator=fev.UnicodeString(not_empty=True,
+ messages={'empty': "You must provide a Title"}),
+ attrs=dict(placeholder='Enter your title here',
+ title='Enter your title here',
+ style='width: 425px')),
+ ffw.MarkdownEdit(name='text',
+ show_label=False,
+ attrs=dict(
+ placeholder='Enter your content here',
+ title='Enter your content here')),
+ ew.SingleSelectField(name='state',
+ options=[
+ ew.Option(py_value='draft', label='Draft'),
+ ew.Option(py_value='published', label='Published')]),
+ ffw.LabelEdit(name='labels',
+ placeholder='Add labels here',
+ title='Add labels here'),
+ ew.InputField(name='attachment',
+ label='Attachment', field_type='file', attrs={'multiple': 'True'},
+ validator=fev.FieldStorageUploadConverter(if_missing=None)),
+ ])
def resources(self):
- for r in super(NewPostForm, self).resources():
+ for r in super(BlogPostForm, self).resources():
yield r
yield ew.JSScript('''
$(function() {
@@ -62,7 +69,16 @@ class NewPostForm(forms.ForgeForm):
''')
-class EditPostForm(NewPostForm):
+class NewPostForm(BlogPostForm):
+
+ @property
+ def fields(self):
+ fields = super(NewPostForm, self).fields
+ fields.append(ew.Checkbox(name='subscribe'))
+ return fields
+
+
+class EditPostForm(BlogPostForm):
class buttons(ew_core.NameList):
delete = ew.SubmitButton(label='Delete')