[IMP] Cleaning code of followers and website_published, 200 lines removed
authorFabien Pinckaers <fp@openerp.com>
Sat, 16 Nov 2013 15:09:27 +0000 (16:09 +0100)
committerFabien Pinckaers <fp@openerp.com>
Sat, 16 Nov 2013 15:09:27 +0000 (16:09 +0100)
[IMP] CSS and design of options and follow, avoid custom CSS

bzr revid: fp@openerp.com-20131116150927-4mjk1zdcgfzt4e95

addons/website/controllers/main.py
addons/website/static/src/css/website.css
addons/website/static/src/css/website.sass
addons/website/static/src/js/website.js
addons/website/views/website_templates.xml
addons/website_blog/views/website_blog_templates.xml
addons/website_mail/static/src/css/Makefile [deleted file]
addons/website_mail/static/src/css/website_mail.css [deleted file]
addons/website_mail/static/src/css/website_mail.sass [deleted file]
addons/website_mail/static/src/js/website_mail.js
addons/website_mail/views/website_mail.xml

index b1ed14d..4a8cb1e 100644 (file)
@@ -253,7 +253,7 @@ class Website(openerp.addons.web.controllers.main.Home):
                       values, context=request.context)
 
         obj = _object.browse(request.cr, request.uid, _id)
-        return obj.website_published and True or False
+        return bool(obj.website_published)
 
     @website.route(['/website/kanban/'], type='http', auth="public")
     def kanban(self, **post):
index e0ca710..99ba04e 100644 (file)
@@ -389,54 +389,19 @@ ul.nav-stacked > li > a {
 }
 
 /* ---- PUBLISH ---- */
-a[data-publish] {
-  text-decoration: none !important;
-}
-a[data-publish] .css_unpublish, a[data-publish] .css_publish, a[data-publish] .css_unpublished, a[data-publish] .css_published {
-  display: none;
-}
-a[data-publish][data-publish='off'] .css_unpublished, a[data-publish][data-publish='off']:hover .css_publish {
-  display: inline;
-}
-a[data-publish][data-publish='off']:hover .css_unpublished {
-  display: none;
-}
-a[data-publish][data-publish='on'] .css_published, a[data-publish][data-publish='on']:hover .css_unpublish {
-  display: inline;
-}
-a[data-publish][data-publish='on']:hover .css_published {
-  display: none;
-}
-
-.dropdown .css_unpublish, .dropdown .css_publish {
+.css_unpublish, .css_publish {
   display: none;
 }
 
-.dropdown.css_publish .css_unpublish, .dropdown.css_unpublish .css_publish {
+.css_published .css_unpublish, .css_unpublished .css_publish {
   display: block;
 }
 
-.unpublish {
+[data-publish='off'] {
   opacity: 0.5;
 }
 
-[data-publish='off']:not(a) > :not(.js_publish) {
-  opacity: 0.5;
-}
-
-[data-publish]:not(a) {
-  position: relative;
-  overflow: visible;
-  /*&:hover .js_publish */
-  /*     display: block */
-}
-[data-publish]:not(a) .js_publish {
-  position: absolute;
-  right: -6px;
-  top: -10px;
-  display: none;
-}
-
+/* ---- END of PUBLISH ---- */
 ::selection {
   background: rgba(150, 150, 220, 0.3);
 }
index f0a9d9b..f947a16 100644 (file)
@@ -296,41 +296,17 @@ ul.nav-stacked > li > a
     text-transform: uppercase
 
 /* ---- PUBLISH ---- */
-a[data-publish]
-    text-decoration: none !important
-    .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
-
-.dropdown .css_unpublish, .dropdown .css_publish
+.css_unpublish, .css_publish
     display: none
-.dropdown.css_publish .css_unpublish, .dropdown.css_unpublish .css_publish
+.css_published .css_unpublish, .css_unpublished .css_publish
     display: block
 
-.unpublish
+[data-publish='off']
     opacity: 0.5
-[data-publish='off']:not(a)
-    >:not(.js_publish)
-        opacity: 0.5
-[data-publish]:not(a)
-    position: relative
-    overflow: visible
-    .js_publish
-        position: absolute
-        right: -6px
-        top: -10px
-        display: none
-    /*&:hover .js_publish*/
-    /*     display: block*/
+
+/* ---- END of PUBLISH ---- */
+
+
 
 ::selection
     background: rgba(150, 150, 220, 0.3)
index 0653a27..b1ba9b8 100644 (file)
         $('.js_tooltip').bstooltip();
 
         /* ----- PUBLISHING STUFF ---- */
-        $('[data-publish]:has(.js_publish)').each(function () {
-            var $pub = $("[data-publish]", this);
-            if($pub.size())
-                $(this).attr("data-publish", $pub.attr("data-publish"));
-            else
-                $(this).removeAttr("data-publish");
-        });
-
-        $('[data-publish]:has(.js_publish_management)').each(function () {
-            $(this).attr("data-publish", $(".js_publish_management .btn-success", this).size() ? "on" : 'off');
-            $(this).attr("data-publish", $(".js_publish_management .btn-success", this).size() ? "on" : 'off');
-        });
-
-        $(document).on('click', '.js_publish', function (e) {
-            e.preventDefault();
-            var $a = $(this);
-            var $data = $a.find(":first").parents("[data-publish]");
-            openerp.jsonRpc($a.data('controller') || '/website/publish', 'call', {'id': +$a.data('id'), 'object': $a.data('object')})
-                .then(function (result) {
-                    $data.attr("data-publish", +result ? 'on' : 'off');
-                }).fail(function (err, data) {
-                    website.error(data, '/web#model='+$a.data('object')+'&id='+$a.data('id'));
-                });
-            return false;
-        });
-
         $(document).on('click', '.js_publish_management .js_publish_btn', function () {
-            var $data = $(this).parents(".js_publish_management:first");
-            var $btn = $data.find('.btn:first');
-            var publish = $btn.hasClass("btn-success");
-
-            $data.toggleClass("css_unpublish css_publish");
-            $btn.removeClass("btn-default btn-success");
-
+            var $data = $(this).parent(".js_publish_management");
+           var self=this;
             openerp.jsonRpc($data.data('controller') || '/website/publish', 'call', {'id': +$data.data('id'), 'object': $data.data('object')})
                 .then(function (result) {
-                    $btn.toggleClass("btn-default", !result).toggleClass("btn-success", result);
-                    $data.toggleClass("css_unpublish", !result).toggleClass("css_publish", result);
+                    $data.toggleClass("css_unpublished css_published");
+                    $(self).toggleClass("btn-success btn-danger");
                     $data.parents("[data-publish]").attr("data-publish", +result ? 'on' : 'off');
                 }).fail(function (err, data) {
                     website.error(data, '/web#model='+$data.data('object')+'&id='+$data.data('id'));
index 9696368..b8174ea 100644 (file)
         </template>
 
         <template id="publish_management">
-            <div t-if="has_access_write" t-ignore="true" class="pull-right hidden-xs" t-att-style="style or ''">
-                <div t-attf-class="btn-group dropdown js_publish_management #{object.id and object.website_published and 'css_publish' or 'css_unpublish'}" t-att-data-id="object.id" t-att-data-object="object._name" t-att-data-controller="publish_controller">
-                    <a t-attf-class="btn btn-sm btn-#{object.id and object.website_published and 'success' or 'default'}" t-att-id="'dopprod-%s' % object.id" role="button" data-toggle="dropdown">Options <span class="caret"></span></a>
+            <div t-if="has_access_write" t-ignore="true" class="pull-right" t-att-style="style or ''">
+                <div t-attf-class="btn-group js_publish_management #{object.website_published and 'css_published' or 'css_unpublished'}" t-att-data-id="object.id" t-att-data-object="object._name" t-att-data-controller="publish_controller">
+                    <button t-attf-class="btn btn-#{object.website_published and 'success' or 'danger'} js_publish_btn">
+                        <span class="css_publish">Not Published</span>
+                        <span class="css_unpublish">Published</span>
+                    </button>
+                    <button type="button" t-attf-class="btn btn-default dropdown-toggle" t-att-id="'dopprod-%s' % object.id" data-toggle="dropdown">
+                        <span class="caret"></span>
+                    </button>
                     <ul class="dropdown-menu" role="menu" t-att-aria-labelledby="'dopprod-%s' % object.id">
                         <t t-raw="0"/>
-                        <li>
-                            <a href="#" class="js_publish_btn css_unpublish">Unpublish</a>
-                            <a href="#" class="js_publish_btn css_publish">Publish</a>
-                        </li>
                         <li t-if="publish_edit">
                             <a t-att-href="'/web#model=%s&amp;id=%s' % (object._name, object.id)"
                             title='Edit in backend'>Edit</a>
index 1901319..ea26862 100644 (file)
         </xpath>
         <xpath expr="//div[@id='blog_right_column']" position="inside">
             <section class="mt32">
-                <h4>Follow us</h4>
+                <h4>Follow us<small t-if="category">: <t t-esc="category.name"/></small></h4>
                 <t t-if="category">
-                    <p class="text-muted">
-                        Subscribe to: <t t-esc="category.name"/>
-                    </p>
                     <t t-call="website_mail.follow">
                         <t t-set="email" t-value="user_id.email"/>
                         <t t-set="object" t-value="category"/>
diff --git a/addons/website_mail/static/src/css/Makefile b/addons/website_mail/static/src/css/Makefile
deleted file mode 100644 (file)
index d7c1ea7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-sass:
-       sass -t expanded --unix-newlines --watch website_mail.sass:website_mail.css&
diff --git a/addons/website_mail/static/src/css/website_mail.css b/addons/website_mail/static/src/css/website_mail.css
deleted file mode 100644 (file)
index a93199a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* ---- FOLLOW ---- */
-a[data-follow] {
-  text-decoration: none !important;
-  z-index: 2;
-}
-a[data-follow] .label {
-  padding: 5px 8px;
-}
-a[data-follow] .css_unfollow, a[data-follow] .css_follow, a[data-follow] .css_unfollowed, a[data-follow] .css_followed {
-  display: none;
-}
-a[data-follow][data-follow='off'] .css_unfollowed, a[data-follow][data-follow='off']:hover .css_follow {
-  display: inline;
-}
-a[data-follow][data-follow='off']:hover .css_unfollowed {
-  display: none;
-}
-a[data-follow][data-follow='on'] .css_followed, a[data-follow][data-follow='on']:hover .css_unfollow {
-  display: inline;
-}
-a[data-follow][data-follow='on']:hover .css_followed {
-  display: none;
-}
-
-[data-follow='off']:not(a) > :not([data-follow]) {
-  opacity: 0.5;
-}
-
-[data-follow]:not(a) {
-  position: relative;
-  overflow: visible;
-  /*&:hover > [data-follow] */
-  /*     display: block */
-}
-[data-follow]:not(a) > [data-follow] {
-  position: absolute;
-  right: -6px;
-  top: -10px;
-  display: none;
-}
diff --git a/addons/website_mail/static/src/css/website_mail.sass b/addons/website_mail/static/src/css/website_mail.sass
deleted file mode 100644 (file)
index b648270..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/* ---- FOLLOW ---- */
-a[data-follow]
-    text-decoration: none !important
-    z-index: 2
-    .label
-        padding: 5px 8px
-    .css_unfollow, .css_follow, .css_unfollowed, .css_followed
-        display: none
-    &[data-follow='off']
-        .css_unfollowed, &:hover .css_follow
-            display: inline
-        &:hover .css_unfollowed
-            display: none
-    &[data-follow='on']
-        .css_followed, &:hover .css_unfollow
-            display: inline
-        &:hover .css_followed
-            display: none
-
-[data-follow='off']:not(a)
-    >:not([data-follow])
-        opacity: 0.5
-[data-follow]:not(a)
-    position: relative
-    overflow: visible
-    >[data-follow]
-        position: absolute
-        right: -6px
-        top: -10px
-        display: none
-    /*&:hover > [data-follow]*/
-    /*     display: block*/
index d0ce827..cfd3e16 100644 (file)
@@ -1,27 +1,26 @@
 $(document).ready(function () {
 
-    /* ----- FOLLOWING STUFF ---- */
-    $('[data-follow]:has([data-follow])').each(function () {
-        var $pub = $("[data-follow]", this);
-        if($pub.size())
-            $(this).attr("data-follow", $pub.attr("data-follow"));
-        else
-            $(this).removeAttr("data-follow");
-    });
-
-    $(document).on('click', '.js_follow', function (ev) {
+    $(document).on('click', '.js_follow_btn', 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");
+
+       var self = this;
+        var $data = $(this).parents("div.js_follow");
+        var $email = $(".js_follow_email", $data);
+        var message_is_follower = $data.attr("data-follow");
         $data.attr("data-follow", message_is_follower == 'off' ? 'on' : 'off');
+
         openerp.jsonRpc('/website_mail/follow', 'call', {
-            'id': $(this).data('id'),
-            'object': $(this).data('object'),
+            'id': $data.data('id'),
+            'object': $data.data('object'),
             'message_is_follower': message_is_follower,
             'email': $email && $email.val() || false,
         }).then(function (result) {
-            $data.attr("data-follow", + result ? 'on' : 'off');
+           if (result) {
+               $data.html('<div class="alert alert-success mb0">Thanks for your subscription!</div>')
+           } else {
+                $data.attr("data-follow", + result ? 'on' : 'off');
+               $(self).text('Subscribe')
+           }
         });
     });
 
index d7e8008..f1b3e99 100644 (file)
@@ -3,28 +3,24 @@
     <data>
 
         <template id="follow">
-            <div name="follow" t-if="editable">
-                <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-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">Following</span>
-                    <span t-attf-class="label label-danger css_unfollowed">Not Following</span>
-                </a>
+            <div class="input-group js_follow" 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'">
                 <input type="email" name="email"
-                       class="js_follow_email css_unfollowed_email"
-                       t-att-value="email"
-                       t-att-placeholder="email or 'Email Address'"/>
+                       class="js_follow_email form-control"
+                       t-att-value="email or ''"
+                       placeholder="your email..."/>
+                <span class="input-group-btn">
+                    <button href="#"
+                       class="btn btn-default js_follow_btn">
+                       <t t-if="object.message_is_follower">Unsubscribe</t>
+                       <t t-if="not object.message_is_follower">Subscribe</t>
+                    </button>
+                </span>
             </div>
         </template>
 
         <template id="website.layout" name="Mail customization" inherit_id="website.layout">
-            <!-- Load stylesheets before scripts to avoid blocking -->
-            <xpath expr="//head/link" position="after">
-                <link rel='stylesheet' href='/website_mail/static/src/css/website_mail.css'/>
-            </xpath>
             <xpath expr="//head" position="inside">
                 <script type="text/javascript" src="/website_mail/static/src/js/website_mail.js"></script>
             </xpath>