[IMP] website_blog:
Some file renaming Delegated followers of categories / blog posts management to website_mail, allowing to remove some templates and controllers Various cleanings and improvements in blog templates bzr revid: tde@openerp.com-20130923101730-b9606qcyd3sj2pwx
This commit is contained in:
parent
b34f746c36
commit
8c89bfda88
|
@ -33,8 +33,9 @@ OpenERP Blog
|
|||
'depends': ['knowledge', 'website_mail'],
|
||||
'data': [
|
||||
'website_blog_data.xml',
|
||||
'views/website_blog_views.xml',
|
||||
'views/website_templates.xml',
|
||||
'website_blog_demo.xml',
|
||||
'views/website_blog_classic.xml',
|
||||
'views/website_blog_templates.xml',
|
||||
'views/res_config.xml',
|
||||
# 'wizard/document_page_create_menu_view.xml',
|
||||
'wizard/document_page_show_diff_view.xml',
|
||||
|
@ -42,7 +43,7 @@ OpenERP Blog
|
|||
'security/website_mail.xml',
|
||||
],
|
||||
'demo': [
|
||||
'website_blog_demo.xml'
|
||||
# 'website_blog_demo.xml'
|
||||
],
|
||||
'test': [
|
||||
'test/document_page_test00.yml'
|
||||
|
|
|
@ -59,11 +59,12 @@ class website_mail(http.Controller):
|
|||
blog_post = None
|
||||
blog_posts = None
|
||||
pager = None
|
||||
if not category_id:
|
||||
category_ids = category_obj.search(cr, uid, [], context=context)
|
||||
categories = category_obj.browse(cr, uid, category_ids, context=context)
|
||||
|
||||
category_ids = category_obj.search(cr, uid, [], context=context)
|
||||
categories = category_obj.browse(cr, uid, category_ids, context=context)
|
||||
|
||||
# category but no post chosen: display the last ones, create pager
|
||||
elif category_id and not blog_post_id:
|
||||
if category_id and not blog_post_id:
|
||||
pager_begin = (page - 1) * self._category_post_per_page
|
||||
pager_end = page * self._category_post_per_page
|
||||
category = category_obj.browse(cr, uid, category_id, context=context)
|
||||
|
@ -129,55 +130,3 @@ class website_mail(http.Controller):
|
|||
'website_published': False,
|
||||
}, context=create_context)
|
||||
return werkzeug.utils.redirect("/blog/%s/%s/?unable_editor=1" % (category_id, blog_id))
|
||||
|
||||
def _find_or_create_partner(self, email, context=None):
|
||||
partner_obj = request.registry['res.partner']
|
||||
user_obj = request.registry['res.users']
|
||||
partner_ids = []
|
||||
if request.context['is_public_user'] and email:
|
||||
partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", email)], context=request.context)
|
||||
if not partner_ids:
|
||||
partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": email, "name": email}, request.context)]
|
||||
else:
|
||||
partner_ids = [user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id]
|
||||
return partner_ids
|
||||
|
||||
@website.route(['/blog/<int:category_id>/subscribe'], type='http', auth="public")
|
||||
def category_subscribe(self, category_id=None, **post):
|
||||
partner_ids = self._find_or_create_partner(post.get('email'), request.context)
|
||||
category_obj = request.registry['blog.category']
|
||||
|
||||
category_obj.check_access_rule(request.cr, request.uid, [category_id], 'read', request.context)
|
||||
category_obj.message_subscribe(request.cr, SUPERUSER_ID, [category_id], partner_ids, context=request.context)
|
||||
|
||||
return self.blog(category_id=category_id)
|
||||
|
||||
@website.route(['/blog/<int:category_id>/unsubscribe'], type='http', auth="public")
|
||||
def category_unsubscribe(self, category_id=None, **post):
|
||||
partner_ids = self._find_or_create_partner(post.get('email'), request.context)
|
||||
category_obj = request.registry['blog.category']
|
||||
|
||||
category_obj.check_access_rule(request.cr, request.uid, [category_id], 'read', request.context)
|
||||
category_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [category_id], partner_ids, context=request.context)
|
||||
|
||||
return self.blog(category_id=category_id)
|
||||
|
||||
@website.route(['/blog/<int:category_id>/<int:blog_post_id>/subscribe'], type='http', auth="public")
|
||||
def blog_post_subscribe(self, category_id=None, blog_post_id=None, **post):
|
||||
partner_ids = self._find_or_create_partner(post.get('email'), request.context)
|
||||
blog_post_obj = request.registry['blog.post']
|
||||
|
||||
blog_post_obj.check_access_rule(request.cr, request.uid, [blog_post_id], 'read', request.context)
|
||||
blog_post_obj.message_subscribe(request.cr, SUPERUSER_ID, [blog_post_id], partner_ids, context=request.context)
|
||||
|
||||
return self.blog(category_id=category_id, blog_post_id=blog_post_id)
|
||||
|
||||
@website.route(['/blog/<int:category_id>/<int:blog_post_id>/unsubscribe'], type='http', auth="public")
|
||||
def blog_post_unsubscribe(self, category_id=None, blog_post_id=None, **post):
|
||||
partner_ids = self._find_or_create_partner(post.get('email'), request.context)
|
||||
blog_post_obj = request.registry['blog.post']
|
||||
|
||||
blog_post_obj.check_access_rule(request.cr, request.uid, [blog_post_id], 'read', request.context)
|
||||
blog_post_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [blog_post_id], partner_ids, context=request.context)
|
||||
|
||||
return self.blog(category_id=category_id, blog_post_id=blog_post_id)
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
sass:
|
||||
sass --compass --trace -t expanded blog.sass blog.css
|
||||
sass --compass --trace -t expanded website_blog.sass website_blog.css
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
@import "compass/css3"
|
||||
|
||||
.css_website_mail
|
||||
.has-error
|
||||
border-color: red
|
||||
.css_nav_month
|
||||
display: none
|
||||
&:first-of-type
|
||||
display: block
|
||||
|
||||
/* ---- PUBLISH ---- */
|
||||
/ a[data-publish]
|
||||
/ text-decoration: none !important
|
||||
/ z-index: 2
|
||||
/ .label
|
||||
/ padding: 5px 8px
|
||||
/ .css_unpublish, .css_publish, .css_unpublished, .css_published
|
||||
/ display: none
|
||||
/ &[data-publish='off']
|
||||
/ .css_unpublished, &:hover .css_publish
|
||||
/ display: inline
|
||||
/ &:hover .css_unpublished
|
||||
/ display: none
|
||||
/ &[data-publish='on']
|
||||
/ .css_published, &:hover .css_unpublish
|
||||
/ display: inline
|
||||
/ &:hover .css_published
|
||||
/ display: none
|
||||
|
||||
/ [data-publish='off']:not(a)
|
||||
/ >:not([data-publish])
|
||||
/ opacity: 0.5
|
||||
/ [data-publish]:not(a)
|
||||
/ position: relative
|
||||
/ overflow: visible
|
||||
/ >[data-publish]
|
||||
/ position: absolute
|
||||
/ right: -6px
|
||||
/ top: -10px
|
||||
/ display: none
|
||||
/*&:hover > [data-publish]*/
|
||||
/* display: block*/
|
|
@ -0,0 +1,9 @@
|
|||
@import "compass/css3"
|
||||
|
||||
.css_website_mail
|
||||
.has-error
|
||||
border-color: red
|
||||
.css_nav_month
|
||||
display: none
|
||||
&:first-of-type
|
||||
display: block
|
|
@ -27,9 +27,10 @@ $(document).ready(function () {
|
|||
}
|
||||
});
|
||||
|
||||
$form = $('.js_website_mail form#post');
|
||||
$form = $('.js_website_blog form#comment');
|
||||
$form.submit(function (e) {
|
||||
e.preventDefault();
|
||||
console.log(e)
|
||||
var error = $form.find("textarea").val().length < 3;
|
||||
$form.find("textarea").toggleClass("has-error", error);
|
||||
if (!error) {
|
|
@ -12,47 +12,29 @@
|
|||
</xpath>
|
||||
</template>
|
||||
|
||||
<!-- Follow button -->
|
||||
<template id="blog_post_unfollow" name="Follow">
|
||||
<form t-attf-action="/blog/#{object.category_id.id}/#{object.id}/unsubscribe" method="POST" class="form-inline" t-if="object.message_is_follower">
|
||||
<input type="hidden" name="email" t-att-value="subscribe" style="display: none"/>
|
||||
<button type="submit" class="btn btn-sm btn-default pull-right" name="unsubscribe">Unfollow</button>
|
||||
</form>
|
||||
</template>
|
||||
<template id="blog_post_follow" name="Follow">
|
||||
<form t-attf-action="/blog/#{object.category_id.id}/#{object.id}/subscribe" method="POST" class="form-inline" t-if="not object.message_is_follower">
|
||||
<div class="col-lg-7">
|
||||
<input placeholder="Email Address" type="email" name="email" class="form-control" t-if="is_public_user"/>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-sm btn-primary pull-right" name="subscribe">Follow</button>
|
||||
</form>
|
||||
</template>
|
||||
|
||||
<!-- Post -->
|
||||
<template id="blog_post_short" name="Blog Post">
|
||||
<!-- Blog Post -->
|
||||
<template id="view_blog_post_short" name="Blog Post Short">
|
||||
<div class="media-body">
|
||||
<t t-call="website_blog.blog_post_follow"><t t-set="object" t-value="blog_post"/></t>
|
||||
<t t-call="website_blog.blog_post_unfollow"><t t-set="object" t-value="blog_post"/></t>
|
||||
<t t-call="website_mail.follow"><t t-set="object" t-value="blog_post"/></t>
|
||||
<t t-call="website.publish"><t t-set="object" t-value="blog_post"/></t>
|
||||
<small class="text-muted">
|
||||
<t t-field="blog_post.create_uid"/> on <t t-field="blog_post.create_date"/>
|
||||
</small>
|
||||
<h4 class="media-heading" ><a t-attf-href="/blog_post/#{blog_post.category_id.id}/#{blog_post.id}#comment" t-field="blog_post.name"></a></h4>
|
||||
<h4 class="media-heading" ><a t-attf-href="/blog/#{blog_post.category_id.id}/#{blog_post.id}#comment" t-field="blog_post.name"></a></h4>
|
||||
<div class="media">
|
||||
<div t-field="blog_post.shortened_content"/>
|
||||
<small class="pull-left muted text-right">
|
||||
<a t-if="len(blog_post.message_ids) <= 1" t-attf-href="/blog/#{blog_post.category_id.id}/#{blog_post.id}#comment"><t t-esc="len(blog_post.message_ids)"/> Comment</a>
|
||||
<a t-if="len(blog_post.message_ids) > 1" t-attf-href="/blog/#{blog_post.category_id.id}/#{blog_post.id}#comment"><t t-esc="len(blog_post.message_ids)"/> Comments</a>
|
||||
<a t-if="len(blog_post.message_ids) <= 1" t-attf-href="/blog/#{blog_post.category_id.id}/#{blog_post.id}#comments"><t t-esc="len(blog_post.message_ids)"/> Comment</a>
|
||||
<a t-if="len(blog_post.message_ids) > 1" t-attf-href="/blog/#{blog_post.category_id.id}/#{blog_post.id}#comments"><t t-esc="len(blog_post.message_ids)"/> Comments</a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="blog_post" name="Blog Post">
|
||||
<template id="view_blog_post" name="Blog Post">
|
||||
<div class="media">
|
||||
<div class="media-body">
|
||||
<t t-call="website_blog.blog_post_follow"><t t-set="object" t-value="blog_post"/></t>
|
||||
<t t-call="website_blog.blog_post_unfollow"><t t-set="object" t-value="blog_post"/></t>
|
||||
<t t-call="website_mail.follow"><t t-set="object" t-value="blog_post"/></t>
|
||||
<t t-call="website.publish"><t t-set="object" t-value="blog_post"/></t>
|
||||
<small class="text-muted">
|
||||
<t t-field="blog_post.create_uid"/> on <t t-field="blog_post.create_date"/>
|
||||
|
@ -60,7 +42,7 @@
|
|||
<h3 t-field="blog_post.name"/>
|
||||
<div t-field="blog_post.content"/>
|
||||
</div>
|
||||
<ul class="media-list" id="comment">
|
||||
<ul class="media-list" id="comments">
|
||||
<li t-foreach="blog_post.website_message_ids" t-as="message" class="media">
|
||||
<div class="media-body">
|
||||
<t t-call="website.publish"><t t-set="object" t-value="message"/></t>
|
||||
|
@ -72,58 +54,51 @@
|
|||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<form id="blog" t-attf-action="/blog/#{blog_post.category_id.id}/#{blog_post.id}/post#post"
|
||||
<form id="comment" t-attf-action="/blog/#{blog_post.category_id.id}/#{blog_post.id}/post#post"
|
||||
method="POST" class="form-horizontal text-center"
|
||||
groups="group_website_mail_reply">
|
||||
groups="group_website_blog_reply">
|
||||
<textarea rows="4" placeholder="Your comment" class="col-md-7 form-control"></textarea>
|
||||
<button type="submit" class="btn btn-default">Post your comment</button>
|
||||
</form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<!-- Page -->
|
||||
<template id="index" name="Blogs" page="True">
|
||||
<t t-call="website.layout">
|
||||
<t t-set="head">
|
||||
<script type="text/javascript" src="/website_blog/static/src/js/blog.js"></script>
|
||||
<link rel='stylesheet' href='/website_blog/static/src/css/blog.css'/>
|
||||
<script type="text/javascript" src="/website_blog/static/src/js/website_blog.js"></script>
|
||||
<link rel='stylesheet' href='/website_blog/static/src/css/website_blog.css'/>
|
||||
<t t-raw="head or ''"/>
|
||||
</t>
|
||||
<t t-set="title">Blog</t>
|
||||
<div id="wrap">
|
||||
<div class="container mt48 js_website_mail">
|
||||
<div class="container mt48 js_website_blog">
|
||||
<div class="row">
|
||||
<div class="col-md-3" id="left_column">
|
||||
<div class="col-md-3" id="left_column">
|
||||
<h4>Categories</h4>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<t t-foreach="categories" t-as="nav_category">
|
||||
<li t-att-class="'active' if category and category.id == nav_category.id else ''">
|
||||
<a t-attf-href="/blog/#{nav_category.id}">
|
||||
<t t-field="nav_category.name"/>
|
||||
</a>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
<t t-if="category">
|
||||
Latests posts on <t t-field="category.name"/>
|
||||
<a t-if="editable" t-attf-href="/blog/new" class="btn btn-default">New Blog Post</a>
|
||||
<div>
|
||||
<form t-attf-action="/blog/#{category.id}/subscribe"
|
||||
method="POST" class="form-inline"
|
||||
t-if="not category.message_is_follower">
|
||||
<div class="col-lg-7">
|
||||
<input placeholder="Email Address" type="email" name="email" class="form-control" t-if="is_public_user"/>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary" name="subscribe">Follow</button>
|
||||
</form>
|
||||
<form t-attf-action="/blog/#{category.id}/unsubscribe"
|
||||
method="POST" class="form-inline"
|
||||
t-if="category.message_is_follower">
|
||||
<input type="hidden" name="email" t-att-value="subscribe" style="display: none"/>
|
||||
<button type="submit" class="btn btn-default" name="unsubscribe">Unfollow</button>
|
||||
</form>
|
||||
</div>
|
||||
<a t-if="editable" t-attf-href="/blog/#{category.id}/new" class="btn btn-default">New Blog Post</a>
|
||||
<t t-call="website_mail.follow"><t t-set="object" t-value="category"/></t>
|
||||
</t>
|
||||
</div>
|
||||
<div class="col-md-9" t-if="blog_post">
|
||||
<t t-call="website_blog.blog_post"><t t-set="blog_post" t-value="blog_post"/></t>
|
||||
<t t-call="website_blog.view_blog_post"><t t-set="blog_post" t-value="blog_post"/></t>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8" t-if="not blog_post and blog_posts">
|
||||
<div class="col-md-9" t-if="not blog_post and blog_posts">
|
||||
<ul class="media-list">
|
||||
<li t-foreach="blog_posts" t-as="blog_post" data-publish="">
|
||||
<t t-call="website_blog.blog_post_short"><t t-set="blog_post" t-value="blog_post"/></t>
|
||||
<t t-call="website_blog.view_blog_post_short"/>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="text-center">
|
||||
|
@ -145,12 +120,11 @@
|
|||
</xpath> -->
|
||||
</template>
|
||||
|
||||
|
||||
<!-- Option: archives -->
|
||||
<template id="blog_history" inherit_id="website_blog.index" inherit_option_id="website_blog.index" name="History">
|
||||
<xpath expr="//div[@id='left_column']" position="inside">
|
||||
<h4>Archives</h4>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li class="nav-header"><a t-attf-href="/blog/#{category_id}/">Archives</a></li>
|
||||
<!-- TODO: check qweb iteration -->
|
||||
<li t-foreach="nav_list" t-as="year" class="js_nav_year">
|
||||
<t t-set="year" t-value="nav_list[year]"/>
|
||||
<a href="#"><t t-esc="year['name']"/> <small>(<t t-esc="year['create_date_count']"/>)</small></a>
|
|
@ -61,7 +61,7 @@ class BlogPost(osv.Model):
|
|||
_inherit = ['mail.thread']
|
||||
_order = 'name'
|
||||
# maximum number of characters to display in summary
|
||||
_shorten_max_char = 10
|
||||
_shorten_max_char = 100
|
||||
|
||||
def get_shortened_content(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
|
@ -71,6 +71,8 @@ class BlogPost(osv.Model):
|
|||
except Exception:
|
||||
body_short = False
|
||||
res[page.id] = body_short
|
||||
print body_short
|
||||
print '-----------------\n\n'
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
|
|
|
@ -10,7 +10,6 @@ $(document).ready(function () {
|
|||
});
|
||||
|
||||
$(document).on('click', '.js_follow', function (ev) {
|
||||
console.log(ev);
|
||||
ev.preventDefault();
|
||||
var $data = $(":first", this).parents("[data-follow]");
|
||||
var message_is_follower = $data.first().attr("data-follow");
|
||||
|
|
Loading…
Reference in New Issue