summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@openerp.com>2013-07-29 10:49:15 +0200
committerChristophe Matthieu <chm@openerp.com>2013-07-29 10:49:15 +0200
commit0d168ea3f49202568f466c951f7a5a5a3ea52ee7 (patch)
treec4e962aacf26657362e13d4539799266b76f8d1d
parentb21b10d1f39152d0feebb0723f750c3283e36fde (diff)
[IMP] website_mail: post with login
bzr revid: chm@openerp.com-20130729084915-yy713hv4e9r60ap4
-rw-r--r--addons/mail/security/ir.model.access.csv1
-rw-r--r--addons/website_mail/controllers/main.py34
-rw-r--r--addons/website_mail/static/src/css/blog.css3
-rw-r--r--addons/website_mail/static/src/css/blog.sass4
-rw-r--r--addons/website_mail/static/src/js/blog.js19
-rw-r--r--addons/website_mail/views/website_mail.xml27
6 files changed, 35 insertions, 53 deletions
diff --git a/addons/mail/security/ir.model.access.csv b/addons/mail/security/ir.model.access.csv
index 13258c239ee..ffdf5c2b102 100644
--- a/addons/mail/security/ir.model.access.csv
+++ b/addons/mail/security/ir.model.access.csv
@@ -11,6 +11,7 @@ access_mail_notification_all,mail.notification.all,model_mail_notification,,1,0,
access_mail_notification_user,mail.notification.user,model_mail_notification,base.group_user,1,1,1,0
access_mail_notification_system,mail.notification.system,model_mail_notification,base.group_system,1,1,1,1
access_mail_group_all,mail.group.all,model_mail_group,,1,0,0,0
+access_mail_group_public,mail.group.public,model_mail_group,base.group_public,1,0,0,0
access_mail_group_user,mail.group.user,model_mail_group,base.group_user,1,1,1,1
access_mail_alias_all,mail.alias.all,model_mail_alias,,1,0,0,0
access_mail_alias_user,mail.alias.user,model_mail_alias,base.group_user,1,1,1,0
diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py
index 806fda76b03..f1d906f1204 100644
--- a/addons/website_mail/controllers/main.py
+++ b/addons/website_mail/controllers/main.py
@@ -25,8 +25,6 @@ class website_mail(website):
else:
values['blog_id'] = message_obj.browse(cr, uid, blog_id)
- print values
-
html = self.render(cr, uid, "website_mail.index", values)
return html
@@ -42,23 +40,23 @@ class website_mail(website):
return blog.website_published and "1" or "0"
@website.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="admin")
- def message_post(self, cr, uid, mail_group_id=None, blog_id=None, **post):
- if post.get('body') and post.get('name') and post.get('email') and post.get('email').index('@') > 0:
- if self.isloggued():
- author_id = request.registry['res.users'].browse(cr, uid, uid).partner_id.id
- else:
- partner_obj = request.registry['res.partner']
- partner_ids = partner_obj.search(cr, uid, [('name', '=', post.get('name')), ('email', '=', post.get('email'))])
- if partner_ids:
- author_id = partner_ids[0]
- else:
- author_id = partner_obj.create(cr, openerp.SUPERUSER_ID, {'name': post.get('name'), 'email': post.get('email')})
-
+ def blog_post(self, cr, uid, mail_group_id=None, blog_id=None, **post):
+ url = request.httprequest.host_url
+ if post.get('body'):
+ request.session.body = post.get('body')
+ if not self.isloggued():
+ 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:
request.registry['mail.group'].message_post(cr, uid, mail_group_id,
- body=post.get('body'),
+ body=request.session.body,
parent_id=blog_id,
- author_id=author_id,
- website_published= blog_id and True or False
+ website_published=blog_id and True or False,
+ context={'mail_create_nosubscribe': True},
)
+ request.session.body = False
- return werkzeug.utils.redirect("/blog/%s/%s" % (mail_group_id, blog_id))
+ if post.get('body'):
+ return '%s/blog/%s/%s' % (url, mail_group_id, blog_id)
+ else:
+ return werkzeug.utils.redirect("/blog/%s/%s" % (mail_group_id, blog_id))
diff --git a/addons/website_mail/static/src/css/blog.css b/addons/website_mail/static/src/css/blog.css
index 7d9d850e974..4c5f53ec1c7 100644
--- a/addons/website_mail/static/src/css/blog.css
+++ b/addons/website_mail/static/src/css/blog.css
@@ -22,3 +22,6 @@
.css_website_mail .media .css_published .css_unpublish {
display: none;
}
+.css_website_mail .has-error {
+ border-color: red;
+}
diff --git a/addons/website_mail/static/src/css/blog.sass b/addons/website_mail/static/src/css/blog.sass
index 30f7598dee2..3fdc5c42d10 100644
--- a/addons/website_mail/static/src/css/blog.sass
+++ b/addons/website_mail/static/src/css/blog.sass
@@ -19,4 +19,6 @@
.css_publish
display: block
.css_unpublish
- display: none \ No newline at end of file
+ display: none
+ .has-error
+ border-color: red \ No newline at end of file
diff --git a/addons/website_mail/static/src/js/blog.js b/addons/website_mail/static/src/js/blog.js
index e5656981a8a..fb10bcc9b4b 100644
--- a/addons/website_mail/static/src/js/blog.js
+++ b/addons/website_mail/static/src/js/blog.js
@@ -12,15 +12,14 @@ $(document).ready(function () {
$form = $('.js_website_mail form#post');
$form.submit(function (e) {
- var check = true;
- $form.find(".control-group").removeClass("error");
- $form.find("textarea,input").each(function() {
- if ($(this).val().length < 3) {
- $(this).parents(".control-group:first").addClass("error");
- check = false;
- }
- });
- if (!check) return false;
- $form.css("visibility", "hidden");
+ var error = $form.find("textarea").val().length < 3;
+ $form.find("textarea").toggleClass("has-error", error);
+ if (!error) {
+ $form.css("visibility", "hidden");
+ $.post(window.location.pathname + '/post', {'body': $form.find("textarea").val()}, function (url) {
+ window.location.href = url
+ });
+ }
+ return false;
});
}); \ No newline at end of file
diff --git a/addons/website_mail/views/website_mail.xml b/addons/website_mail/views/website_mail.xml
index b6a95117e4c..21845e6d27a 100644
--- a/addons/website_mail/views/website_mail.xml
+++ b/addons/website_mail/views/website_mail.xml
@@ -67,30 +67,9 @@
</div>
</li>
</t>
- <form id="post" t-att-action="'/blog/%%s/%%s/post#post' %% (blog_id.res_id, blog_id.id)" method="POST" class="form-horizontal" groups="group_website_mail_reply">
- <div class="control-group">
- <label class="control-label">Name</label>
- <div class="controls">
- <input type="text" name="name" placeholder="Name" class="span5"/>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label">Email</label>
- <div class="controls">
- <input type="email" name="email" placeholder="Email" class="span5"/>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label">You message</label>
- <div class="controls">
- <textarea rows="4" name="body" placeholder="You message" class="span5"> </textarea>
- </div>
- </div>
- <div class="control-group">
- <div class="controls">
- <button type="submit" class="btn">Post</button>
- </div>
- </div>
+ <form id="post" t-att-action="'/blog/%%s/%%s/post#post' %% (blog_id.res_id, blog_id.id)" method="POST" class="form-horizontal text-center" groups="group_website_mail_reply">
+ <textarea rows="4" placeholder="Your message" class="span7"> </textarea>
+ <button type="submit" class="btn">Post your message</button>
</form>
</ul>
</div>