[IMP] website: menu editor open a modal to select the menu to edit if more of one menu in the page (like event)
This commit is contained in:
@@ -752,7 +752,7 @@ class website_menu(osv.osv):
|
||||
_order = "sequence"
|
||||
|
||||
# would be better to take a menu_id as argument
|
||||
def get_tree(self, cr, uid, website_id, context=None):
|
||||
def get_tree(self, cr, uid, website_id, menu_id=None, context=None):
|
||||
def make_tree(node):
|
||||
menu_node = dict(
|
||||
id=node.id,
|
||||
@@ -766,7 +766,10 @@ class website_menu(osv.osv):
|
||||
for child in node.child_id:
|
||||
menu_node['children'].append(make_tree(child))
|
||||
return menu_node
|
||||
menu = self.pool.get('website').browse(cr, uid, website_id, context=context).menu_id
|
||||
if menu_id:
|
||||
menu = self.browse(cr, uid, menu_id, context=context)
|
||||
else:
|
||||
menu = self.pool.get('website').browse(cr, uid, website_id, context=context).menu_id
|
||||
return make_tree(menu)
|
||||
|
||||
def save(self, cr, uid, website_id, data, context=None):
|
||||
|
||||
@@ -14,22 +14,34 @@
|
||||
var $content_item = $(this);
|
||||
self[$content_item.data('action')]();
|
||||
});
|
||||
|
||||
return this._super();
|
||||
},
|
||||
edit_menu: function() {
|
||||
var self = this;
|
||||
var context = website.get_context();
|
||||
openerp.jsonRpc('/web/dataset/call_kw', 'call', {
|
||||
model: 'website.menu',
|
||||
method: 'get_tree',
|
||||
args: [context.website_id],
|
||||
kwargs: {
|
||||
context: context
|
||||
},
|
||||
}).then(function (menu) {
|
||||
var result = new website.contentMenu.EditMenuDialog(menu).appendTo(document.body);
|
||||
return result;
|
||||
var def = $.Deferred();
|
||||
if ($("[data-content_menu_id]").length) {
|
||||
var select = new website.contentMenu.SelectEditMenuDialog();
|
||||
select.appendTo(document.body);
|
||||
select.on('save', this, function (root) {
|
||||
def.resolve(root);
|
||||
});
|
||||
} else {
|
||||
def.resolve(null);
|
||||
}
|
||||
|
||||
def.then(function (root_id) {
|
||||
openerp.jsonRpc('/web/dataset/call_kw', 'call', {
|
||||
model: 'website.menu',
|
||||
method: 'get_tree',
|
||||
args: [context.website_id, root_id],
|
||||
kwargs: {
|
||||
context: context
|
||||
},
|
||||
}).then(function (menu) {
|
||||
var result = new website.contentMenu.EditMenuDialog(menu).appendTo(document.body);
|
||||
return result;
|
||||
});
|
||||
});
|
||||
},
|
||||
new_page: function() {
|
||||
@@ -105,6 +117,22 @@
|
||||
}
|
||||
});
|
||||
|
||||
website.contentMenu.SelectEditMenuDialog = website.editor.Dialog.extend({
|
||||
template: 'website.contentMenu.dialog.select',
|
||||
init: function () {
|
||||
var self = this;
|
||||
self.roots = [{id: null, name: _t("Top Menu")}];
|
||||
$("[data-content_menu_id]").each(function () {
|
||||
self.roots.push({id: $(this).data("content_menu_id"), name: $(this).attr("name")});
|
||||
});
|
||||
this._super();
|
||||
},
|
||||
save: function () {
|
||||
this.trigger("save", parseInt(this.$el.find("select").val() || null));
|
||||
this._super();
|
||||
}
|
||||
});
|
||||
|
||||
website.contentMenu.EditMenuDialog = website.editor.Dialog.extend({
|
||||
template: 'website.contentMenu.dialog.edit',
|
||||
events: _.extend({}, website.editor.Dialog.prototype.events, {
|
||||
|
||||
@@ -22,9 +22,25 @@
|
||||
</ul>
|
||||
</li>
|
||||
</t>
|
||||
<t t-name="website.contentMenu.dialog.select">
|
||||
<t t-call="website.editor.dialog">
|
||||
<t t-set="title">Select a Menu</t>
|
||||
<t t-set="button">Continue</t>
|
||||
<select class="form-control mb16" t-if="widget.roots">
|
||||
<t t-foreach="widget.roots" t-as="root">
|
||||
<option t-att-value="root.id"><t t-esc="root.name"/></option>
|
||||
</t>
|
||||
</select>
|
||||
</t>
|
||||
</t>
|
||||
<t t-name="website.contentMenu.dialog.edit">
|
||||
<t t-call="website.editor.dialog">
|
||||
<t t-set="title">Edit Menu</t>
|
||||
<select class="form-control mb16" t-if="widget.roots">
|
||||
<t t-foreach="widget.roots" t-as="root">
|
||||
<option t-att-value="root.id"><t t-esc="root.name"/></option>
|
||||
</t>
|
||||
</select>
|
||||
<ul class="oe_menu_editor list-unstyled">
|
||||
<t t-foreach="widget.menu.children" t-as="submenu">
|
||||
<t t-call="website.contentMenu.dialog.submenu"/>
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
</div>
|
||||
<div class="modal-body"><t t-raw="0"/></div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary save">Save</button>
|
||||
<button type="button" class="btn btn-primary save" t-if="!button">Save</button>
|
||||
<button type="button" class="btn btn-primary save" t-if="button"><t t-raw="button"/></button>
|
||||
<button type="button" class="btn hidden wait" disabled="disabled"/>
|
||||
or
|
||||
<a href="#" data-dismiss="modal" aria-hidden="true">Discard</a>
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
<span t-field="event.name"/>
|
||||
</li>
|
||||
</ol>
|
||||
<ol class="breadcrumb mb0" id="event_menu" t-if="event.menu_id">
|
||||
<ol name="Event Menu" class="breadcrumb mb0" id="event_menu" t-if="event.menu_id" t-att-data-content_menu_id="editable and event.menu_id.id">
|
||||
<t t-foreach="event.menu_id.child_id" t-as="submenu">
|
||||
<t t-call="website.submenu"/>
|
||||
</t>
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
<div class="container">
|
||||
<div class="row mt8">
|
||||
<div class="col-sm-7" id="event_menu">
|
||||
<ol class="breadcrumb mb0" id="event_menu" t-if="event.menu_id">
|
||||
<ol name="Event Menu" class="breadcrumb mb0" id="event_menu" t-if="event.menu_id" t-att-data-content_menu_id="editable and event.menu_id.id">
|
||||
<t t-foreach="event.menu_id.child_id" t-as="submenu">
|
||||
<t t-call="website.submenu"/>
|
||||
</t>
|
||||
|
||||
Reference in New Issue
Block a user