}
});
};
- $(document).ready(function () {website.snippet.start_animation();});
+ $(document).ready(function () {
+ website.snippet.start_animation();
+ });
website.snippet.animationRegistry = {};
img.onload = function () {
var offset = 0;
var padding = parseInt($(document.body).css("padding-top"));
- if (speed < 1) {
+ if (speed > 1) {
var inner_offset = - self.$target.outerHeight() + this.height / this.width * document.body.clientWidth;
var outer_offset = self.$target.offset().top - (document.body.clientHeight - self.$target.outerHeight()) - padding;
offset = - outer_offset * speed + inner_offset;
},
edit: function () {
var self = this;
- $("body").off('click');
+ $("[data-oe-model] *, [data-oe-type=html] *").off('click');
window.snippets = this.snippets = new website.snippet.BuildingBlock(this);
this.snippets.appendTo(this.$el);
<div id="snippet_options" class="hidden">
+ <t t-call="website.snippet_options"/>
+
+</div>
+
+ </div>
+</div>
+</template>
+
+<template id="snippet_options">
+
<div data-snippet-option-id='blog-style'
data-selector="section:not(.carousel):not(.parallax)">
<li class="dropdown-submenu">
</li>
</div>
-</div>
-
+ <div data-snippet-option-id='content'
+ data-selector="p, h1, h2, h3, blockquote, .well, .panel"
+ data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel"
+ data-selector-children=".content">
</div>
-</div>
+
</template>
+
+
</data>
</openerp>
follower_ids = [p.id for p in obj.message_follower_ids]
return partner_ids[0] in follower_ids and 1 or 0
+
+ @http.route(['/website_mail/is_follower/'], type='json', auth="public", website=True)
+ def call(self, model, id, **post):
+ public_id = request.registry['website'].get_public_user(request.cr, request.uid, request.context)
+ value = request.registry.get(model).read(request.cr, request.uid, [id], ['message_is_follower'], request.context)
+ return {
+ 'is_public': request.uid == public_id,
+ 'is_follower': value and value[0]['message_is_follower'] or False
+ }
+
.js_follow[data-follow='on'] .js_follow_btn ,
+.js_follow[data-follow='on'] .js_follow_email,
.js_follow[data-follow='off'] .js_unfollow_btn {
display: none;
}
\ No newline at end of file
--- /dev/null
+(function () {
+ 'use strict';
+
+ var website = openerp.website;
+ var _t = openerp._t;
+
+ website.snippet.options.subscribe = website.snippet.Option.extend({
+ on_prompt: function () {
+ var self = this;
+ return website.prompt({
+ id: "editor_new_subscribe_button",
+ window_title: _t("New Subscribe Button"),
+ select: _t("Mailing List"),
+ init: function (field) {
+ return website.session.model('mail.group')
+ .call('name_search', ['', [['public','=','public']]], { context: website.get_context() });
+ },
+ }).then(function (mail_group_id) {
+ self.$target.attr("data-id", mail_group_id);
+ });
+ },
+ drop_and_build_snippet: function() {
+ var self = this;
+ this._super();
+ this.on_prompt().fail(function () {
+ self.editor.on_remove();
+ });
+ },
+ start : function () {
+ var self = this;
+ this.$el.find(".js_mailing_list").on("click", _.bind(this.on_prompt, this));
+ this._super();
+ },
+ });
+})();
+
+
+(function () {
+ 'use strict';
+
+ var website = openerp.website;
+
+ website.snippet.animationRegistry.follow = website.snippet.Animation.extend({
+ selector: ".js_follow",
+ start: function () {
+ var self = this;
+
+ openerp.jsonRpc('/website_mail/is_follower/', 'call', {
+ model: this.$target.data('object'),
+ id: +this.$target.data('id'),
+ }).always(function (data) {
+
+ var $input = self.$target.find('input.js_follow_email');
+ if(data.is_public) {
+ $input.removeClass("hidden");
+ } else {
+ $input.addClass("hidden");
+ }
+
+ self.$target.attr("data-follow", data.is_follower ? 'on' : 'off');
+ });
+ },
+ });
+})();
+
$(document).ready(function () {
- $(document).on('click', '.js_follow_btn, .js_unfollow_btn', function (ev) {
+ $('.js_follow > .alert').addClass("hidden");
+ $('.js_follow > .input-group-btn.hidden').removeClass("hidden");
+
+ $('.js_follow_btn, .js_unfollow_btn').on('click', function (ev) {
ev.preventDefault();
- var self = this;
- var $data = $(this).parents("div.js_follow");
- var $email = $data.find(".js_follow_email");
+ var $follow = $(this).parents("div.js_follow");
+ var $email = $follow.find(".js_follow_email:visible");
if ($email.length && !$email.val().match(/.+@.+/)) {
+ $follow.addClass('has-error');
return false;
}
- var message_is_follower = $data.attr("data-follow") || "off";
- $data.attr("data-follow", message_is_follower == 'off' ? 'on' : 'off');
+ $email.removeClass('has-error');
+
+ var message_is_follower = $follow.attr("data-follow") || "off";
+ $follow.attr("data-follow", message_is_follower == 'off' ? 'on' : 'off');
openerp.jsonRpc('/website_mail/follow', 'call', {
- 'id': $data.data('id'),
- 'object': $data.data('object'),
+ 'id': +$follow.data('id'),
+ 'object': $follow.data('object'),
'message_is_follower': message_is_follower,
'email': $email.length ? $email.val() : false,
- }).then(function (result) {
- if (result) {
- $data.find(" > *").toggleClass("hidden");
+ }).then(function (follow) {
+ if (follow) {
+ $follow.find(" > *").toggleClass("hidden");
}
- $data.attr("data-follow", result ? 'on' : 'off');
+ $follow.attr("data-follow", follow ? 'on' : 'off');
});
});
-
});
<div id="snippet_email_structure" class="tab-pane fade in active">
- <div data-snippet-id="text-image" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_text_block.png"/>
<span class="oe_snippet_thumbnail_title">Text Block</span>
</div>
- <div data-snippet-id="text-image" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_text_image.png"/>
<span class="oe_snippet_thumbnail_title">Text-Image</span>
</div>
- <div data-snippet-id="image-text" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_image_text.png"/>
<span class="oe_snippet_thumbnail_title">Image-Text</span>
</div>
- <div data-snippet-id="three-columns" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website_mail/static/src/img/blocks/block_two_columns.png"/>
<span class="oe_snippet_thumbnail_title">Two Columns</span>
</div>
- <div data-snippet-id="three-columns" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website_mail/static/src/img/blocks/block_three_columns.png"/>
<span class="oe_snippet_thumbnail_title">Three Columns</span>
</div>
- <div data-snippet-id="hr" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_separator.png"/>
<span class="oe_snippet_thumbnail_title">Separator</span>
<div id="snippet_email_feature" class="tab-pane fade">
- <div data-snippet-id="big-picture" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_big_picture.png"/>
<span class="oe_snippet_thumbnail_title">Big Picture</span>
</div>
- <div data-snippet-id="pricing" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_comparison.png"/>
<span class="oe_snippet_thumbnail_title">Comparisons</span>
</div>
- <div data-snippet-id="text-image" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_jumbotron.png"/>
<span class="oe_snippet_thumbnail_title">Big Message</span>
</div>
- <div data-snippet-id="cta" data-selector-children=".oe_structure, [data-oe-type=html]">
+ <div>
<div class="oe_snippet_thumbnail">
<img class="oe_snippet_thumbnail_img" src="/website/static/src/img/blocks/block_button.png"/>
<span class="oe_snippet_thumbnail_title">Button</span>
</div>
-<div id="snippet_styles" class="hidden">
+<div id="snippet_options" class="hidden">
+
+ <t t-call="website.snippet_options"/>
+
</div>
type="email"
name="email"
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_unfollow_btn">Unsubscribe</button>
- <button href="#" class="btn btn-primary js_follow_btn">Subscribe</button>
+ <a href="#" class="btn btn-default js_unfollow_btn">Unsubscribe</a>
+ <a href="#" class="btn btn-primary js_follow_btn">Subscribe</a>
</span>
<div class="alert alert-success hidden">Thanks for your subscription!</div>
</div>
<div data-snippet-option-id='subscribe'
data-selector=".js_follow"
data-selector-siblings="p, h1, h2, h3, blockquote, .well, .panel"
- data-selector-children=".content">
+ >
<li>
- <a href="#" class="button js_mailing_list">Select a mailing list</a>
+ <a href="#" class="button js_mailing_list">Change mailing list</a>
</li>
</div>
</xpath>
<input
type="email" name="email"
class="js_follow_email form-control"
- t-att-value="email or ''"
placeholder="your email..."
groups="base.group_public"/>
<span class="input-group-btn">