[IMP] website_mail, website_blog: improved follow / unfollow (always display email...
authorThibault Delavallée <tde@openerp.com>
Mon, 30 Sep 2013 14:33:57 +0000 (16:33 +0200)
committerThibault Delavallée <tde@openerp.com>
Mon, 30 Sep 2013 14:33:57 +0000 (16:33 +0200)
bzr revid: tde@openerp.com-20130930143357-0r61uikrf8nx92fg

addons/website_blog/controllers/main.py
addons/website_blog/views/website_blog_templates.xml
addons/website_mail/controllers/main.py
addons/website_mail/static/src/js/website_mail.js
addons/website_mail/tests/__init__.py
addons/website_mail/views/website_mail.xml

index 66c802e..1f8ddf1 100644 (file)
@@ -29,7 +29,7 @@ import simplejson
 import werkzeug
 
 
-class website_mail(http.Controller):
+class WebsiteBlog(http.Controller):
     _category_post_per_page = 6
     _post_comment_per_page = 6
 
@@ -75,7 +75,8 @@ class website_mail(http.Controller):
         blog_post_obj = request.registry['blog.post']
         tag_obj = request.registry['blog.tag']
         category_obj = request.registry['blog.category']
-        user_obj = request.registry['res.users']
+
+        current_user = request.registry['res.users'].browse(cr, uid, uid, context=context)
 
         tag = None
         category = None
@@ -103,6 +104,9 @@ class website_mail(http.Controller):
                 blog_posts = category.blog_post_ids
             elif tag:
                 blog_posts = tag.blog_post_ids
+            else:
+                blog_post_ids = blog_post_obj.search(cr, uid, [], context=context)
+                blog_posts = blog_post_obj.browse(cr, uid, blog_post_ids, context=context)
 
         if blog_posts:
             pager = request.website.pager(
@@ -143,6 +147,7 @@ class website_mail(http.Controller):
             'blog_posts': blog_posts,
             'pager': pager,
             'nav_list': nav,
+            'current_user': current_user,
             'unable_editor': post.get('unable_editor')
         }
 
index 1f5b57c..2e46267 100644 (file)
     <template id="blog_followus" inherit_option_id="website_blog.blog_right_column" inherit_id="website_blog.blog_right_column" name="Follow us" priority="2">
         <xpath expr="//div[@id='right_column']" position="inside">
             <section class="mb16">
-            <h4>Follow us</h4>
-            <p class="text-muted">
-                Participate on our social stream.
-            </p>
-            <t t-call="website_mail.follow"><t t-set="object" t-value="category"/></t>
-            <h2>
-                <a t-att-href="website.social_facebook" t-if="website.social_facebook"><i class="icon-facebook-sign"/></a>
-                <a t-att-href="website.social_twitter" t-if="website.social_twitter"><i class="icon-twitter-sign"/></a>
-                <a t-att-href="website.social_linkedin" t-if="website.social_linkedin"><i class="icon-linkedin-sign"/></a>
-                <a t-att-href="website.social_youtube" t-if="website.social_youtube"><i class="icon-youtube-sign"/></a>
-                <a t-att-href="website.social_googleplus" t-if="website.social_googleplus"><i class="icon-google-plus-sign"/></a>
-                <a t-att-href="website.social_github" t-if="website.social_github"><i class="icon-github-sign"/></a>
-            </h2>
+                <h4>Follow us</h4>
+                <p class="text-muted">
+                    Be notified of new blog posts in <t t-esc="category.name"/>
+                </p>
+                <t t-call="website_mail.follow">
+                    <t t-set="email" t-value="current_user.email"/>
+                    <t t-set="object" t-value="category"/>
+                </t>
+                <p class="text-muted">
+                    Participate on our social stream.
+                </p>
+                <h2>
+                    <a t-att-href="website.social_facebook" t-if="website.social_facebook"><i class="icon-facebook-sign"/></a>
+                    <a t-att-href="website.social_twitter" t-if="website.social_twitter"><i class="icon-twitter-sign"/></a>
+                    <a t-att-href="website.social_linkedin" t-if="website.social_linkedin"><i class="icon-linkedin-sign"/></a>
+                    <a t-att-href="website.social_youtube" t-if="website.social_youtube"><i class="icon-youtube-sign"/></a>
+                    <a t-att-href="website.social_googleplus" t-if="website.social_googleplus"><i class="icon-google-plus-sign"/></a>
+                    <a t-att-href="website.social_github" t-if="website.social_github"><i class="icon-github-sign"/></a>
+                </h2>
             </section>
         </xpath>
     </template>
index f1b91ed..60c1d42 100644 (file)
@@ -32,10 +32,10 @@ class WebsiteMail(http.Controller):
         partner_obj = request.registry['res.partner']
         user_obj = request.registry['res.users']
         partner_ids = []
-        if request.context['is_public_user'] and email:
+        if request.context['is_public_user'] and email and email != u'false':  # post contains stringified booleans
             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)]
+                partner_ids = [partner_obj.name_create(request.cr, SUPERUSER_ID, email, request.context)]
         else:
             partner_ids = [user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id]
         return partner_ids
index 63b9105..91cb63f 100644 (file)
@@ -12,12 +12,14 @@ $(document).ready(function () {
     $(document).on('click', '.js_follow', function (ev) {
         ev.preventDefault();
         var $data = $(":first", this).parents("[data-follow]");
+        var $email = $data.first().siblings(".js_follow_email");
         var message_is_follower = $data.first().attr("data-follow");
         $data.attr("data-follow", message_is_follower == 'off' ? 'on' : 'off');
         $.post('/website_mail/follow', {
             'id': $(this).data('id'),
             'object': $(this).data('object'),
             'message_is_follower': message_is_follower,
+            'email': $email && $email.val() || false,
         }, function (result) {
             $data.attr("data-follow", + result ? 'on' : 'off');
         });
index 97f1da2..4d92d6a 100644 (file)
@@ -19,7 +19,7 @@
 #
 ##############################################################################
 
-from openerp.addons.website_blog.tests import test_controllers
+from openerp.addons.website_mail.tests import test_controllers
 
 checks = [
     test_controllers,
index 8070bd9..f1618ce 100644 (file)
@@ -6,9 +6,12 @@
             <a href="#" t-att-data-id="object.id" t-att-data-object="object._name" t-att-data-follow="object.id and object.message_is_follower and 'on' or 'off'" class="pull-right js_follow" t-if="editable" t-ignore="true">
                 <span t-attf-class="label label-success css_follow">Follow</span>
                 <span t-attf-class="label label-danger css_unfollow">Unfollow</span>
-                <span t-attf-class="label label-success css_followed">Followed</span>
-                <span t-attf-class="label label-danger css_unfollowed">Unfollowed</span>
+                <span t-attf-class="label label-success css_followed">Following</span>
+                <span t-attf-class="label label-danger css_unfollowed">Not Following</span>
             </a>
+            <input type="email" name="email" class="js_follow_email css_unfollowed_email"
+                t-att-value="email"
+                t-att-placeholder="email or 'Email Address'"/>
         </template>
 
         <template id="website.layout" inherit_id="website.layout">