[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:
Christophe Matthieu
2015-02-11 12:31:52 +01:00
parent 8d34ada282
commit e8526dd013
6 changed files with 64 additions and 16 deletions
+5 -2
View File
@@ -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>
+1 -1
View File
@@ -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>