Christophe (OpenERP) has proposed merging
lp:~openerp-dev/openerp-web/trunk-sidebar-chs into lp:openerp-web.
Requested reviews:
OpenERP R&D Web Team (openerp-dev-web)
For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-sidebar-chs/+merge/78830
--
https://code.launchpad.net/~openerp-dev/openerp-web/trunk-sidebar-chs/+merge/78830
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openerp-web/trunk-sidebar-chs.
=== modified file 'addons/web/static/src/js/view_form.js'
--- addons/web/static/src/js/view_form.js 2011-10-10 12:28:28 +0000
+++ addons/web/static/src/js/view_form.js 2011-10-10 12:40:39 +0000
@@ -119,7 +119,7 @@
this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id);
this.sidebar.start();
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.set_common_sidebar_sections(this.sidebar);
}
@@ -541,8 +541,12 @@
openerp.web.form = {};
openerp.web.form.SidebarAttachments = openerp.web.Widget.extend({
- init: function(parent, element_id, form_view) {
- this._super(parent, element_id);
+ init: function(parent, form_view) {
+ 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;
},
do_update: function() {
@@ -560,7 +564,7 @@
},
on_attachments_loaded: function(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-sidebar-attachment-delete').click(this.on_attachment_delete);
},
=== modified file 'addons/web/static/src/js/views.js'
--- addons/web/static/src/js/views.js 2011-10-10 09:57:54 +0000
+++ addons/web/static/src/js/views.js 2011-10-10 12:40:39 +0000
@@ -512,6 +512,52 @@
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) {
var self = this;
_.each([['print', "Reports"], ['action', "Actions"], ['relate', "Links"]], function(type) {
@@ -524,15 +570,29 @@
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.
- // If no items are passed, then the section will be created as a custom section
- // returning back an element_id to be used by a custom controller.
- // Else, the section is a standard section with items displayed as links.
+
+ add_section: function(name) {
+ var code = _.underscored(name),
+ $section = this.sections[code];
+
+ 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 : {
// label: label to be displayed for the link,
// action: action to be launch when the link is clicked,
@@ -541,25 +601,24 @@
// title: optional title for the link
// }
// Note: The item should have one action or/and a callback
+ //
+
var self = this,
- section_id = _.uniqueId(this.element_id + '_section_' + code + '_');
+ $section = this.add_section(section_name),
+ section_id = $section.attr('id');
+
if (items) {
for (var i = 0; i < items.length; i++) {
items[i].element_id = _.uniqueId(section_id + '_item_');
this.items[items[i].element_id] = items[i];
}
- }
- var $section = $(db.web.qweb.render("Sidebar.section", {
- section_id: section_id,
- name: name,
- classname: 'oe_sidebar_' + code,
- items: items
- }));
- if (items) {
- $section.find('a.oe_sidebar_action_a').click(function() {
+
+ var $items = $(db.web.qweb.render("Sidebar.section.items", {items: items}));
+
+ $items.find('a.oe_sidebar_action_a').click(function() {
var item = self.items[$(this).attr('id')];
if (item.callback) {
- item.callback();
+ item.callback.apply(self, [item]);
}
if (item.action) {
var ids = self.widget_parent.get_selected_ids();
@@ -589,10 +648,13 @@
}
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() {
this.$element.addClass('closed-sidebar').removeClass('open-sidebar');
@@ -821,42 +883,11 @@
},
do_search: function(view) {
},
+
set_common_sidebar_sections: function(sidebar) {
- sidebar.add_section('customize', "Customize", [
- {
- 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'
- }
- ]);
+ sidebar.add_default_sections();
},
- on_sidebar_manage_view: function() {
+ on_sidebar_manage_views: function() {
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});
} else {
=== modified file 'addons/web/static/src/xml/base.xml'
--- addons/web/static/src/xml/base.xml 2011-10-06 11:41:27 +0000
+++ addons/web/static/src/xml/base.xml 2011-10-10 12:40:39 +0000
@@ -467,17 +467,20 @@
</div>
</t>
<t t-name="Sidebar.section">
- <h2><t t-esc="name"/></h2>
<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">
<a class="oe_sidebar_action_a" t-att-id="item.element_id" t-att-title="item.title" href="#">
<t t-esc="item.label"/>
</a>
</li>
- </ul>
- </div>
</t>
+
<t t-name="TranslateDialog">
<ul class="oe_translate_tabs">
<li><a t-attf-href="##{widget.element_id}_fields">Fields</a></li>
=== modified file 'addons/web_calendar/static/src/js/calendar.js'
--- addons/web_calendar/static/src/js/calendar.js 2011-10-05 08:36:56 +0000
+++ addons/web_calendar/static/src/js/calendar.js 2011-10-10 12:40:39 +0000
@@ -84,8 +84,8 @@
if (this.options.sidebar && this.options.sidebar_id) {
this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id);
this.sidebar.start();
- this.sidebar.navigator = new openerp.web_calendar.SidebarNavigator(this.sidebar, this.sidebar.add_section('navigator', "Navigator"), this);
- this.sidebar.responsible = new openerp.web_calendar.SidebarResponsible(this.sidebar, this.sidebar.add_section('responsible', "Responsible"), this);
+ this.sidebar.navigator = new openerp.web_calendar.SidebarNavigator(this.sidebar, this);
+ this.sidebar.responsible = new openerp.web_calendar.SidebarResponsible(this.sidebar, this);
this.sidebar.add_toolbar(this.fields_view.toolbar);
this.set_common_sidebar_sections(this.sidebar);
this.sidebar.do_unfold();
@@ -362,13 +362,16 @@
});
openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({
- init: function(parent, element_id, view) {
- this._super(parent, element_id);
+ init: function(parent, view) {
+ var $section = parent.add_section('Responsible');
+ this.$div = $('<div></div>');
+ $section.append(this.$div);
+ this._super(parent, $section.attr('id'));
this.view = view;
this.$element.delegate('input:checkbox', 'change', this.on_filter_click);
},
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) {
var responsibles = [],
@@ -388,8 +391,9 @@
});
openerp.web_calendar.SidebarNavigator = openerp.web.Widget.extend({
- init: function(parent, element_id, view) {
- this._super(parent, element_id);
+ init: function(parent, view) {
+ var $section = parent.add_section('Navigator');
+ this._super(parent, $section.attr('id'));
this.view = view;
},
on_events_loaded: function(events) {
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp