diff options
| author | Christophe Matthieu <chm@openerp.com> | 2014-01-16 19:05:35 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@openerp.com> | 2014-01-16 19:05:35 +0100 |
| commit | 4ff74cbf9929ad41a01fd22c9e3c6050277a6214 (patch) | |
| tree | 8f910e936c487694bd3e2b6e3fe3c841b90c660f | |
| parent | d54544e31707131d58b2ae29dac1a533bd0aa931 (diff) | |
[IMP] website: editor menus is displayed in function of users groups (event, blog...)
bzr revid: chm@openerp.com-20140116180535-c736cuxn12qghiea
19 files changed, 150 insertions, 58 deletions
diff --git a/addons/website/static/src/css/editor.css b/addons/website/static/src/css/editor.css index 36af8e24992..386fead7ad3 100644 --- a/addons/website/static/src/css/editor.css +++ b/addons/website/static/src/css/editor.css @@ -85,6 +85,10 @@ display: block !important; } +.css_editable_hidden { + display: none !important; +} + .css_non_editable_mode_hidden { display: none; } diff --git a/addons/website/static/src/css/editor.sass b/addons/website/static/src/css/editor.sass index 2e0e5250fb7..923bd63e7dd 100644 --- a/addons/website/static/src/css/editor.sass +++ b/addons/website/static/src/css/editor.sass @@ -70,6 +70,9 @@ .css_editable_display display: block !important +.css_editable_hidden + display: none !important + .css_non_editable_mode_hidden display: none diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 69b58a0c496..67e7277d0c5 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -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 diff --git a/addons/website/static/src/js/website.editor.newpage.js b/addons/website/static/src/js/website.editor.newpage.js new file mode 100644 index 00000000000..e333e2e451e --- /dev/null +++ b/addons/website/static/src/js/website.editor.newpage.js @@ -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); + } + }); + } + }), + }); +})();
\ No newline at end of file diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 64767d95171..78a6202c58c 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -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(); }); diff --git a/addons/website/static/src/js/website.menu.js b/addons/website/static/src/js/website.menu.js index 87dd46dafe9..63ee508bb72 100644 --- a/addons/website/static/src/js/website.menu.js +++ b/addons/website/static/src/js/website.menu.js @@ -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', }), diff --git a/addons/website/static/src/js/website.snippets.editor.js b/addons/website/static/src/js/website.snippets.editor.js index cdaee863c61..e15a647da19 100644 --- a/addons/website/static/src/js/website.snippets.editor.js +++ b/addons/website/static/src/js/website.snippets.editor.js @@ -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; diff --git a/addons/website/static/src/xml/website.xml b/addons/website/static/src/xml/website.xml index ceec9c161d8..0998a03c66d 100644 --- a/addons/website/static/src/xml/website.xml +++ b/addons/website/static/src/xml/website.xml @@ -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"> diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 9682d2f17e2..fe34309d16a 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -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> diff --git a/addons/website_blog/static/src/js/website_blog.editor.js b/addons/website_blog/static/src/js/website_blog.editor.js index d63d4cf5f96..0ab97cca0f9 100644 --- a/addons/website_blog/static/src/js/website_blog.editor.js +++ b/addons/website_blog/static/src/js/website_blog.editor.js @@ -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(); diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml index 306266472aa..cba11732fee 100644 --- a/addons/website_blog/views/website_blog_templates.xml +++ b/addons/website_blog/views/website_blog_templates.xml @@ -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"> diff --git a/addons/website_event/security/ir.model.access.csv b/addons/website_event/security/ir.model.access.csv index 9778b0993e7..1f4fc9d12f1 100644 --- a/addons/website_event/security/ir.model.access.csv +++ b/addons/website_event/security/ir.model.access.csv @@ -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 diff --git a/addons/website_event/static/src/js/website_event.editor.js b/addons/website_event/static/src/js/website_event.editor.js index 6b2336d9689..a6b6cbde790 100644 --- a/addons/website_event/static/src/js/website_event.editor.js +++ b/addons/website_event/static/src/js/website_event.editor.js @@ -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(); diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index 1fdbaf1cbe3..663727db27f 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -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"> diff --git a/addons/website_hr_recruitment/static/src/js/website_hr_recruitment.editor.js b/addons/website_hr_recruitment/static/src/js/website_hr_recruitment.editor.js index aaa39bb16fd..6b727be806b 100644 --- a/addons/website_hr_recruitment/static/src/js/website_hr_recruitment.editor.js +++ b/addons/website_hr_recruitment/static/src/js/website_hr_recruitment.editor.js @@ -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; + }, + }); })(); diff --git a/addons/website_hr_recruitment/views/website_hr_recruitment.xml b/addons/website_hr_recruitment/views/website_hr_recruitment.xml index ef669aaa324..b892022c037 100644 --- a/addons/website_hr_recruitment/views/website_hr_recruitment.xml +++ b/addons/website_hr_recruitment/views/website_hr_recruitment.xml @@ -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"> diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index b53b6371c1d..e5d7ccf2856 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -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)) diff --git a/addons/website_sale/static/src/js/website_sale.editor.js b/addons/website_sale/static/src/js/website_sale.editor.js index d6103cba372..e6a35cf794c 100644 --- a/addons/website_sale/static/src/js/website_sale.editor.js +++ b/addons/website_sale/static/src/js/website_sale.editor.js @@ -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(); diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 0c014ea1664..1f1901ab423 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -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> |
