[IMP] change the way the sections and items are added to the sidebar
bzr revid: chs@openerp.com-20111010123432-619o61elz09jm9sy
This commit is contained in:
parent
ca224b647c
commit
27869cac8b
|
@ -119,7 +119,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView#
|
||||||
this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id);
|
this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id);
|
||||||
this.sidebar.start();
|
this.sidebar.start();
|
||||||
this.sidebar.do_unfold();
|
this.sidebar.do_unfold();
|
||||||
this.sidebar.attachments = new openerp.web.form.SidebarAttachments(this.sidebar, this.sidebar.add_section('attachments', "Attachments"), this);
|
this.sidebar.attachments = new openerp.web.form.SidebarAttachments(this.sidebar, this);
|
||||||
this.sidebar.add_toolbar(this.fields_view.toolbar);
|
this.sidebar.add_toolbar(this.fields_view.toolbar);
|
||||||
this.set_common_sidebar_sections(this.sidebar);
|
this.set_common_sidebar_sections(this.sidebar);
|
||||||
}
|
}
|
||||||
|
@ -541,8 +541,12 @@ openerp.web.FormDialog = openerp.web.Dialog.extend({
|
||||||
openerp.web.form = {};
|
openerp.web.form = {};
|
||||||
|
|
||||||
openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({
|
openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({
|
||||||
init: function(parent, element_id, form_view) {
|
init: function(parent, form_view) {
|
||||||
this._super(parent, element_id);
|
var $section = parent.add_section('Attachments');
|
||||||
|
this.$div = $('<div class="oe-sidebar-attachments"></div>');
|
||||||
|
$section.append(this.$div);
|
||||||
|
|
||||||
|
this._super(parent, $section.attr('id'));
|
||||||
this.view = form_view;
|
this.view = form_view;
|
||||||
},
|
},
|
||||||
do_update: function() {
|
do_update: function() {
|
||||||
|
@ -560,7 +564,7 @@ openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({
|
||||||
},
|
},
|
||||||
on_attachments_loaded: function(attachments) {
|
on_attachments_loaded: function(attachments) {
|
||||||
this.attachments = attachments;
|
this.attachments = attachments;
|
||||||
this.$element.html(QWeb.render('FormView.sidebar.attachments', this));
|
this.$div.html(QWeb.render('FormView.sidebar.attachments', this));
|
||||||
this.$element.find('.oe-binary-file').change(this.on_attachment_changed);
|
this.$element.find('.oe-binary-file').change(this.on_attachment_changed);
|
||||||
this.$element.find('.oe-sidebar-attachment-delete').click(this.on_attachment_delete);
|
this.$element.find('.oe-sidebar-attachment-delete').click(this.on_attachment_delete);
|
||||||
},
|
},
|
||||||
|
|
|
@ -512,6 +512,52 @@ db.web.Sidebar = db.web.Widget.extend({
|
||||||
self.do_toggle();
|
self.do_toggle();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
call_default_on_sidebar: function(item) {
|
||||||
|
var func_name = 'on_sidebar_' + _.underscored(item.label);
|
||||||
|
var fn = this.widget_parent[func_name];
|
||||||
|
if(typeof fn === 'function') {
|
||||||
|
fn(item);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
add_default_sections: function() {
|
||||||
|
this.add_items('Customize', [
|
||||||
|
{
|
||||||
|
label: "Manage Views",
|
||||||
|
callback: this.call_default_on_sidebar,
|
||||||
|
title: "Manage views of the current object"
|
||||||
|
}, {
|
||||||
|
label: "Edit Workflow",
|
||||||
|
callback: this.call_default_on_sidebar,
|
||||||
|
title: "Manage views of the current object",
|
||||||
|
classname: 'oe_hide oe_sidebar_edit_workflow'
|
||||||
|
}, {
|
||||||
|
label: "Customize Object",
|
||||||
|
callback: this.call_default_on_sidebar,
|
||||||
|
title: "Manage views of the current object"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
this.add_items('Other Options', [
|
||||||
|
{
|
||||||
|
label: "Import",
|
||||||
|
callback: this.call_default_on_sidebar,
|
||||||
|
}, {
|
||||||
|
label: "Export",
|
||||||
|
callback: this.call_default_on_sidebar,
|
||||||
|
}, {
|
||||||
|
label: "Translate",
|
||||||
|
callback: this.call_default_on_sidebar,
|
||||||
|
classname: 'oe_sidebar_translate oe_hide'
|
||||||
|
}, {
|
||||||
|
label: "View Log",
|
||||||
|
callback: this.call_default_on_sidebar,
|
||||||
|
classname: 'oe_hide oe_sidebar_view_log'
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
|
||||||
add_toolbar: function(toolbar) {
|
add_toolbar: function(toolbar) {
|
||||||
var self = this;
|
var self = this;
|
||||||
_.each([['print', "Reports"], ['action', "Actions"], ['relate', "Links"]], function(type) {
|
_.each([['print', "Reports"], ['action', "Actions"], ['relate', "Links"]], function(type) {
|
||||||
|
@ -524,15 +570,29 @@ db.web.Sidebar = db.web.Widget.extend({
|
||||||
classname: 'oe_sidebar_' + type[0]
|
classname: 'oe_sidebar_' + type[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.add_section(type[0], type[1], items);
|
self.add_items(type[1], items);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
add_section: function(code, name, items) {
|
|
||||||
// For each section, we pass a name/label and optionally an array of items.
|
add_section: function(name) {
|
||||||
// If no items are passed, then the section will be created as a custom section
|
var code = _.underscored(name),
|
||||||
// returning back an element_id to be used by a custom controller.
|
$section = this.sections[code];
|
||||||
// Else, the section is a standard section with items displayed as links.
|
|
||||||
|
if(!$section) {
|
||||||
|
section_id = _.uniqueId(this.element_id + '_section_' + code + '_');
|
||||||
|
var $section = $(db.web.qweb.render("Sidebar.section", {
|
||||||
|
section_id: section_id,
|
||||||
|
name: name,
|
||||||
|
classname: 'oe_sidebar_' + code,
|
||||||
|
}));
|
||||||
|
$section.appendTo(this.$element.find('div.sidebar-actions'));
|
||||||
|
this.sections[code] = $section;
|
||||||
|
}
|
||||||
|
return $section;
|
||||||
|
},
|
||||||
|
|
||||||
|
add_items: function(section_name, items) {
|
||||||
// An item is a dictonary : {
|
// An item is a dictonary : {
|
||||||
// label: label to be displayed for the link,
|
// label: label to be displayed for the link,
|
||||||
// action: action to be launch when the link is clicked,
|
// action: action to be launch when the link is clicked,
|
||||||
|
@ -541,25 +601,24 @@ db.web.Sidebar = db.web.Widget.extend({
|
||||||
// title: optional title for the link
|
// title: optional title for the link
|
||||||
// }
|
// }
|
||||||
// Note: The item should have one action or/and a callback
|
// Note: The item should have one action or/and a callback
|
||||||
|
//
|
||||||
|
|
||||||
var self = this,
|
var self = this,
|
||||||
section_id = _.uniqueId(this.element_id + '_section_' + code + '_');
|
$section = this.add_section(section_name),
|
||||||
|
section_id = $section.attr('id');
|
||||||
|
|
||||||
if (items) {
|
if (items) {
|
||||||
for (var i = 0; i < items.length; i++) {
|
for (var i = 0; i < items.length; i++) {
|
||||||
items[i].element_id = _.uniqueId(section_id + '_item_');
|
items[i].element_id = _.uniqueId(section_id + '_item_');
|
||||||
this.items[items[i].element_id] = items[i];
|
this.items[items[i].element_id] = items[i];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
var $section = $(db.web.qweb.render("Sidebar.section", {
|
var $items = $(db.web.qweb.render("Sidebar.section.items", {items: items}));
|
||||||
section_id: section_id,
|
|
||||||
name: name,
|
$items.find('a.oe_sidebar_action_a').click(function() {
|
||||||
classname: 'oe_sidebar_' + code,
|
|
||||||
items: items
|
|
||||||
}));
|
|
||||||
if (items) {
|
|
||||||
$section.find('a.oe_sidebar_action_a').click(function() {
|
|
||||||
var item = self.items[$(this).attr('id')];
|
var item = self.items[$(this).attr('id')];
|
||||||
if (item.callback) {
|
if (item.callback) {
|
||||||
item.callback();
|
item.callback.apply(self, [item]);
|
||||||
}
|
}
|
||||||
if (item.action) {
|
if (item.action) {
|
||||||
var ids = self.widget_parent.get_selected_ids();
|
var ids = self.widget_parent.get_selected_ids();
|
||||||
|
@ -589,10 +648,13 @@ db.web.Sidebar = db.web.Widget.extend({
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var $ul = $section.find('ul');
|
||||||
|
if(!$ul.length) {
|
||||||
|
$ul = $('<ul/>').appendTo($section);
|
||||||
|
}
|
||||||
|
$items.appendTo($ul);
|
||||||
}
|
}
|
||||||
$section.appendTo(this.$element.find('div.sidebar-actions'));
|
|
||||||
this.sections[code] = $section;
|
|
||||||
return section_id;
|
|
||||||
},
|
},
|
||||||
do_fold: function() {
|
do_fold: function() {
|
||||||
this.$element.addClass('closed-sidebar').removeClass('open-sidebar');
|
this.$element.addClass('closed-sidebar').removeClass('open-sidebar');
|
||||||
|
@ -821,42 +883,11 @@ db.web.View = db.web.Widget.extend(/** @lends db.web.View# */{
|
||||||
},
|
},
|
||||||
do_search: function(view) {
|
do_search: function(view) {
|
||||||
},
|
},
|
||||||
|
|
||||||
set_common_sidebar_sections: function(sidebar) {
|
set_common_sidebar_sections: function(sidebar) {
|
||||||
sidebar.add_section('customize', "Customize", [
|
sidebar.add_default_sections();
|
||||||
{
|
|
||||||
label: "Manage Views",
|
|
||||||
callback: this.on_sidebar_manage_view,
|
|
||||||
title: "Manage views of the current object"
|
|
||||||
}, {
|
|
||||||
label: "Edit Workflow",
|
|
||||||
callback: this.on_sidebar_edit_workflow,
|
|
||||||
title: "Manage views of the current object",
|
|
||||||
classname: 'oe_hide oe_sidebar_edit_workflow'
|
|
||||||
}, {
|
|
||||||
label: "Customize Object",
|
|
||||||
callback: this.on_sidebar_customize_object,
|
|
||||||
title: "Manage views of the current object"
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
sidebar.add_section('other', "Other Options", [
|
|
||||||
{
|
|
||||||
label: "Import",
|
|
||||||
callback: this.on_sidebar_import
|
|
||||||
}, {
|
|
||||||
label: "Export",
|
|
||||||
callback: this.on_sidebar_export
|
|
||||||
}, {
|
|
||||||
label: "Translate",
|
|
||||||
callback: this.on_sidebar_translate,
|
|
||||||
classname: 'oe_sidebar_translate oe_hide'
|
|
||||||
}, {
|
|
||||||
label: "View Log",
|
|
||||||
callback: this.on_sidebar_view_log,
|
|
||||||
classname: 'oe_hide oe_sidebar_view_log'
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
},
|
},
|
||||||
on_sidebar_manage_view: function() {
|
on_sidebar_manage_views: function() {
|
||||||
if (this.fields_view && this.fields_view.arch) {
|
if (this.fields_view && this.fields_view.arch) {
|
||||||
$('<xmp>' + db.web.json_node_to_xml(this.fields_view.arch, true) + '</xmp>').dialog({ width: '95%', height: 600});
|
$('<xmp>' + db.web.json_node_to_xml(this.fields_view.arch, true) + '</xmp>').dialog({ width: '95%', height: 600});
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -467,17 +467,20 @@
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
<t t-name="Sidebar.section">
|
<t t-name="Sidebar.section">
|
||||||
<h2><t t-esc="name"/></h2>
|
|
||||||
<div t-att-id="section_id" t-att-class="classname">
|
<div t-att-id="section_id" t-att-class="classname">
|
||||||
<ul t-if="items">
|
<h2><t t-esc="name"/></h2>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
|
||||||
|
<t t-name="Sidebar.section.items">
|
||||||
<li t-foreach="items" t-as="item" t-att-class="item.classname">
|
<li t-foreach="items" t-as="item" t-att-class="item.classname">
|
||||||
<a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
|
<a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
|
||||||
<t t-esc="item.label"/>
|
<t t-esc="item.label"/>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
<t t-name="TranslateDialog">
|
<t t-name="TranslateDialog">
|
||||||
<ul class="oe_translate_tabs">
|
<ul class="oe_translate_tabs">
|
||||||
<li><a t-attf-href="##{widget.element_id}_fields">Fields</a></li>
|
<li><a t-attf-href="##{widget.element_id}_fields">Fields</a></li>
|
||||||
|
|
|
@ -84,8 +84,8 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({
|
||||||
if (this.options.sidebar && this.options.sidebar_id) {
|
if (this.options.sidebar && this.options.sidebar_id) {
|
||||||
this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id);
|
this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id);
|
||||||
this.sidebar.start();
|
this.sidebar.start();
|
||||||
this.sidebar.navigator = new openerp.web_calendar.SidebarNavigator(this.sidebar, this.sidebar.add_section('navigator', "Navigator"), this);
|
this.sidebar.navigator = new openerp.web_calendar.SidebarNavigator(this.sidebar, this);
|
||||||
this.sidebar.responsible = new openerp.web_calendar.SidebarResponsible(this.sidebar, this.sidebar.add_section('responsible', "Responsible"), this);
|
this.sidebar.responsible = new openerp.web_calendar.SidebarResponsible(this.sidebar, this);
|
||||||
this.sidebar.add_toolbar(this.fields_view.toolbar);
|
this.sidebar.add_toolbar(this.fields_view.toolbar);
|
||||||
this.set_common_sidebar_sections(this.sidebar);
|
this.set_common_sidebar_sections(this.sidebar);
|
||||||
this.sidebar.do_unfold();
|
this.sidebar.do_unfold();
|
||||||
|
@ -362,13 +362,16 @@ openerp.web_calendar.CalendarFormDialog = openerp.web.Dialog.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({
|
openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({
|
||||||
init: function(parent, element_id, view) {
|
init: function(parent, view) {
|
||||||
this._super(parent, element_id);
|
var $section = parent.add_section('Responsible');
|
||||||
|
this.$div = $('<div></div>');
|
||||||
|
$section.append(this.$div);
|
||||||
|
this._super(parent, $section.attr('id'));
|
||||||
this.view = view;
|
this.view = view;
|
||||||
this.$element.delegate('input:checkbox', 'change', this.on_filter_click);
|
this.$element.delegate('input:checkbox', 'change', this.on_filter_click);
|
||||||
},
|
},
|
||||||
on_events_loaded: function(filters) {
|
on_events_loaded: function(filters) {
|
||||||
this.$element.html(QWeb.render('CalendarView.sidebar.responsible', { filters: filters }));
|
this.$div.html(QWeb.render('CalendarView.sidebar.responsible', { filters: filters }));
|
||||||
},
|
},
|
||||||
on_filter_click: function(e) {
|
on_filter_click: function(e) {
|
||||||
var responsibles = [],
|
var responsibles = [],
|
||||||
|
@ -388,8 +391,9 @@ openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.web_calendar.SidebarNavigator = openerp.web.Widget.extend({
|
openerp.web_calendar.SidebarNavigator = openerp.web.Widget.extend({
|
||||||
init: function(parent, element_id, view) {
|
init: function(parent, view) {
|
||||||
this._super(parent, element_id);
|
var $section = parent.add_section('Navigator');
|
||||||
|
this._super(parent, $section.attr('id'));
|
||||||
this.view = view;
|
this.view = view;
|
||||||
},
|
},
|
||||||
on_events_loaded: function(events) {
|
on_events_loaded: function(events) {
|
||||||
|
|
Loading…
Reference in New Issue