summaryrefslogtreecommitdiff
path: root/addons/website_mail
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@openerp.com>2013-09-06 10:35:00 +0200
committerChristophe Matthieu <chm@openerp.com>2013-09-06 10:35:00 +0200
commit8a3f1742e0e9c7acaae726e5c7106d2d7df7e970 (patch)
tree78ae5d981fcd25677caea5c8b3999b1e77bf4547 /addons/website_mail
parent6f6c59ec1de1881a70e4bf728ea5d8b56bd609f9 (diff)
parentc80cf7d0646463b290137c26fbada568a6942b00 (diff)
[MERGE] from website-al
bzr revid: chm@openerp.com-20130906083500-4n5knaxiqt4cg2ht
Diffstat (limited to 'addons/website_mail')
-rw-r--r--addons/website_mail/__openerp__.py1
-rw-r--r--addons/website_mail/controllers/main.py35
-rw-r--r--addons/website_mail/views/website_mail.xml37
-rw-r--r--addons/website_mail/website_mail_data.xml16
4 files changed, 52 insertions, 37 deletions
diff --git a/addons/website_mail/__openerp__.py b/addons/website_mail/__openerp__.py
index 951cd1706f6..1f30992aaa9 100644
--- a/addons/website_mail/__openerp__.py
+++ b/addons/website_mail/__openerp__.py
@@ -11,6 +11,7 @@ OpenERP Blog
'author': 'OpenERP SA',
'depends': ['website', 'mail'],
'data': [
+ 'website_mail_data.xml',
'views/website_mail.xml',
'views/res_config.xml',
'security/website_mail.xml',
diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py
index 3011908471d..194281f9d93 100644
--- a/addons/website_mail/controllers/main.py
+++ b/addons/website_mail/controllers/main.py
@@ -3,6 +3,7 @@
from openerp import SUPERUSER_ID
from openerp.addons.web import http
from openerp.addons.web.http import request
+from openerp.addons.website import website
import werkzeug
from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval
@@ -13,7 +14,7 @@ _months = {1:_("January"), 2:_("February"), 3:_("March"), 4:_("April"), 5:_("May
class website_mail(http.Controller):
- @http.route(['/blog/', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/',
+ @website.route(['/blog/', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/',
'/blog/page/<int:page>/', '/blog/<int:mail_group_id>/page/<int:page>/', '/blog/<int:mail_group_id>/<int:blog_id>/page/<int:page>/'], type='http', auth="public")
def blog(self, mail_group_id=None, blog_id=None, page=0, **post):
website = request.registry['website']
@@ -21,16 +22,16 @@ class website_mail(http.Controller):
message_obj = request.registry['mail.message']
user_obj = request.registry['res.users']
- values = website.get_rendering_context({
+ values = {
'blog_ids': None,
'blog_id': None,
'nav_list': dict(),
'mail_group_id': mail_group_id,
'subscribe': post.get('subscribe'),
'website': website,
- })
+ }
- if request.uid != website.get_public_user().id and mail_group_id:
+ if not request.webcontext.is_public_user and mail_group_id:
message_follower_ids = group_obj.read(request.cr, request.uid, [mail_group_id], ['message_follower_ids'])[0]['message_follower_ids']
parent_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id
values['subscribe'] = parent_id in message_follower_ids
@@ -54,20 +55,19 @@ class website_mail(http.Controller):
values['pager'] = pager
values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids)
- return website.render("website_mail.index", values)
+ return request.webcontext.render("website_mail.index", values)
- @http.route(['/blog/nav'], type='http', auth="public")
+ @website.route(['/blog/nav'], type='http', auth="public")
def nav(self, **post):
comment_ids = request.registry['mail.group'].get_public_message_ids(request.cr, request.uid, domain=safe_eval(post.get('domain')), order="create_date asc", limit=None)
return simplejson.dumps(request.registry['mail.message'].read(request.cr, request.uid, comment_ids, ['website_published', 'subject', 'res_id']))
- @http.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="public")
+ @website.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="public")
def blog_post(self, mail_group_id=None, blog_id=None, **post):
- website = request.registry['website']
url = request.httprequest.host_url
if post.get('body'):
request.session.body = post.get('body')
- if request.uid == website.get_public_user().id:
+ if request.webcontext.is_public_user:
return '%s/admin#action=redirect&url=%s/blog/%s/%s/post' % (url, url, mail_group_id, blog_id)
if 'body' in request.session and request.session.body:
@@ -86,7 +86,7 @@ class website_mail(http.Controller):
else:
return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
- @http.route(['/blog/<int:mail_group_id>/new'], type='http', auth="public")
+ @website.route(['/blog/<int:mail_group_id>/new'], type='http', auth="public")
def new_blog_post(self, mail_group_id=None, **post):
blog_id = request.registry['mail.group'].message_post(request.cr, request.uid, mail_group_id,
body=_("Blog content.<br/>Please edit this content then you can publish this blog."),
@@ -98,15 +98,14 @@ class website_mail(http.Controller):
)
return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
- @http.route(['/blog/<int:mail_group_id>/subscribe', '/blog/<int:mail_group_id>/<int:blog_id>/subscribe'], type='http', auth="public")
+ @website.route(['/blog/<int:mail_group_id>/subscribe', '/blog/<int:mail_group_id>/<int:blog_id>/subscribe'], type='http', auth="public")
def subscribe(self, mail_group_id=None, blog_id=None, **post):
- website = request.registry['website']
partner_obj = request.registry['res.partner']
group_obj = request.registry['mail.group']
user_obj = request.registry['res.users']
- if mail_group_id and 'subscribe' in post and (post.get('email') or request.uid != website.get_public_user().id):
- if request.uid == website.get_public_user().id:
+ if mail_group_id and 'subscribe' in post and (post.get('email') or not request.webcontext.is_public_user):
+ if request.webcontext.is_public_user:
partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
if not partner_ids:
partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": post.get('email'), "name": "Subscribe: %s" % post.get('email')})]
@@ -117,15 +116,14 @@ class website_mail(http.Controller):
return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=post.get('email'))
- @http.route(['/blog/<int:mail_group_id>/unsubscribe', '/blog/<int:mail_group_id>/<int:blog_id>/unsubscribe'], type='http', auth="public")
+ @website.route(['/blog/<int:mail_group_id>/unsubscribe', '/blog/<int:mail_group_id>/<int:blog_id>/unsubscribe'], type='http', auth="public")
def unsubscribe(self, mail_group_id=None, blog_id=None, **post):
- website = request.registry['website']
partner_obj = request.registry['res.partner']
group_obj = request.registry['mail.group']
user_obj = request.registry['res.users']
- if mail_group_id and 'unsubscribe' in post and (post.get('email') or request.uid != website.get_public_user().id):
- if request.uid == website.get_public_user().id:
+ if mail_group_id and 'unsubscribe' in post and (post.get('email') or not request.webcontext.is_public_user):
+ if request.webcontext.is_public_user:
partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
else:
partner_ids = [user_obj.browse(request.cr, request.uid, request.uid).partner_id.id]
@@ -133,4 +131,3 @@ class website_mail(http.Controller):
group_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [mail_group_id], partner_ids)
return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=None)
-
diff --git a/addons/website_mail/views/website_mail.xml b/addons/website_mail/views/website_mail.xml
index b96c58fff6d..018f5d0fb70 100644
--- a/addons/website_mail/views/website_mail.xml
+++ b/addons/website_mail/views/website_mail.xml
@@ -12,7 +12,7 @@
<!-- Layout add nav and footer -->
- <template id="footer_custom" inherit_id="website.layout" name="Custom Footer">
+ <template id="header_footer_custom" inherit_id="website.layout">
<xpath expr="//body/header//ul[@id='top_menu']/li[last()]" position="before">
<li><a href="/blog/%(website_mail.website_mail_blog)d/">News</a></li>
</xpath>
@@ -33,21 +33,22 @@
<t t-set="title">Blog</t>
<div class="container mt48 js_website_mail">
<div class="row">
- <div class="span4" id="left_column">
- <a t-if="mail_group_id and editable" t-attf-href="/blog/#{ mail_group_id }/new" class="btn">Add a new Blog</a>
-
- <div id="blog_subscribe">
+ <div class="col-md-4" id="left_column">
+ <a t-if="mail_group_id and editable" t-attf-href="/blog/#{ mail_group_id }/new" class="btn btn-default">Add a new Blog</a>
+ <div>
<form action="./subscribe" method="POST" class="form-inline" t-if="not subscribe">
- <input placeholder="Email Address" type="email" name="email" class="input-medium" t-if="is_public_user"/>
+ <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">Subscribe</button>
</form>
<form action="./unsubscribe" method="POST" class="form-inline" t-if="subscribe">
<input type="hidden" name="email" t-att-value="subscribe"/>
- <button type="submit" class="btn" name="unsubscribe">Unsubscribe</button>
+ <button type="submit" class="btn btn-default" name="unsubscribe">Unsubscribe</button>
</form>
</div>
</div>
- <div class="span8" t-if="blog_id">
+ <div class="col-md-8" t-if="blog_id">
<div class="media">
<div class="media-body well">
<t t-call="website.publish"><t t-set="object" t-value="blog_id"/></t>
@@ -69,18 +70,18 @@
</small>
</div>
</li>
- <form id="post" t-attf-action="/blog/#{ blog_id.res_id }/#{ blog_id.id }/post#post" method="POST" class="form-horizontal text-center" groups="group_website_mail_reply">
- <textarea rows="4" placeholder="Your comment" class="span7"> </textarea>
- <button type="submit" class="btn">Post your comment</button>
- </form>
</ul>
+ <form id="post" t-attf-action="/blog/#{ blog_id.res_id }/#{ blog_id.id }/post#post" method="POST" class="form-horizontal text-center" groups="group_website_mail_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>
</div>
- <div class="span8" t-if="not blog_id and blog_ids">
+ <div class="col-md-8" t-if="not blog_id and blog_ids">
<ul class="media-list">
- <li t-foreach="blog_ids" t-as="blog" class="media well">
- <div t-attf-class="media-body #{ 'css_published' if blog.website_published else '' }">
+ <li t-foreach="blog_ids" t-as="blog" class="media well thumbnail" data-publish="">
+ <div class="media-body">
<t t-call="website.publish"><t t-set="object" t-value="blog"/></t>
<h4 class="media-heading" ><a t-attf-href="/blog/#{ blog.res_id }/#{ blog.id }#comment" t-field="blog.subject"></a></h4>
<div class="media">
@@ -108,16 +109,16 @@
<template id="blog_history" inherit_id="website_mail.index" inherit_option_id="website_mail.index" name="History">
<xpath expr="//div[@id='left_column']" position="inside">
- <ul class="nav nav-list">
+ <ul class="nav nav-pills nav-stacked">
<li class="nav-header"><a t-attf-href="/blog/#{ mail_group_id }/">BLOG ARCHIVE</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['date_count']"/>)</small></a>
- <ul class="nav nav-list css_nav_month">
+ <ul class="nav list-group css_nav_month nav-stacked nav-hierarchy">
<t t-foreach="year['months']">
<li class="js_nav_month"><a href="#" t-att-data-domain="__domain"><t t-esc="date"/> <small>(<t t-esc="date_count"/>)</small></a>
- <ul class="nav nav-list"/>
+ <ul class="nav list-group nav-stacked nav-hierarchy"/>
</li>
</t>
</ul>
diff --git a/addons/website_mail/website_mail_data.xml b/addons/website_mail/website_mail_data.xml
new file mode 100644
index 00000000000..cb5db2e250d
--- /dev/null
+++ b/addons/website_mail/website_mail_data.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data noupdate="1">
+
+ <record id="action_open_website" model="ir.actions.act_url">
+ <field name="name">Website Blogs</field>
+ <field name="target">self</field>
+ <field name="url">/blog</field>
+ </record>
+ <record id="base.open_menu" model="ir.actions.todo">
+ <field name="action_id" ref="action_open_website"/>
+ <field name="state">open</field>
+ </record>
+
+ </data>
+</openerp>