[IMP] website: editor menus is displayed in function of users groups (event, blog...)

bzr revid: chm@openerp.com-20140116180535-c736cuxn12qghiea
This commit is contained in:
Christophe Matthieu 2014-01-16 19:05:35 +01:00
parent d54544e317
commit 4ff74cbf99
19 changed files with 150 additions and 58 deletions

View File

@ -85,6 +85,10 @@
display: block !important;
}
.css_editable_hidden {
display: none !important;
}
.css_non_editable_mode_hidden {
display: none;
}

View File

@ -70,6 +70,9 @@
.css_editable_display
display: block !important
.css_editable_hidden
display: none !important
.css_non_editable_mode_hidden
display: none

View File

@ -397,12 +397,14 @@
'click button[data-action=edit]': 'edit',
'click button[data-action=save]': 'save',
'click a[data-action=cancel]': 'cancel',
'click a[data-action=new_page]': 'new_page',
},
container: 'body',
customize_setup: function() {
var self = this;
var view_name = $(document.documentElement).data('view-xmlid');
if (!view_name) {
this.$('#customize-menu-button').addClass("hidden");
}
var menu = $('#customize-menu');
this.$('#customize-menu-button').click(function(event) {
menu.empty();
@ -579,17 +581,6 @@
website.reload();
})
},
new_page: function (ev) {
ev.preventDefault();
website.prompt({
window_title: "New Page",
input: "Page Title",
}).then(function (val) {
if (val) {
document.location = '/pagenew/' + encodeURI(val);
}
});
},
/**
* Creates a "hover" button for image and link edition

View File

@ -0,0 +1,28 @@
(function() {
"use strict";
var website = openerp.website;
website.is_editable = true;
website.EditorBar.include({
start: function() {
var res = this._super();
this.$("a[data-action=new_page]").parents("li").removeClass("hidden");
this.$("button[data-action=edit]").removeClass("hidden");
this.$(".oe_content_menu li.divider").removeClass("hidden");
return res;
},
events: _.extend({}, website.EditorBar.prototype.events, {
'click a[data-action=new_page]': function (ev) {
ev.preventDefault();
website.prompt({
window_title: "New Page",
input: "Page Title",
}).then(function (val) {
if (val) {
document.location = '/pagenew/' + encodeURI(val);
}
});
}
}),
});
})();

View File

@ -66,7 +66,7 @@
var all_ready = null;
var dom_ready = website.dom_ready = $.Deferred();
$(document).ready(function () {
website.is_editable = $('html').data('editable');
website.is_editable = website.is_editable || $('html').data('editable');
dom_ready.resolve();
});

View File

@ -6,6 +6,11 @@
website.add_template_file('/website/static/src/xml/website.menu.xml');
website.EditorBar.include({
start: function() {
var res = this._super();
this.$(".oe_content_menu a[data-action=edit-structure]").parents("li").removeClass("hidden");
return res;
},
events: _.extend({}, website.EditorBar.prototype.events, {
'click a[data-action="edit-structure"]': 'editStructure',
}),

View File

@ -173,6 +173,14 @@
self.$snippets = $html.find(".tab-content > div > div").addClass("oe_snippet");
self.$el.append($html);
var snippets = 0;
self.$snippets.each(function () {
if (self.snippet_have_dropzone($(this)))
snippets++;
});
if (!snippets) self.$button.css("display", "none");
self.make_snippet_draggable(self.$snippets);
});
},
@ -196,6 +204,12 @@
this.$el.addClass("hidden");
},
snippet_have_dropzone: function ($snippet) {
return (($snippet.data('selector-siblings') && this.dom_filter($snippet.data('selector-siblings')).size() > 0) ||
($snippet.data('selector-children') && this.dom_filter($snippet.data('selector-children')).size() > 0) ||
($snippet.data('selector-vertical-children') && this.dom_filter($snippet.data('selector-vertical-children')).size() > 0));
},
bind_snippet_click_editor: function () {
var self = this;
var snipped_event_flag = false;

View File

@ -14,7 +14,7 @@
<span class="icon-bar"></span>
</button>
<form class="navbar-form navbar-left">
<button type="button" data-action="edit" class="btn btn-primary">Edit</button>
<button type="button" data-action="edit" class="btn btn-primary hidden">Edit</button>
</form>
</div>
<div class="collapse navbar-collapse navbar-edit-collapse">
@ -22,12 +22,12 @@
<li><a data-action="show-mobile-preview" href="#"><span title="Mobile preview"><i class="fa fa-mobile"/></span></a></li>
<li class="divider-vertical"></li>
<li><a data-action="promote-current-page" href="#"><span title="Promote page on the web">Promote</span></a></li>
<li class="dropdown js_hide_on_translate">
<li class="hidden dropdown js_hide_on_translate">
<a id="content-menu-button" class="dropdown-toggle" data-toggle="dropdown" href="#">Content <span class="caret"></span></a>
<ul class="dropdown-menu oe_content_menu" role="menu">
<li><a data-action="edit-structure" href="#"><span title="Edit Top Menu">Edit Menu</span></a></li>
<li class="divider"> </li>
<li><a href="#" data-action="new_page">New Page</a></li>
<li class="hidden"><a data-action="edit-structure" href="#"><span title="Edit Top Menu">Edit Menu</span></a></li>
<li class="hidden divider"> </li>
<li class="hidden"><a href="#" data-action="new_page">New Page</a></li>
</ul>
</li>
<li class="dropdown js_hide_on_translate">

View File

@ -219,11 +219,12 @@
<script type="text/javascript" src="/website/static/lib/MutationObservers/MutationObserver.js"></script>
<script type="text/javascript" src="/website/static/src/js/website.editor.js"></script>
<script type="text/javascript" src="/website/static/src/js/website.menu.js"></script>
<script type="text/javascript" src="/website/static/src/js/website.editor.newpage.js" groups="base.group_website_designer"></script>
<script type="text/javascript" src="/website/static/src/js/website.menu.js" groups="base.group_website_designer"></script>
<script type="text/javascript" src="/website/static/src/js/website.mobile.js"></script>
<script type="text/javascript" src="/website/static/src/js/website.seo.js"></script>
<script type="text/javascript" src="/website/static/src/js/website.tour.js"></script>
<script type="text/javascript" src="/website/static/src/js/website.tour.banner.js"></script>
<script type="text/javascript" id="website_tour_js" src="/website/static/src/js/website.tour.js"></script>
<script type="text/javascript" src="/website/static/src/js/website.tour.banner.js" groups="base.group_website_designer"></script>
<script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.snippets.editor.js"></script>
<script t-if="not translatable" type="text/javascript" src="/website/static/src/js/website.ace.js"></script>
<script t-if="translatable" type="text/javascript" src="/website/static/src/js/website.translator.js"></script>

View File

@ -4,7 +4,16 @@
var website = openerp.website;
website.add_template_file('/website_blog/static/src/xml/website_blog.xml');
website.is_editable = true;
website.EditorBar.include({
start: function() {
var res = this._super();
if ($("#wrap.js_blog").size()) {
this.$("button[data-action=edit]").removeClass("hidden");
}
this.$(".dropdown:has(.oe_content_menu)").removeClass("hidden");
return res;
},
events: _.extend({}, website.EditorBar.prototype.events, {
'click a[data-action=new_blog_post]': function (ev) {
ev.preventDefault();

View File

@ -2,8 +2,8 @@
<openerp>
<data>
<template id="editor_head" inherit_id="website.editor_head" name="Blog Editor" groups="base.group_website_designer">
<xpath expr="//script[last()]" position="after">
<template id="editor_head" inherit_id="website.editor_head" name="Blog Editor" groups="base.group_document_user">
<xpath expr="//script[@id='website_tour_js']" position="after">
<script type="text/javascript" src="/website_blog/static/src/js/website_blog.editor.js"></script>
<script type="text/javascript" src="/website_blog/static/src/js/website.tour.blog.js"></script>
</xpath>
@ -100,10 +100,12 @@
<div t-if="not blog_posts">
<div class="text-center text-muted">
<h3 class="css_editable_display">No blog post found</h3>
<h3 class="css_non_editable_mode_hidden">There isn't available blog post right now, click <a t-href="/page/website.contactus">here</a> to contact us</h3>
<h3 class="css_editable_hidden">There isn't available blog post right now, click <a t-href="/page/website.contactus">here</a> to contact us</h3>
<t groups="base.group_website_publisher">
<p>Click on "Content" to define a new blog post or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
<t groups="base.group_document_user">
<p>Click on "Content" to define a new blog post or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
</t>
</t>
</div>
</div>
@ -268,7 +270,7 @@
<t t-set="head">
<link rel='stylesheet' href='/website_blog/static/src/css/website_blog.css'/>
</t>
<div id="wrap">
<div id="wrap" class="js_blog">
<div class="oe_structure"></div>
<div class="container mt16 js_website_blog">
<div class="row">

View File

@ -2,5 +2,6 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_event_event_public,event.event.public,event.model_event_event,base.group_public,1,0,0,0
access_event_type_public,event.type.public,event.model_event_type,base.group_public,1,0,0,0
access_event_event_ticket_public,event.event.ticket.public,event_sale.model_event_event_ticket,,1,0,0,0
access_event_event_ticket_public,event.event.ticket.public,event_sale.model_event_event_ticket,event.group_event_manager,1,1,1,1
access_event_product_product_public,event.product.product.public,product.model_product_product,base.group_public,1,0,0,0
access_event_product_template_public,event.product.template.public,product.model_product_template,base.group_public,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_event_event_public event.event.public event.model_event_event base.group_public 1 0 0 0
3 access_event_type_public event.type.public event.model_event_type base.group_public 1 0 0 0
4 access_event_event_ticket_public event.event.ticket.public event_sale.model_event_event_ticket 1 0 0 0
5 access_event_event_ticket_public event.event.ticket.public event_sale.model_event_event_ticket event.group_event_manager 1 1 1 1
6 access_event_product_product_public event.product.product.public product.model_product_product base.group_public 1 0 0 0
7 access_event_product_template_public event.product.template.public product.model_product_template base.group_public 1 0 0 0

View File

@ -4,7 +4,16 @@
var website = openerp.website;
website.add_template_file('/website_event/static/src/xml/website_event.xml');
website.is_editable = true;
website.EditorBar.include({
start: function() {
var res = this._super();
if ($("#wrap.js_event").size()) {
this.$("button[data-action=edit]").removeClass("hidden");
}
this.$(".dropdown:has(.oe_content_menu)").removeClass("hidden");
return res;
},
events: _.extend({}, website.EditorBar.prototype.events, {
'click a[data-action=new_event]': function (ev) {
ev.preventDefault();

View File

@ -2,8 +2,8 @@
<openerp>
<data>
<template id="editor_head" inherit_id="website.editor_head" name="Event Editor" groups="base.group_website_designer">
<xpath expr="//script[last()]" position="after">
<template id="editor_head" inherit_id="website.editor_head" name="Event Editor" groups="event.group_event_manager">
<xpath expr="//script[@id='website_tour_js']" position="after">
<script type="text/javascript" src="/website_event/static/src/js/website_event.editor.js"></script>
<script type="text/javascript" src="/website_event/static/src/js/website.tour.event.js"></script>
</xpath>
@ -46,11 +46,13 @@
<t t-if="not event_ids">
<div class="text-center text-muted">
<h3 class="css_editable_display">No event found</h3>
<h3 class="css_non_editable_mode_hidden">There isn't available events right now, <t t-if="current_date or current_country or current_type">click <a t-href="/event">here</a> to check all events or</t> click <a t-href="/page/website.contactus">here</a> to contact us</h3>
<h3 class="css_editable_hidden">There isn't available events right now, <t t-if="current_date or current_country or current_type">click <a t-href="/event">here</a> to check all events or</t> click <a t-href="/page/website.contactus">here</a> to contact us</h3>
<t groups="base.group_website_publisher">
<p>Click on "Content" to define a new event or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
<p>In the backend's event form contains information to customize your events: location, oranizer, tikets, registrations, etc.</p>
<t groups="event.group_event_manager">
<p>Click on "Content" to define a new event or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
<p>In the backend's event form contains information to customize your events: location, oranizer, tikets, registrations, etc.</p>
</t>
</t>
</div>
</t>
@ -178,7 +180,7 @@
<template id="layout">
<t t-call="website.layout">
<div id="wrap">
<div id="wrap" class="js_event">
<div class="oe_structure"/>
<div class="container">
<div class="row mt8">

View File

@ -1,6 +1,17 @@
(function() {
"use strict";
var website = openerp.website;
website.add_template_file('/website_hr_recruitment/static/src/xml/website_hr_recruitment.xml');
openerp.website.add_template_file(
'/website_hr_recruitment/static/src/xml/website_hr_recruitment.xml');
website.is_editable = true;
website.EditorBar.include({
start: function() {
var res = this._super();
if ($("#wrap.js_hr_recruitment").size()) {
this.$("button[data-action=edit]").removeClass("hidden");
}
this.$(".dropdown:has(.oe_content_menu)").removeClass("hidden");
return res;
},
});
})();

View File

@ -7,8 +7,8 @@
<field name="description">Job Posts on your website</field>
</record>
<template id="editor_head" inherit_id="website.editor_head" name="Jobs Editor" groups="base.group_website_designer">
<xpath expr="//script[last()]" position="after">
<template id="editor_head" inherit_id="website.editor_head" name="Jobs Editor" groups="base.group_hr_manager">
<xpath expr="//script[@id='website_tour_js']" position="after">
<script type="text/javascript" src="/website_hr_recruitment/static/src/js/website_hr_recruitment.editor.js"></script>
</xpath>
</template>
@ -58,10 +58,12 @@
<div t-if="not jobs">
<div class="text-center text-muted">
<h4 class="css_editable_display">No job offer found</h4>
<h4 class="css_non_editable_mode_hidden">There isn't job offer published now, click <a t-href="/page/website.contactus">here</a> to contact us</h4>
<h4 class="css_editable_hidden">There isn't job offer published now, click <a t-href="/page/website.contactus">here</a> to contact us</h4>
<t groups="base.group_website_publisher">
<p>Click on "Content" to define a new job offer or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
<t groups="base.group_hr_manager">
<p>Click on "Content" to define a new job offer or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
</t>
</t>
</div>
</div>
@ -99,7 +101,7 @@
<template id="detail">
<t t-call="website.layout">
<t t-set="additional_title">Job Detail</t>
<div id="wrap">
<div id="wrap" class="js_hr_recruitment">
<div class="oe_structure"/>
<section class="container mt8">

View File

@ -416,11 +416,6 @@ class Ecommerce(http.Controller):
self.add_product_to_cart(product_id=int(product_id))
return request.redirect("/shop/mycart/")
@website.route(['/shop/add_cart/<model("product.product"):product>/'], type='http', auth="public", multilang=True)
def add_cart_product(self, product=None, product_id=None, remove=None, **kw):
self.add_product_to_cart(product_id=product.id)
return request.redirect("/shop/mycart/")
@website.route(['/shop/change_cart/<int:order_line_id>/'], type='http', auth="public", multilang=True)
def add_cart_order_line(self, order_line_id=None, remove=None, **kw):
self.add_product_to_cart(order_line_id=order_line_id, number=(remove and -1 or 1))

View File

@ -4,7 +4,16 @@
var website = openerp.website;
website.add_template_file('/website_sale/static/src/xml/website_sale.xml');
website.is_editable = true;
website.EditorBar.include({
start: function() {
var res = this._super();
if ($("#wrap.js_sale").size()) {
this.$("button[data-action=edit]").removeClass("hidden");
}
this.$(".dropdown:has(.oe_content_menu)").removeClass("hidden");
return res;
},
events: _.extend({}, website.EditorBar.prototype.events, {
'click a[data-action=new_product]': function (ev) {
ev.preventDefault();

View File

@ -4,8 +4,8 @@
<!-- Layout add nav and footer -->
<template id="editor_head" inherit_id="website.editor_head" name="Shop Editor" groups="base.group_website_designer">
<xpath expr="//script[last()]" position="after">
<template id="editor_head" inherit_id="website.editor_head" name="Shop Editor" groups="base.group_sale_manager">
<xpath expr="//script[@id='website_tour_js']" position="after">
<script type="text/javascript" src="/website_sale/static/src/js/website_sale.editor.js"></script>
<script type="text/javascript" src="/website_sale/static/src/js/website.tour.shop.js"></script>
</xpath>
@ -88,7 +88,7 @@
<t t-raw="head or ''"/>
</t>
<t t-set="additional_title">Shop</t>
<div id="wrap">
<div id="wrap" class="js_sale">
<div class="oe_structure"/>
<div class="container oe_website_sale">
<div class="products_pager">
@ -191,9 +191,11 @@
<h3 class="css_editable_display">No product found</h3>
<h3 class="css_non_editable_mode_hidden">There isn't available products right now, click <a t-href="/page/website.contactus">here</a> to contact us</h3>
<t groups="base.group_website_publisher">
<p>Click on "Content" to define a new product or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
<p>In the backend's product form contains information to simplify the sale process: price, notes in the quotation, accounting data, procurement methods, etc.</p>
<t groups="base.group_sale_manager">
<p>Click on "Content" to define a new product or "Help" for more informations.</p>
<img src="/website/static/src/img/content_here.png"/>
<p>In the backend's product form contains information to simplify the sale process: price, notes in the quotation, accounting data, procurement methods, etc.</p>
</t>
</t>
</div>
</t>
@ -221,9 +223,10 @@
<template id="add_to_basket" inherit_option_id="website_sale.products_cart" name="Add to Cart">
<xpath expr="//div[@class='product_price']" position="inside">
<a t-href="/shop/add_cart/#{ product.product_variant_ids[0].id }/"><!-- class="js_add_cart_json" -->
<span class="fa fa-shopping-cart"/>
</a>
<form action="/shop/add_cart/" method="post" style="display: inline-block;">
<input name="product_id" t-att-value="product.product_variant_ids[0].id" type="hidden"/>
<button type="submit" class="fa fa-shopping-cart"/>
</form>
</xpath>
</template>
@ -263,7 +266,7 @@
<link rel='stylesheet' href='/website_sale/static/src/css/website_mail.css'/>
</t>
<t t-set="additional_title" t-value="product.name"/>
<div id="wrap">
<div id="wrap" class="js_sale">
<section class="container mt8">
<div class="row">
@ -679,7 +682,10 @@
}'/>
</td>
<td class="text-center">
<a t-href="/shop/add_cart/#{ product.product_variant_ids[0].id }/"><strong>Add to Cart</strong></a>
<form action="/shop/add_cart/" method="post">
<input name="product_id" t-att-value="product.product_variant_ids[0].id" type="hidden"/>
<button type="submit" class="btn btn-link"><strong>Add to Cart</strong></button>
</form>
</td>
</tr>
</tbody>