[IMP] Cleaning code of followers and website_published, 200 lines removed

[IMP] CSS and design of options and follow, avoid custom CSS

bzr revid: fp@openerp.com-20131116150927-4mjk1zdcgfzt4e95
This commit is contained in:
Fabien Pinckaers 2013-11-16 16:09:27 +01:00
parent 1129cc5d39
commit ceb04895d3
11 changed files with 54 additions and 225 deletions

View 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):

View 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 {
.css_unpublish, .css_publish {
display: none;
}
.dropdown .css_unpublish, .dropdown .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);
}

View 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)

View File

@ -224,44 +224,13 @@
$('.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'));

View File

@ -266,15 +266,17 @@
</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>

View File

@ -253,11 +253,8 @@
</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"/>

View File

@ -1,2 +0,0 @@
sass:
sass -t expanded --unix-newlines --watch website_mail.sass:website_mail.css&

View File

@ -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;
}

View File

@ -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*/

View 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')
}
});
});

View 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>