[WIP] website: add website_button widget in backend to publish and go back to the website. (need bootstrap 3 for layout)

bzr revid: chm@openerp.com-20131202124504-78zvm5t0p1hpsn53
This commit is contained in:
Christophe Matthieu 2013-12-02 13:45:04 +01:00
parent b51daf482b
commit c1f306dd96
9 changed files with 79 additions and 40 deletions

View File

@ -58,11 +58,11 @@
<field name="arch" type="xml">
<form string="Events" version="7.0">
<header>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
<button string="Confirm Event" name="button_confirm" states="draft" type="object" class="oe_highlight" groups="base.group_user"/>
<button string="Finish Event" name="button_done" states="confirm" type="object" class="oe_highlight" groups="base.group_user"/>
<button string="Set To Draft" name="button_draft" states="cancel,done" type="object" groups="base.group_user"/>
<button string="Cancel Event" name="button_cancel" states="draft,confirm" type="object" groups="base.group_user"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,done"/>
</header>
<sheet>
<div class="oe_right oe_button_box" groups="base.group_user">

View File

@ -22,5 +22,8 @@ OpenERP Website CMS
],
'demo': [
'data/website_demo.xml',
]
],
'js': ['static/src/js/website.backend.js'],
'qweb' : ['static/src/xml/website.backend.xml'],
'css': ['static/src/css/website.backend.css'],
}

View File

@ -0,0 +1,6 @@
.oe_WidgetWebsiteButton .btn-danger .oe_publish {
display: none;
}
.oe_WidgetWebsiteButton .btn-success .oe_unpublish {
display: none;
}

View File

@ -0,0 +1,32 @@
openerp.website = function(instance) {
var _t = instance.web._t;
instance.web.form.WidgetWebsiteButton = instance.web.form.AbstractField.extend({
template: 'WidgetWebsiteButton',
render_value: function() {
this._super();
this.$("button:first")
.toggleClass("btn-success", this.get_value())
.toggleClass("btn-danger", !this.get_value());
this.$("a:first").attr("href", this.view.datarecord.website_url || "/" );
if (this.node.attrs.class) {
this.$el.addClass(this.node.attrs.class);
}
},
start: function() {
var self = this;
this._super.apply(this, arguments);
this.$("button:first").on("click", function () {
console.log("click", !!$(this).hasClass("btn-danger"));
self.set_value(!!$(this).hasClass("btn-danger"));
return self.view.recursive_save();
});
},
});
instance.web.form.widgets = instance.web.form.widgets.extend({
'website_button': 'instance.web.form.WidgetWebsiteButton',
});
};

View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- vim:fdl=1:
-->
<templates id="template" xml:space="preserve">
<t t-name="WidgetWebsiteButton">
<div class="btn-group oe_WidgetWebsiteButton">
<button class="btn btn-success">
<span class="oe_unpublish">Not Published</span>
<span class="oe_publish">Published</span>
</button>
<button id="dopprod-6" data-toggle="dropdown" type="button" class="btn btn-default dropdown-toggle">
<span class="caret"></span>
</button>
<ul role="menu" class="dropdown-menu" aria-labelledby="dopprod-6">
<li>
<a href="#" title="View in frontend">Website</a>
</li>
</ul>
</div>
</t>
</templates>

View File

@ -106,7 +106,7 @@ class event(osv.osv):
string='Website Messages',
help="Website communication history",
),
'website_url': fields.function(_website_url, string="Website url"),
'website_url': fields.function(_website_url, string="Website url", type="char"),
'show_menu': fields.function(_get_show_menu, fnct_inv=_set_show_menu, type='boolean', string='Dedicated Menu'),
'menu_id': fields.many2one('website.menu', 'Event Menu'),
}

View File

@ -8,19 +8,11 @@
<field name="inherit_id" ref="event.view_event_form"/>
<field name="arch" type="xml">
<!-- add state field in header -->
<xpath expr="//sheet" position="before">
<div class="oe_form_box_info oe_text_center">
<p attrs="{'invisible': [('website_published', '=', True)]}">
This event is <b>not available</b> for public user in your website.
</p>
<p attrs="{'invisible': [('website_published', '=', False)]}">
This event is <b>available</b> for public user in your website.
</p>
<p>Website view: <field class="oe_inline" name="website_url" widget="url"/></p>
</div>
<xpath expr="//sheet/div" position="before">
<field name="website_url" invisible="1"/>
<field name="website_published" class="pull-right" widget="website_button"/>
</xpath>
<xpath expr="//field[@name='organizer_id']" position="after">
<field name="website_published"/>
<field name="twitter_hashtag"/>
</xpath>
</field>

View File

@ -57,7 +57,7 @@ class product_template(osv.Model):
'website_size_y': fields.integer('Size Y'),
'website_style_ids': fields.many2many('website.product.style', 'product_website_style_rel', 'product_id', 'style_id', 'Styles'),
'website_sequence': fields.integer('Sequence', help="Determine the display order in the Website E-commerce"),
'website_url': fields.function(_website_url, string="Website url"),
'website_url': fields.function(_website_url, string="Website url", type="char"),
}
_defaults = {
'website_size_x': 1,

View File

@ -9,21 +9,13 @@
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<!-- add state field in header -->
<xpath expr="//sheet" position="before">
<div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('sale_ok', '=', False)]}">
<p attrs="{'invisible': [('website_published', '=', True)]}">
This product is <b>not available</b> for public user in your ecommerce.
</p>
<p attrs="{'invisible': [('website_published', '=', False)]}">
This product is <b>available</b> for public user in your ecommerce.
</p>
<p>Website view: <field class="oe_inline" name="website_url" widget="url"/></p>
</div>
<xpath expr="//sheet/div" position="before">
<field name="website_url" invisible="1"/>
<field name="website_published" class="pull-right" widget="website_button"/>
</xpath>
<group name="sale" position="inside">
<group name="website" string="Website">
<field name="website_published"/>
<field name="suggested_product_ids" widget="many2many_tags"/>
<field name="website_style_ids" widget="many2many_tags"/>
</group>
@ -48,20 +40,9 @@
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<!-- add state field in header -->
<xpath expr="//sheet" position="before">
<div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('sale_ok', '=', False)]}">
<p attrs="{'invisible': [('website_published', '=', True)]}">
This product is <b>not available</b> for public user in your ecommerce.
</p>
<p attrs="{'invisible': [('website_published', '=', False)]}">
This product is <b>available</b> for public user in your ecommerce.
</p>
<p>Website view: <field class="oe_inline" name="website_url" widget="url"/></p>
</div>
</xpath>
<xpath expr="//group[@string='Product Type']" position="inside">
<field name="website_published"/>
<xpath expr="//sheet/div" position="before">
<field name="website_url" invisible="1"/>
<field name="website_published" class="pull-right" widget="website_button"/>
</xpath>
<xpath expr="//page[@string='Information']" position="inside">
<group colspan="4" string="Website Options">