diff --git a/Makefile b/Makefile index 0a4d41800e0..9e84e356aaf 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,8 @@ -.PHONY: all release clean +.PHONY: all doc release clean HOST = 127.0.0.1 PORT = 8080 - all: run run: @@ -24,6 +23,9 @@ clean: @rm -rf dist @rm -rf *.egg-info -cloc: - cloc openerpweb/*.py addons/*/controllers/*.py addons/*/static/src/*.js addons/*/static/src/js/*.js addons/*/static/src/css/*.css addons/*/static/src/xml/*.xml +doc: + make -C doc html + +cloc: + cloc addons/*/common/*.py addons/*/controllers/*.py addons/*/static/src/*.js addons/*/static/src/js/*.js addons/*/static/src/css/*.css addons/*/static/src/xml/*.xml diff --git a/README.web b/README.web index 50cd4fcaaf6..72393bacd34 100644 --- a/README.web +++ b/README.web @@ -1,42 +1,9 @@ -Coding style ------------- - -Javascript - http://javascript.crockford.com/code.html with the following amendements: - - Line Length should be 160 (132?), dont split at 80, rationale in 2011 we all use 16/9 screens - - http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml ? - -Modules Conventions -------------------- - -addons//controllers/ python controller -addons//controllers/main.py main python controller is there is only one (or should it be .py ?) -addons//static/ static directory (directly served by the web server) -addons//static// directory containing an external javascrip library respect the directory structure of upstream is this directory -addons//static/openerp/ module specfic static files -addons//static/openerp/js/ module specific javscript files -addons//static/openerp/css/ module specific css files -addons//static/openerp/img/ module specific images files -addons//static/openerp/ other files -addons//__openerp__.py module manifest referencing js and css files - - -Dependecies +OpenERP Web ----------- -Depends on -install "CherryPy>=3.1.2" "-d cherrypy" -install "simplejson>=2.0.9" "-d simplejson" +To build the documentation use: -Maybe soon on +$ make doc -#install "Babel>=0.9.4" "-d babel" -#install "pytz>=2009j" "-d pytz" +then look at doc/build/html/index.html -Probably not anymore on: - -#install "Mako>=0.2.4" "-d mako" -#install "formencode>=1.2.2" "-d formencode" -#install "pyparsing>=1.5.2" "-f pyparsing.py" -#install "xlwt>=0.7" "-d xlwt" diff --git a/addons/base/__init__.py b/addons/base/__init__.py deleted file mode 100644 index 343b53d050d..00000000000 --- a/addons/base/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -import common -import controllers - -# TODO -# if we detect that we are imported from the openerp server register common.Root() as a wsgi entry point - diff --git a/addons/base/static/src/js/data_export.js b/addons/base/static/src/js/data_export.js deleted file mode 100644 index ad440302c69..00000000000 --- a/addons/base/static/src/js/data_export.js +++ /dev/null @@ -1,402 +0,0 @@ -openerp.base.data_export = function(openerp) { -openerp.base.DataExport = openerp.base.Dialog.extend({ - init: function(parent, dataset) { - this._super(parent); - this.dataset = dataset; - }, - start: function() { - var self = this; - self._super(false); - self.template = 'ExportTreeView'; - self.dialog_title = "Export Data"; - self.open({ - modal: true, - width: '55%', - height: 'auto', - position: 'top', - buttons : { - "Close" : function() { - self.close(); - }, - "Export To File" : function() { - self.on_click_export_data(); - } - }, - close: function(event, ui){ self.close();} - }); - self.on_show_exists_export_list(); - self.$element.removeClass('ui-dialog-content ui-widget-content'); - self.$element.find('#add_field').click(function() { - if ($('#field-tree-structure tr.ui-selected')) { - var fld = self.$element.find('#field-tree-structure tr.ui-selected').find('a'); - for (var i = 0; i < fld.length; i++) { - var id = $(fld[i]).attr('id').split('-')[1]; - var string = $(fld[i]).attr('string'); - self.add_field(id, string); - } - self.$element.find('#field-tree-structure tr').removeClass('ui-selected'); - } - }); - self.$element.find('#remove_field').click(function() { - self.$element.find('#fields_list option:selected').remove(); - }); - self.$element.find('#remove_all_field').click(function() { - self.$element.find('#fields_list option').remove(); - }); - self.$element.find('#export_new_list').click(function() { - self.on_show_save_list(); - }); - var import_comp = self.$element.find('#import_compat option:selected').val(), - params = { - import_compat: parseInt(import_comp) - }; - self.rpc('/base/export/get_fields', { model: self.dataset.model, params: params }, self.on_show_data); - - self.$element.find('#import_compat').change(function() { - self.$element.find('#fields_list option').remove(); - self.$element.find('#field-tree-structure').remove(); - var import_comp = self.$element.find("#import_compat option:selected").val(); - if (import_comp) { - var params = { - import_compat: parseInt(import_comp) - } - self.rpc("/base/export/get_fields", { model: self.dataset.model, params: params}, self.on_show_data); - } - }); - }, - on_show_exists_export_list: function() { - var self = this; - if (self.$element.find('#saved_export_list').is(':hidden')) { - self.$element.find('#ExistsExportList').show(); - } else { - this.rpc('/base/export/exist_export_lists', { 'model': this.dataset.model}, function(export_list) { - if (export_list.length) { - self.$element.find('#ExistsExportList').append(QWeb.render('Exists.ExportList', {'existing_exports': export_list})); - self.$element.find('#saved_export_list').change(function() { - self.$element.find('#fields_list option').remove(); - var export_id = self.$element.find('#saved_export_list option:selected').val(); - if (export_id) { - self.rpc('/base/export/namelist', {'model': self.dataset.model, export_id: parseInt(export_id)}, self.do_load_export_field); - } - }); - self.$element.find('#delete_export_list').click(function() { - var select_exp = self.$element.find('#saved_export_list option:selected'); - if (select_exp.val()) { - self.rpc('/base/export/delete_export', { export_id: parseInt(select_exp.val())}, {}); - select_exp.remove(); - if (self.$element.find('#saved_export_list option').length <= 1) { - self.$element.find('#ExistsExportList').hide(); - } - } - }); - } - }); - } - }, - do_load_export_field: function(field_list) { - var export_node = this.$element.find("#fields_list"); - for (var key in field_list) { - export_node.append(new Option(field_list[key], key)); - } - }, - on_show_save_list: function() { - var self = this; - var current_node = self.$element.find("#savenewlist"); - if (!(current_node.find("label")).length) { - current_node.append(QWeb.render('ExportNewList')); - current_node.find("#add_export_list").click(function() { - var value = current_node.find("#savelist_name").val(); - if (value) { - self.do_save_export_list(value); - } else { - alert("Pleae Enter Save Field List Name"); - } - }); - } else { - if (current_node.is(':hidden')) { - current_node.show(); - current_node.find("#savelist_name").val(""); - } else { - current_node.hide(); - } - } - }, - do_save_export_list: function(value) { - var self = this; - var export_field = self.get_fields(); - if (export_field.length) { - self.rpc("/base/export/save_export_lists", {"model": self.dataset.model, "name":value, "field_list":export_field}, function(exp_id) { - if (exp_id) { - if (self.$element.find("#saved_export_list").length > 0) { - self.$element.find("#saved_export_list").append(new Option(value, exp_id)); - } else { - self.on_show_exists_export_list(); - } - if (self.$element.find("#saved_export_list").is(":hidden")) { - self.on_show_exists_export_list(); - } - } - }); - self.on_show_save_list(); - self.$element.find("#fields_list option").remove(); - } - }, - on_click: function(id, result) { - var self = this; - self.field_id = id.split("-")[1]; - var is_loaded = 0; - _.each(result, function(record) { - if (record['id'] == self.field_id && (record['children']).length >= 1) { - var model = record['params']['model'], - prefix = record['params']['prefix'], - name = record['params']['name']; - $(record['children']).each(function(e, childid) { - if (self.$element.find("tr[id='treerow-" + childid + "']").length > 0) { - if (self.$element.find("tr[id='treerow-" + childid + "']").is(':hidden')) { - is_loaded = -1; - } else { - is_loaded++; - } - } - }); - if (is_loaded == 0) { - if (self.$element.find("tr[id='treerow-" + self.field_id +"']").find('img').attr('src') === '/base/static/src/img/expand.gif') { - if (model) { - var import_comp = self.$element.find("#import_compat option:selected").val(); - var params = { - import_compat: parseInt(import_comp), - parent_field_type : record['field_type'] - } - self.rpc("/base/export/get_fields", { - model: model, - prefix: prefix, - name: name, - field_parent : self.field_id, - params: params - }, function(results) { - self.on_show_data(results); - }); - } - } - } else if (is_loaded > 0) { - self.showcontent(self.field_id, true); - } else { - self.showcontent(self.field_id, false); - } - } - }); - }, - on_show_data: function(result) { - var self = this; - var imp_cmpt = parseInt(self.$element.find("#import_compat option:selected").val()); - var current_tr = self.$element.find("tr[id='treerow-" + self.field_id + "']"); - if (current_tr.length >= 1) { - current_tr.find('img').attr('src','/base/static/src/img/collapse.gif'); - current_tr.after(QWeb.render('ExportTreeView-Secondary.children', {'fields': result})); - } else { - self.$element.find('#left_field_panel').append(QWeb.render('ExportTreeView-Secondary', {'fields': result})); - } - _.each(result, function(record) { - if ((record.field_type == "one2many") && imp_cmpt) { - var o2m_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - o2m_fld.addClass("oe_export_readonlyfield"); - } - if ((record.required == true) || record.required == "True") { - var required_fld = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - required_fld.addClass("oe_export_requiredfield"); - } - self.$element.find("img[id='parentimg-" + record.id +"']").click(function() { - self.on_click(this.id, result); - }); - - self.$element.find("tr[id='treerow-" + record.id + "']").click(function(e) { - if (e.shiftKey == true) { - var frst_click, scnd_click = ''; - if (self.row_index == 0) { - self.row_index = this.rowIndex; - frst_click = self.$element.find("tr[id^='treerow-']")[self.row_index-1]; - $(frst_click).addClass("ui-selected"); - } else { - if (this.rowIndex >=self.row_index) { - for (i = (self.row_index-1); i < this.rowIndex; i++) { - scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(scnd_click).addClass("ui-selected"); - } - } - } else { - for (i = (self.row_index-1); i >= (this.rowIndex-1); i--) { - scnd_click = self.$element.find("tr[id^='treerow-']")[i]; - if (!$(scnd_click).find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(scnd_click).addClass("ui-selected"); - } - } - } - } - } - self.row_index = this.rowIndex; - - self.$element.find("tr[id='treerow-" + record.id + "']").keyup(function(e) { - self.row_index = 0; - }); - var o2m_selection = self.$element.find("tr[id='treerow-" + record.id + "']").find('#tree-column'); - if ($(o2m_selection).hasClass("oe_export_readonlyfield")) { - return false; - } - var selected = self.$element.find("tr.ui-selected"); - if ($(this).hasClass("ui-selected") && (e.ctrlKey == true)) { - $(this).find('a').blur(); - $(this).removeClass("ui-selected"); - } else if ($(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == false) && (e.shiftKey == false)) { - selected.find('a').blur(); - selected.removeClass("ui-selected"); - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } else if (!$(this).hasClass("ui-selected") && (e.ctrlKey == true)) { - $(this).find('a').focus(); - $(this).addClass("ui-selected"); - } - return false; - }); - - self.$element.find("tr[id='treerow-" + record.id + "']").keydown(function(e) { - var keyCode = e.keyCode || e.which; - arrow = {left: 37, up: 38, right: 39, down: 40 }; - switch (keyCode) { - case arrow.left: - if ($(this).find('img').attr('src') === '/base/static/src/img/collapse.gif') { - self.on_click(this.id, result); - } - break; - case arrow.up: - var elem = this; - $(elem).removeClass("ui-selected"); - while ($(elem).prev().is(":visible") == false) { - elem = $(elem).prev(); - } - if (!$(elem).prev().find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(elem).prev().addClass("ui-selected"); - } - $(elem).prev().find('a').focus(); - break; - case arrow.right: - if ($(this).find('img').attr('src') == '/base/static/src/img/expand.gif') { - self.on_click(this.id, result); - } - break; - case arrow.down: - var elem = this; - $(elem).removeClass("ui-selected"); - while($(elem).next().is(":visible") == false) { - elem = $(elem).next(); - } - if (!$(elem).next().find('#tree-column').hasClass("oe_export_readonlyfield")) { - $(elem).next().addClass("ui-selected"); - } - $(elem).next().find('a').focus(); - break; - } - }); - self.$element.find("tr[id='treerow-" + record.id + "']").dblclick(function(e) { - var $o2m_selection = self.$element.find("tr[id^='treerow-" + record.id + "']").find('#tree-column'); - if (!$o2m_selection.hasClass("oe_export_readonlyfield")) { - var field_id = $(this).find("a").attr("id"); - if (field_id) { - self.add_field(field_id.split('-')[1], $(this).find("a").attr("string")); - } - } - }); - }); - self.$element.find('#fields_list').mouseover(function(event) { - if (event.relatedTarget) { - if (event.relatedTarget.attributes['id'] && event.relatedTarget.attributes['string']) { - var field_id = event.relatedTarget.attributes["id"]["value"]; - if (field_id && field_id.split("-")[0] === 'export') { - if (!self.$element.find("tr[id='treerow-" + field_id.split("-")[1] + "']").find('#tree-column').hasClass("oe_export_readonlyfield")) { - self.add_field(field_id.split("-")[1], event.relatedTarget.attributes["string"]["value"]); - } - } - } - } - }); - }, - showcontent: function(id, flag) { - // show & hide the contents - var first_child = this.$element.find("tr[id='treerow-" + id + "']").find('img'); - if (flag) { - first_child.attr('src', '/base/static/src/img/expand.gif'); - } - else { - first_child.attr('src', '/base/static/src/img/collapse.gif'); - } - var child_field = this.$element.find("tr[id^='treerow-" + id +"/']"); - var child_len = (id.split("/")).length + 1; - for (var i = 0; i < child_field.length; i++) { - if (flag) { - $(child_field[i]).hide(); - } else { - if (child_len == (child_field[i].id.split("/")).length) { - if ($(child_field[i]).find('img').attr('src') == '/base/static/src/img/collapse.gif') { - $(child_field[i]).find('img').attr('src', '/base/static/src/img/expand.gif'); - } - $(child_field[i]).show(); - } - } - } - }, - add_field: function(field_id, string) { - var field_list = this.$element.find('#fields_list'); - if (this.$element.find("#fields_list option[value='" + field_id + "']") && !this.$element.find("#fields_list option[value='" + field_id + "']").length) { - field_list.append(new Option(string, field_id)); - } - }, - get_fields: function() { - var export_field = []; - this.$element.find("#fields_list option").each(function() { - export_field.push($(this).val()); - }); - if (!export_field.length) { - alert('Please select fields to save export list...'); - } - return export_field; - }, - on_click_export_data: function() { - var self = this; - var export_field = {}; - var flag = true; - self.$element.find("#fields_list option").each(function() { - export_field[$(this).val()] = $(this).text(); - flag = false; - }); - if (flag) { - alert('Please select fields to export...'); - return; - } - - var import_comp = self.$element.find("#import_compat option:selected").val(), - export_format = self.$element.find("#export_format").val(); - - self.rpc("/base/export/export_data", { - model: self.dataset.model, - fields: export_field, - ids: self.dataset.ids, - domain: self.dataset.domain, - import_compat: parseInt(import_comp), - export_format: export_format - }, function(data) { - window.location = "data:text/csv/excel;charset=utf8," + data; - self.close(); - }); - }, - close: function() { - $(this.$dialog).remove(); - this._super(); - } -}); - -}; diff --git a/addons/base/static/test/formats.js b/addons/base/static/test/formats.js deleted file mode 100644 index 66ffd1b5c3c..00000000000 --- a/addons/base/static/test/formats.js +++ /dev/null @@ -1,54 +0,0 @@ -$(document).ready(function () { - var openerp; - module('base-formats', { - setup: function () { - openerp = window.openerp.init(); - window.openerp.base.core(openerp); - window.openerp.base.dates(openerp); - window.openerp.base.formats(openerp); - } - }); - test("format_datetime", function () { - var date = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var str = openerp.base.format_value(date, {type:"datetime"}); - equal(str, date.toString("M/d/yyyy h:mm:ss tt")); - }); - test("format_date", function () { - var date = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var str = openerp.base.format_value(date, {type:"date"}); - equal(str, date.toString("M/d/yyyy")); - }); - test("format_time", function () { - var date = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var str = openerp.base.format_value(date, {type:"time"}); - equal(str, date.toString("h:mm:ss tt")); - }); - test("format_float", function () { - var fl = 12.1234; - var str = openerp.base.format_value(fl, {type:"float"}); - equal(str, "12.12"); - }); - test("parse_datetime", function () { - var val = openerp.base.str_to_datetime("2009-05-04 12:34:23"); - var res = openerp.base.parse_value(val.toString("M/d/yyyy h:mm:ss tt"), {type:"datetime"}); - equal(val.toString("M/d/yyyy h:mm:ss tt"), res.toString("M/d/yyyy h:mm:ss tt")); - }); - test("parse_date", function () { - var val = openerp.base.str_to_date("2009-05-04"); - var res = openerp.base.parse_value(val.toString("M/d/yyyy"), {type:"date"}); - equal(val.toString("M/d/yyyy"), res.toString("M/d/yyyy")); - }); - test("parse_time", function () { - var val = openerp.base.str_to_time("12:34:23"); - var res = openerp.base.parse_value(val.toString("h:mm:ss tt"), {type:"time"}); - equal(val.toString("h:mm:ss tt"), res.toString("h:mm:ss tt")); - }); - test("parse_float", function () { - var str = "134,112.1234"; - var val = openerp.base.parse_value(str, {type:"float"}); - equal(val, 134112.1234); - var str = "-134,112.1234"; - var val = openerp.base.parse_value(str, {type:"float"}); - equal(val, -134112.1234); - }); -}); \ No newline at end of file diff --git a/addons/base/static/test/registry.js b/addons/base/static/test/registry.js deleted file mode 100644 index 6140d327049..00000000000 --- a/addons/base/static/test/registry.js +++ /dev/null @@ -1,33 +0,0 @@ -$(document).ready(function () { - var openerp; - module('Registry', { - setup: function () { - openerp = window.openerp.init(true); - window.openerp.base.core(openerp); - openerp.base.Foo = {}; - openerp.base.Bar = {}; - } - }); - test('key fetch', function () { - var reg = new openerp.base.Registry({ - foo: 'openerp.base.Foo', - bar: 'openerp.base.Bar', - quux: 'openerp.base.Quux' - }); - - strictEqual(reg.get_object('foo'), openerp.base.Foo); - raises(function () { reg.get_object('qux'); }, - openerp.base.KeyNotFound, - "Unknown keys should raise KeyNotFound"); - raises(function () { reg.get_object('quux'); }, - openerp.base.ObjectNotFound, - "Incorrect file paths should raise ObjectNotFound"); - }); - test('key set', function () { - var reg = new openerp.base.Registry(); - - reg.add('foo', 'openerp.base.Foo') - .add('bar', 'openerp.base.Bar'); - strictEqual(reg.get_object('bar'), openerp.base.Bar); - }); -}); diff --git a/addons/base/static/test/test.html b/addons/base/static/test/test.html deleted file mode 100644 index 957456f4280..00000000000 --- a/addons/base/static/test/test.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - OpenERP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

OpenERP Base Test Suite

-

-
-

-
    -
    - - - - - - - diff --git a/addons/base_calendar/__init__.py b/addons/base_calendar/__init__.py deleted file mode 100644 index 4a64491e6bb..00000000000 --- a/addons/base_calendar/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/python -import controllers diff --git a/addons/base_diagram/__openerp__.py b/addons/base_diagram/__openerp__.py deleted file mode 100644 index 92b768896f9..00000000000 --- a/addons/base_diagram/__openerp__.py +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name" : "OpenERP Web base Diagram", - "version" : "2.0", - "depends" : [], - 'active': False, -} diff --git a/addons/base_diagram/static/src/js/diagram.js b/addons/base_diagram/static/src/js/diagram.js deleted file mode 100644 index b992b5cbf42..00000000000 --- a/addons/base_diagram/static/src/js/diagram.js +++ /dev/null @@ -1,183 +0,0 @@ -/*--------------------------------------------------------- - * OpenERP base library - *---------------------------------------------------------*/ - -openerp.base.diagram = function (openerp) { - -openerp.base.views.add('diagram', 'openerp.base.DiagramView'); -openerp.base.DiagramView = openerp.base.Widget.extend({ - init: function(view_manager, session, element_id, dataset, view_id){ - this._super(session, element_id); - this.view_manager = view_manager; - this.dataset = dataset; - this.model = dataset.model; - this.view_id = view_id; - this.name = ""; - this.domain = this.dataset._domain ? this.dataset._domain: []; - this.context = {}; - this.ids = this.dataset.ids; - - console.log('data set>>',this.dataset) - }, - start: function() { - this.rpc("/base_diagram/diagram/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); - }, - - toTitleCase: function(str) { - return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); - }, - - on_loaded: function(result) { - - var self = this; - if(this.ids && this.ids.length) { - this.id = this.ids[0]; - } - - this.fields_view = result.fields_view; - this.view_id = this.fields_view.view_id; - this.name = this.fields_view.name; - - this.fields = this.fields_view.fields; - - var children = this.fields_view.arch.children; - /* - * For Nodes (Fields) - */ - this.node = ''; - this.bgcolor = ''; - this.shape = ''; - this.visible_fields_nodes = []; - this.invisible_fields_nodes = []; - this.fields_nodes_string = []; - - /* - * For Arraows(Connector) - */ - this.connector = ''; - this.src_node = ''; - this.des_node = ''; - this.connector_fields = []; - this.fields_connector_string = []; - - for(ch in children) { - if(children[ch]['tag'] == 'node') { - this.node = children[ch]['attrs']['object']; - this.bgcolor = children[ch]['attrs']['bgcolor'] || ''; - this.shape = children[ch]['attrs']['shape'] || ''; - for(node_chld in children[ch]['children']) { - if (children[ch]['children'][node_chld]['tag'] = 'field') { - var ch_name = children[ch]['children'][node_chld]['attrs']['name']; - - if (children[ch]['children'][node_chld]['attrs']['invisible']) { - if (children[ch]['children'][node_chld]['attrs']['invisible'] == 1 && children[ch]['children'][node_chld]['attrs']['invisible'] == '1') { - this.invisible_fields_nodes.push(ch_name) - } - } - else { - this.visible_fields_nodes.push(ch_name); - var ch_node_string = this.fields[ch_name]['string'] || this.toTitleCase(ch_name); - this.fields_nodes_string.push(ch_node_string) - } - } - } - } else if(children[ch]['tag'] == 'arrow') { - this.connector = children[ch]['attrs']['object']; - this.src_node = children[ch]['attrs']['source']; - this.des_node = children[ch]['attrs']['destination']; - for (arrow_chld in children[ch]['children']) { - if (children[ch]['children'][arrow_chld]['tag'] = 'field') { - var arr_ch_name = children[ch]['children'][arrow_chld]['attrs']['name']; - var ch_node_string = this.fields[arr_ch_name]['string'] || this.toTitleCase(arr_ch_name); - this.fields_connector_string.push(ch_node_string); - this.connector_fields.push(arr_ch_name); - } - } - } - } - this.$element.html(QWeb.render("DiagramView", {"fields_view": this.fields_view})); - - if(this.id) { - this.rpc( - '/base_diagram/diagram/get_diagram_info', - { - 'id': this.id, - 'model': this.model, - 'bgcolor': this.bgcolor, - 'shape': this.shape, - 'node': this.node, - 'connector': this.connector, - 'src_node': this.src_node, - 'des_node': this.des_node, - 'visible_node_fields': this.visible_fields_nodes, - 'invisible_node_fields': this.invisible_fields_nodes, - 'node_fields_string': this.fields_nodes_string, - 'connector_fields': this.connector_fields, - 'connector_fields_string': this.fields_connector_string - }, - function(result) { - self.draw_diagram(result); - } - ) - } - }, - - draw_diagram: function(result) { - console.log('this>>>',this) - var g = new Graph(); -// var raphel = new - this.in_transition_field = result['in_transition_field']; - this.out_transition_field = result['out_transition_field']; - var res_nodes = result['nodes']; - var res_connectors = result['conn']; - - var render = function(r, n) { - var set; - if (n.node.shape == 'ellipse') { - set = r.set().push( - r.ellipse(n.node.x - 30, n.node.y - 13, 40, 40).attr({ - "fill": n.node.color, - r: "12px", - "stroke-width": n.distance == 0 ? "3px" : "1px" - })).push(r.text(n.node.x - 30, n.node.y - 10, (n.label || n.id))); - } else { - set = r.set().push( - r.rect(n.node.x-30, n.node.y-13, 60, 44).attr({"fill": n.node.color, r : "12px", "stroke-width" : n.distance == 0 ? "3px" : "1px" })).push( - r.text(n.point[0], n.point[1] + 10, (n.label || n.id) + "\n(" + (n.distance == undefined ? "Infinity" : n.distance) + ")")); - - } - return set; - }; - - for(nd in res_nodes) { - var res_node = res_nodes[nd]; - g.addNode(res_node['name'], - { - node: res_node, - render: render - }); - } - - for(cr in res_connectors) { - var res_connector = res_connectors[cr]; - g.addEdge(res_connector['source'], res_connector['destination']); - } - - var layouter = new Graph.Layout.Spring(g); - layouter.layout(); - - var renderer = new Graph.Renderer.Raphael('dia-canvas', g, 800, 800); - renderer.draw(); - }, - - do_show: function () { - this.$element.show(); - }, - - do_hide: function () { - this.$element.hide(); - } -}); -}; - -// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web/__init__.py b/addons/web/__init__.py new file mode 100644 index 00000000000..ec702292ce8 --- /dev/null +++ b/addons/web/__init__.py @@ -0,0 +1,32 @@ +import common +import controllers +import common.dispatch +import logging + +_logger = logging.getLogger(__name__) + +try: + import openerp.wsgi + import os + import tempfile + _logger.info("embedded mode") + class Options(object): + pass + o = Options() + o.dbfilter = '.*' + o.session_storage = os.path.join(tempfile.gettempdir(), "oe-sessions") + o.addons_path = os.path.dirname(os.path.dirname(__file__)) + o.serve_static = True + o.server_host = '127.0.0.1' + o.server_port = 8069 + + app = common.dispatch.Root(o) + #import openerp.wsgi + openerp.wsgi.register_wsgi_handler(app) + +except ImportError: + _logger.info("standalone mode") + +# TODO +# if we detect that we are imported from the openerp server register common.Root() as a wsgi entry point + diff --git a/addons/base/__openerp__.py b/addons/web/__openerp__.py similarity index 97% rename from addons/base/__openerp__.py rename to addons/web/__openerp__.py index 9c1124a108e..2c686a216fe 100644 --- a/addons/base/__openerp__.py +++ b/addons/web/__openerp__.py @@ -1,6 +1,5 @@ { - "name" : "OpenERP Web base", - "version" : "2.0", + "name" : "web", "depends" : [], 'active': True, 'js' : [ @@ -47,4 +46,5 @@ "static/src/css/base.css", "static/src/css/data_export.css", ], + 'wsgi' : 'app', } diff --git a/addons/base/common/__init__.py b/addons/web/common/__init__.py similarity index 82% rename from addons/base/common/__init__.py rename to addons/web/common/__init__.py index 60699c86f43..0628a7fa609 100644 --- a/addons/base/common/__init__.py +++ b/addons/web/common/__init__.py @@ -1,5 +1,4 @@ #!/usr/bin/python # TODO if from openerpserver use backendlocal # from backendlocal import * -from backendrpc import * from dispatch import * diff --git a/addons/base/common/ast.py b/addons/web/common/ast.py similarity index 100% rename from addons/base/common/ast.py rename to addons/web/common/ast.py diff --git a/addons/base/common/backendlocal.py b/addons/web/common/backendlocal.py similarity index 100% rename from addons/base/common/backendlocal.py rename to addons/web/common/backendlocal.py diff --git a/addons/base/common/backendrpc.py b/addons/web/common/backendrpc.py similarity index 100% rename from addons/base/common/backendrpc.py rename to addons/web/common/backendrpc.py diff --git a/addons/base/common/dates.py b/addons/web/common/dates.py similarity index 100% rename from addons/base/common/dates.py rename to addons/web/common/dates.py diff --git a/addons/base/common/dispatch.py b/addons/web/common/dispatch.py similarity index 93% rename from addons/base/common/dispatch.py rename to addons/web/common/dispatch.py index 37207cc485d..2336ca2d426 100644 --- a/addons/base/common/dispatch.py +++ b/addons/web/common/dispatch.py @@ -4,6 +4,7 @@ from __future__ import with_statement import functools import logging import os +import pprint import sys import traceback import uuid @@ -26,6 +27,8 @@ import backendrpc as backend __all__ = ['Root', 'jsonrequest', 'httprequest', 'Controller', 'WebRequest', 'JsonRequest', 'HttpRequest'] +_logger = logging.getLogger(__name__) + #----------------------------------------------------------- # Globals (wont move into a pool) #----------------------------------------------------------- @@ -159,8 +162,8 @@ class JsonRequest(WebRequest): else: self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder) self.init(self.jsonrequest.get("params", {})) - if self.debug or 1: - print "--> %s.%s %s" % (controller.__class__.__name__, method.__name__, self.jsonrequest) + if _logger.isEnabledFor(logging.DEBUG): + _logger.debug("--> %s.%s\n%s", controller.__class__.__name__, method.__name__, pprint.pformat(self.jsonrequest)) response['id'] = self.jsonrequest.get('id') response["result"] = method(controller, self, **self.params) except backend.OpenERPUnboundException: @@ -184,7 +187,7 @@ class JsonRequest(WebRequest): } } except Exception: - logging.getLogger('openerp.JSONRequest.dispatch').exception\ + logging.getLogger(__name__ + '.JSONRequest.dispatch').exception\ ("An error occured while handling a json request") error = { 'code': 300, @@ -197,10 +200,8 @@ class JsonRequest(WebRequest): if error: response["error"] = error - if self.debug or 1: - print "<--", response - print - + if _logger.isEnabledFor(logging.DEBUG): + _logger.debug("<--\n%s", pprint.pformat(response)) content = simplejson.dumps(response, cls=nonliterals.NonLiteralEncoder) return werkzeug.wrappers.Response( content, headers=[('Content-Type', 'application/json'), @@ -227,22 +228,23 @@ class HttpRequest(WebRequest): """ Regular GET/POST request """ def dispatch(self, controller, method): - self.init(dict(self.httprequest.args, **self.httprequest.form)) + params = dict(self.httprequest.args) + params.update(self.httprequest.form) + params.update(self.httprequest.files) + self.init(params) akw = {} for key, value in self.httprequest.args.iteritems(): if isinstance(value, basestring) and len(value) < 1024: akw[key] = value else: akw[key] = type(value) - if self.debug or 1: - print "%s --> %s.%s %r" % (self.httprequest.method, controller.__class__.__name__, method.__name__, akw) + _logger.debug("%s --> %s.%s %r", self.httprequest.method, controller.__class__.__name__, method.__name__, akw) r = method(controller, self, **self.params) if self.debug or 1: if isinstance(r, werkzeug.wrappers.BaseResponse): - print '<--', r + _logger.debug('<-- %s', r) else: - print "<--", 'size:', len(r) - print + _logger.debug("<-- size: %s", len(r)) return r def make_response(self, data, headers=None, cookies=None): @@ -314,7 +316,7 @@ class Root(object): by the server, will be filtered by this pattern """ def __init__(self, options): - self.root = werkzeug.urls.Href('/base/webclient/home') + self.root = werkzeug.urls.Href('/web/webclient/home') self.config = options self.session_cookie = 'sessionid' @@ -347,7 +349,7 @@ class Root(object): if request.path == '/': return werkzeug.utils.redirect( - self.root(request.args), 301)( + self.root(dict(request.args, debug='')), 301)( environ, start_response) elif request.path == '/mobile': return werkzeug.utils.redirect( @@ -388,7 +390,7 @@ class Root(object): manifest_path = os.path.join(addons_path, module, '__openerp__.py') if os.path.isfile(manifest_path): manifest = ast.literal_eval(open(manifest_path).read()) - print "Loading", module + _logger.info("Loading %s", module) m = __import__(module) addons_module[module] = m addons_manifest[module] = manifest @@ -421,6 +423,6 @@ class Root(object): meth = rest[0] m = getattr(c, meth) if getattr(m, 'exposed', False): - print "Dispatching to", ps, c, meth, m + _logger.debug("Dispatching to %s %s %s", ps, c, meth) return m return None diff --git a/addons/base/common/http.py b/addons/web/common/http.py similarity index 100% rename from addons/base/common/http.py rename to addons/web/common/http.py diff --git a/addons/base/common/nonliterals.py b/addons/web/common/nonliterals.py similarity index 100% rename from addons/base/common/nonliterals.py rename to addons/web/common/nonliterals.py diff --git a/addons/web/common/release.py b/addons/web/common/release.py new file mode 100644 index 00000000000..47570c032bb --- /dev/null +++ b/addons/web/common/release.py @@ -0,0 +1,10 @@ +name = 'openerp-web' +version = '6.1.0 alpha' +description = "Web Client of OpenERP, the Enterprise Management Software" +long_description = "OpenERP Web is the web client of the OpenERP, a free enterprise management software" +author = "OpenERP SA" +author_email = "info@openerp.com" +support_email = 'support@openerp.com' +url = "http://www.openerp.com/" +download_url = '' +license = "AGPL" diff --git a/addons/web/controllers/__init__.py b/addons/web/controllers/__init__.py new file mode 100644 index 00000000000..8ee9bae18d9 --- /dev/null +++ b/addons/web/controllers/__init__.py @@ -0,0 +1 @@ +import main diff --git a/addons/base/controllers/main.py b/addons/web/controllers/main.py similarity index 73% rename from addons/base/controllers/main.py rename to addons/web/controllers/main.py index 3166f25b8c5..6ce4bd612f2 100644 --- a/addons/base/controllers/main.py +++ b/addons/web/controllers/main.py @@ -3,6 +3,7 @@ import base64 import csv import glob +import itertools import operator import os import re @@ -10,18 +11,19 @@ import simplejson import textwrap import xmlrpclib import time +import zlib from xml.etree import ElementTree from cStringIO import StringIO -import base.common.dispatch as openerpweb -import base.common.ast -import base.common.nonliterals -openerpweb.ast = base.common.ast -openerpweb.nonliterals = base.common.nonliterals - from babel.messages.pofile import read_po -_REPORT_POLLER_DELAY = 0.05 +import web.common.dispatch as openerpweb +import web.common.ast +import web.common.nonliterals +import web.common.release +openerpweb.ast = web.common.ast +openerpweb.nonliterals = web.common.nonliterals + # Should move to openerpweb.Xml2Json class Xml2Json: @@ -63,7 +65,7 @@ class Xml2Json: return res #---------------------------------------------------------- -# OpenERP Web base Controllers +# OpenERP Web web Controllers #---------------------------------------------------------- def manifest_glob(addons_path, addons, key): @@ -97,17 +99,13 @@ home_template = textwrap.dedent(""" OpenERP - + %(css)s - %(javascript)s @@ -116,25 +114,25 @@ home_template = textwrap.dedent(""" """) class WebClient(openerpweb.Controller): - _cp_path = "/base/webclient" + _cp_path = "/web/webclient" @openerpweb.jsonrequest - def csslist(self, req, mods='base'): + def csslist(self, req, mods='web'): return manifest_glob(req.config.addons_path, mods.split(','), 'css') @openerpweb.jsonrequest - def jslist(self, req, mods='base'): + def jslist(self, req, mods='web'): return manifest_glob(req.config.addons_path, mods.split(','), 'js') @openerpweb.httprequest - def css(self, req, mods='base'): + def css(self, req, mods='web'): files = manifest_glob(req.config.addons_path, mods.split(','), 'css') content,timestamp = concat_files(req.config.addons_path, files) # TODO request set the Date of last modif and Etag return req.make_response(content, [('Content-Type', 'text/css')]) @openerpweb.httprequest - def js(self, req, mods='base'): + def js(self, req, mods='web'): files = manifest_glob(req.config.addons_path, mods.split(','), 'js') content,timestamp = concat_files(req.config.addons_path, files) # TODO request set the Date of last modif and Etag @@ -143,15 +141,15 @@ class WebClient(openerpweb.Controller): @openerpweb.httprequest def home(self, req, s_action=None, **kw): # script tags - jslist = ['/base/webclient/js'] + jslist = ['/web/webclient/js'] if req.debug: - jslist = manifest_glob(req.config.addons_path, ['base'], 'js') + jslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(req.config.addons_path, ['web'], 'js')] js = "\n ".join([''%i for i in jslist]) # css tags - csslist = ['/base/webclient/css'] + csslist = ['/web/webclient/css'] if req.debug: - csslist = manifest_glob(req.config.addons_path, ['base'], 'css') + csslist = [i + '?debug=' + str(time.time()) for i in manifest_glob(req.config.addons_path, ['web'], 'css')] css = "\n ".join([''%i for i in csslist]) r = home_template % { 'javascript': js, @@ -195,8 +193,14 @@ class WebClient(openerpweb.Controller): return {"modules": transs, "lang_parameters": lang_obj} + @openerpweb.jsonrequest + def version_info(self, req): + return { + "version": web.common.release.version + } + class Database(openerpweb.Controller): - _cp_path = "/base/database" + _cp_path = "/web/database" @openerpweb.jsonrequest def get_list(self, req): @@ -247,12 +251,12 @@ class Database(openerpweb.Controller): @openerpweb.httprequest def backup(self, req, backup_db, backup_pwd, token): try: - db_dump = base64.decodestring( + db_dump = base64.b64decode( req.session.proxy("db").dump(backup_pwd, backup_db)) return req.make_response(db_dump, [('Content-Type', 'application/octet-stream; charset=binary'), ('Content-Disposition', 'attachment; filename="' + backup_db + '.dump"')], - {'fileToken': token} + {'fileToken': int(token)} ) except xmlrpclib.Fault, e: if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': @@ -262,7 +266,7 @@ class Database(openerpweb.Controller): @openerpweb.httprequest def restore(self, req, db_file, restore_pwd, new_db): try: - data = base64.encodestring(db_file.file.read()) + data = base64.b64encode(db_file.file.read()) req.session.proxy("db").restore(restore_pwd, new_db, data) return '' except xmlrpclib.Fault, e: @@ -282,7 +286,7 @@ class Database(openerpweb.Controller): return {'error': 'Error, password not changed !', 'title': 'Change Password'} class Session(openerpweb.Controller): - _cp_path = "/base/session" + _cp_path = "/web/session" @openerpweb.jsonrequest def login(self, req, db, login, password): @@ -292,7 +296,15 @@ class Session(openerpweb.Controller): return { "session_id": req.session_id, "uid": req.session._uid, - "context": ctx + "context": ctx, + "db": req.session._db + } + @openerpweb.jsonrequest + def get_session_info(self, req): + return { + "uid": req.session._uid, + "context": req.session.get_context() if req.session._uid else False, + "db": req.session._db } @openerpweb.jsonrequest def change_password (self,req,fields): @@ -329,7 +341,7 @@ class Session(openerpweb.Controller): # TODO query server for installed web modules mods = [] for name, manifest in openerpweb.addons_manifest.items(): - if name != 'base' and manifest.get('active', True): + if name != 'web' and manifest.get('active', True): mods.append(name) return mods @@ -448,8 +460,6 @@ def load_actions_from_ir_values(req, key, key2, models, meta): def clean_action(req, action): action.setdefault('flags', {}) - if action['type'] != 'ir.actions.act_window': - return action context = req.session.eval_context(req.context) eval_ctx = req.session.evaluation_context(context) @@ -461,7 +471,9 @@ def clean_action(req, action): if isinstance(action.get('domain'), basestring): action['domain'] = eval( action['domain'], eval_ctx ) or [] - return fix_view_modes(action) + if action['type'] == 'ir.actions.act_window': + return fix_view_modes(action) + return action # I think generate_views,fix_view_modes should go into js ActionManager def generate_views(action): @@ -533,7 +545,7 @@ def fix_view_modes(action): return action class Menu(openerpweb.Controller): - _cp_path = "/base/menu" + _cp_path = "/web/menu" @openerpweb.jsonrequest def load(self, req): @@ -581,7 +593,7 @@ class Menu(openerpweb.Controller): return {"action": actions} class DataSet(openerpweb.Controller): - _cp_path = "/base/dataset" + _cp_path = "/web/dataset" @openerpweb.jsonrequest def fields(self, req, model): @@ -702,6 +714,12 @@ class DataSet(openerpweb.Controller): args[domain_id] = d if context_id and len(args) - 1 >= context_id: args[context_id] = c + + for i in xrange(len(args)): + if isinstance(args[i], web.common.nonliterals.BaseContext): + args[i] = req.session.eval_context(args[i]) + if isinstance(args[i], web.common.nonliterals.BaseDomain): + args[i] = req.session.eval_domain(args[i]) return getattr(req.session.model(model), method)(*args) @@ -733,7 +751,7 @@ class DataSet(openerpweb.Controller): return {'result': r} class DataGroup(openerpweb.Controller): - _cp_path = "/base/group" + _cp_path = "/web/group" @openerpweb.jsonrequest def read(self, req, model, fields, group_by_fields, domain=None, sort=None): Model = req.session.model(model) @@ -744,7 +762,7 @@ class DataGroup(openerpweb.Controller): dict(context, group_by=group_by_fields), sort or False) class View(openerpweb.Controller): - _cp_path = "/base/view" + _cp_path = "/web/view" def fields_view_get(self, req, model, view_id, view_type, transform=True, toolbar=False, submenu=False): @@ -753,6 +771,8 @@ class View(openerpweb.Controller): fvg = Model.fields_view_get(view_id, view_type, context, toolbar, submenu) # todo fme?: check that we should pass the evaluated context here self.process_view(req.session, fvg, context, transform) + if toolbar and transform: + self.process_toolbar(req, fvg['toolbar']) return fvg def process_view(self, session, fvg, context, transform): @@ -784,6 +804,22 @@ class View(openerpweb.Controller): if field.get('context'): field["context"] = self.parse_context(field["context"], session) + def process_toolbar(self, req, toolbar): + """ + The toolbar is a mapping of section_key: [action_descriptor] + + We need to clean all those actions in order to ensure correct + round-tripping + """ + for actions in toolbar.itervalues(): + for action in actions: + if 'context' in action: + action['context'] = self.parse_context( + action['context'], req.session) + if 'domain' in action: + action['domain'] = self.parse_domain( + action['domain'], req.session) + @openerpweb.jsonrequest def add_custom(self, req, view_id, arch): CustomView = req.session.model('ir.ui.view.custom') @@ -873,21 +909,12 @@ class View(openerpweb.Controller): if context_string: elem.set(el, self.parse_context(context_string, session)) -class FormView(View): - _cp_path = "/base/formview" - @openerpweb.jsonrequest - def load(self, req, model, view_id, toolbar=False): - fields_view = self.fields_view_get(req, model, view_id, 'form', toolbar=toolbar) - return {'fields_view': fields_view} + def load(self, req, model, view_id, view_type, toolbar=False): + return self.fields_view_get(req, model, view_id, view_type, toolbar=toolbar) class ListView(View): - _cp_path = "/base/listview" - - @openerpweb.jsonrequest - def load(self, req, model, view_id, toolbar=False): - fields_view = self.fields_view_get(req, model, view_id, 'tree', toolbar=toolbar) - return {'fields_view': fields_view} + _cp_path = "/web/listview" def process_colors(self, view, row, context): colors = view['arch']['attrs'].get('colors') @@ -907,8 +934,17 @@ class ListView(View): return color[0] return 'maroon' +class TreeView(View): + _cp_path = "/web/treeview" + + @openerpweb.jsonrequest + def action(self, req, model, id): + return load_actions_from_ir_values( + req,'action', 'tree_but_open',[(model, id)], + False) + class SearchView(View): - _cp_path = "/base/searchview" + _cp_path = "/web/searchview" @openerpweb.jsonrequest def load(self, req, model, view_id): @@ -956,23 +992,25 @@ class SearchView(View): return to_return class Binary(openerpweb.Controller): - _cp_path = "/base/binary" + _cp_path = "/web/binary" @openerpweb.httprequest def image(self, req, model, id, field, **kw): - req.httpresponse.headers['Content-Type'] = 'image/png' Model = req.session.model(model) context = req.session.eval_context(req.context) + try: if not id: res = Model.default_get([field], context).get(field, '') else: res = Model.read([int(id)], [field], context)[0].get(field, '') - return base64.decodestring(res) - except: # TODO: what's the exception here? - return self.placeholder(req) + image_data = base64.b64decode(res) + except (TypeError, xmlrpclib.Fault): + image_data = self.placeholder(req) + return req.make_response(image_data, [ + ('Content-Type', 'image/png'), ('Content-Length', len(image_data))]) def placeholder(self, req): - return open(os.path.join(req.addons_path, 'base', 'static', 'src', 'img', 'placeholder.png'), 'rb').read() + return open(os.path.join(req.addons_path, 'web', 'static', 'src', 'img', 'placeholder.png'), 'rb').read() @openerpweb.httprequest def saveas(self, req, model, id, field, fieldname, **kw): @@ -991,11 +1029,7 @@ class Binary(openerpweb.Controller): ('Content-Disposition', 'attachment; filename=' + filename)]) @openerpweb.httprequest - def upload(self, req, callback, ufile=None): - headers = {} - for key, val in req.httprequest.headers.iteritems(): - headers[key.lower()] = val - size = int(headers.get('content-length', 0)) + def upload(self, req, callback, ufile): # TODO: might be useful to have a configuration flag for max-length file uploads try: out = """""" - data = ufile.file.read() - args = [size, ufile.filename, ufile.headers.getheader('Content-Type'), base64.encodestring(data)] + data = ufile.read() + args = [ufile.content_length, ufile.filename, + ufile.content_type, base64.b64encode(data)] except Exception, e: args = [False, e.message] return out % (simplejson.dumps(callback), simplejson.dumps(args)) @openerpweb.httprequest - def upload_attachment(self, req, callback, model, id, ufile=None): + def upload_attachment(self, req, callback, model, id, ufile): context = req.session.eval_context(req.context) Model = req.session.model('ir.attachment') try: @@ -1030,7 +1065,7 @@ class Binary(openerpweb.Controller): """ attachment_id = Model.create({ 'name': ufile.filename, - 'datas': base64.encodestring(ufile.file.read()), + 'datas': base64.encodestring(ufile.read()), 'res_model': model, 'res_id': int(id) }, context) @@ -1043,7 +1078,7 @@ class Binary(openerpweb.Controller): return out % (simplejson.dumps(callback), simplejson.dumps(args)) class Action(openerpweb.Controller): - _cp_path = "/base/action" + _cp_path = "/web/action" @openerpweb.jsonrequest def load(self, req, action_id): @@ -1052,8 +1087,11 @@ class Action(openerpweb.Controller): context = req.session.eval_context(req.context) action_type = Actions.read([action_id], ['type'], context) if action_type: - action = req.session.model(action_type[0]['type']).read([action_id], False, - context) + ctx = {} + if action_type[0]['type'] == 'ir.actions.report.xml': + ctx.update({'bin_size': True}) + ctx.update(context) + action = req.session.model(action_type[0]['type']).read([action_id], False, ctx) if action: value = clean_action(req, action[0]) return {'result': value} @@ -1063,75 +1101,22 @@ class Action(openerpweb.Controller): return clean_action(req, req.session.model('ir.actions.server').run( [action_id], req.session.eval_context(req.context))) -class TreeView(View): - _cp_path = "/base/treeview" - - @openerpweb.jsonrequest - def load(self, req, model, view_id, toolbar=False): - return self.fields_view_get(req, model, view_id, 'tree', toolbar=toolbar) - - @openerpweb.jsonrequest - def action(self, req, model, id): - return load_actions_from_ir_values( - req,'action', 'tree_but_open',[(model, id)], - False) - -def export_csv(fields, result): - fp = StringIO() - writer = csv.writer(fp, quoting=csv.QUOTE_ALL) - - writer.writerow(fields) - - for data in result: - row = [] - for d in data: - if isinstance(d, basestring): - d = d.replace('\n',' ').replace('\t',' ') - try: - d = d.encode('utf-8') - except: - pass - if d is False: d = None - row.append(d) - writer.writerow(row) - - fp.seek(0) - data = fp.read() - fp.close() - return data - -def export_xls(fieldnames, table): - try: - import xlwt - except ImportError: - common.error(_('Import Error.'), _('Please install xlwt library to export to MS Excel.')) - - workbook = xlwt.Workbook() - worksheet = workbook.add_sheet('Sheet 1') - - for i, fieldname in enumerate(fieldnames): - worksheet.write(0, i, str(fieldname)) - worksheet.col(i).width = 8000 # around 220 pixels - - style = xlwt.easyxf('align: wrap yes') - - for row_index, row in enumerate(table): - for cell_index, cell_value in enumerate(row): - cell_value = str(cell_value) - cell_value = re.sub("\r", " ", cell_value) - worksheet.write(row_index + 1, cell_index, cell_value, style) - - - fp = StringIO() - workbook.save(fp) - fp.seek(0) - data = fp.read() - fp.close() - #return data.decode('ISO-8859-1') - return unicode(data, 'utf-8', 'replace') - class Export(View): - _cp_path = "/base/export" + _cp_path = "/web/export" + + @openerpweb.jsonrequest + def formats(self, req): + """ Returns all valid export formats + + :returns: for each export format, a pair of identifier and printable name + :rtype: [(str, str)] + """ + return sorted([ + controller.fmt + for path, controller in openerpweb.controllers_path.iteritems() + if path.startswith(self._cp_path) + if hasattr(controller, 'fmt') + ], key=operator.itemgetter(1)) def fields_get(self, req, model): Model = req.session.model(model) @@ -1139,174 +1124,285 @@ class Export(View): return fields @openerpweb.jsonrequest - def get_fields(self, req, model, prefix='', name= '', field_parent=None, params={}): - import_compat = params.get("import_compat", False) + def get_fields(self, req, model, prefix='', parent_name= '', + import_compat=True, parent_field_type=None): - fields = self.fields_get(req, model) - field_parent_type = params.get("parent_field_type",False) - - if import_compat and field_parent_type and field_parent_type == "many2one": + if import_compat and parent_field_type == "many2one": fields = {} + else: + fields = self.fields_get(req, model) + fields['.id'] = fields.pop('id') if 'id' in fields else {'string': 'ID'} + + fields_sequence = sorted(fields.iteritems(), + key=lambda field: field[1].get('string', '')) - fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) records = [] - fields_order = fields.keys() - fields_order.sort(lambda x,y: -cmp(fields[x].get('string', ''), fields[y].get('string', ''))) + for field_name, field in fields_sequence: + if import_compat and field.get('readonly'): + # If none of the field's states unsets readonly, skip the field + if all(dict(attrs).get('readonly', True) + for attrs in field.get('states', {}).values()): + continue - for index, field in enumerate(fields_order): - value = fields[field] - record = {} - if import_compat and value.get('readonly', False): - ok = False - for sl in value.get('states', {}).values(): - for s in sl: - ok = ok or (s==['readonly',False]) - if not ok: continue - - id = prefix + (prefix and '/'or '') + field - nm = name + (name and '/' or '') + value['string'] - record.update(id=id, string= nm, action='javascript: void(0)', - target=None, icon=None, children=[], field_type=value.get('type',False), required=value.get('required', False)) + id = prefix + (prefix and '/'or '') + field_name + name = parent_name + (parent_name and '/' or '') + field['string'] + record = {'id': id, 'string': name, + 'value': id, 'children': False, + 'field_type': field.get('type'), + 'required': field.get('required')} records.append(record) - if len(nm.split('/')) < 3 and value.get('relation', False): - if import_compat: - ref = value.pop('relation') - cfields = self.fields_get(req, ref) - if (value['type'] == 'many2many'): - record['children'] = [] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} + if len(name.split('/')) < 3 and 'relation' in field: + ref = field.pop('relation') + record['value'] += '/id' + record['params'] = {'model': ref, 'prefix': id, 'name': name} - elif value['type'] == 'many2one': - record['children'] = [id + '/id', id + '/.id'] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} + if not import_compat or field['type'] == 'one2many': + # m2m field in import_compat is childless + record['children'] = True - else: - cfields_order = cfields.keys() - cfields_order.sort(lambda x,y: -cmp(cfields[x].get('string', ''), cfields[y].get('string', ''))) - children = [] - for j, fld in enumerate(cfields_order): - cid = id + '/' + fld - cid = cid.replace(' ', '_') - children.append(cid) - record['children'] = children or [] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} - else: - ref = value.pop('relation') - cfields = self.fields_get(req, ref) - cfields_order = cfields.keys() - cfields_order.sort(lambda x,y: -cmp(cfields[x].get('string', ''), cfields[y].get('string', ''))) - children = [] - for j, fld in enumerate(cfields_order): - cid = id + '/' + fld - cid = cid.replace(' ', '_') - children.append(cid) - record['children'] = children or [] - record['params'] = {'model': ref, 'prefix': id, 'name': nm} - - records.reverse() return records - @openerpweb.jsonrequest - def save_export_lists(self, req, name, model, field_list): - result = {'resource':model, 'name':name, 'export_fields': []} - for field in field_list: - result['export_fields'].append((0, 0, {'name': field})) - return req.session.model("ir.exports").create(result, req.session.eval_context(req.context)) - - @openerpweb.jsonrequest - def exist_export_lists(self, req, model): - export_model = req.session.model("ir.exports") - return export_model.read(export_model.search([('resource', '=', model)]), ['name']) - - @openerpweb.jsonrequest - def delete_export(self, req, export_id): - req.session.model("ir.exports").unlink(export_id, req.session.eval_context(req.context)) - return True - @openerpweb.jsonrequest def namelist(self,req, model, export_id): + # TODO: namelist really has no reason to be in Python (although itertools.groupby helps) + export = req.session.model("ir.exports").read([export_id])[0] + export_fields_list = req.session.model("ir.exports.line").read( + export['export_fields']) - result = self.get_data(req, model, req.session.eval_context(req.context)) - ir_export_obj = req.session.model("ir.exports") - ir_export_line_obj = req.session.model("ir.exports.line") + fields_data = self.fields_info( + req, model, map(operator.itemgetter('name'), export_fields_list)) - field = ir_export_obj.read(export_id) - fields = ir_export_line_obj.read(field['export_fields']) + return [ + {'name': field['name'], 'label': fields_data[field['name']]} + for field in export_fields_list + ] - name_list = {} - [name_list.update({field['name']: result.get(field['name'])}) for field in fields] - return name_list - - def get_data(self, req, model, context=None): - ids = [] - context = context or {} - fields_data = {} - proxy = req.session.model(model) + def fields_info(self, req, model, export_fields): + info = {} fields = self.fields_get(req, model) - if not ids: - f1 = proxy.fields_view_get(False, 'tree', context)['fields'] - f2 = proxy.fields_view_get(False, 'form', context)['fields'] + fields['.id'] = fields.pop('id') if 'id' in fields else {'string': 'ID'} - fields = dict(f1) - fields.update(f2) - fields.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) + # To make fields retrieval more efficient, fetch all sub-fields of a + # given field at the same time. Because the order in the export list is + # arbitrary, this requires ordering all sub-fields of a given field + # together so they can be fetched at the same time + # + # Works the following way: + # * sort the list of fields to export, the default sorting order will + # put the field itself (if present, for xmlid) and all of its + # sub-fields right after it + # * then, group on: the first field of the path (which is the same for + # a field and for its subfields and the length of splitting on the + # first '/', which basically means grouping the field on one side and + # all of the subfields on the other. This way, we have the field (for + # the xmlid) with length 1, and all of the subfields with the same + # base but a length "flag" of 2 + # * if we have a normal field (length 1), just add it to the info + # mapping (with its string) as-is + # * otherwise, recursively call fields_info via graft_subfields. + # all graft_subfields does is take the result of fields_info (on the + # field's model) and prepend the current base (current field), which + # rebuilds the whole sub-tree for the field + # + # result: because we're not fetching the fields_get for half the + # database models, fetching a namelist with a dozen fields (including + # relational data) falls from ~6s to ~300ms (on the leads model). + # export lists with no sub-fields (e.g. import_compatible lists with + # no o2m) are even more efficient (from the same 6s to ~170ms, as + # there's a single fields_get to execute) + for (base, length), subfields in itertools.groupby( + sorted(export_fields), + lambda field: (field.split('/', 1)[0], len(field.split('/', 1)))): + subfields = list(subfields) + if length == 2: + # subfields is a seq of $base/*rest, and not loaded yet + info.update(self.graft_subfields( + req, fields[base]['relation'], base, fields[base]['string'], + subfields + )) + else: + info[base] = fields[base]['string'] - def rec(fields): - _fields = {'id': 'ID' , '.id': 'Database ID' } - def model_populate(fields, prefix_node='', prefix=None, prefix_value='', level=2): - fields_order = fields.keys() - fields_order.sort(lambda x,y: -cmp(fields[x].get('string', ''), fields[y].get('string', ''))) + return info - for field in fields_order: - fields_data[prefix_node+field] = fields[field] - if prefix_node: - fields_data[prefix_node + field]['string'] = '%s%s' % (prefix_value, fields_data[prefix_node + field]['string']) - st_name = fields[field]['string'] or field - _fields[prefix_node+field] = st_name - if fields[field].get('relation', False) and level>0: - fields2 = self.fields_get(req, fields[field]['relation']) - fields2.update({'id': {'string': 'ID'}, '.id': {'string': 'Database ID'}}) - model_populate(fields2, prefix_node+field+'/', None, st_name+'/', level-1) - model_populate(fields) - return _fields - return rec(fields) + def graft_subfields(self, req, model, prefix, prefix_string, fields): + export_fields = [field.split('/', 1)[1] for field in fields] + return ( + (prefix + '/' + k, prefix_string + '/' + v) + for k, v in self.fields_info(req, model, export_fields).iteritems()) + + #noinspection PyPropertyDefinition + @property + def content_type(self): + """ Provides the format's content type """ + raise NotImplementedError() + + def filename(self, base): + """ Creates a valid filename for the format (with extension) from the + provided base name (exension-less) + """ + raise NotImplementedError() + + def from_data(self, fields, rows): + """ Conversion method from OpenERP's export data to whatever the + current export class outputs + + :params list fields: a list of fields to export + :params list rows: a list of records to export + :returns: + :rtype: bytes + """ + raise NotImplementedError() + + @openerpweb.httprequest + def index(self, req, data, token): + model, fields, ids, domain, import_compat = \ + operator.itemgetter('model', 'fields', 'ids', 'domain', + 'import_compat')( + simplejson.loads(data)) - @openerpweb.jsonrequest - def export_data(self, req, model, fields, ids, domain, import_compat=False, export_format="csv", context=None): context = req.session.eval_context(req.context) - modle_obj = req.session.model(model) - ids = ids or modle_obj.search(domain, context=context) + Model = req.session.model(model) + ids = ids or Model.search(domain, context=context) - field = fields.keys() - result = modle_obj.export_data(ids, field , context).get('datas',[]) + field_names = map(operator.itemgetter('name'), fields) + import_data = Model.export_data(ids, field_names, context).get('datas',[]) - if not import_compat: - field = [val.strip() for val in fields.values()] - - if export_format == 'xls': - return export_xls(field, result) + if import_compat: + columns_headers = field_names else: - return export_csv(field, result) + columns_headers = [val['label'].strip() for val in fields] -class Export(View): - _cp_path = "/base/report" - @openerpweb.jsonrequest - def get_report(self, req, action): + return req.make_response(self.from_data(columns_headers, import_data), + headers=[('Content-Disposition', 'attachment; filename="%s"' % self.filename(model)), + ('Content-Type', self.content_type)], + cookies={'fileToken': int(token)}) + +class CSVExport(Export): + _cp_path = '/web/export/csv' + fmt = ('csv', 'CSV') + + @property + def content_type(self): + return 'text/csv;charset=utf8' + + def filename(self, base): + return base + '.csv' + + def from_data(self, fields, rows): + fp = StringIO() + writer = csv.writer(fp, quoting=csv.QUOTE_ALL) + + writer.writerow(fields) + + for data in rows: + row = [] + for d in data: + if isinstance(d, basestring): + d = d.replace('\n',' ').replace('\t',' ') + try: + d = d.encode('utf-8') + except: + pass + if d is False: d = None + row.append(d) + writer.writerow(row) + + fp.seek(0) + data = fp.read() + fp.close() + return data + +class ExcelExport(Export): + _cp_path = '/web/export/xls' + fmt = ('xls', 'Excel') + + @property + def content_type(self): + return 'application/vnd.ms-excel' + + def filename(self, base): + return base + '.xls' + + def from_data(self, fields, rows): + import xlwt + + workbook = xlwt.Workbook() + worksheet = workbook.add_sheet('Sheet 1') + + for i, fieldname in enumerate(fields): + worksheet.write(0, i, str(fieldname)) + worksheet.col(i).width = 8000 # around 220 pixels + + style = xlwt.easyxf('align: wrap yes') + + for row_index, row in enumerate(rows): + for cell_index, cell_value in enumerate(row): + if isinstance(cell_value, basestring): + cell_value = re.sub("\r", " ", cell_value) + worksheet.write(row_index + 1, cell_index, cell_value, style) + + fp = StringIO() + workbook.save(fp) + fp.seek(0) + data = fp.read() + fp.close() + return data + +class Reports(View): + _cp_path = "/web/report" + POLLING_DELAY = 0.25 + TYPES_MAPPING = { + 'doc': 'application/vnd.ms-word', + 'html': 'text/html', + 'odt': 'application/vnd.oasis.opendocument.text', + 'pdf': 'application/pdf', + 'sxw': 'application/vnd.sun.xml.writer', + 'xls': 'application/vnd.ms-excel', + } + + @openerpweb.httprequest + def index(self, req, action, token): + action = simplejson.loads(action) + report_srv = req.session.proxy("report") - context = req.session.eval_context(openerpweb.nonliterals.CompoundContext(req.context, \ - action["context"])) + context = req.session.eval_context( + openerpweb.nonliterals.CompoundContext( + req.context or {}, action[ "context"])) - args = [req.session._db, req.session._uid, req.session._password, action["report_name"], context["active_ids"], {"id": context["active_id"], "model": context["active_model"], "report_type": action["report_type"]}, context] - report_id = report_srv.report(*args) - report = None - while True: - args2 = [req.session._db, req.session._uid, req.session._password, report_id] - report = report_srv.report_get(*args2) - if report["state"]: - break - time.sleep(_REPORT_POLLER_DELAY) + report_data = {} + report_ids = context["active_ids"] + if 'report_type' in action: + report_data['report_type'] = action['report_type'] + if 'datas' in action: + if 'form' in action['datas']: + report_data['form'] = action['datas']['form'] + if 'ids' in action['datas']: + report_ids = action['datas']['ids'] - #TODO: ok now we've got the report, and so what? - return False + report_id = report_srv.report( + req.session._db, req.session._uid, req.session._password, + action["report_name"], report_ids, + report_data, context) + + report_struct = None + while True: + report_struct = report_srv.report_get( + req.session._db, req.session._uid, req.session._password, report_id) + if report_struct["state"]: + break + time.sleep(self.POLLING_DELAY) + + report = base64.b64decode(report_struct['result']) + if report_struct.get('code') == 'zlib': + report = zlib.decompress(report) + report_mimetype = self.TYPES_MAPPING.get( + report_struct['format'], 'octet-stream') + return req.make_response(report, + headers=[ + ('Content-Disposition', 'attachment; filename="%s.%s"' % (action['report_name'], report_struct['format'])), + ('Content-Type', report_mimetype), + ('Content-Length', len(report))], + cookies={'fileToken': int(token)}) diff --git a/addons/base/po/base.pot b/addons/web/po/base.pot similarity index 100% rename from addons/base/po/base.pot rename to addons/web/po/base.pot diff --git a/addons/base/po/fr_FR.po b/addons/web/po/fr_FR.po similarity index 100% rename from addons/base/po/fr_FR.po rename to addons/web/po/fr_FR.po diff --git a/addons/web/po/web.pot b/addons/web/po/web.pot new file mode 100644 index 00000000000..8d302a41fd7 --- /dev/null +++ b/addons/web/po/web.pot @@ -0,0 +1,574 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web/static/src/js/form.js:1473 +msgid "   Search More..." +msgstr "" + +#: addons/web/static/src/js/form.js:1486 +#, python-format +msgid "   Create \"%s\"" +msgstr "" + +#: addons/web/static/src/js/form.js:1492 +msgid "   Create and Edit..." +msgstr "" + +#: addons/web/static/src/js/views.js:484 +msgid "Translations" +msgstr "" + +#: addons/web/static/src/js/views.js:489 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "" + +#: addons/web/static/src/js/views.js:490 +msgid "Close" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{title}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "#{text}" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Powered by" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "openerp.com" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Loading..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Back to Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CREATE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New database name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Master Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "BACKUP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "RESTORE DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "File:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CHANGE MASTER PASSWORD" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm new master password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"We think that daily job activities can be more intuitive, efficient, " +"automated, .. and even fun." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for " +"each need." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "In order to be productive, people need clean and easy to use interface." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ")" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "LOGOUT" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "h3" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "<" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ">" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid ">" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "?" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Uploading ..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Select" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-- Filters --" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-- Actions --" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"This wizard will export all data that matches the current search criteria" +" to a CSV file.\n" +" You can export all data or only the fields that can be " +"reimported after modification." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Type:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP is a trademark of the" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP SA Company" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Licenced under the terms of" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "GNU Affero General Public License" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "About OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"is a free enterprise-scale software system that is designed to boost\n" +" productivity and profit through data integration. It " +"connects, improves and\n" +" manages business processes in areas such as sales, finance, " +"supply chain,\n" +" project management, production, services, CRM, etc..." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"The system is platform-independent, and can be installed on Windows, Mac " +"OS X,\n" +" and various Linux and other Unix-based distributions. Its " +"architecture enables\n" +" new functionality to be rapidly created, modifications to be " +"made to a\n" +" production system and migration to a new version to be " +"straightforward." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Depending on your needs, OpenERP is available through a web or " +"application client." +msgstr "" + diff --git a/addons/base/static/lib/datejs/core.js b/addons/web/static/lib/datejs/core.js similarity index 100% rename from addons/base/static/lib/datejs/core.js rename to addons/web/static/lib/datejs/core.js diff --git a/addons/base/static/lib/datejs/date.js b/addons/web/static/lib/datejs/date.js similarity index 100% rename from addons/base/static/lib/datejs/date.js rename to addons/web/static/lib/datejs/date.js diff --git a/addons/base/static/lib/datejs/extras.js b/addons/web/static/lib/datejs/extras.js similarity index 100% rename from addons/base/static/lib/datejs/extras.js rename to addons/web/static/lib/datejs/extras.js diff --git a/addons/base/static/lib/datejs/globalization/af-ZA.js b/addons/web/static/lib/datejs/globalization/af-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/af-ZA.js rename to addons/web/static/lib/datejs/globalization/af-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-AE.js b/addons/web/static/lib/datejs/globalization/ar-AE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-AE.js rename to addons/web/static/lib/datejs/globalization/ar-AE.js diff --git a/addons/base/static/lib/datejs/globalization/ar-BH.js b/addons/web/static/lib/datejs/globalization/ar-BH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-BH.js rename to addons/web/static/lib/datejs/globalization/ar-BH.js diff --git a/addons/base/static/lib/datejs/globalization/ar-DZ.js b/addons/web/static/lib/datejs/globalization/ar-DZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-DZ.js rename to addons/web/static/lib/datejs/globalization/ar-DZ.js diff --git a/addons/base/static/lib/datejs/globalization/ar-EG.js b/addons/web/static/lib/datejs/globalization/ar-EG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-EG.js rename to addons/web/static/lib/datejs/globalization/ar-EG.js diff --git a/addons/base/static/lib/datejs/globalization/ar-IQ.js b/addons/web/static/lib/datejs/globalization/ar-IQ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-IQ.js rename to addons/web/static/lib/datejs/globalization/ar-IQ.js diff --git a/addons/base/static/lib/datejs/globalization/ar-JO.js b/addons/web/static/lib/datejs/globalization/ar-JO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-JO.js rename to addons/web/static/lib/datejs/globalization/ar-JO.js diff --git a/addons/base/static/lib/datejs/globalization/ar-KW.js b/addons/web/static/lib/datejs/globalization/ar-KW.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-KW.js rename to addons/web/static/lib/datejs/globalization/ar-KW.js diff --git a/addons/base/static/lib/datejs/globalization/ar-LB.js b/addons/web/static/lib/datejs/globalization/ar-LB.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-LB.js rename to addons/web/static/lib/datejs/globalization/ar-LB.js diff --git a/addons/base/static/lib/datejs/globalization/ar-LY.js b/addons/web/static/lib/datejs/globalization/ar-LY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-LY.js rename to addons/web/static/lib/datejs/globalization/ar-LY.js diff --git a/addons/base/static/lib/datejs/globalization/ar-MA.js b/addons/web/static/lib/datejs/globalization/ar-MA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-MA.js rename to addons/web/static/lib/datejs/globalization/ar-MA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-OM.js b/addons/web/static/lib/datejs/globalization/ar-OM.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-OM.js rename to addons/web/static/lib/datejs/globalization/ar-OM.js diff --git a/addons/base/static/lib/datejs/globalization/ar-QA.js b/addons/web/static/lib/datejs/globalization/ar-QA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-QA.js rename to addons/web/static/lib/datejs/globalization/ar-QA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-SA.js b/addons/web/static/lib/datejs/globalization/ar-SA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-SA.js rename to addons/web/static/lib/datejs/globalization/ar-SA.js diff --git a/addons/base/static/lib/datejs/globalization/ar-SY.js b/addons/web/static/lib/datejs/globalization/ar-SY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-SY.js rename to addons/web/static/lib/datejs/globalization/ar-SY.js diff --git a/addons/base/static/lib/datejs/globalization/ar-TN.js b/addons/web/static/lib/datejs/globalization/ar-TN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-TN.js rename to addons/web/static/lib/datejs/globalization/ar-TN.js diff --git a/addons/base/static/lib/datejs/globalization/ar-YE.js b/addons/web/static/lib/datejs/globalization/ar-YE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ar-YE.js rename to addons/web/static/lib/datejs/globalization/ar-YE.js diff --git a/addons/base/static/lib/datejs/globalization/az-Cyrl-AZ.js b/addons/web/static/lib/datejs/globalization/az-Cyrl-AZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/az-Cyrl-AZ.js rename to addons/web/static/lib/datejs/globalization/az-Cyrl-AZ.js diff --git a/addons/base/static/lib/datejs/globalization/az-Latn-AZ.js b/addons/web/static/lib/datejs/globalization/az-Latn-AZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/az-Latn-AZ.js rename to addons/web/static/lib/datejs/globalization/az-Latn-AZ.js diff --git a/addons/base/static/lib/datejs/globalization/be-BY.js b/addons/web/static/lib/datejs/globalization/be-BY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/be-BY.js rename to addons/web/static/lib/datejs/globalization/be-BY.js diff --git a/addons/base/static/lib/datejs/globalization/bg-BG.js b/addons/web/static/lib/datejs/globalization/bg-BG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/bg-BG.js rename to addons/web/static/lib/datejs/globalization/bg-BG.js diff --git a/addons/base/static/lib/datejs/globalization/bs-Latn-BA.js b/addons/web/static/lib/datejs/globalization/bs-Latn-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/bs-Latn-BA.js rename to addons/web/static/lib/datejs/globalization/bs-Latn-BA.js diff --git a/addons/base/static/lib/datejs/globalization/ca-ES.js b/addons/web/static/lib/datejs/globalization/ca-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ca-ES.js rename to addons/web/static/lib/datejs/globalization/ca-ES.js diff --git a/addons/base/static/lib/datejs/globalization/cs-CZ.js b/addons/web/static/lib/datejs/globalization/cs-CZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/cs-CZ.js rename to addons/web/static/lib/datejs/globalization/cs-CZ.js diff --git a/addons/base/static/lib/datejs/globalization/cy-GB.js b/addons/web/static/lib/datejs/globalization/cy-GB.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/cy-GB.js rename to addons/web/static/lib/datejs/globalization/cy-GB.js diff --git a/addons/base/static/lib/datejs/globalization/da-DK.js b/addons/web/static/lib/datejs/globalization/da-DK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/da-DK.js rename to addons/web/static/lib/datejs/globalization/da-DK.js diff --git a/addons/base/static/lib/datejs/globalization/de-AT.js b/addons/web/static/lib/datejs/globalization/de-AT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-AT.js rename to addons/web/static/lib/datejs/globalization/de-AT.js diff --git a/addons/base/static/lib/datejs/globalization/de-CH.js b/addons/web/static/lib/datejs/globalization/de-CH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-CH.js rename to addons/web/static/lib/datejs/globalization/de-CH.js diff --git a/addons/base/static/lib/datejs/globalization/de-DE.js b/addons/web/static/lib/datejs/globalization/de-DE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-DE.js rename to addons/web/static/lib/datejs/globalization/de-DE.js diff --git a/addons/base/static/lib/datejs/globalization/de-LI.js b/addons/web/static/lib/datejs/globalization/de-LI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-LI.js rename to addons/web/static/lib/datejs/globalization/de-LI.js diff --git a/addons/base/static/lib/datejs/globalization/de-LU.js b/addons/web/static/lib/datejs/globalization/de-LU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/de-LU.js rename to addons/web/static/lib/datejs/globalization/de-LU.js diff --git a/addons/base/static/lib/datejs/globalization/dv-MV.js b/addons/web/static/lib/datejs/globalization/dv-MV.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/dv-MV.js rename to addons/web/static/lib/datejs/globalization/dv-MV.js diff --git a/addons/base/static/lib/datejs/globalization/el-GR.js b/addons/web/static/lib/datejs/globalization/el-GR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/el-GR.js rename to addons/web/static/lib/datejs/globalization/el-GR.js diff --git a/addons/base/static/lib/datejs/globalization/en-029.js b/addons/web/static/lib/datejs/globalization/en-029.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-029.js rename to addons/web/static/lib/datejs/globalization/en-029.js diff --git a/addons/base/static/lib/datejs/globalization/en-AU.js b/addons/web/static/lib/datejs/globalization/en-AU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-AU.js rename to addons/web/static/lib/datejs/globalization/en-AU.js diff --git a/addons/base/static/lib/datejs/globalization/en-BZ.js b/addons/web/static/lib/datejs/globalization/en-BZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-BZ.js rename to addons/web/static/lib/datejs/globalization/en-BZ.js diff --git a/addons/base/static/lib/datejs/globalization/en-CA.js b/addons/web/static/lib/datejs/globalization/en-CA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-CA.js rename to addons/web/static/lib/datejs/globalization/en-CA.js diff --git a/addons/base/static/lib/datejs/globalization/en-GB.js b/addons/web/static/lib/datejs/globalization/en-GB.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-GB.js rename to addons/web/static/lib/datejs/globalization/en-GB.js diff --git a/addons/base/static/lib/datejs/globalization/en-IE.js b/addons/web/static/lib/datejs/globalization/en-IE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-IE.js rename to addons/web/static/lib/datejs/globalization/en-IE.js diff --git a/addons/base/static/lib/datejs/globalization/en-JM.js b/addons/web/static/lib/datejs/globalization/en-JM.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-JM.js rename to addons/web/static/lib/datejs/globalization/en-JM.js diff --git a/addons/base/static/lib/datejs/globalization/en-NZ.js b/addons/web/static/lib/datejs/globalization/en-NZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-NZ.js rename to addons/web/static/lib/datejs/globalization/en-NZ.js diff --git a/addons/base/static/lib/datejs/globalization/en-PH.js b/addons/web/static/lib/datejs/globalization/en-PH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-PH.js rename to addons/web/static/lib/datejs/globalization/en-PH.js diff --git a/addons/base/static/lib/datejs/globalization/en-TT.js b/addons/web/static/lib/datejs/globalization/en-TT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-TT.js rename to addons/web/static/lib/datejs/globalization/en-TT.js diff --git a/addons/base/static/lib/datejs/globalization/en-US.js b/addons/web/static/lib/datejs/globalization/en-US.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-US.js rename to addons/web/static/lib/datejs/globalization/en-US.js diff --git a/addons/base/static/lib/datejs/globalization/en-ZA.js b/addons/web/static/lib/datejs/globalization/en-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-ZA.js rename to addons/web/static/lib/datejs/globalization/en-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/en-ZW.js b/addons/web/static/lib/datejs/globalization/en-ZW.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/en-ZW.js rename to addons/web/static/lib/datejs/globalization/en-ZW.js diff --git a/addons/base/static/lib/datejs/globalization/es-AR.js b/addons/web/static/lib/datejs/globalization/es-AR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-AR.js rename to addons/web/static/lib/datejs/globalization/es-AR.js diff --git a/addons/base/static/lib/datejs/globalization/es-BO.js b/addons/web/static/lib/datejs/globalization/es-BO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-BO.js rename to addons/web/static/lib/datejs/globalization/es-BO.js diff --git a/addons/base/static/lib/datejs/globalization/es-CL.js b/addons/web/static/lib/datejs/globalization/es-CL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-CL.js rename to addons/web/static/lib/datejs/globalization/es-CL.js diff --git a/addons/base/static/lib/datejs/globalization/es-CO.js b/addons/web/static/lib/datejs/globalization/es-CO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-CO.js rename to addons/web/static/lib/datejs/globalization/es-CO.js diff --git a/addons/base/static/lib/datejs/globalization/es-CR.js b/addons/web/static/lib/datejs/globalization/es-CR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-CR.js rename to addons/web/static/lib/datejs/globalization/es-CR.js diff --git a/addons/base/static/lib/datejs/globalization/es-DO.js b/addons/web/static/lib/datejs/globalization/es-DO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-DO.js rename to addons/web/static/lib/datejs/globalization/es-DO.js diff --git a/addons/base/static/lib/datejs/globalization/es-EC.js b/addons/web/static/lib/datejs/globalization/es-EC.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-EC.js rename to addons/web/static/lib/datejs/globalization/es-EC.js diff --git a/addons/base/static/lib/datejs/globalization/es-ES.js b/addons/web/static/lib/datejs/globalization/es-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-ES.js rename to addons/web/static/lib/datejs/globalization/es-ES.js diff --git a/addons/base/static/lib/datejs/globalization/es-GT.js b/addons/web/static/lib/datejs/globalization/es-GT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-GT.js rename to addons/web/static/lib/datejs/globalization/es-GT.js diff --git a/addons/base/static/lib/datejs/globalization/es-HN.js b/addons/web/static/lib/datejs/globalization/es-HN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-HN.js rename to addons/web/static/lib/datejs/globalization/es-HN.js diff --git a/addons/base/static/lib/datejs/globalization/es-MX.js b/addons/web/static/lib/datejs/globalization/es-MX.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-MX.js rename to addons/web/static/lib/datejs/globalization/es-MX.js diff --git a/addons/base/static/lib/datejs/globalization/es-NI.js b/addons/web/static/lib/datejs/globalization/es-NI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-NI.js rename to addons/web/static/lib/datejs/globalization/es-NI.js diff --git a/addons/base/static/lib/datejs/globalization/es-PA.js b/addons/web/static/lib/datejs/globalization/es-PA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PA.js rename to addons/web/static/lib/datejs/globalization/es-PA.js diff --git a/addons/base/static/lib/datejs/globalization/es-PE.js b/addons/web/static/lib/datejs/globalization/es-PE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PE.js rename to addons/web/static/lib/datejs/globalization/es-PE.js diff --git a/addons/base/static/lib/datejs/globalization/es-PR.js b/addons/web/static/lib/datejs/globalization/es-PR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PR.js rename to addons/web/static/lib/datejs/globalization/es-PR.js diff --git a/addons/base/static/lib/datejs/globalization/es-PY.js b/addons/web/static/lib/datejs/globalization/es-PY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-PY.js rename to addons/web/static/lib/datejs/globalization/es-PY.js diff --git a/addons/base/static/lib/datejs/globalization/es-SV.js b/addons/web/static/lib/datejs/globalization/es-SV.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-SV.js rename to addons/web/static/lib/datejs/globalization/es-SV.js diff --git a/addons/base/static/lib/datejs/globalization/es-UY.js b/addons/web/static/lib/datejs/globalization/es-UY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-UY.js rename to addons/web/static/lib/datejs/globalization/es-UY.js diff --git a/addons/base/static/lib/datejs/globalization/es-VE.js b/addons/web/static/lib/datejs/globalization/es-VE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/es-VE.js rename to addons/web/static/lib/datejs/globalization/es-VE.js diff --git a/addons/base/static/lib/datejs/globalization/et-EE.js b/addons/web/static/lib/datejs/globalization/et-EE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/et-EE.js rename to addons/web/static/lib/datejs/globalization/et-EE.js diff --git a/addons/base/static/lib/datejs/globalization/eu-ES.js b/addons/web/static/lib/datejs/globalization/eu-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/eu-ES.js rename to addons/web/static/lib/datejs/globalization/eu-ES.js diff --git a/addons/base/static/lib/datejs/globalization/fa-IR.js b/addons/web/static/lib/datejs/globalization/fa-IR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fa-IR.js rename to addons/web/static/lib/datejs/globalization/fa-IR.js diff --git a/addons/base/static/lib/datejs/globalization/fi-FI.js b/addons/web/static/lib/datejs/globalization/fi-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fi-FI.js rename to addons/web/static/lib/datejs/globalization/fi-FI.js diff --git a/addons/base/static/lib/datejs/globalization/fo-FO.js b/addons/web/static/lib/datejs/globalization/fo-FO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fo-FO.js rename to addons/web/static/lib/datejs/globalization/fo-FO.js diff --git a/addons/base/static/lib/datejs/globalization/fr-BE.js b/addons/web/static/lib/datejs/globalization/fr-BE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-BE.js rename to addons/web/static/lib/datejs/globalization/fr-BE.js diff --git a/addons/base/static/lib/datejs/globalization/fr-CA.js b/addons/web/static/lib/datejs/globalization/fr-CA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-CA.js rename to addons/web/static/lib/datejs/globalization/fr-CA.js diff --git a/addons/base/static/lib/datejs/globalization/fr-CH.js b/addons/web/static/lib/datejs/globalization/fr-CH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-CH.js rename to addons/web/static/lib/datejs/globalization/fr-CH.js diff --git a/addons/base/static/lib/datejs/globalization/fr-FR.js b/addons/web/static/lib/datejs/globalization/fr-FR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-FR.js rename to addons/web/static/lib/datejs/globalization/fr-FR.js diff --git a/addons/base/static/lib/datejs/globalization/fr-LU.js b/addons/web/static/lib/datejs/globalization/fr-LU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-LU.js rename to addons/web/static/lib/datejs/globalization/fr-LU.js diff --git a/addons/base/static/lib/datejs/globalization/fr-MC.js b/addons/web/static/lib/datejs/globalization/fr-MC.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/fr-MC.js rename to addons/web/static/lib/datejs/globalization/fr-MC.js diff --git a/addons/base/static/lib/datejs/globalization/gl-ES.js b/addons/web/static/lib/datejs/globalization/gl-ES.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/gl-ES.js rename to addons/web/static/lib/datejs/globalization/gl-ES.js diff --git a/addons/base/static/lib/datejs/globalization/gu-IN.js b/addons/web/static/lib/datejs/globalization/gu-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/gu-IN.js rename to addons/web/static/lib/datejs/globalization/gu-IN.js diff --git a/addons/base/static/lib/datejs/globalization/he-IL.js b/addons/web/static/lib/datejs/globalization/he-IL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/he-IL.js rename to addons/web/static/lib/datejs/globalization/he-IL.js diff --git a/addons/base/static/lib/datejs/globalization/hi-IN.js b/addons/web/static/lib/datejs/globalization/hi-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hi-IN.js rename to addons/web/static/lib/datejs/globalization/hi-IN.js diff --git a/addons/base/static/lib/datejs/globalization/hr-BA.js b/addons/web/static/lib/datejs/globalization/hr-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hr-BA.js rename to addons/web/static/lib/datejs/globalization/hr-BA.js diff --git a/addons/base/static/lib/datejs/globalization/hr-HR.js b/addons/web/static/lib/datejs/globalization/hr-HR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hr-HR.js rename to addons/web/static/lib/datejs/globalization/hr-HR.js diff --git a/addons/base/static/lib/datejs/globalization/hu-HU.js b/addons/web/static/lib/datejs/globalization/hu-HU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hu-HU.js rename to addons/web/static/lib/datejs/globalization/hu-HU.js diff --git a/addons/base/static/lib/datejs/globalization/hy-AM.js b/addons/web/static/lib/datejs/globalization/hy-AM.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/hy-AM.js rename to addons/web/static/lib/datejs/globalization/hy-AM.js diff --git a/addons/base/static/lib/datejs/globalization/id-ID.js b/addons/web/static/lib/datejs/globalization/id-ID.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/id-ID.js rename to addons/web/static/lib/datejs/globalization/id-ID.js diff --git a/addons/base/static/lib/datejs/globalization/is-IS.js b/addons/web/static/lib/datejs/globalization/is-IS.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/is-IS.js rename to addons/web/static/lib/datejs/globalization/is-IS.js diff --git a/addons/base/static/lib/datejs/globalization/it-CH.js b/addons/web/static/lib/datejs/globalization/it-CH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/it-CH.js rename to addons/web/static/lib/datejs/globalization/it-CH.js diff --git a/addons/base/static/lib/datejs/globalization/it-IT.js b/addons/web/static/lib/datejs/globalization/it-IT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/it-IT.js rename to addons/web/static/lib/datejs/globalization/it-IT.js diff --git a/addons/base/static/lib/datejs/globalization/ja-JP.js b/addons/web/static/lib/datejs/globalization/ja-JP.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ja-JP.js rename to addons/web/static/lib/datejs/globalization/ja-JP.js diff --git a/addons/base/static/lib/datejs/globalization/ka-GE.js b/addons/web/static/lib/datejs/globalization/ka-GE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ka-GE.js rename to addons/web/static/lib/datejs/globalization/ka-GE.js diff --git a/addons/base/static/lib/datejs/globalization/kk-KZ.js b/addons/web/static/lib/datejs/globalization/kk-KZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/kk-KZ.js rename to addons/web/static/lib/datejs/globalization/kk-KZ.js diff --git a/addons/base/static/lib/datejs/globalization/kn-IN.js b/addons/web/static/lib/datejs/globalization/kn-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/kn-IN.js rename to addons/web/static/lib/datejs/globalization/kn-IN.js diff --git a/addons/base/static/lib/datejs/globalization/ko-KR.js b/addons/web/static/lib/datejs/globalization/ko-KR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ko-KR.js rename to addons/web/static/lib/datejs/globalization/ko-KR.js diff --git a/addons/base/static/lib/datejs/globalization/kok-IN.js b/addons/web/static/lib/datejs/globalization/kok-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/kok-IN.js rename to addons/web/static/lib/datejs/globalization/kok-IN.js diff --git a/addons/base/static/lib/datejs/globalization/ky-KG.js b/addons/web/static/lib/datejs/globalization/ky-KG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ky-KG.js rename to addons/web/static/lib/datejs/globalization/ky-KG.js diff --git a/addons/base/static/lib/datejs/globalization/lt-LT.js b/addons/web/static/lib/datejs/globalization/lt-LT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/lt-LT.js rename to addons/web/static/lib/datejs/globalization/lt-LT.js diff --git a/addons/base/static/lib/datejs/globalization/lv-LV.js b/addons/web/static/lib/datejs/globalization/lv-LV.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/lv-LV.js rename to addons/web/static/lib/datejs/globalization/lv-LV.js diff --git a/addons/base/static/lib/datejs/globalization/mi-NZ.js b/addons/web/static/lib/datejs/globalization/mi-NZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mi-NZ.js rename to addons/web/static/lib/datejs/globalization/mi-NZ.js diff --git a/addons/base/static/lib/datejs/globalization/mk-MK.js b/addons/web/static/lib/datejs/globalization/mk-MK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mk-MK.js rename to addons/web/static/lib/datejs/globalization/mk-MK.js diff --git a/addons/base/static/lib/datejs/globalization/mn-MN.js b/addons/web/static/lib/datejs/globalization/mn-MN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mn-MN.js rename to addons/web/static/lib/datejs/globalization/mn-MN.js diff --git a/addons/base/static/lib/datejs/globalization/mr-IN.js b/addons/web/static/lib/datejs/globalization/mr-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mr-IN.js rename to addons/web/static/lib/datejs/globalization/mr-IN.js diff --git a/addons/base/static/lib/datejs/globalization/ms-BN.js b/addons/web/static/lib/datejs/globalization/ms-BN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ms-BN.js rename to addons/web/static/lib/datejs/globalization/ms-BN.js diff --git a/addons/base/static/lib/datejs/globalization/ms-MY.js b/addons/web/static/lib/datejs/globalization/ms-MY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ms-MY.js rename to addons/web/static/lib/datejs/globalization/ms-MY.js diff --git a/addons/base/static/lib/datejs/globalization/mt-MT.js b/addons/web/static/lib/datejs/globalization/mt-MT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/mt-MT.js rename to addons/web/static/lib/datejs/globalization/mt-MT.js diff --git a/addons/base/static/lib/datejs/globalization/nb-NO.js b/addons/web/static/lib/datejs/globalization/nb-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nb-NO.js rename to addons/web/static/lib/datejs/globalization/nb-NO.js diff --git a/addons/base/static/lib/datejs/globalization/nl-BE.js b/addons/web/static/lib/datejs/globalization/nl-BE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nl-BE.js rename to addons/web/static/lib/datejs/globalization/nl-BE.js diff --git a/addons/base/static/lib/datejs/globalization/nl-NL.js b/addons/web/static/lib/datejs/globalization/nl-NL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nl-NL.js rename to addons/web/static/lib/datejs/globalization/nl-NL.js diff --git a/addons/base/static/lib/datejs/globalization/nn-NO.js b/addons/web/static/lib/datejs/globalization/nn-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/nn-NO.js rename to addons/web/static/lib/datejs/globalization/nn-NO.js diff --git a/addons/base/static/lib/datejs/globalization/ns-ZA.js b/addons/web/static/lib/datejs/globalization/ns-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ns-ZA.js rename to addons/web/static/lib/datejs/globalization/ns-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/pa-IN.js b/addons/web/static/lib/datejs/globalization/pa-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pa-IN.js rename to addons/web/static/lib/datejs/globalization/pa-IN.js diff --git a/addons/base/static/lib/datejs/globalization/pl-PL.js b/addons/web/static/lib/datejs/globalization/pl-PL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pl-PL.js rename to addons/web/static/lib/datejs/globalization/pl-PL.js diff --git a/addons/base/static/lib/datejs/globalization/pt-BR.js b/addons/web/static/lib/datejs/globalization/pt-BR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pt-BR.js rename to addons/web/static/lib/datejs/globalization/pt-BR.js diff --git a/addons/base/static/lib/datejs/globalization/pt-PT.js b/addons/web/static/lib/datejs/globalization/pt-PT.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/pt-PT.js rename to addons/web/static/lib/datejs/globalization/pt-PT.js diff --git a/addons/base/static/lib/datejs/globalization/quz-BO.js b/addons/web/static/lib/datejs/globalization/quz-BO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/quz-BO.js rename to addons/web/static/lib/datejs/globalization/quz-BO.js diff --git a/addons/base/static/lib/datejs/globalization/quz-EC.js b/addons/web/static/lib/datejs/globalization/quz-EC.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/quz-EC.js rename to addons/web/static/lib/datejs/globalization/quz-EC.js diff --git a/addons/base/static/lib/datejs/globalization/quz-PE.js b/addons/web/static/lib/datejs/globalization/quz-PE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/quz-PE.js rename to addons/web/static/lib/datejs/globalization/quz-PE.js diff --git a/addons/base/static/lib/datejs/globalization/ro-RO.js b/addons/web/static/lib/datejs/globalization/ro-RO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ro-RO.js rename to addons/web/static/lib/datejs/globalization/ro-RO.js diff --git a/addons/base/static/lib/datejs/globalization/ru-RU.js b/addons/web/static/lib/datejs/globalization/ru-RU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ru-RU.js rename to addons/web/static/lib/datejs/globalization/ru-RU.js diff --git a/addons/base/static/lib/datejs/globalization/sa-IN.js b/addons/web/static/lib/datejs/globalization/sa-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sa-IN.js rename to addons/web/static/lib/datejs/globalization/sa-IN.js diff --git a/addons/base/static/lib/datejs/globalization/se-FI.js b/addons/web/static/lib/datejs/globalization/se-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/se-FI.js rename to addons/web/static/lib/datejs/globalization/se-FI.js diff --git a/addons/base/static/lib/datejs/globalization/se-NO.js b/addons/web/static/lib/datejs/globalization/se-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/se-NO.js rename to addons/web/static/lib/datejs/globalization/se-NO.js diff --git a/addons/base/static/lib/datejs/globalization/se-SE.js b/addons/web/static/lib/datejs/globalization/se-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/se-SE.js rename to addons/web/static/lib/datejs/globalization/se-SE.js diff --git a/addons/base/static/lib/datejs/globalization/sk-SK.js b/addons/web/static/lib/datejs/globalization/sk-SK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sk-SK.js rename to addons/web/static/lib/datejs/globalization/sk-SK.js diff --git a/addons/base/static/lib/datejs/globalization/sl-SI.js b/addons/web/static/lib/datejs/globalization/sl-SI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sl-SI.js rename to addons/web/static/lib/datejs/globalization/sl-SI.js diff --git a/addons/base/static/lib/datejs/globalization/sma-NO.js b/addons/web/static/lib/datejs/globalization/sma-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sma-NO.js rename to addons/web/static/lib/datejs/globalization/sma-NO.js diff --git a/addons/base/static/lib/datejs/globalization/sma-SE.js b/addons/web/static/lib/datejs/globalization/sma-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sma-SE.js rename to addons/web/static/lib/datejs/globalization/sma-SE.js diff --git a/addons/base/static/lib/datejs/globalization/smj-NO.js b/addons/web/static/lib/datejs/globalization/smj-NO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/smj-NO.js rename to addons/web/static/lib/datejs/globalization/smj-NO.js diff --git a/addons/base/static/lib/datejs/globalization/smj-SE.js b/addons/web/static/lib/datejs/globalization/smj-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/smj-SE.js rename to addons/web/static/lib/datejs/globalization/smj-SE.js diff --git a/addons/base/static/lib/datejs/globalization/smn-FI.js b/addons/web/static/lib/datejs/globalization/smn-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/smn-FI.js rename to addons/web/static/lib/datejs/globalization/smn-FI.js diff --git a/addons/base/static/lib/datejs/globalization/sms-FI.js b/addons/web/static/lib/datejs/globalization/sms-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sms-FI.js rename to addons/web/static/lib/datejs/globalization/sms-FI.js diff --git a/addons/base/static/lib/datejs/globalization/sq-AL.js b/addons/web/static/lib/datejs/globalization/sq-AL.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sq-AL.js rename to addons/web/static/lib/datejs/globalization/sq-AL.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Cyrl-BA.js b/addons/web/static/lib/datejs/globalization/sr-Cyrl-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Cyrl-BA.js rename to addons/web/static/lib/datejs/globalization/sr-Cyrl-BA.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Cyrl-CS.js b/addons/web/static/lib/datejs/globalization/sr-Cyrl-CS.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Cyrl-CS.js rename to addons/web/static/lib/datejs/globalization/sr-Cyrl-CS.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Latn-BA.js b/addons/web/static/lib/datejs/globalization/sr-Latn-BA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Latn-BA.js rename to addons/web/static/lib/datejs/globalization/sr-Latn-BA.js diff --git a/addons/base/static/lib/datejs/globalization/sr-Latn-CS.js b/addons/web/static/lib/datejs/globalization/sr-Latn-CS.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sr-Latn-CS.js rename to addons/web/static/lib/datejs/globalization/sr-Latn-CS.js diff --git a/addons/base/static/lib/datejs/globalization/sv-FI.js b/addons/web/static/lib/datejs/globalization/sv-FI.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sv-FI.js rename to addons/web/static/lib/datejs/globalization/sv-FI.js diff --git a/addons/base/static/lib/datejs/globalization/sv-SE.js b/addons/web/static/lib/datejs/globalization/sv-SE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sv-SE.js rename to addons/web/static/lib/datejs/globalization/sv-SE.js diff --git a/addons/base/static/lib/datejs/globalization/sw-KE.js b/addons/web/static/lib/datejs/globalization/sw-KE.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/sw-KE.js rename to addons/web/static/lib/datejs/globalization/sw-KE.js diff --git a/addons/base/static/lib/datejs/globalization/syr-SY.js b/addons/web/static/lib/datejs/globalization/syr-SY.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/syr-SY.js rename to addons/web/static/lib/datejs/globalization/syr-SY.js diff --git a/addons/base/static/lib/datejs/globalization/ta-IN.js b/addons/web/static/lib/datejs/globalization/ta-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ta-IN.js rename to addons/web/static/lib/datejs/globalization/ta-IN.js diff --git a/addons/base/static/lib/datejs/globalization/te-IN.js b/addons/web/static/lib/datejs/globalization/te-IN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/te-IN.js rename to addons/web/static/lib/datejs/globalization/te-IN.js diff --git a/addons/base/static/lib/datejs/globalization/th-TH.js b/addons/web/static/lib/datejs/globalization/th-TH.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/th-TH.js rename to addons/web/static/lib/datejs/globalization/th-TH.js diff --git a/addons/base/static/lib/datejs/globalization/tn-ZA.js b/addons/web/static/lib/datejs/globalization/tn-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/tn-ZA.js rename to addons/web/static/lib/datejs/globalization/tn-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/tr-TR.js b/addons/web/static/lib/datejs/globalization/tr-TR.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/tr-TR.js rename to addons/web/static/lib/datejs/globalization/tr-TR.js diff --git a/addons/base/static/lib/datejs/globalization/tt-RU.js b/addons/web/static/lib/datejs/globalization/tt-RU.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/tt-RU.js rename to addons/web/static/lib/datejs/globalization/tt-RU.js diff --git a/addons/base/static/lib/datejs/globalization/uk-UA.js b/addons/web/static/lib/datejs/globalization/uk-UA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/uk-UA.js rename to addons/web/static/lib/datejs/globalization/uk-UA.js diff --git a/addons/base/static/lib/datejs/globalization/ur-PK.js b/addons/web/static/lib/datejs/globalization/ur-PK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/ur-PK.js rename to addons/web/static/lib/datejs/globalization/ur-PK.js diff --git a/addons/base/static/lib/datejs/globalization/uz-Cyrl-UZ.js b/addons/web/static/lib/datejs/globalization/uz-Cyrl-UZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/uz-Cyrl-UZ.js rename to addons/web/static/lib/datejs/globalization/uz-Cyrl-UZ.js diff --git a/addons/base/static/lib/datejs/globalization/uz-Latn-UZ.js b/addons/web/static/lib/datejs/globalization/uz-Latn-UZ.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/uz-Latn-UZ.js rename to addons/web/static/lib/datejs/globalization/uz-Latn-UZ.js diff --git a/addons/base/static/lib/datejs/globalization/vi-VN.js b/addons/web/static/lib/datejs/globalization/vi-VN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/vi-VN.js rename to addons/web/static/lib/datejs/globalization/vi-VN.js diff --git a/addons/base/static/lib/datejs/globalization/xh-ZA.js b/addons/web/static/lib/datejs/globalization/xh-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/xh-ZA.js rename to addons/web/static/lib/datejs/globalization/xh-ZA.js diff --git a/addons/base/static/lib/datejs/globalization/zh-CN.js b/addons/web/static/lib/datejs/globalization/zh-CN.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-CN.js rename to addons/web/static/lib/datejs/globalization/zh-CN.js diff --git a/addons/base/static/lib/datejs/globalization/zh-HK.js b/addons/web/static/lib/datejs/globalization/zh-HK.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-HK.js rename to addons/web/static/lib/datejs/globalization/zh-HK.js diff --git a/addons/base/static/lib/datejs/globalization/zh-MO.js b/addons/web/static/lib/datejs/globalization/zh-MO.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-MO.js rename to addons/web/static/lib/datejs/globalization/zh-MO.js diff --git a/addons/base/static/lib/datejs/globalization/zh-SG.js b/addons/web/static/lib/datejs/globalization/zh-SG.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-SG.js rename to addons/web/static/lib/datejs/globalization/zh-SG.js diff --git a/addons/base/static/lib/datejs/globalization/zh-TW.js b/addons/web/static/lib/datejs/globalization/zh-TW.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zh-TW.js rename to addons/web/static/lib/datejs/globalization/zh-TW.js diff --git a/addons/base/static/lib/datejs/globalization/zu-ZA.js b/addons/web/static/lib/datejs/globalization/zu-ZA.js similarity index 100% rename from addons/base/static/lib/datejs/globalization/zu-ZA.js rename to addons/web/static/lib/datejs/globalization/zu-ZA.js diff --git a/addons/base/static/lib/datejs/parser.js b/addons/web/static/lib/datejs/parser.js similarity index 100% rename from addons/base/static/lib/datejs/parser.js rename to addons/web/static/lib/datejs/parser.js diff --git a/addons/base/static/lib/datejs/sugarpak.js b/addons/web/static/lib/datejs/sugarpak.js similarity index 100% rename from addons/base/static/lib/datejs/sugarpak.js rename to addons/web/static/lib/datejs/sugarpak.js diff --git a/addons/base/static/lib/datejs/time.js b/addons/web/static/lib/datejs/time.js similarity index 100% rename from addons/base/static/lib/datejs/time.js rename to addons/web/static/lib/datejs/time.js diff --git a/addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.js b/addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js similarity index 100% rename from addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.js rename to addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js diff --git a/addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js b/addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js similarity index 100% rename from addons/base/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js rename to addons/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.min.js diff --git a/addons/base/static/lib/jquery.blockUI/jquery.blockUI.js b/addons/web/static/lib/jquery.blockUI/jquery.blockUI.js similarity index 100% rename from addons/base/static/lib/jquery.blockUI/jquery.blockUI.js rename to addons/web/static/lib/jquery.blockUI/jquery.blockUI.js diff --git a/addons/base/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js b/addons/web/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js similarity index 100% rename from addons/base/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js rename to addons/web/static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js diff --git a/addons/base/static/lib/jquery.form/jquery.form.js b/addons/web/static/lib/jquery.form/jquery.form.js similarity index 100% rename from addons/base/static/lib/jquery.form/jquery.form.js rename to addons/web/static/lib/jquery.form/jquery.form.js diff --git a/addons/base/static/lib/jquery.superfish/changelog.txt b/addons/web/static/lib/jquery.superfish/changelog.txt similarity index 100% rename from addons/base/static/lib/jquery.superfish/changelog.txt rename to addons/web/static/lib/jquery.superfish/changelog.txt diff --git a/addons/base/static/lib/jquery.superfish/css/superfish-navbar.css b/addons/web/static/lib/jquery.superfish/css/superfish-navbar.css similarity index 100% rename from addons/base/static/lib/jquery.superfish/css/superfish-navbar.css rename to addons/web/static/lib/jquery.superfish/css/superfish-navbar.css diff --git a/addons/base/static/lib/jquery.superfish/css/superfish-vertical.css b/addons/web/static/lib/jquery.superfish/css/superfish-vertical.css similarity index 100% rename from addons/base/static/lib/jquery.superfish/css/superfish-vertical.css rename to addons/web/static/lib/jquery.superfish/css/superfish-vertical.css diff --git a/addons/base/static/lib/jquery.superfish/css/superfish.css b/addons/web/static/lib/jquery.superfish/css/superfish.css similarity index 100% rename from addons/base/static/lib/jquery.superfish/css/superfish.css rename to addons/web/static/lib/jquery.superfish/css/superfish.css diff --git a/addons/base/static/lib/jquery.superfish/example.html b/addons/web/static/lib/jquery.superfish/example.html similarity index 100% rename from addons/base/static/lib/jquery.superfish/example.html rename to addons/web/static/lib/jquery.superfish/example.html diff --git a/addons/base/static/lib/jquery.superfish/images/arrows-ffffff.png b/addons/web/static/lib/jquery.superfish/images/arrows-ffffff.png similarity index 100% rename from addons/base/static/lib/jquery.superfish/images/arrows-ffffff.png rename to addons/web/static/lib/jquery.superfish/images/arrows-ffffff.png diff --git a/addons/base/static/lib/jquery.superfish/images/shadow.png b/addons/web/static/lib/jquery.superfish/images/shadow.png similarity index 100% rename from addons/base/static/lib/jquery.superfish/images/shadow.png rename to addons/web/static/lib/jquery.superfish/images/shadow.png diff --git a/addons/base/static/lib/jquery.superfish/js/hoverIntent.js b/addons/web/static/lib/jquery.superfish/js/hoverIntent.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/hoverIntent.js rename to addons/web/static/lib/jquery.superfish/js/hoverIntent.js diff --git a/addons/base/static/lib/jquery.superfish/js/jquery-1.2.6.min.js b/addons/web/static/lib/jquery.superfish/js/jquery-1.2.6.min.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/jquery-1.2.6.min.js rename to addons/web/static/lib/jquery.superfish/js/jquery-1.2.6.min.js diff --git a/addons/base/static/lib/jquery.superfish/js/jquery.bgiframe.min.js b/addons/web/static/lib/jquery.superfish/js/jquery.bgiframe.min.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/jquery.bgiframe.min.js rename to addons/web/static/lib/jquery.superfish/js/jquery.bgiframe.min.js diff --git a/addons/base/static/lib/jquery.superfish/js/superfish.js b/addons/web/static/lib/jquery.superfish/js/superfish.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/superfish.js rename to addons/web/static/lib/jquery.superfish/js/superfish.js diff --git a/addons/base/static/lib/jquery.superfish/js/supersubs.js b/addons/web/static/lib/jquery.superfish/js/supersubs.js similarity index 100% rename from addons/base/static/lib/jquery.superfish/js/supersubs.js rename to addons/web/static/lib/jquery.superfish/js/supersubs.js diff --git a/addons/base/static/lib/jquery.ui.notify/css/ui.notify.css b/addons/web/static/lib/jquery.ui.notify/css/ui.notify.css similarity index 100% rename from addons/base/static/lib/jquery.ui.notify/css/ui.notify.css rename to addons/web/static/lib/jquery.ui.notify/css/ui.notify.css diff --git a/addons/base/static/lib/jquery.ui.notify/js/jquery.notify.js b/addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js similarity index 100% rename from addons/base/static/lib/jquery.ui.notify/js/jquery.notify.js rename to addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png rename to addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png diff --git a/addons/base/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css b/addons/web/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css similarity index 100% rename from addons/base/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css rename to addons/web/static/lib/jquery.ui/css/smoothness/jquery-ui-1.8.9.custom.css diff --git a/addons/base/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js b/addons/web/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js similarity index 100% rename from addons/base/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js rename to addons/web/static/lib/jquery.ui/js/jquery-ui-1.8.9.custom.min.js diff --git a/addons/base/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js b/addons/web/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js similarity index 100% rename from addons/base/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js rename to addons/web/static/lib/jquery.ui/js/jquery-ui-timepicker-addon.js diff --git a/addons/base/static/lib/jquery.validate/jquery.validate.js b/addons/web/static/lib/jquery.validate/jquery.validate.js similarity index 100% rename from addons/base/static/lib/jquery.validate/jquery.validate.js rename to addons/web/static/lib/jquery.validate/jquery.validate.js diff --git a/addons/base/static/lib/jquery/jquery-1.6.2.js b/addons/web/static/lib/jquery/jquery-1.6.2.js similarity index 100% rename from addons/base/static/lib/jquery/jquery-1.6.2.js rename to addons/web/static/lib/jquery/jquery-1.6.2.js diff --git a/addons/base/static/lib/json/json2.js b/addons/web/static/lib/json/json2.js similarity index 100% rename from addons/base/static/lib/json/json2.js rename to addons/web/static/lib/json/json2.js diff --git a/addons/base/static/lib/labjs/LAB.src.js b/addons/web/static/lib/labjs/LAB.src.js similarity index 100% rename from addons/base/static/lib/labjs/LAB.src.js rename to addons/web/static/lib/labjs/LAB.src.js diff --git a/addons/base/static/lib/qunit/qunit-2011-23-22.css b/addons/web/static/lib/qunit/qunit-2011-23-22.css similarity index 100% rename from addons/base/static/lib/qunit/qunit-2011-23-22.css rename to addons/web/static/lib/qunit/qunit-2011-23-22.css diff --git a/addons/base/static/lib/qunit/qunit-2011-23-22.js b/addons/web/static/lib/qunit/qunit-2011-23-22.js similarity index 100% rename from addons/base/static/lib/qunit/qunit-2011-23-22.js rename to addons/web/static/lib/qunit/qunit-2011-23-22.js diff --git a/addons/base/static/lib/qweb/qweb-benchmark.html b/addons/web/static/lib/qweb/qweb-benchmark.html similarity index 100% rename from addons/base/static/lib/qweb/qweb-benchmark.html rename to addons/web/static/lib/qweb/qweb-benchmark.html diff --git a/addons/base/static/lib/qweb/qweb-benchmark.xml b/addons/web/static/lib/qweb/qweb-benchmark.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-benchmark.xml rename to addons/web/static/lib/qweb/qweb-benchmark.xml diff --git a/addons/base/static/lib/qweb/qweb-test-attributes.xml b/addons/web/static/lib/qweb/qweb-test-attributes.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-attributes.xml rename to addons/web/static/lib/qweb/qweb-test-attributes.xml diff --git a/addons/base/static/lib/qweb/qweb-test-call.xml b/addons/web/static/lib/qweb/qweb-test-call.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-call.xml rename to addons/web/static/lib/qweb/qweb-test-call.xml diff --git a/addons/base/static/lib/qweb/qweb-test-conditionals.xml b/addons/web/static/lib/qweb/qweb-test-conditionals.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-conditionals.xml rename to addons/web/static/lib/qweb/qweb-test-conditionals.xml diff --git a/addons/base/static/lib/qweb/qweb-test-extend.xml b/addons/web/static/lib/qweb/qweb-test-extend.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-extend.xml rename to addons/web/static/lib/qweb/qweb-test-extend.xml diff --git a/addons/base/static/lib/qweb/qweb-test-foreach.xml b/addons/web/static/lib/qweb/qweb-test-foreach.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-foreach.xml rename to addons/web/static/lib/qweb/qweb-test-foreach.xml diff --git a/addons/base/static/lib/qweb/qweb-test-output.xml b/addons/web/static/lib/qweb/qweb-test-output.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-output.xml rename to addons/web/static/lib/qweb/qweb-test-output.xml diff --git a/addons/base/static/lib/qweb/qweb-test-set.xml b/addons/web/static/lib/qweb/qweb-test-set.xml similarity index 100% rename from addons/base/static/lib/qweb/qweb-test-set.xml rename to addons/web/static/lib/qweb/qweb-test-set.xml diff --git a/addons/base/static/lib/qweb/qweb-test.js.html b/addons/web/static/lib/qweb/qweb-test.js.html similarity index 100% rename from addons/base/static/lib/qweb/qweb-test.js.html rename to addons/web/static/lib/qweb/qweb-test.js.html diff --git a/addons/base/static/lib/qweb/qweb.js b/addons/web/static/lib/qweb/qweb.js similarity index 100% rename from addons/base/static/lib/qweb/qweb.js rename to addons/web/static/lib/qweb/qweb.js diff --git a/addons/base/static/lib/qweb/qweb2.js b/addons/web/static/lib/qweb/qweb2.js similarity index 98% rename from addons/base/static/lib/qweb/qweb2.js rename to addons/web/static/lib/qweb/qweb2.js index cfb9c9c461d..621ea39c74f 100644 --- a/addons/base/static/lib/qweb/qweb2.js +++ b/addons/web/static/lib/qweb/qweb2.js @@ -201,7 +201,7 @@ QWeb2.Engine = (function() { this.templates = {}; this.compiled_templates = {}; this.extend_templates = {}; - this.dict = {}; + this.default_dict = {}; this.tools = QWeb2.tools; this.jQuery = window.jQuery; this.reserved_words = QWeb2.RESERVED_WORDS.slice(0); @@ -259,6 +259,9 @@ QWeb2.Engine = (function() { if (req) { // TODO: third parameter is async : https://developer.mozilla.org/en/XMLHttpRequest#open() // do an on_ready in QWeb2{} that could be passed to add_template + if (this.debug) { + s += '?debug=' + (new Date()).getTime(); // TODO fme: do it properly in case there's already url parameters + } req.open('GET', s, false); req.send(null); if (req.responseXML) { @@ -323,13 +326,15 @@ QWeb2.Engine = (function() { " return r.join('');"; }, render : function(template, dict) { - if (this.debug && window['console'] !== undefined) { + var ndict = QWeb2.tools.extend({}, this.default_dict); + QWeb2.tools.extend(ndict, dict); + /*if (this.debug && window['console'] !== undefined) { console.time("QWeb render template " + template); - } - var r = this._render(template, dict); - if (this.debug && window['console'] !== undefined) { + }*/ + var r = this._render(template, ndict); + /*if (this.debug && window['console'] !== undefined) { console.timeEnd("QWeb render template " + template); - } + }*/ return r; }, _render : function(template, dict) { diff --git a/addons/base/static/lib/underscore/underscore.js b/addons/web/static/lib/underscore/underscore.js similarity index 100% rename from addons/base/static/lib/underscore/underscore.js rename to addons/web/static/lib/underscore/underscore.js diff --git a/addons/base/static/lib/underscore/underscore.string.js b/addons/web/static/lib/underscore/underscore.string.js similarity index 100% rename from addons/base/static/lib/underscore/underscore.string.js rename to addons/web/static/lib/underscore/underscore.string.js diff --git a/addons/base/static/src/css/base-ie7.css b/addons/web/static/src/css/base-ie7.css similarity index 100% rename from addons/base/static/src/css/base-ie7.css rename to addons/web/static/src/css/base-ie7.css diff --git a/addons/base/static/src/css/base.css b/addons/web/static/src/css/base.css similarity index 94% rename from addons/base/static/src/css/base.css rename to addons/web/static/src/css/base.css index c9894e42cef..cc8b596e6f5 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -174,7 +174,7 @@ ul.db_options li { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#949292', endColorstr='#5B5A5A',GradientType=0 ); /* IE6-9 */ border: none; /* overriding jquery ui */ - -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; display: block; font-weight: bold; text-transform: uppercase; @@ -294,6 +294,9 @@ label.error { color: #fff; } +.openerp .oe-application-container { + height: 100%; +} /* Secondary Menu */ .openerp .secondary_menu { width: 200px; @@ -324,7 +327,7 @@ label.error { filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#949292', endColorstr='#5B5A5A',GradientType=0 ); /* IE6-9 */ border: none; /* overriding jquery ui */ - -moz-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; } .openerp .secondary_menu h4 { padding: 0 0 2px 10px; @@ -379,7 +382,7 @@ label.error { /* Header */ .openerp .header { height: 65px; - background: url("/base/static/src/img/header-background.png") repeat-x scroll left top transparent; + background: url("/web/static/src/img/header-background.png") repeat-x scroll left top transparent; color: #FFFFFF; letter-spacing: 0.5px; text-shadow: 0 1px 0 #333333; @@ -401,7 +404,7 @@ label.error { margin-top: 7px; margin-left: 10px; display: block; - background: url(/base/static/src/img/logo.png); + background: url(/web/static/src/img/logo.png); width:180px; height:46px; } @@ -409,7 +412,7 @@ label.error { float: left; font-size: 100%; margin: 0; - padding: 4px 0; + padding: 4px 10px; text-shadow: 0 1px 0 #111111; } .openerp .header_title small { @@ -597,13 +600,13 @@ label.error { background-color: #ccc; } .openerp .searchview_group.folded .searchview_group_string { - background: url("/base/static/src/img/ui/group-folded.png") no-repeat scroll 0 50%; + background: url("/web/static/src/img/ui/group-folded.png") no-repeat scroll 0 50%; } .openerp .searchview_group.folded .searchview_group_content { display: none; } .openerp .searchview_group.expanded .searchview_group_string { - background: url("/base/static/src/img/ui/group-expanded.png") no-repeat scroll 0 50%; + background: url("/web/static/src/img/ui/group-expanded.png") no-repeat scroll 0 50%; } .openerp .searchview_group.expanded .searchview_group_content { display: block; @@ -635,13 +638,13 @@ label.error { } .openerp .oe_search-view-custom-filter-btn span { - background: url(/base/static/src/img/icons/gtk-add.png) repeat-y; + background: url(/web/static/src/img/icons/gtk-add.png) repeat-y; padding-left: 18px; } .openerp .searchview_extended_add_proposition span { font-size: 0.9em; - background: url(/base/static/src/img/icons/gtk-add.png) repeat-y; + background: url(/web/static/src/img/icons/gtk-add.png) repeat-y; padding-left: 18px; } @@ -657,7 +660,7 @@ label.error { .openerp .searchview_extended_delete_group span, .openerp .searchview_extended_delete_prop span { font-size: 0.9em; - background: url(/base/static/src/img/icons/gtk-close.png) repeat-y; + background: url(/web/static/src/img/icons/gtk-close.png) repeat-y; padding-left: 18px; } /* List */ @@ -820,7 +823,7 @@ label.error { padding: 2px; } .openerp td.oe_form_frame_cell.oe_form_group { - padding: 0px; + padding: 0; } .openerp .required.error { border: 1px solid #900; @@ -838,7 +841,8 @@ label.error { .openerp label.oe_label_help { cursor: help; } -.openerp .oe_form_field label.oe_label, .openerp .oe_form_field label.oe_label_help { +.openerp label.oe_label, +.openerp label.oe_label_help { text-align: right; margin: 3px 0 0 10px; } @@ -1096,7 +1100,7 @@ label.error { cursor: pointer; border: 1px solid #D2CFCF; display: block; - background: url(/base/static/src/img/toggle-a-bg.png); + background: url(/web/static/src/img/toggle-a-bg.png); width: 21px; height: 21px; z-index: 10; @@ -1111,7 +1115,7 @@ label.error { } .openerp li.oe_sidebar_print { padding-left: 20px; - background: 1px 3px url(/base/static/src/img/icons/gtk-print.png) no-repeat; + background: 1px 3px url(/web/static/src/img/icons/gtk-print.png) no-repeat; } .openerp.kitten-mode-activated .main_table { @@ -1212,10 +1216,10 @@ label.error { display: block; } .treeview-tr:first-of-type { - background: transparent url(/base/static/src/img/expand.gif) 0 50% no-repeat; + background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat; } .oe-open .treeview-tr:first-of-type { - background-image: url(/base/static/src/img/collapse.gif); + background-image: url(/web/static/src/img/collapse.gif); } .treeview-tr:first-of-type span, .treeview-td:first-of-type span { @@ -1233,18 +1237,18 @@ label.error { width: 24px; cursor: pointer; display: block; - background: url(/base/static/src/img/add-shortcut.png) no-repeat bottom; + background: url(/web/static/src/img/add-shortcut.png) no-repeat bottom; float: left; } .oe-shortcut-remove{ - background: url(/base/static/src/img/remove-shortcut.png) no-repeat bottom; + background: url(/web/static/src/img/remove-shortcut.png) no-repeat bottom; } /* ================ */ .oe-shortcuts { position: absolute; margin: 0; - padding: 6px 5px; + padding: 6px 15px; top: 37px; left: 197px; right: 0; @@ -1275,3 +1279,39 @@ label.error { border-left: none; padding-left: 0; } + +ul.oe-arrow-list { + padding-left: 0.5em; + margin: 0; +} +ul.oe-arrow-list li { + display: inline-block; + margin-left: -0.5em; +} +ul.oe-arrow-list li span { + vertical-align: top; + display: inline-block; + border-width:1em; + border-style:solid; + border-color: white; + line-height:0em; +} +ul.oe-arrow-list .oe-arrow-list-before { + border-left-color: rgba(0,0,0,0); + border-right-width:0; +} +ul.oe-arrow-list .oe-arrow-list-after { + border-color: rgba(0,0,0,0); + border-left-color: white; + border-right-width:0; +} +ul.oe-arrow-list li.oe-arrow-list-selected span { + border-color: #CFCCCC; +} +ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-before { + border-left-color: rgba(0,0,0,0); +} +ul.oe-arrow-list li.oe-arrow-list-selected .oe-arrow-list-after { + border-color: rgba(0,0,0,0); + border-left-color: #CFCCCC; +} diff --git a/addons/base/static/src/css/data_export.css b/addons/web/static/src/css/data_export.css similarity index 81% rename from addons/base/static/src/css/data_export.css rename to addons/web/static/src/css/data_export.css index 7b4b9707b39..149fcea81e6 100644 --- a/addons/base/static/src/css/data_export.css +++ b/addons/web/static/src/css/data_export.css @@ -1,3 +1,6 @@ +.openerp .oe-export { + width: 100%; +} .openerp .oe_export_row tr{ background-color: #FFFFFF; font-size: 0.8em; @@ -20,11 +23,6 @@ background-color: #F3F3F3; } -.openerp .oe_export_fields_selector_export { - width: 100%; - height: 400px; -} - .openerp .oe_export_fields_selector_left { width: 50%; } @@ -35,9 +33,15 @@ height: 400px; border: solid #999999 1px; } +.openerp div#left_field_panel table { + width: 100%; +} .openerp .oe_export_fields_selector_center { - width: 102px; + text-align: center; +} +.openerp .oe_export_fields_selector_center button { + white-space: nowrap; } .openerp .oe_export_fields_selector_right { @@ -45,7 +49,7 @@ height: 400px; } -.openerp .oe_export_fields_selector_export select{ +.openerp .oe_export_fields_selector_right select{ width: 100%; height: 100%; } @@ -55,7 +59,7 @@ text-align: left; white-space: nowrap; padding: 4px 5px; - background: url(/base/static/src/img/header.gif); + background: url(/web/static/src/img/header.gif); } @@ -78,8 +82,3 @@ border: none; display: block; } - -.openerp .oe_export_button_export { - border: 1px solid #006; - background-color: #F3F3F3; -} diff --git a/addons/base/static/src/img/accessories-archiver.png b/addons/web/static/src/img/accessories-archiver.png similarity index 100% rename from addons/base/static/src/img/accessories-archiver.png rename to addons/web/static/src/img/accessories-archiver.png diff --git a/addons/base/static/src/img/add-shortcut.png b/addons/web/static/src/img/add-shortcut.png similarity index 100% rename from addons/base/static/src/img/add-shortcut.png rename to addons/web/static/src/img/add-shortcut.png diff --git a/addons/base/static/src/img/attachments-close.png b/addons/web/static/src/img/attachments-close.png similarity index 100% rename from addons/base/static/src/img/attachments-close.png rename to addons/web/static/src/img/attachments-close.png diff --git a/addons/base/static/src/img/collapse.gif b/addons/web/static/src/img/collapse.gif similarity index 100% rename from addons/base/static/src/img/collapse.gif rename to addons/web/static/src/img/collapse.gif diff --git a/addons/base/static/src/img/db.png b/addons/web/static/src/img/db.png similarity index 100% rename from addons/base/static/src/img/db.png rename to addons/web/static/src/img/db.png diff --git a/addons/base/static/src/img/down-arrow.png b/addons/web/static/src/img/down-arrow.png similarity index 100% rename from addons/base/static/src/img/down-arrow.png rename to addons/web/static/src/img/down-arrow.png diff --git a/addons/base/static/src/img/expand.gif b/addons/web/static/src/img/expand.gif similarity index 100% rename from addons/base/static/src/img/expand.gif rename to addons/web/static/src/img/expand.gif diff --git a/addons/base/static/src/img/favicon.ico b/addons/web/static/src/img/favicon.ico similarity index 100% rename from addons/base/static/src/img/favicon.ico rename to addons/web/static/src/img/favicon.ico diff --git a/addons/base/static/src/img/header-about.png b/addons/web/static/src/img/header-about.png similarity index 100% rename from addons/base/static/src/img/header-about.png rename to addons/web/static/src/img/header-about.png diff --git a/addons/base/static/src/img/header-background.png b/addons/web/static/src/img/header-background.png similarity index 100% rename from addons/base/static/src/img/header-background.png rename to addons/web/static/src/img/header-background.png diff --git a/addons/base/static/src/img/header-help.png b/addons/web/static/src/img/header-help.png similarity index 100% rename from addons/base/static/src/img/header-help.png rename to addons/web/static/src/img/header-help.png diff --git a/addons/base/static/src/img/header-home.png b/addons/web/static/src/img/header-home.png similarity index 100% rename from addons/base/static/src/img/header-home.png rename to addons/web/static/src/img/header-home.png diff --git a/addons/base/static/src/img/header-preferences.png b/addons/web/static/src/img/header-preferences.png similarity index 100% rename from addons/base/static/src/img/header-preferences.png rename to addons/web/static/src/img/header-preferences.png diff --git a/addons/base/static/src/img/header-requests.png b/addons/web/static/src/img/header-requests.png similarity index 100% rename from addons/base/static/src/img/header-requests.png rename to addons/web/static/src/img/header-requests.png diff --git a/addons/base/static/src/img/header.gif b/addons/web/static/src/img/header.gif similarity index 100% rename from addons/base/static/src/img/header.gif rename to addons/web/static/src/img/header.gif diff --git a/addons/base/static/src/img/icons/STOCK_ABOUT.png b/addons/web/static/src/img/icons/STOCK_ABOUT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ABOUT.png rename to addons/web/static/src/img/icons/STOCK_ABOUT.png diff --git a/addons/base/static/src/img/icons/STOCK_ADD.png b/addons/web/static/src/img/icons/STOCK_ADD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ADD.png rename to addons/web/static/src/img/icons/STOCK_ADD.png diff --git a/addons/base/static/src/img/icons/STOCK_APPLY.png b/addons/web/static/src/img/icons/STOCK_APPLY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_APPLY.png rename to addons/web/static/src/img/icons/STOCK_APPLY.png diff --git a/addons/base/static/src/img/icons/STOCK_BOLD.png b/addons/web/static/src/img/icons/STOCK_BOLD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_BOLD.png rename to addons/web/static/src/img/icons/STOCK_BOLD.png diff --git a/addons/base/static/src/img/icons/STOCK_CANCEL.png b/addons/web/static/src/img/icons/STOCK_CANCEL.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CANCEL.png rename to addons/web/static/src/img/icons/STOCK_CANCEL.png diff --git a/addons/base/static/src/img/icons/STOCK_CDROM.png b/addons/web/static/src/img/icons/STOCK_CDROM.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CDROM.png rename to addons/web/static/src/img/icons/STOCK_CDROM.png diff --git a/addons/base/static/src/img/icons/STOCK_CLEAR.png b/addons/web/static/src/img/icons/STOCK_CLEAR.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CLEAR.png rename to addons/web/static/src/img/icons/STOCK_CLEAR.png diff --git a/addons/base/static/src/img/icons/STOCK_CLOSE.png b/addons/web/static/src/img/icons/STOCK_CLOSE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CLOSE.png rename to addons/web/static/src/img/icons/STOCK_CLOSE.png diff --git a/addons/base/static/src/img/icons/STOCK_COLOR_PICKER.png b/addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_COLOR_PICKER.png rename to addons/web/static/src/img/icons/STOCK_COLOR_PICKER.png diff --git a/addons/base/static/src/img/icons/STOCK_CONNECT.png b/addons/web/static/src/img/icons/STOCK_CONNECT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CONNECT.png rename to addons/web/static/src/img/icons/STOCK_CONNECT.png diff --git a/addons/base/static/src/img/icons/STOCK_CONVERT.png b/addons/web/static/src/img/icons/STOCK_CONVERT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CONVERT.png rename to addons/web/static/src/img/icons/STOCK_CONVERT.png diff --git a/addons/base/static/src/img/icons/STOCK_COPY.png b/addons/web/static/src/img/icons/STOCK_COPY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_COPY.png rename to addons/web/static/src/img/icons/STOCK_COPY.png diff --git a/addons/base/static/src/img/icons/STOCK_CUT.png b/addons/web/static/src/img/icons/STOCK_CUT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_CUT.png rename to addons/web/static/src/img/icons/STOCK_CUT.png diff --git a/addons/base/static/src/img/icons/STOCK_DELETE.png b/addons/web/static/src/img/icons/STOCK_DELETE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DELETE.png rename to addons/web/static/src/img/icons/STOCK_DELETE.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png b/addons/web/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_AUTHENTICATION.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_ERROR.png b/addons/web/static/src/img/icons/STOCK_DIALOG_ERROR.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_ERROR.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_ERROR.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_INFO.png b/addons/web/static/src/img/icons/STOCK_DIALOG_INFO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_INFO.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_INFO.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_QUESTION.png b/addons/web/static/src/img/icons/STOCK_DIALOG_QUESTION.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_QUESTION.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_QUESTION.png diff --git a/addons/base/static/src/img/icons/STOCK_DIALOG_WARNING.png b/addons/web/static/src/img/icons/STOCK_DIALOG_WARNING.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIALOG_WARNING.png rename to addons/web/static/src/img/icons/STOCK_DIALOG_WARNING.png diff --git a/addons/base/static/src/img/icons/STOCK_DIRECTORY.png b/addons/web/static/src/img/icons/STOCK_DIRECTORY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DIRECTORY.png rename to addons/web/static/src/img/icons/STOCK_DIRECTORY.png diff --git a/addons/base/static/src/img/icons/STOCK_DISCONNECT.png b/addons/web/static/src/img/icons/STOCK_DISCONNECT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DISCONNECT.png rename to addons/web/static/src/img/icons/STOCK_DISCONNECT.png diff --git a/addons/base/static/src/img/icons/STOCK_DND.png b/addons/web/static/src/img/icons/STOCK_DND.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DND.png rename to addons/web/static/src/img/icons/STOCK_DND.png diff --git a/addons/base/static/src/img/icons/STOCK_DND_MULTIPLE.png b/addons/web/static/src/img/icons/STOCK_DND_MULTIPLE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_DND_MULTIPLE.png rename to addons/web/static/src/img/icons/STOCK_DND_MULTIPLE.png diff --git a/addons/base/static/src/img/icons/STOCK_EDIT.png b/addons/web/static/src/img/icons/STOCK_EDIT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_EDIT.png rename to addons/web/static/src/img/icons/STOCK_EDIT.png diff --git a/addons/base/static/src/img/icons/STOCK_EXECUTE.png b/addons/web/static/src/img/icons/STOCK_EXECUTE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_EXECUTE.png rename to addons/web/static/src/img/icons/STOCK_EXECUTE.png diff --git a/addons/base/static/src/img/icons/STOCK_FILE.png b/addons/web/static/src/img/icons/STOCK_FILE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FILE.png rename to addons/web/static/src/img/icons/STOCK_FILE.png diff --git a/addons/base/static/src/img/icons/STOCK_FIND.png b/addons/web/static/src/img/icons/STOCK_FIND.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FIND.png rename to addons/web/static/src/img/icons/STOCK_FIND.png diff --git a/addons/base/static/src/img/icons/STOCK_FIND_AND_REPLACE.png b/addons/web/static/src/img/icons/STOCK_FIND_AND_REPLACE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FIND_AND_REPLACE.png rename to addons/web/static/src/img/icons/STOCK_FIND_AND_REPLACE.png diff --git a/addons/base/static/src/img/icons/STOCK_FLOPPY.png b/addons/web/static/src/img/icons/STOCK_FLOPPY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FLOPPY.png rename to addons/web/static/src/img/icons/STOCK_FLOPPY.png diff --git a/addons/base/static/src/img/icons/STOCK_FULLSCREEN.png b/addons/web/static/src/img/icons/STOCK_FULLSCREEN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_FULLSCREEN.png rename to addons/web/static/src/img/icons/STOCK_FULLSCREEN.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_BOTTOM.png b/addons/web/static/src/img/icons/STOCK_GOTO_BOTTOM.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_BOTTOM.png rename to addons/web/static/src/img/icons/STOCK_GOTO_BOTTOM.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_FIRST.png b/addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_FIRST.png rename to addons/web/static/src/img/icons/STOCK_GOTO_FIRST.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_LAST.png b/addons/web/static/src/img/icons/STOCK_GOTO_LAST.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_LAST.png rename to addons/web/static/src/img/icons/STOCK_GOTO_LAST.png diff --git a/addons/base/static/src/img/icons/STOCK_GOTO_TOP.png b/addons/web/static/src/img/icons/STOCK_GOTO_TOP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GOTO_TOP.png rename to addons/web/static/src/img/icons/STOCK_GOTO_TOP.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_BACK.png b/addons/web/static/src/img/icons/STOCK_GO_BACK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_BACK.png rename to addons/web/static/src/img/icons/STOCK_GO_BACK.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_DOWN.png b/addons/web/static/src/img/icons/STOCK_GO_DOWN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_DOWN.png rename to addons/web/static/src/img/icons/STOCK_GO_DOWN.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_FORWARD.png b/addons/web/static/src/img/icons/STOCK_GO_FORWARD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_FORWARD.png rename to addons/web/static/src/img/icons/STOCK_GO_FORWARD.png diff --git a/addons/base/static/src/img/icons/STOCK_GO_UP.png b/addons/web/static/src/img/icons/STOCK_GO_UP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_GO_UP.png rename to addons/web/static/src/img/icons/STOCK_GO_UP.png diff --git a/addons/base/static/src/img/icons/STOCK_HARDDISK.png b/addons/web/static/src/img/icons/STOCK_HARDDISK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_HARDDISK.png rename to addons/web/static/src/img/icons/STOCK_HARDDISK.png diff --git a/addons/base/static/src/img/icons/STOCK_HELP.png b/addons/web/static/src/img/icons/STOCK_HELP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_HELP.png rename to addons/web/static/src/img/icons/STOCK_HELP.png diff --git a/addons/base/static/src/img/icons/STOCK_HOME.png b/addons/web/static/src/img/icons/STOCK_HOME.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_HOME.png rename to addons/web/static/src/img/icons/STOCK_HOME.png diff --git a/addons/base/static/src/img/icons/STOCK_INDENT.png b/addons/web/static/src/img/icons/STOCK_INDENT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_INDENT.png rename to addons/web/static/src/img/icons/STOCK_INDENT.png diff --git a/addons/base/static/src/img/icons/STOCK_INDEX.png b/addons/web/static/src/img/icons/STOCK_INDEX.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_INDEX.png rename to addons/web/static/src/img/icons/STOCK_INDEX.png diff --git a/addons/base/static/src/img/icons/STOCK_INFO.png b/addons/web/static/src/img/icons/STOCK_INFO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_INFO.png rename to addons/web/static/src/img/icons/STOCK_INFO.png diff --git a/addons/base/static/src/img/icons/STOCK_ITALIC.png b/addons/web/static/src/img/icons/STOCK_ITALIC.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ITALIC.png rename to addons/web/static/src/img/icons/STOCK_ITALIC.png diff --git a/addons/base/static/src/img/icons/STOCK_JUMP_TO.png b/addons/web/static/src/img/icons/STOCK_JUMP_TO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUMP_TO.png rename to addons/web/static/src/img/icons/STOCK_JUMP_TO.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_CENTER.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_CENTER.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_CENTER.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_CENTER.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_FILL.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_FILL.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_FILL.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_FILL.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_LEFT.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_LEFT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_LEFT.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_LEFT.png diff --git a/addons/base/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png b/addons/web/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png rename to addons/web/static/src/img/icons/STOCK_JUSTIFY_RIGHT.png diff --git a/addons/base/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png b/addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png rename to addons/web/static/src/img/icons/STOCK_LEAVE_FULLSCREEN.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_FORWARD.png b/addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_FORWARD.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_FORWARD.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_NEXT.png b/addons/web/static/src/img/icons/STOCK_MEDIA_NEXT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_NEXT.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_NEXT.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_PAUSE.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_PAUSE.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_PAUSE.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_PLAY.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_PLAY.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_PLAY.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png b/addons/web/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_PREVIOUS.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_RECORD.png b/addons/web/static/src/img/icons/STOCK_MEDIA_RECORD.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_RECORD.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_RECORD.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_REWIND.png b/addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_REWIND.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_REWIND.png diff --git a/addons/base/static/src/img/icons/STOCK_MEDIA_STOP.png b/addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MEDIA_STOP.png rename to addons/web/static/src/img/icons/STOCK_MEDIA_STOP.png diff --git a/addons/base/static/src/img/icons/STOCK_MISSING_IMAGE.png b/addons/web/static/src/img/icons/STOCK_MISSING_IMAGE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_MISSING_IMAGE.png rename to addons/web/static/src/img/icons/STOCK_MISSING_IMAGE.png diff --git a/addons/base/static/src/img/icons/STOCK_NETWORK.png b/addons/web/static/src/img/icons/STOCK_NETWORK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_NETWORK.png rename to addons/web/static/src/img/icons/STOCK_NETWORK.png diff --git a/addons/base/static/src/img/icons/STOCK_NEW.png b/addons/web/static/src/img/icons/STOCK_NEW.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_NEW.png rename to addons/web/static/src/img/icons/STOCK_NEW.png diff --git a/addons/base/static/src/img/icons/STOCK_NO.png b/addons/web/static/src/img/icons/STOCK_NO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_NO.png rename to addons/web/static/src/img/icons/STOCK_NO.png diff --git a/addons/base/static/src/img/icons/STOCK_OK.png b/addons/web/static/src/img/icons/STOCK_OK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_OK.png rename to addons/web/static/src/img/icons/STOCK_OK.png diff --git a/addons/base/static/src/img/icons/STOCK_OPEN.png b/addons/web/static/src/img/icons/STOCK_OPEN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_OPEN.png rename to addons/web/static/src/img/icons/STOCK_OPEN.png diff --git a/addons/base/static/src/img/icons/STOCK_PASTE.png b/addons/web/static/src/img/icons/STOCK_PASTE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PASTE.png rename to addons/web/static/src/img/icons/STOCK_PASTE.png diff --git a/addons/base/static/src/img/icons/STOCK_PREFERENCES.png b/addons/web/static/src/img/icons/STOCK_PREFERENCES.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PREFERENCES.png rename to addons/web/static/src/img/icons/STOCK_PREFERENCES.png diff --git a/addons/base/static/src/img/icons/STOCK_PRINT.png b/addons/web/static/src/img/icons/STOCK_PRINT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PRINT.png rename to addons/web/static/src/img/icons/STOCK_PRINT.png diff --git a/addons/base/static/src/img/icons/STOCK_PRINT_PREVIEW.png b/addons/web/static/src/img/icons/STOCK_PRINT_PREVIEW.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PRINT_PREVIEW.png rename to addons/web/static/src/img/icons/STOCK_PRINT_PREVIEW.png diff --git a/addons/base/static/src/img/icons/STOCK_PROPERTIES.png b/addons/web/static/src/img/icons/STOCK_PROPERTIES.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_PROPERTIES.png rename to addons/web/static/src/img/icons/STOCK_PROPERTIES.png diff --git a/addons/base/static/src/img/icons/STOCK_QUIT.png b/addons/web/static/src/img/icons/STOCK_QUIT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_QUIT.png rename to addons/web/static/src/img/icons/STOCK_QUIT.png diff --git a/addons/base/static/src/img/icons/STOCK_REDO.png b/addons/web/static/src/img/icons/STOCK_REDO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REDO.png rename to addons/web/static/src/img/icons/STOCK_REDO.png diff --git a/addons/base/static/src/img/icons/STOCK_REFRESH.png b/addons/web/static/src/img/icons/STOCK_REFRESH.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REFRESH.png rename to addons/web/static/src/img/icons/STOCK_REFRESH.png diff --git a/addons/base/static/src/img/icons/STOCK_REMOVE.png b/addons/web/static/src/img/icons/STOCK_REMOVE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REMOVE.png rename to addons/web/static/src/img/icons/STOCK_REMOVE.png diff --git a/addons/base/static/src/img/icons/STOCK_REVERT_TO_SAVED.png b/addons/web/static/src/img/icons/STOCK_REVERT_TO_SAVED.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_REVERT_TO_SAVED.png rename to addons/web/static/src/img/icons/STOCK_REVERT_TO_SAVED.png diff --git a/addons/base/static/src/img/icons/STOCK_SAVE.png b/addons/web/static/src/img/icons/STOCK_SAVE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SAVE.png rename to addons/web/static/src/img/icons/STOCK_SAVE.png diff --git a/addons/base/static/src/img/icons/STOCK_SAVE_AS.png b/addons/web/static/src/img/icons/STOCK_SAVE_AS.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SAVE_AS.png rename to addons/web/static/src/img/icons/STOCK_SAVE_AS.png diff --git a/addons/base/static/src/img/icons/STOCK_SELECT_COLOR.png b/addons/web/static/src/img/icons/STOCK_SELECT_COLOR.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SELECT_COLOR.png rename to addons/web/static/src/img/icons/STOCK_SELECT_COLOR.png diff --git a/addons/base/static/src/img/icons/STOCK_SELECT_FONT.png b/addons/web/static/src/img/icons/STOCK_SELECT_FONT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SELECT_FONT.png rename to addons/web/static/src/img/icons/STOCK_SELECT_FONT.png diff --git a/addons/base/static/src/img/icons/STOCK_SORT_ASCENDING.png b/addons/web/static/src/img/icons/STOCK_SORT_ASCENDING.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SORT_ASCENDING.png rename to addons/web/static/src/img/icons/STOCK_SORT_ASCENDING.png diff --git a/addons/base/static/src/img/icons/STOCK_SORT_DESCENDING.png b/addons/web/static/src/img/icons/STOCK_SORT_DESCENDING.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SORT_DESCENDING.png rename to addons/web/static/src/img/icons/STOCK_SORT_DESCENDING.png diff --git a/addons/base/static/src/img/icons/STOCK_SPELL_CHECK.png b/addons/web/static/src/img/icons/STOCK_SPELL_CHECK.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_SPELL_CHECK.png rename to addons/web/static/src/img/icons/STOCK_SPELL_CHECK.png diff --git a/addons/base/static/src/img/icons/STOCK_STOP.png b/addons/web/static/src/img/icons/STOCK_STOP.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_STOP.png rename to addons/web/static/src/img/icons/STOCK_STOP.png diff --git a/addons/base/static/src/img/icons/STOCK_STRIKETHROUGH.png b/addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_STRIKETHROUGH.png rename to addons/web/static/src/img/icons/STOCK_STRIKETHROUGH.png diff --git a/addons/base/static/src/img/icons/STOCK_UNDELETE.png b/addons/web/static/src/img/icons/STOCK_UNDELETE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNDELETE.png rename to addons/web/static/src/img/icons/STOCK_UNDELETE.png diff --git a/addons/base/static/src/img/icons/STOCK_UNDERLINE.png b/addons/web/static/src/img/icons/STOCK_UNDERLINE.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNDERLINE.png rename to addons/web/static/src/img/icons/STOCK_UNDERLINE.png diff --git a/addons/base/static/src/img/icons/STOCK_UNDO.png b/addons/web/static/src/img/icons/STOCK_UNDO.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNDO.png rename to addons/web/static/src/img/icons/STOCK_UNDO.png diff --git a/addons/base/static/src/img/icons/STOCK_UNINDENT.png b/addons/web/static/src/img/icons/STOCK_UNINDENT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_UNINDENT.png rename to addons/web/static/src/img/icons/STOCK_UNINDENT.png diff --git a/addons/base/static/src/img/icons/STOCK_YES.png b/addons/web/static/src/img/icons/STOCK_YES.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_YES.png rename to addons/web/static/src/img/icons/STOCK_YES.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_100.png b/addons/web/static/src/img/icons/STOCK_ZOOM_100.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_100.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_100.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_FIT.png b/addons/web/static/src/img/icons/STOCK_ZOOM_FIT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_FIT.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_FIT.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_IN.png b/addons/web/static/src/img/icons/STOCK_ZOOM_IN.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_IN.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_IN.png diff --git a/addons/base/static/src/img/icons/STOCK_ZOOM_OUT.png b/addons/web/static/src/img/icons/STOCK_ZOOM_OUT.png similarity index 100% rename from addons/base/static/src/img/icons/STOCK_ZOOM_OUT.png rename to addons/web/static/src/img/icons/STOCK_ZOOM_OUT.png diff --git a/addons/web/static/src/img/icons/color-picker.png b/addons/web/static/src/img/icons/color-picker.png new file mode 100644 index 00000000000..765294c6bdd Binary files /dev/null and b/addons/web/static/src/img/icons/color-picker.png differ diff --git a/addons/web/static/src/img/icons/gtk-about.png b/addons/web/static/src/img/icons/gtk-about.png new file mode 100644 index 00000000000..1b430a35758 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-about.png differ diff --git a/addons/base/static/src/img/icons/gtk-add.png b/addons/web/static/src/img/icons/gtk-add.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-add.png rename to addons/web/static/src/img/icons/gtk-add.png diff --git a/addons/base/static/src/img/icons/gtk-apply.png b/addons/web/static/src/img/icons/gtk-apply.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-apply.png rename to addons/web/static/src/img/icons/gtk-apply.png diff --git a/addons/web/static/src/img/icons/gtk-bold.png b/addons/web/static/src/img/icons/gtk-bold.png new file mode 100644 index 00000000000..408f25aa20b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-bold.png differ diff --git a/addons/base/static/src/img/icons/gtk-cancel.png b/addons/web/static/src/img/icons/gtk-cancel.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-cancel.png rename to addons/web/static/src/img/icons/gtk-cancel.png diff --git a/addons/web/static/src/img/icons/gtk-cdrom.png b/addons/web/static/src/img/icons/gtk-cdrom.png new file mode 100644 index 00000000000..27e8edd8a0b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-cdrom.png differ diff --git a/addons/web/static/src/img/icons/gtk-clear.png b/addons/web/static/src/img/icons/gtk-clear.png new file mode 100644 index 00000000000..b2874fb84fa Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-clear.png differ diff --git a/addons/base/static/src/img/icons/gtk-close.png b/addons/web/static/src/img/icons/gtk-close.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-close.png rename to addons/web/static/src/img/icons/gtk-close.png diff --git a/addons/web/static/src/img/icons/gtk-color-picker.png b/addons/web/static/src/img/icons/gtk-color-picker.png new file mode 100644 index 00000000000..232d54f8f3b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-color-picker.png differ diff --git a/addons/web/static/src/img/icons/gtk-connect.png b/addons/web/static/src/img/icons/gtk-connect.png new file mode 100644 index 00000000000..c820b54abcc Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-connect.png differ diff --git a/addons/base/static/src/img/icons/gtk-convert.png b/addons/web/static/src/img/icons/gtk-convert.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-convert.png rename to addons/web/static/src/img/icons/gtk-convert.png diff --git a/addons/web/static/src/img/icons/gtk-copy.png b/addons/web/static/src/img/icons/gtk-copy.png new file mode 100644 index 00000000000..3d68da606d2 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-copy.png differ diff --git a/addons/web/static/src/img/icons/gtk-cut.png b/addons/web/static/src/img/icons/gtk-cut.png new file mode 100644 index 00000000000..96681d26968 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-cut.png differ diff --git a/addons/base/static/src/img/icons/gtk-delete.png b/addons/web/static/src/img/icons/gtk-delete.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-delete.png rename to addons/web/static/src/img/icons/gtk-delete.png diff --git a/addons/web/static/src/img/icons/gtk-dialog-authentication.png b/addons/web/static/src/img/icons/gtk-dialog-authentication.png new file mode 100644 index 00000000000..eb411112f83 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-dialog-authentication.png differ diff --git a/addons/web/static/src/img/icons/gtk-dialog-error.png b/addons/web/static/src/img/icons/gtk-dialog-error.png new file mode 100644 index 00000000000..e97bc43504b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-dialog-error.png differ diff --git a/addons/web/static/src/img/icons/gtk-dialog-info.png b/addons/web/static/src/img/icons/gtk-dialog-info.png new file mode 100644 index 00000000000..ed46c3ecdb3 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-dialog-info.png differ diff --git a/addons/web/static/src/img/icons/gtk-dialog-question.png b/addons/web/static/src/img/icons/gtk-dialog-question.png new file mode 100644 index 00000000000..ef68f43f43f Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-dialog-question.png differ diff --git a/addons/web/static/src/img/icons/gtk-dialog-warning.png b/addons/web/static/src/img/icons/gtk-dialog-warning.png new file mode 100644 index 00000000000..65a4d2c7220 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-dialog-warning.png differ diff --git a/addons/web/static/src/img/icons/gtk-directory-remote.png b/addons/web/static/src/img/icons/gtk-directory-remote.png new file mode 100644 index 00000000000..34e737d7c07 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-directory-remote.png differ diff --git a/addons/web/static/src/img/icons/gtk-directory.png b/addons/web/static/src/img/icons/gtk-directory.png new file mode 100644 index 00000000000..8e41b7878a9 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-directory.png differ diff --git a/addons/web/static/src/img/icons/gtk-disconnect.png b/addons/web/static/src/img/icons/gtk-disconnect.png new file mode 100644 index 00000000000..fd188701fc2 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-disconnect.png differ diff --git a/addons/web/static/src/img/icons/gtk-dnd-multiple.png b/addons/web/static/src/img/icons/gtk-dnd-multiple.png new file mode 100644 index 00000000000..aa4c65ad5b1 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-dnd-multiple.png differ diff --git a/addons/base/static/src/img/icons/gtk-dnd.png b/addons/web/static/src/img/icons/gtk-dnd.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-dnd.png rename to addons/web/static/src/img/icons/gtk-dnd.png diff --git a/addons/base/static/src/img/icons/gtk-edit.png b/addons/web/static/src/img/icons/gtk-edit.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-edit.png rename to addons/web/static/src/img/icons/gtk-edit.png diff --git a/addons/base/static/src/img/icons/gtk-execute.png b/addons/web/static/src/img/icons/gtk-execute.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-execute.png rename to addons/web/static/src/img/icons/gtk-execute.png diff --git a/addons/web/static/src/img/icons/gtk-file.png b/addons/web/static/src/img/icons/gtk-file.png new file mode 100644 index 00000000000..fa157156bcc Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-file.png differ diff --git a/addons/web/static/src/img/icons/gtk-find-and-replace.png b/addons/web/static/src/img/icons/gtk-find-and-replace.png new file mode 100644 index 00000000000..b8d8eeec1b2 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-find-and-replace.png differ diff --git a/addons/base/static/src/img/icons/gtk-find.png b/addons/web/static/src/img/icons/gtk-find.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-find.png rename to addons/web/static/src/img/icons/gtk-find.png diff --git a/addons/web/static/src/img/icons/gtk-floppy.png b/addons/web/static/src/img/icons/gtk-floppy.png new file mode 100644 index 00000000000..7d8209cfb6f Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-floppy.png differ diff --git a/addons/web/static/src/img/icons/gtk-fullscreen.png b/addons/web/static/src/img/icons/gtk-fullscreen.png new file mode 100644 index 00000000000..8ddc31e7481 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-fullscreen.png differ diff --git a/addons/base/static/src/img/icons/gtk-go-back.png b/addons/web/static/src/img/icons/gtk-go-back.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-back.png rename to addons/web/static/src/img/icons/gtk-go-back.png diff --git a/addons/base/static/src/img/icons/gtk-go-down.png b/addons/web/static/src/img/icons/gtk-go-down.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-down.png rename to addons/web/static/src/img/icons/gtk-go-down.png diff --git a/addons/base/static/src/img/icons/gtk-go-forward.png b/addons/web/static/src/img/icons/gtk-go-forward.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-forward.png rename to addons/web/static/src/img/icons/gtk-go-forward.png diff --git a/addons/base/static/src/img/icons/gtk-go-up.png b/addons/web/static/src/img/icons/gtk-go-up.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-go-up.png rename to addons/web/static/src/img/icons/gtk-go-up.png diff --git a/addons/web/static/src/img/icons/gtk-goto-bottom.png b/addons/web/static/src/img/icons/gtk-goto-bottom.png new file mode 100644 index 00000000000..be52840dee1 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-goto-bottom.png differ diff --git a/addons/web/static/src/img/icons/gtk-goto-first.png b/addons/web/static/src/img/icons/gtk-goto-first.png new file mode 100644 index 00000000000..3d00e36d696 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-goto-first.png differ diff --git a/addons/base/static/src/img/icons/gtk-goto-last.png b/addons/web/static/src/img/icons/gtk-goto-last.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-goto-last.png rename to addons/web/static/src/img/icons/gtk-goto-last.png diff --git a/addons/web/static/src/img/icons/gtk-goto-top.png b/addons/web/static/src/img/icons/gtk-goto-top.png new file mode 100644 index 00000000000..227a91e5157 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-goto-top.png differ diff --git a/addons/web/static/src/img/icons/gtk-harddisk.png b/addons/web/static/src/img/icons/gtk-harddisk.png new file mode 100644 index 00000000000..73e5ef0a82e Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-harddisk.png differ diff --git a/addons/web/static/src/img/icons/gtk-help.png b/addons/web/static/src/img/icons/gtk-help.png new file mode 100644 index 00000000000..f8e17009dd6 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-help.png differ diff --git a/addons/web/static/src/img/icons/gtk-home.png b/addons/web/static/src/img/icons/gtk-home.png new file mode 100644 index 00000000000..9d3d50d0fcb Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-home.png differ diff --git a/addons/base/static/src/img/icons/gtk-indent.png b/addons/web/static/src/img/icons/gtk-indent.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-indent.png rename to addons/web/static/src/img/icons/gtk-indent.png diff --git a/addons/base/static/src/img/icons/gtk-index.png b/addons/web/static/src/img/icons/gtk-index.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-index.png rename to addons/web/static/src/img/icons/gtk-index.png diff --git a/addons/web/static/src/img/icons/gtk-info.png b/addons/web/static/src/img/icons/gtk-info.png new file mode 100644 index 00000000000..272019f5c99 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-info.png differ diff --git a/addons/web/static/src/img/icons/gtk-italic.png b/addons/web/static/src/img/icons/gtk-italic.png new file mode 100644 index 00000000000..26c57226a31 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-italic.png differ diff --git a/addons/base/static/src/img/icons/gtk-jump-to.png b/addons/web/static/src/img/icons/gtk-jump-to.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-jump-to.png rename to addons/web/static/src/img/icons/gtk-jump-to.png diff --git a/addons/web/static/src/img/icons/gtk-justify-center.png b/addons/web/static/src/img/icons/gtk-justify-center.png new file mode 100644 index 00000000000..d5f514298eb Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-justify-center.png differ diff --git a/addons/base/static/src/img/icons/gtk-justify-fill.png b/addons/web/static/src/img/icons/gtk-justify-fill.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-justify-fill.png rename to addons/web/static/src/img/icons/gtk-justify-fill.png diff --git a/addons/web/static/src/img/icons/gtk-justify-left.png b/addons/web/static/src/img/icons/gtk-justify-left.png new file mode 100644 index 00000000000..ecb76b117eb Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-justify-left.png differ diff --git a/addons/web/static/src/img/icons/gtk-justify-right.png b/addons/web/static/src/img/icons/gtk-justify-right.png new file mode 100644 index 00000000000..3cd4d161420 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-justify-right.png differ diff --git a/addons/web/static/src/img/icons/gtk-leave-fullscreen.png b/addons/web/static/src/img/icons/gtk-leave-fullscreen.png new file mode 100644 index 00000000000..15bc8ab7d7b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-leave-fullscreen.png differ diff --git a/addons/web/static/src/img/icons/gtk-media-forward.png b/addons/web/static/src/img/icons/gtk-media-forward.png new file mode 100644 index 00000000000..e5e198fbb79 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-media-forward.png differ diff --git a/addons/web/static/src/img/icons/gtk-media-next.png b/addons/web/static/src/img/icons/gtk-media-next.png new file mode 100644 index 00000000000..e0aa2431cf0 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-media-next.png differ diff --git a/addons/base/static/src/img/icons/gtk-media-pause.png b/addons/web/static/src/img/icons/gtk-media-pause.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-media-pause.png rename to addons/web/static/src/img/icons/gtk-media-pause.png diff --git a/addons/base/static/src/img/icons/gtk-media-play.png b/addons/web/static/src/img/icons/gtk-media-play.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-media-play.png rename to addons/web/static/src/img/icons/gtk-media-play.png diff --git a/addons/web/static/src/img/icons/gtk-media-previous.png b/addons/web/static/src/img/icons/gtk-media-previous.png new file mode 100644 index 00000000000..756899e0bc1 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-media-previous.png differ diff --git a/addons/web/static/src/img/icons/gtk-media-record.png b/addons/web/static/src/img/icons/gtk-media-record.png new file mode 100644 index 00000000000..904974c81e5 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-media-record.png differ diff --git a/addons/web/static/src/img/icons/gtk-media-rewind.png b/addons/web/static/src/img/icons/gtk-media-rewind.png new file mode 100644 index 00000000000..9c22d9e2778 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-media-rewind.png differ diff --git a/addons/web/static/src/img/icons/gtk-media-stop.png b/addons/web/static/src/img/icons/gtk-media-stop.png new file mode 100644 index 00000000000..128cc2313ec Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-media-stop.png differ diff --git a/addons/web/static/src/img/icons/gtk-missing-image.png b/addons/web/static/src/img/icons/gtk-missing-image.png new file mode 100644 index 00000000000..cc69ed33e4b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-missing-image.png differ diff --git a/addons/base/static/src/img/icons/gtk-network.png b/addons/web/static/src/img/icons/gtk-network.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-network.png rename to addons/web/static/src/img/icons/gtk-network.png diff --git a/addons/base/static/src/img/icons/gtk-new.png b/addons/web/static/src/img/icons/gtk-new.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-new.png rename to addons/web/static/src/img/icons/gtk-new.png diff --git a/addons/base/static/src/img/icons/gtk-no.png b/addons/web/static/src/img/icons/gtk-no.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-no.png rename to addons/web/static/src/img/icons/gtk-no.png diff --git a/addons/base/static/src/img/icons/gtk-ok.png b/addons/web/static/src/img/icons/gtk-ok.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-ok.png rename to addons/web/static/src/img/icons/gtk-ok.png diff --git a/addons/base/static/src/img/icons/gtk-open.png b/addons/web/static/src/img/icons/gtk-open.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-open.png rename to addons/web/static/src/img/icons/gtk-open.png diff --git a/addons/web/static/src/img/icons/gtk-paste-v.png b/addons/web/static/src/img/icons/gtk-paste-v.png new file mode 100644 index 00000000000..76ec896f70e Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-paste-v.png differ diff --git a/addons/web/static/src/img/icons/gtk-paste.png b/addons/web/static/src/img/icons/gtk-paste.png new file mode 100644 index 00000000000..840f26c8b38 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-paste.png differ diff --git a/addons/web/static/src/img/icons/gtk-preferences.png b/addons/web/static/src/img/icons/gtk-preferences.png new file mode 100644 index 00000000000..9ba17a0ab20 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-preferences.png differ diff --git a/addons/web/static/src/img/icons/gtk-print-preview.png b/addons/web/static/src/img/icons/gtk-print-preview.png new file mode 100644 index 00000000000..ab15fcbd307 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-print-preview.png differ diff --git a/addons/base/static/src/img/icons/gtk-print.png b/addons/web/static/src/img/icons/gtk-print.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-print.png rename to addons/web/static/src/img/icons/gtk-print.png diff --git a/addons/web/static/src/img/icons/gtk-properties.png b/addons/web/static/src/img/icons/gtk-properties.png new file mode 100644 index 00000000000..894415ec1ce Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-properties.png differ diff --git a/addons/web/static/src/img/icons/gtk-quit.png b/addons/web/static/src/img/icons/gtk-quit.png new file mode 100644 index 00000000000..50b5144660b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-quit.png differ diff --git a/addons/base/static/src/img/icons/gtk-redo.png b/addons/web/static/src/img/icons/gtk-redo.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-redo.png rename to addons/web/static/src/img/icons/gtk-redo.png diff --git a/addons/web/static/src/img/icons/gtk-refresh.png b/addons/web/static/src/img/icons/gtk-refresh.png new file mode 100644 index 00000000000..7474728b4c0 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-refresh.png differ diff --git a/addons/base/static/src/img/icons/gtk-remove.png b/addons/web/static/src/img/icons/gtk-remove.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-remove.png rename to addons/web/static/src/img/icons/gtk-remove.png diff --git a/addons/web/static/src/img/icons/gtk-revert-to-saved.png b/addons/web/static/src/img/icons/gtk-revert-to-saved.png new file mode 100644 index 00000000000..eaf54584edf Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-revert-to-saved.png differ diff --git a/addons/web/static/src/img/icons/gtk-save-as.png b/addons/web/static/src/img/icons/gtk-save-as.png new file mode 100644 index 00000000000..1831e4e0a4b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-save-as.png differ diff --git a/addons/base/static/src/img/icons/gtk-save.png b/addons/web/static/src/img/icons/gtk-save.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-save.png rename to addons/web/static/src/img/icons/gtk-save.png diff --git a/addons/web/static/src/img/icons/gtk-select-color.png b/addons/web/static/src/img/icons/gtk-select-color.png new file mode 100644 index 00000000000..12b015df107 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-select-color.png differ diff --git a/addons/web/static/src/img/icons/gtk-select-font.png b/addons/web/static/src/img/icons/gtk-select-font.png new file mode 100644 index 00000000000..66e606313a5 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-select-font.png differ diff --git a/addons/web/static/src/img/icons/gtk-sort-ascending.png b/addons/web/static/src/img/icons/gtk-sort-ascending.png new file mode 100644 index 00000000000..a648fa0d359 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-sort-ascending.png differ diff --git a/addons/base/static/src/img/icons/gtk-sort-descending.png b/addons/web/static/src/img/icons/gtk-sort-descending.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-sort-descending.png rename to addons/web/static/src/img/icons/gtk-sort-descending.png diff --git a/addons/web/static/src/img/icons/gtk-spell-check.png b/addons/web/static/src/img/icons/gtk-spell-check.png new file mode 100644 index 00000000000..698f7c24a43 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-spell-check.png differ diff --git a/addons/base/static/src/img/icons/gtk-stop.png b/addons/web/static/src/img/icons/gtk-stop.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-stop.png rename to addons/web/static/src/img/icons/gtk-stop.png diff --git a/addons/web/static/src/img/icons/gtk-strikethrough.png b/addons/web/static/src/img/icons/gtk-strikethrough.png new file mode 100644 index 00000000000..1c11f214622 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-strikethrough.png differ diff --git a/addons/web/static/src/img/icons/gtk-undelete.png b/addons/web/static/src/img/icons/gtk-undelete.png new file mode 100644 index 00000000000..c44b940c03b Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-undelete.png differ diff --git a/addons/web/static/src/img/icons/gtk-underline.png b/addons/web/static/src/img/icons/gtk-underline.png new file mode 100644 index 00000000000..7dbb5d7e60a Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-underline.png differ diff --git a/addons/base/static/src/img/icons/gtk-undo.png b/addons/web/static/src/img/icons/gtk-undo.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-undo.png rename to addons/web/static/src/img/icons/gtk-undo.png diff --git a/addons/web/static/src/img/icons/gtk-unindent.png b/addons/web/static/src/img/icons/gtk-unindent.png new file mode 100644 index 00000000000..8ace914c1bd Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-unindent.png differ diff --git a/addons/base/static/src/img/icons/gtk-yes.png b/addons/web/static/src/img/icons/gtk-yes.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-yes.png rename to addons/web/static/src/img/icons/gtk-yes.png diff --git a/addons/web/static/src/img/icons/gtk-zoom-100.png b/addons/web/static/src/img/icons/gtk-zoom-100.png new file mode 100644 index 00000000000..5193406b787 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-zoom-100.png differ diff --git a/addons/base/static/src/img/icons/gtk-zoom-fit.png b/addons/web/static/src/img/icons/gtk-zoom-fit.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-zoom-fit.png rename to addons/web/static/src/img/icons/gtk-zoom-fit.png diff --git a/addons/base/static/src/img/icons/gtk-zoom-in.png b/addons/web/static/src/img/icons/gtk-zoom-in.png similarity index 100% rename from addons/base/static/src/img/icons/gtk-zoom-in.png rename to addons/web/static/src/img/icons/gtk-zoom-in.png diff --git a/addons/web/static/src/img/icons/gtk-zoom-out.png b/addons/web/static/src/img/icons/gtk-zoom-out.png new file mode 100644 index 00000000000..0da5ee7ec13 Binary files /dev/null and b/addons/web/static/src/img/icons/gtk-zoom-out.png differ diff --git a/addons/base/static/src/img/icons/index1.jpeg b/addons/web/static/src/img/icons/index1.jpeg similarity index 100% rename from addons/base/static/src/img/icons/index1.jpeg rename to addons/web/static/src/img/icons/index1.jpeg diff --git a/addons/base/static/src/img/icons/index2.jpeg b/addons/web/static/src/img/icons/index2.jpeg similarity index 100% rename from addons/base/static/src/img/icons/index2.jpeg rename to addons/web/static/src/img/icons/index2.jpeg diff --git a/addons/web/static/src/img/icons/lead-stage-lost.png b/addons/web/static/src/img/icons/lead-stage-lost.png new file mode 100644 index 00000000000..e1f98a26b59 Binary files /dev/null and b/addons/web/static/src/img/icons/lead-stage-lost.png differ diff --git a/addons/web/static/src/img/icons/lead-stage-pending.png b/addons/web/static/src/img/icons/lead-stage-pending.png new file mode 100644 index 00000000000..9e9544ee178 Binary files /dev/null and b/addons/web/static/src/img/icons/lead-stage-pending.png differ diff --git a/addons/web/static/src/img/icons/lead-stage-won.png b/addons/web/static/src/img/icons/lead-stage-won.png new file mode 100644 index 00000000000..02effd5f14c Binary files /dev/null and b/addons/web/static/src/img/icons/lead-stage-won.png differ diff --git a/addons/web/static/src/img/icons/star-off.png b/addons/web/static/src/img/icons/star-off.png new file mode 100644 index 00000000000..7cd0afd4f03 Binary files /dev/null and b/addons/web/static/src/img/icons/star-off.png differ diff --git a/addons/web/static/src/img/icons/star-on.png b/addons/web/static/src/img/icons/star-on.png new file mode 100644 index 00000000000..4f2295e1395 Binary files /dev/null and b/addons/web/static/src/img/icons/star-on.png differ diff --git a/addons/web/static/src/img/icons/stock.png b/addons/web/static/src/img/icons/stock.png new file mode 100644 index 00000000000..ca38181db90 Binary files /dev/null and b/addons/web/static/src/img/icons/stock.png differ diff --git a/addons/base/static/src/img/ui/field_calendar.png b/addons/web/static/src/img/icons/stock_calendar.png similarity index 100% rename from addons/base/static/src/img/ui/field_calendar.png rename to addons/web/static/src/img/icons/stock_calendar.png diff --git a/addons/web/static/src/img/icons/stock_gantt.png b/addons/web/static/src/img/icons/stock_gantt.png new file mode 100644 index 00000000000..585761b9220 Binary files /dev/null and b/addons/web/static/src/img/icons/stock_gantt.png differ diff --git a/addons/web/static/src/img/icons/stock_graph.png b/addons/web/static/src/img/icons/stock_graph.png new file mode 100644 index 00000000000..4d8310621ea Binary files /dev/null and b/addons/web/static/src/img/icons/stock_graph.png differ diff --git a/addons/web/static/src/img/icons/stock_log.png b/addons/web/static/src/img/icons/stock_log.png new file mode 100644 index 00000000000..32af4dd6901 Binary files /dev/null and b/addons/web/static/src/img/icons/stock_log.png differ diff --git a/addons/base/static/src/img/stock_person.png b/addons/web/static/src/img/icons/stock_person.png similarity index 100% rename from addons/base/static/src/img/stock_person.png rename to addons/web/static/src/img/icons/stock_person.png diff --git a/addons/base/static/src/img/icons/terp-translate.png b/addons/web/static/src/img/icons/stock_translate.png similarity index 100% rename from addons/base/static/src/img/icons/terp-translate.png rename to addons/web/static/src/img/icons/stock_translate.png diff --git a/addons/base/static/src/img/icons/terp-accessories-archiver+.png b/addons/web/static/src/img/icons/terp-accessories-archiver+.png similarity index 100% rename from addons/base/static/src/img/icons/terp-accessories-archiver+.png rename to addons/web/static/src/img/icons/terp-accessories-archiver+.png diff --git a/addons/base/static/src/img/icons/terp-accessories-archiver-minus.png b/addons/web/static/src/img/icons/terp-accessories-archiver-minus.png similarity index 100% rename from addons/base/static/src/img/icons/terp-accessories-archiver-minus.png rename to addons/web/static/src/img/icons/terp-accessories-archiver-minus.png diff --git a/addons/base/static/src/img/icons/terp-accessories-archiver.png b/addons/web/static/src/img/icons/terp-accessories-archiver.png similarity index 100% rename from addons/base/static/src/img/icons/terp-accessories-archiver.png rename to addons/web/static/src/img/icons/terp-accessories-archiver.png diff --git a/addons/base/static/src/img/icons/terp-account.png b/addons/web/static/src/img/icons/terp-account.png similarity index 100% rename from addons/base/static/src/img/icons/terp-account.png rename to addons/web/static/src/img/icons/terp-account.png diff --git a/addons/base/static/src/img/icons/terp-administration.png b/addons/web/static/src/img/icons/terp-administration.png similarity index 100% rename from addons/base/static/src/img/icons/terp-administration.png rename to addons/web/static/src/img/icons/terp-administration.png diff --git a/addons/base/static/src/img/icons/terp-calendar.png b/addons/web/static/src/img/icons/terp-calendar.png similarity index 100% rename from addons/base/static/src/img/icons/terp-calendar.png rename to addons/web/static/src/img/icons/terp-calendar.png diff --git a/addons/base/static/src/img/icons/terp-call-start.png b/addons/web/static/src/img/icons/terp-call-start.png similarity index 100% rename from addons/base/static/src/img/icons/terp-call-start.png rename to addons/web/static/src/img/icons/terp-call-start.png diff --git a/addons/base/static/src/img/icons/terp-camera_test.png b/addons/web/static/src/img/icons/terp-camera_test.png similarity index 100% rename from addons/base/static/src/img/icons/terp-camera_test.png rename to addons/web/static/src/img/icons/terp-camera_test.png diff --git a/addons/base/static/src/img/icons/terp-check.png b/addons/web/static/src/img/icons/terp-check.png similarity index 100% rename from addons/base/static/src/img/icons/terp-check.png rename to addons/web/static/src/img/icons/terp-check.png diff --git a/addons/base/static/src/img/icons/terp-crm.png b/addons/web/static/src/img/icons/terp-crm.png similarity index 100% rename from addons/base/static/src/img/icons/terp-crm.png rename to addons/web/static/src/img/icons/terp-crm.png diff --git a/addons/base/static/src/img/icons/terp-dialog-close.png b/addons/web/static/src/img/icons/terp-dialog-close.png similarity index 100% rename from addons/base/static/src/img/icons/terp-dialog-close.png rename to addons/web/static/src/img/icons/terp-dialog-close.png diff --git a/addons/base/static/src/img/icons/terp-document-new.png b/addons/web/static/src/img/icons/terp-document-new.png similarity index 100% rename from addons/base/static/src/img/icons/terp-document-new.png rename to addons/web/static/src/img/icons/terp-document-new.png diff --git a/addons/base/static/src/img/icons/terp-dolar.png b/addons/web/static/src/img/icons/terp-dolar.png similarity index 100% rename from addons/base/static/src/img/icons/terp-dolar.png rename to addons/web/static/src/img/icons/terp-dolar.png diff --git a/addons/base/static/src/img/icons/terp-dolar_ok!.png b/addons/web/static/src/img/icons/terp-dolar_ok!.png similarity index 100% rename from addons/base/static/src/img/icons/terp-dolar_ok!.png rename to addons/web/static/src/img/icons/terp-dolar_ok!.png diff --git a/addons/base/static/src/img/icons/terp-emblem-important.png b/addons/web/static/src/img/icons/terp-emblem-important.png similarity index 100% rename from addons/base/static/src/img/icons/terp-emblem-important.png rename to addons/web/static/src/img/icons/terp-emblem-important.png diff --git a/addons/base/static/src/img/icons/terp-face-plain.png b/addons/web/static/src/img/icons/terp-face-plain.png similarity index 100% rename from addons/base/static/src/img/icons/terp-face-plain.png rename to addons/web/static/src/img/icons/terp-face-plain.png diff --git a/addons/base/static/src/img/icons/terp-folder-blue.png b/addons/web/static/src/img/icons/terp-folder-blue.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-blue.png rename to addons/web/static/src/img/icons/terp-folder-blue.png diff --git a/addons/base/static/src/img/icons/terp-folder-green.png b/addons/web/static/src/img/icons/terp-folder-green.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-green.png rename to addons/web/static/src/img/icons/terp-folder-green.png diff --git a/addons/base/static/src/img/icons/terp-folder-orange.png b/addons/web/static/src/img/icons/terp-folder-orange.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-orange.png rename to addons/web/static/src/img/icons/terp-folder-orange.png diff --git a/addons/base/static/src/img/icons/terp-folder-violet.png b/addons/web/static/src/img/icons/terp-folder-violet.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-violet.png rename to addons/web/static/src/img/icons/terp-folder-violet.png diff --git a/addons/base/static/src/img/icons/terp-folder-yellow.png b/addons/web/static/src/img/icons/terp-folder-yellow.png similarity index 100% rename from addons/base/static/src/img/icons/terp-folder-yellow.png rename to addons/web/static/src/img/icons/terp-folder-yellow.png diff --git a/addons/base/static/src/img/icons/terp-gdu-smart-failing.png b/addons/web/static/src/img/icons/terp-gdu-smart-failing.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gdu-smart-failing.png rename to addons/web/static/src/img/icons/terp-gdu-smart-failing.png diff --git a/addons/base/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png b/addons/web/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png rename to addons/web/static/src/img/icons/terp-gnome-cpu-frequency-applet+.png diff --git a/addons/base/static/src/img/icons/terp-go-home.png b/addons/web/static/src/img/icons/terp-go-home.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-home.png rename to addons/web/static/src/img/icons/terp-go-home.png diff --git a/addons/base/static/src/img/icons/terp-go-month.png b/addons/web/static/src/img/icons/terp-go-month.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-month.png rename to addons/web/static/src/img/icons/terp-go-month.png diff --git a/addons/base/static/src/img/icons/terp-go-today.png b/addons/web/static/src/img/icons/terp-go-today.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-today.png rename to addons/web/static/src/img/icons/terp-go-today.png diff --git a/addons/base/static/src/img/icons/terp-go-week.png b/addons/web/static/src/img/icons/terp-go-week.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-week.png rename to addons/web/static/src/img/icons/terp-go-week.png diff --git a/addons/base/static/src/img/icons/terp-go-year.png b/addons/web/static/src/img/icons/terp-go-year.png similarity index 100% rename from addons/base/static/src/img/icons/terp-go-year.png rename to addons/web/static/src/img/icons/terp-go-year.png diff --git a/addons/base/static/src/img/icons/terp-graph.png b/addons/web/static/src/img/icons/terp-graph.png similarity index 100% rename from addons/base/static/src/img/icons/terp-graph.png rename to addons/web/static/src/img/icons/terp-graph.png diff --git a/addons/base/static/src/img/icons/terp-gtk-go-back-ltr.png b/addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-go-back-ltr.png rename to addons/web/static/src/img/icons/terp-gtk-go-back-ltr.png diff --git a/addons/base/static/src/img/icons/terp-gtk-go-back-rtl.png b/addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-go-back-rtl.png rename to addons/web/static/src/img/icons/terp-gtk-go-back-rtl.png diff --git a/addons/base/static/src/img/icons/terp-gtk-jump-to-ltr.png b/addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-jump-to-ltr.png rename to addons/web/static/src/img/icons/terp-gtk-jump-to-ltr.png diff --git a/addons/base/static/src/img/icons/terp-gtk-jump-to-rtl.png b/addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-jump-to-rtl.png rename to addons/web/static/src/img/icons/terp-gtk-jump-to-rtl.png diff --git a/addons/base/static/src/img/icons/terp-gtk-media-pause.png b/addons/web/static/src/img/icons/terp-gtk-media-pause.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-media-pause.png rename to addons/web/static/src/img/icons/terp-gtk-media-pause.png diff --git a/addons/base/static/src/img/icons/terp-gtk-select-all.png b/addons/web/static/src/img/icons/terp-gtk-select-all.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-select-all.png rename to addons/web/static/src/img/icons/terp-gtk-select-all.png diff --git a/addons/base/static/src/img/icons/terp-gtk-stop.png b/addons/web/static/src/img/icons/terp-gtk-stop.png similarity index 100% rename from addons/base/static/src/img/icons/terp-gtk-stop.png rename to addons/web/static/src/img/icons/terp-gtk-stop.png diff --git a/addons/base/static/src/img/icons/terp-hr.png b/addons/web/static/src/img/icons/terp-hr.png similarity index 100% rename from addons/base/static/src/img/icons/terp-hr.png rename to addons/web/static/src/img/icons/terp-hr.png diff --git a/addons/base/static/src/img/icons/terp-idea.png b/addons/web/static/src/img/icons/terp-idea.png similarity index 100% rename from addons/base/static/src/img/icons/terp-idea.png rename to addons/web/static/src/img/icons/terp-idea.png diff --git a/addons/base/static/src/img/icons/terp-locked.png b/addons/web/static/src/img/icons/terp-locked.png similarity index 100% rename from addons/base/static/src/img/icons/terp-locked.png rename to addons/web/static/src/img/icons/terp-locked.png diff --git a/addons/base/static/src/img/icons/terp-mail-.png b/addons/web/static/src/img/icons/terp-mail-.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-.png rename to addons/web/static/src/img/icons/terp-mail-.png diff --git a/addons/base/static/src/img/icons/terp-mail-forward.png b/addons/web/static/src/img/icons/terp-mail-forward.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-forward.png rename to addons/web/static/src/img/icons/terp-mail-forward.png diff --git a/addons/base/static/src/img/icons/terp-mail-message-new.png b/addons/web/static/src/img/icons/terp-mail-message-new.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-message-new.png rename to addons/web/static/src/img/icons/terp-mail-message-new.png diff --git a/addons/base/static/src/img/icons/terp-mail-replied.png b/addons/web/static/src/img/icons/terp-mail-replied.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail-replied.png rename to addons/web/static/src/img/icons/terp-mail-replied.png diff --git a/addons/base/static/src/img/icons/terp-mail_delete.png b/addons/web/static/src/img/icons/terp-mail_delete.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mail_delete.png rename to addons/web/static/src/img/icons/terp-mail_delete.png diff --git a/addons/base/static/src/img/icons/terp-marketing.png b/addons/web/static/src/img/icons/terp-marketing.png similarity index 100% rename from addons/base/static/src/img/icons/terp-marketing.png rename to addons/web/static/src/img/icons/terp-marketing.png diff --git a/addons/base/static/src/img/icons/terp-mrp.png b/addons/web/static/src/img/icons/terp-mrp.png similarity index 100% rename from addons/base/static/src/img/icons/terp-mrp.png rename to addons/web/static/src/img/icons/terp-mrp.png diff --git a/addons/base/static/src/img/icons/terp-partner.png b/addons/web/static/src/img/icons/terp-partner.png similarity index 100% rename from addons/base/static/src/img/icons/terp-partner.png rename to addons/web/static/src/img/icons/terp-partner.png diff --git a/addons/base/static/src/img/icons/terp-personal+.png b/addons/web/static/src/img/icons/terp-personal+.png similarity index 100% rename from addons/base/static/src/img/icons/terp-personal+.png rename to addons/web/static/src/img/icons/terp-personal+.png diff --git a/addons/base/static/src/img/icons/terp-personal-.png b/addons/web/static/src/img/icons/terp-personal-.png similarity index 100% rename from addons/base/static/src/img/icons/terp-personal-.png rename to addons/web/static/src/img/icons/terp-personal-.png diff --git a/addons/base/static/src/img/icons/terp-personal.png b/addons/web/static/src/img/icons/terp-personal.png similarity index 100% rename from addons/base/static/src/img/icons/terp-personal.png rename to addons/web/static/src/img/icons/terp-personal.png diff --git a/addons/base/static/src/img/icons/terp-product.png b/addons/web/static/src/img/icons/terp-product.png similarity index 100% rename from addons/base/static/src/img/icons/terp-product.png rename to addons/web/static/src/img/icons/terp-product.png diff --git a/addons/base/static/src/img/icons/terp-project.png b/addons/web/static/src/img/icons/terp-project.png similarity index 100% rename from addons/base/static/src/img/icons/terp-project.png rename to addons/web/static/src/img/icons/terp-project.png diff --git a/addons/base/static/src/img/icons/terp-purchase.png b/addons/web/static/src/img/icons/terp-purchase.png similarity index 100% rename from addons/base/static/src/img/icons/terp-purchase.png rename to addons/web/static/src/img/icons/terp-purchase.png diff --git a/addons/base/static/src/img/icons/terp-rating-rated.png b/addons/web/static/src/img/icons/terp-rating-rated.png similarity index 100% rename from addons/base/static/src/img/icons/terp-rating-rated.png rename to addons/web/static/src/img/icons/terp-rating-rated.png diff --git a/addons/base/static/src/img/icons/terp-report.png b/addons/web/static/src/img/icons/terp-report.png similarity index 100% rename from addons/base/static/src/img/icons/terp-report.png rename to addons/web/static/src/img/icons/terp-report.png diff --git a/addons/base/static/src/img/icons/terp-sale.png b/addons/web/static/src/img/icons/terp-sale.png similarity index 100% rename from addons/base/static/src/img/icons/terp-sale.png rename to addons/web/static/src/img/icons/terp-sale.png diff --git a/addons/base/static/src/img/icons/terp-stage.png b/addons/web/static/src/img/icons/terp-stage.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stage.png rename to addons/web/static/src/img/icons/terp-stage.png diff --git a/addons/base/static/src/img/icons/terp-stock.png b/addons/web/static/src/img/icons/terp-stock.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock.png rename to addons/web/static/src/img/icons/terp-stock.png diff --git a/addons/base/static/src/img/icons/terp-stock_align_left_24.png b/addons/web/static/src/img/icons/terp-stock_align_left_24.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_align_left_24.png rename to addons/web/static/src/img/icons/terp-stock_align_left_24.png diff --git a/addons/base/static/src/img/icons/terp-stock_effects-object-colorize.png b/addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_effects-object-colorize.png rename to addons/web/static/src/img/icons/terp-stock_effects-object-colorize.png diff --git a/addons/base/static/src/img/icons/terp-stock_format-default.png b/addons/web/static/src/img/icons/terp-stock_format-default.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_format-default.png rename to addons/web/static/src/img/icons/terp-stock_format-default.png diff --git a/addons/base/static/src/img/icons/terp-stock_format-scientific.png b/addons/web/static/src/img/icons/terp-stock_format-scientific.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_format-scientific.png rename to addons/web/static/src/img/icons/terp-stock_format-scientific.png diff --git a/addons/base/static/src/img/icons/terp-stock_symbol-selection.png b/addons/web/static/src/img/icons/terp-stock_symbol-selection.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_symbol-selection.png rename to addons/web/static/src/img/icons/terp-stock_symbol-selection.png diff --git a/addons/base/static/src/img/icons/terp-stock_zoom.png b/addons/web/static/src/img/icons/terp-stock_zoom.png similarity index 100% rename from addons/base/static/src/img/icons/terp-stock_zoom.png rename to addons/web/static/src/img/icons/terp-stock_zoom.png diff --git a/addons/base/static/src/img/icons/terp-tools.png b/addons/web/static/src/img/icons/terp-tools.png similarity index 100% rename from addons/base/static/src/img/icons/terp-tools.png rename to addons/web/static/src/img/icons/terp-tools.png diff --git a/addons/web/static/src/img/icons/terp-translate.png b/addons/web/static/src/img/icons/terp-translate.png new file mode 100644 index 00000000000..5ab41d49343 Binary files /dev/null and b/addons/web/static/src/img/icons/terp-translate.png differ diff --git a/addons/base/static/src/img/iconset-d-drop.gif b/addons/web/static/src/img/iconset-d-drop.gif similarity index 100% rename from addons/base/static/src/img/iconset-d-drop.gif rename to addons/web/static/src/img/iconset-d-drop.gif diff --git a/addons/base/static/src/img/logo.png b/addons/web/static/src/img/logo.png similarity index 100% rename from addons/base/static/src/img/logo.png rename to addons/web/static/src/img/logo.png diff --git a/addons/base/static/src/img/partner.png b/addons/web/static/src/img/partner.png similarity index 100% rename from addons/base/static/src/img/partner.png rename to addons/web/static/src/img/partner.png diff --git a/addons/base/static/src/img/placeholder.png b/addons/web/static/src/img/placeholder.png similarity index 100% rename from addons/base/static/src/img/placeholder.png rename to addons/web/static/src/img/placeholder.png diff --git a/addons/base/static/src/img/product.png b/addons/web/static/src/img/product.png similarity index 100% rename from addons/base/static/src/img/product.png rename to addons/web/static/src/img/product.png diff --git a/addons/base/static/src/img/remove-shortcut.png b/addons/web/static/src/img/remove-shortcut.png similarity index 100% rename from addons/base/static/src/img/remove-shortcut.png rename to addons/web/static/src/img/remove-shortcut.png diff --git a/addons/web/static/src/img/stock_person.png b/addons/web/static/src/img/stock_person.png new file mode 100644 index 00000000000..202cf0ee6c5 Binary files /dev/null and b/addons/web/static/src/img/stock_person.png differ diff --git a/addons/base/static/src/img/throbber.gif b/addons/web/static/src/img/throbber.gif similarity index 100% rename from addons/base/static/src/img/throbber.gif rename to addons/web/static/src/img/throbber.gif diff --git a/addons/base/static/src/img/throbber2.gif b/addons/web/static/src/img/throbber2.gif similarity index 100% rename from addons/base/static/src/img/throbber2.gif rename to addons/web/static/src/img/throbber2.gif diff --git a/addons/base/static/src/img/toggle-a-bg.png b/addons/web/static/src/img/toggle-a-bg.png similarity index 100% rename from addons/base/static/src/img/toggle-a-bg.png rename to addons/web/static/src/img/toggle-a-bg.png diff --git a/addons/web/static/src/img/ui/field_calendar.png b/addons/web/static/src/img/ui/field_calendar.png new file mode 100644 index 00000000000..99a1f3f9ef1 Binary files /dev/null and b/addons/web/static/src/img/ui/field_calendar.png differ diff --git a/addons/base/static/src/img/ui/group-expanded.png b/addons/web/static/src/img/ui/group-expanded.png similarity index 100% rename from addons/base/static/src/img/ui/group-expanded.png rename to addons/web/static/src/img/ui/group-expanded.png diff --git a/addons/base/static/src/img/ui/group-folded.png b/addons/web/static/src/img/ui/group-folded.png similarity index 100% rename from addons/base/static/src/img/ui/group-folded.png rename to addons/web/static/src/img/ui/group-folded.png diff --git a/addons/base/static/src/img/warning.png b/addons/web/static/src/img/warning.png similarity index 100% rename from addons/base/static/src/img/warning.png rename to addons/web/static/src/img/warning.png diff --git a/addons/base/static/src/js/boot.js b/addons/web/static/src/js/boot.js similarity index 62% rename from addons/base/static/src/js/boot.js rename to addons/web/static/src/js/boot.js index 8fe62d2e5a4..38f8eaa1e7c 100644 --- a/addons/base/static/src/js/boot.js +++ b/addons/web/static/src/js/boot.js @@ -5,7 +5,6 @@ /** * @name openerp * @namespace openerp - * @namespace window.openerp */ (function() { if (this.openerp) @@ -26,18 +25,18 @@ var new_instance = { // links to the global openerp _openerp: openerp, - // Only base will be loaded, the rest will be by loaded by - // openerp.base.Connection on the first connection + // Only web will be loaded, the rest will be by loaded by + // openerp.web.Connection on the first connection _modules_loaded: false, // this unique id will be replaced by hostname_databasename by - // openerp.base.Connection on the first connection + // openerp.web.Connection on the first connection _session_id: "session" + session_counter++, - base: {}, + web: {}, web_mobile: {} }; openerp.sessions[new_instance._session_id] = new_instance; if (!skip_init){ - openerp.base(new_instance); + openerp.web(new_instance); } return new_instance; } @@ -45,21 +44,24 @@ })(); /*--------------------------------------------------------- - * OpenERP Web base module split + * OpenERP Web web module split *---------------------------------------------------------*/ -openerp.base = function(instance) { - openerp.base.core(instance); - if (openerp.base.dates) { - openerp.base.dates(instance); +/** + * @namespace + */ +openerp.web = function(instance) { + openerp.web.core(instance); + if (openerp.web.dates) { + openerp.web.dates(instance); } - openerp.base.formats(instance); - openerp.base.chrome(instance); - openerp.base.data(instance); - files = ["views","search","list","form","list_editable","web_mobile","view_tree","data_export","view_editor"]; - for(i=0; i 1) { error.type = split.shift(); error.data.fault_code = error.data.fault_code.substr(error.type.length + 4); @@ -153,7 +174,14 @@ openerp.base.CrashManager = openerp.base.Dialog.extend({ } }); -openerp.base.Loading = openerp.base.Widget.extend({ +openerp.web.Loading = openerp.web.Widget.extend(/** @lends openerp.web.Loading# */{ + /** + * @constructs openerp.web.Loading + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + */ init: function(parent, element_id) { this._super(parent, element_id); this.count = 0; @@ -172,7 +200,15 @@ openerp.base.Loading = openerp.base.Widget.extend({ } }); -openerp.base.Database = openerp.base.Widget.extend({ +openerp.web.Database = openerp.web.Widget.extend(/** @lends openerp.web.Database# */{ + /** + * @constructs openerp.web.Database + * @extends openerp.web.Widget + * + * @param parent + * @param element_id + * @param option_id + */ init: function(parent, element_id, option_id) { this._super(parent, element_id); this.$option_id = $('#' + option_id); @@ -185,10 +221,10 @@ openerp.base.Database = openerp.base.Widget.extend({ var self = this; - var fetch_db = this.rpc("/base/database/get_list", {}, function(result) { + var fetch_db = this.rpc("/web/database/get_list", {}, function(result) { self.db_list = result.db_list; }); - var fetch_langs = this.rpc("/base/session/get_lang_list", {}, function(result) { + var fetch_langs = this.rpc("/web/session/get_lang_list", {}, function(result) { if (result.error) { self.display_error(result); return; @@ -244,7 +280,7 @@ openerp.base.Database = openerp.base.Widget.extend({ */ wait_for_newdb: function (db_creation_id, info) { var self = this; - self.rpc('/base/database/progress', { + self.rpc('/web/database/progress', { id: db_creation_id, password: info.password }, function (result) { @@ -296,8 +332,8 @@ openerp.base.Database = openerp.base.Widget.extend({ self.$option_id.find("form[name=create_db_form]").validate({ submitHandler: function (form) { var fields = $(form).serializeArray(); - $.blockUI({message:''}); - self.rpc("/base/database/create", {'fields': fields}, function(result) { + $.blockUI({message:''}); + self.rpc("/web/database/create", {'fields': fields}, function(result) { if (result.error) { $.unblockUI(); self.display_error(result); @@ -327,7 +363,7 @@ openerp.base.Database = openerp.base.Widget.extend({ if (!confirm("Do you really want to delete the database: " + db + " ?")) { return; } - self.rpc("/base/database/drop", {'fields': fields}, function(result) { + self.rpc("/web/database/drop", {'fields': fields}, function(result) { if (result.error) { self.display_error(result); return; @@ -339,62 +375,23 @@ openerp.base.Database = openerp.base.Widget.extend({ } }); }, - wait_for_file: function (token, cleanup) { - var self = this, - cookie_name = 'fileToken', - cookie_length = cookie_name.length; - this.backup_timer = setInterval(function () { - var cookies = document.cookie.split(';'); - for(var i=0; i'}); - // need to detect when the file is done downloading (not used - // yet, but we'll need it to fix the UI e.g. with a throbber - // while dump is being generated), iframe load event only fires - // when the iframe content loads, so we need to go smarter: - // http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx - var $target = $('#backup-target'), - token = new Date().getTime(); - if (!$target.length) { - $target = $(' @@ -931,11 +939,11 @@
    + method="post" enctype="multipart/form-data" action="/web/binary/upload"> @@ -944,13 +952,13 @@ @@ -958,7 +966,7 @@ - + Uploading ... @@ -970,7 +978,7 @@ t-att-id="widget.element_id + '_button'" t-att-title="widget.help" style="width: 100%" class="button"> - + @@ -1020,7 +1028,7 @@ t-att-title="attrs.help" t-att-class="classes.join(' ')" t-att-autofocus="attrs.default_focus === '1' ? 'autofocus' : undefined"> - +
    @@ -1118,7 +1126,8 @@
    - - - - - - - - + + + + + + -
    + This wizard will export all data that matches the current search criteria to a CSV file. + You can export all data or only the fields that can be reimported after modification. +
    + + -
    - - + + + + - - - - - - - - - - - - - -
    Available fieldsFields to export - Save fields list -
    -
    -
    -
    -
    -
    - - - - - - - - - - -
    - -
    - -
    - -
    -
    - -
    - - - - + + Available fields + + + Fields to export + Save fields list +
    +
    + + + + +
    +
    + + + + + + + + + + + - - - - -
    Name
    -
    - - - - - - - - - - +
    &nbsp;
    + + +
    Name
    + + + + + + + + + + - - -
    &nbsp; + + + - - - - - - - - - - -
    - - -
    -
    + + + + + + + + + + + @@ -1361,18 +1338,15 @@ - - - - - - - + + + + @@ -1398,4 +1372,47 @@ + +
    +

    OpenERP Web

    +

    Version

    +

    + Copyright © 2011-TODAY OpenERP SA. All Rights Reserved.
    + OpenERP is a trademark of the OpenERP SA Company. +

    +

    + Licenced under the terms of GNU Affero General Public License +

    +
    +

    About OpenERP

    +

    + OpenERP is a free enterprise-scale software system that is designed to boost + productivity and profit through data integration. It connects, improves and + manages business processes in areas such as sales, finance, supply chain, + project management, production, services, CRM, etc... +

    +

    + The system is platform-independent, and can be installed on Windows, Mac OS X, + and various Linux and other Unix-based distributions. Its architecture enables + new functionality to be rapidly created, modifications to be made to a + production system and migration to a new version to be straightforward. +

    +

    + Depending on your needs, OpenERP is available through a web or application client. +

    +
    +
    + +
    +
    + +
      + + +
    • + +
    • +
      +
    +
    diff --git a/addons/base/static/test/class.js b/addons/web/static/test/class.js similarity index 89% rename from addons/base/static/test/class.js rename to addons/web/static/test/class.js index 9ee6cedbcf1..ed977635a5f 100644 --- a/addons/base/static/test/class.js +++ b/addons/web/static/test/class.js @@ -1,13 +1,13 @@ $(document).ready(function () { var openerp; - module('base-class', { + module('web-class', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.core(openerp); + window.openerp.web.core(openerp); } }); test('Basic class creation', function () { - var C = openerp.base.Class.extend({ + var C = openerp.web.Class.extend({ foo: function () { return this.somevar; } @@ -19,12 +19,12 @@ $(document).ready(function () { strictEqual(instance.foo(), 3); }); test('Class initialization', function () { - var C1 = openerp.base.Class.extend({ + var C1 = openerp.web.Class.extend({ init: function () { this.foo = 3; } }); - var C2 = openerp.base.Class.extend({ + var C2 = openerp.web.Class.extend({ init: function (arg) { this.foo = arg; } @@ -37,7 +37,7 @@ $(document).ready(function () { strictEqual(i2.foo, 42); }); test('Inheritance', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; } @@ -58,7 +58,7 @@ $(document).ready(function () { strictEqual(new C2().foo(), 3); }); test('In-place extension', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 3; }, @@ -84,7 +84,7 @@ $(document).ready(function () { strictEqual(new C0().qux(), 5); }); test('In-place extension and inheritance', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; }, bar: function () { return 1; } }); @@ -102,7 +102,7 @@ $(document).ready(function () { strictEqual(new C1().bar(), 2); }); test('In-place extensions alter existing instances', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; }, bar: function () { return 1; } }); @@ -118,7 +118,7 @@ $(document).ready(function () { strictEqual(instance.bar(), 3); }); test('In-place extension of subclassed types', function () { - var C0 = openerp.base.Class.extend({ + var C0 = openerp.web.Class.extend({ foo: function () { return 1; }, bar: function () { return 1; } }); diff --git a/addons/base/static/test/form.js b/addons/web/static/test/form.js similarity index 58% rename from addons/base/static/test/form.js rename to addons/web/static/test/form.js index 34930918ae0..8317c7bfcd2 100644 --- a/addons/base/static/test/form.js +++ b/addons/web/static/test/form.js @@ -3,13 +3,13 @@ $(document).ready(function () { module("form.widget", { setup: function () { openerp = window.openerp.init(true); - window.openerp.base.core(openerp); - window.openerp.base.chrome(openerp); + window.openerp.web.core(openerp); + window.openerp.web.chrome(openerp); // views loader stuff - window.openerp.base.data(openerp); - window.openerp.base.views(openerp); - window.openerp.base.list(openerp); - window.openerp.base.form(openerp); + window.openerp.web.data(openerp); + window.openerp.web.views(openerp); + window.openerp.web.list(openerp); + window.openerp.web.form(openerp); } }); test("compute_domain", function () { @@ -19,15 +19,15 @@ $(document).ready(function () { 'select1': {value: 'day'}, 'rrule_type': {value: 'monthly'} }; - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( [['a', '=', 3]], fields)); - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( [['group_method','!=','count']], fields)); - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( [['select1','=','day'], ['rrule_type','=','monthly']], fields)); }); test("compute_domain or", function () { - var base = { + var web = { 'section_id': {value: null}, 'user_id': {value: null}, 'member_ids': {value: null} @@ -37,22 +37,22 @@ $(document).ready(function () { '|', ['user_id','=',3], ['member_ids', 'in', [3]]]; - ok(openerp.base.form.compute_domain(domain, _.extend( - {}, base, {'section_id': {value: 42}}))); - ok(openerp.base.form.compute_domain(domain, _.extend( - {}, base, {'user_id': {value: 3}}))); + ok(openerp.web.form.compute_domain(domain, _.extend( + {}, web, {'section_id': {value: 42}}))); + ok(openerp.web.form.compute_domain(domain, _.extend( + {}, web, {'user_id': {value: 3}}))); - ok(openerp.base.form.compute_domain(domain, _.extend( - {}, base, {'member_ids': {value: 3}}))); + ok(openerp.web.form.compute_domain(domain, _.extend( + {}, web, {'member_ids': {value: 3}}))); }); test("compute_domain not", function () { var fields = { 'a': {value: 5}, 'group_method': {value: 'line'} }; - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( ['!', ['a', '=', 3]], fields)); - ok(openerp.base.form.compute_domain( + ok(openerp.web.form.compute_domain( ['!', ['group_method','=','count']], fields)); }); }); diff --git a/addons/web/static/test/formats.js b/addons/web/static/test/formats.js new file mode 100644 index 00000000000..331725dd9a5 --- /dev/null +++ b/addons/web/static/test/formats.js @@ -0,0 +1,54 @@ +$(document).ready(function () { + var openerp; + module('web-formats', { + setup: function () { + openerp = window.openerp.init(); + window.openerp.web.core(openerp); + window.openerp.web.dates(openerp); + window.openerp.web.formats(openerp); + } + }); + test("format_datetime", function () { + var date = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var str = openerp.web.format_value(date, {type:"datetime"}); + equal(str, date.toString("M/d/yyyy h:mm:ss tt")); + }); + test("format_date", function () { + var date = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var str = openerp.web.format_value(date, {type:"date"}); + equal(str, date.toString("M/d/yyyy")); + }); + test("format_time", function () { + var date = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var str = openerp.web.format_value(date, {type:"time"}); + equal(str, date.toString("h:mm:ss tt")); + }); + test("format_float", function () { + var fl = 12.1234; + var str = openerp.web.format_value(fl, {type:"float"}); + equal(str, "12.12"); + }); + test("parse_datetime", function () { + var val = openerp.web.str_to_datetime("2009-05-04 12:34:23"); + var res = openerp.web.parse_value(val.toString("M/d/yyyy h:mm:ss tt"), {type:"datetime"}); + equal(val.toString("M/d/yyyy h:mm:ss tt"), res.toString("M/d/yyyy h:mm:ss tt")); + }); + test("parse_date", function () { + var val = openerp.web.str_to_date("2009-05-04"); + var res = openerp.web.parse_value(val.toString("M/d/yyyy"), {type:"date"}); + equal(val.toString("M/d/yyyy"), res.toString("M/d/yyyy")); + }); + test("parse_time", function () { + var val = openerp.web.str_to_time("12:34:23"); + var res = openerp.web.parse_value(val.toString("h:mm:ss tt"), {type:"time"}); + equal(val.toString("h:mm:ss tt"), res.toString("h:mm:ss tt")); + }); + test("parse_float", function () { + var str = "134,112.1234"; + var val = openerp.web.parse_value(str, {type:"float"}); + equal(val, 134112.1234); + var str = "-134,112.1234"; + var val = openerp.web.parse_value(str, {type:"float"}); + equal(val, -134112.1234); + }); +}); \ No newline at end of file diff --git a/addons/base/static/test/list-utils.js b/addons/web/static/test/list-utils.js similarity index 84% rename from addons/base/static/test/list-utils.js rename to addons/web/static/test/list-utils.js index 0b15b81f544..f71da82a560 100644 --- a/addons/base/static/test/list-utils.js +++ b/addons/web/static/test/list-utils.js @@ -11,29 +11,29 @@ $(document).ready(function () { module('list-events', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('Simple event triggering', function () { - var e = create(openerp.base.list.Events), passed = false; + var e = create(openerp.web.list.Events), passed = false; e.bind('foo', function () { passed = true; }); e.trigger('foo'); ok(passed); }); test('Bind all', function () { - var e = create(openerp.base.list.Events), event = null; + var e = create(openerp.web.list.Events), event = null; e.bind(null, function (ev) { event = ev; }); e.trigger('foo'); strictEqual(event, 'foo'); }); test('Propagate trigger params', function () { - var e = create(openerp.base.list.Events), p = false; + var e = create(openerp.web.list.Events), p = false; e.bind(null, function (_, param) { p = param }); e.trigger('foo', true); strictEqual(p, true) }); test('Bind multiple callbacks', function () { - var e = create(openerp.base.list.Events), count; + var e = create(openerp.web.list.Events), count; e.bind('foo', function () { count++; }) .bind('bar', function () { count++; }) .bind(null, function () { count++; }) @@ -54,10 +54,10 @@ $(document).ready(function () { strictEqual(count, 3); }); test('Mixin events', function () { - var cls = openerp.base.Class.extend({ + var cls = openerp.web.Class.extend({ method: function () { this.trigger('e'); } }); - cls.include(openerp.base.list.Events); + cls.include(openerp.web.list.Events); var instance = new cls, triggered = false; instance.bind('e', function () { triggered = true; }); @@ -66,7 +66,7 @@ $(document).ready(function () { ok(triggered); }); test('Unbind all handlers', function () { - var e = create(openerp.base.list.Events), passed = 0; + var e = create(openerp.web.list.Events), passed = 0; e.bind('foo', function () { passed++; }); e.trigger('foo'); strictEqual(passed, 1); @@ -75,7 +75,7 @@ $(document).ready(function () { strictEqual(passed, 1); }); test('Unbind one handler', function () { - var e = create(openerp.base.list.Events), p1 = 0, p2 = 0, + var e = create(openerp.web.list.Events), p1 = 0, p2 = 0, h1 = function () { p1++; }, h2 = function () { p2++; }; e.bind('foo', h1); e.bind('foo', h2); @@ -91,11 +91,11 @@ $(document).ready(function () { module('list-records', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('Basic record initialization', function () { - var r = new openerp.base.list.Record({qux: 3}); + var r = new openerp.web.list.Record({qux: 3}); r.set('foo', 1); r.set('bar', 2); strictEqual(r.get('foo'), 1); @@ -103,7 +103,7 @@ $(document).ready(function () { strictEqual(r.get('qux'), 3); }); test('Change all the things', function () { - var r = new openerp.base.list.Record(), changed = false, field; + var r = new openerp.web.list.Record(), changed = false, field; r.bind('change', function () { changed = true; }); r.bind(null, function (e) { field = field || e.split(':')[1]}); r.set('foo', 1); @@ -112,7 +112,7 @@ $(document).ready(function () { strictEqual(field, 'foo'); }); test('Change single field', function () { - var r = new openerp.base.list.Record(), changed = 0; + var r = new openerp.web.list.Record(), changed = 0; r.bind('change:foo', function () { changed++; }); r.set('foo', 1); r.set('bar', 1); @@ -124,11 +124,11 @@ $(document).ready(function () { module('list-collections-degenerate', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('Fetch from collection', function () { - var c = new openerp.base.list.Collection(); + var c = new openerp.web.list.Collection(); strictEqual(c.length, 0); c.add({id: 1, value: 2}); c.add({id: 2, value: 3}); @@ -137,16 +137,16 @@ $(document).ready(function () { strictEqual(c.length, 4); var r = c.at(2), r2 = c.get(1); - ok(r instanceof openerp.base.list.Record); + ok(r instanceof openerp.web.list.Record); strictEqual(r.get('id'), 3); strictEqual(r.get('value'), 5); - ok(r2 instanceof openerp.base.list.Record); + ok(r2 instanceof openerp.web.list.Record); strictEqual(r2.get('id'), 1); strictEqual(r2.get('value'), 2); }); test('Add at index', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -158,7 +158,7 @@ $(document).ready(function () { strictEqual(c.at(3).get('value'), 20); }); test('Remove record', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -171,7 +171,7 @@ $(document).ready(function () { strictEqual(c.at(1).get('value'), 20); }); test('Reset', function () { - var event, obj, c = new openerp.base.list.Collection([ + var event, obj, c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -193,7 +193,7 @@ $(document).ready(function () { test('Events propagation', function () { var values = []; - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -207,7 +207,7 @@ $(document).ready(function () { deepEqual(values, [6, 11, 21]); }); test('BTree', function () { - var root = new openerp.base.list.Collection(), + var root = new openerp.web.list.Collection(), c = root.proxy('admin'), total = 0; c.add({id: 1, name: "Administrator", login: 'admin'}); @@ -226,11 +226,11 @@ $(document).ready(function () { module('list-hofs', { setup: function () { openerp = window.openerp.init(); - window.openerp.base.list(openerp); + window.openerp.web.list(openerp); } }); test('each, degenerate', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -243,7 +243,7 @@ $(document).ready(function () { 'degenerate collections should be iterated in record order'); }); test('each, deep', function () { - var root = new openerp.base.list.Collection(), + var root = new openerp.web.list.Collection(), ids = []; root.proxy('foo').add([ {id: 1, value: 5}, @@ -263,7 +263,7 @@ $(document).ready(function () { 'tree collections should be deeply iterated'); }); test('map, degenerate', function () { - var c = new openerp.base.list.Collection([ + var c = new openerp.web.list.Collection([ {id: 1, value: 5}, {id: 2, value: 10}, {id: 3, value: 20} @@ -276,7 +276,7 @@ $(document).ready(function () { 'degenerate collections should be iterated in record order'); }); test('map, deep', function () { - var root = new openerp.base.list.Collection(); + var root = new openerp.web.list.Collection(); root.proxy('foo').add([ {id: 1, value: 5}, {id: 2, value: 10}, diff --git a/addons/base/static/test/qunit-doc.js b/addons/web/static/test/qunit-doc.js similarity index 100% rename from addons/base/static/test/qunit-doc.js rename to addons/web/static/test/qunit-doc.js diff --git a/addons/web/static/test/registry.js b/addons/web/static/test/registry.js new file mode 100644 index 00000000000..0a3e65e9b1c --- /dev/null +++ b/addons/web/static/test/registry.js @@ -0,0 +1,33 @@ +$(document).ready(function () { + var openerp; + module('Registry', { + setup: function () { + openerp = window.openerp.init(true); + window.openerp.web.core(openerp); + openerp.web.Foo = {}; + openerp.web.Bar = {}; + } + }); + test('key fetch', function () { + var reg = new openerp.web.Registry({ + foo: 'openerp.web.Foo', + bar: 'openerp.web.Bar', + quux: 'openerp.web.Quux' + }); + + strictEqual(reg.get_object('foo'), openerp.web.Foo); + raises(function () { reg.get_object('qux'); }, + openerp.web.KeyNotFound, + "Unknown keys should raise KeyNotFound"); + raises(function () { reg.get_object('quux'); }, + openerp.web.ObjectNotFound, + "Incorrect file paths should raise ObjectNotFound"); + }); + test('key set', function () { + var reg = new openerp.web.Registry(); + + reg.add('foo', 'openerp.web.Foo') + .add('bar', 'openerp.web.Bar'); + strictEqual(reg.get_object('bar'), openerp.web.Bar); + }); +}); diff --git a/addons/web/static/test/test.html b/addons/web/static/test/test.html new file mode 100644 index 00000000000..38237a0600a --- /dev/null +++ b/addons/web/static/test/test.html @@ -0,0 +1,53 @@ + + + + + OpenERP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    OpenERP web Test Suite

    +

    +
    +

    +
      +
      + + + + + + + diff --git a/addons/base/test/__init__.py b/addons/web/test/__init__.py similarity index 100% rename from addons/base/test/__init__.py rename to addons/web/test/__init__.py diff --git a/addons/base/test/test_dataset.py b/addons/web/test/test_dataset.py similarity index 96% rename from addons/base/test/test_dataset.py rename to addons/web/test/test_dataset.py index 702c63b0899..898ca5a582c 100644 --- a/addons/base/test/test_dataset.py +++ b/addons/web/test/test_dataset.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- import mock import unittest2 -import base.controllers.main +import web.controllers.main class TestDataSetController(unittest2.TestCase): def setUp(self): - self.dataset = base.controllers.main.DataSet() + self.dataset = web.controllers.main.DataSet() self.request = mock.Mock() self.read = self.request.session.model().read self.search = self.request.session.model().search diff --git a/addons/base/test/test_menu.py b/addons/web/test/test_menu.py similarity index 94% rename from addons/base/test/test_menu.py rename to addons/web/test/test_menu.py index 5b4fddd05e1..d763fd7dcb1 100644 --- a/addons/base/test/test_menu.py +++ b/addons/web/test/test_menu.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import mock import unittest2 -import base.controllers.main +import web.controllers.main import openerpweb.openerpweb class Placeholder(object): @@ -11,7 +11,7 @@ class Placeholder(object): class LoadTest(unittest2.TestCase): def setUp(self): - self.menu = base.controllers.main.Menu() + self.menu = web.controllers.main.Menu() self.menus_mock = mock.Mock() self.request = Placeholder( session=openerpweb.openerpweb.OpenERPSession( @@ -100,7 +100,7 @@ class LoadTest(unittest2.TestCase): class ActionMungerTest(unittest2.TestCase): def setUp(self): - self.menu = base.controllers.main.Menu() + self.menu = web.controllers.main.Menu() def test_actual_treeview(self): action = { "views": [[False, "tree"], [False, "form"], @@ -111,7 +111,7 @@ class ActionMungerTest(unittest2.TestCase): } changed = action.copy() del action['view_type'] - base.controllers.main.fix_view_modes(changed) + web.controllers.main.fix_view_modes(changed) self.assertEqual(changed, action) @@ -123,7 +123,7 @@ class ActionMungerTest(unittest2.TestCase): "view_id": False, "view_mode": "tree,form,calendar" } - base.controllers.main.fix_view_modes(action) + web.controllers.main.fix_view_modes(action) self.assertEqual(action, { "views": [[False, "list"], [False, "form"], @@ -141,7 +141,7 @@ class ActionMungerTest(unittest2.TestCase): "view_id": False, "view_mode": "tree,form,calendar" } - base.controllers.main.fix_view_modes(action) + web.controllers.main.fix_view_modes(action) self.assertEqual(action, { "views": [[False, "list"], [False, "form"], diff --git a/addons/base/test/test_view.py b/addons/web/test/test_view.py similarity index 95% rename from addons/base/test/test_view.py rename to addons/web/test/test_view.py index 0070ea11cf4..677ed42eb2b 100644 --- a/addons/base/test/test_view.py +++ b/addons/web/test/test_view.py @@ -5,7 +5,7 @@ import mock import unittest2 import simplejson -import base.controllers.main +import web.controllers.main import openerpweb.nonliterals import openerpweb.openerpweb @@ -17,7 +17,7 @@ def field_attrs(fields_view_get, fieldname): #noinspection PyCompatibility class DomainsAndContextsTest(unittest2.TestCase): def setUp(self): - self.view = base.controllers.main.View() + self.view = web.controllers.main.View() def test_convert_literal_domain(self): e = xml.etree.ElementTree.Element( @@ -107,10 +107,10 @@ class DomainsAndContextsTest(unittest2.TestCase): class AttrsNormalizationTest(unittest2.TestCase): def setUp(self): - self.view = base.controllers.main.View() + self.view = web.controllers.main.View() def test_identity(self): - base_view = """ + web_view = """
      @@ -120,8 +120,8 @@ class AttrsNormalizationTest(unittest2.TestCase): """ - pristine = xml.etree.ElementTree.fromstring(base_view) - transformed = self.view.transform_view(base_view, None) + pristine = xml.etree.ElementTree.fromstring(web_view) + transformed = self.view.transform_view(web_view, None) self.assertEqual( xml.etree.ElementTree.tostring(transformed), @@ -166,7 +166,7 @@ class AttrsNormalizationTest(unittest2.TestCase): '''} - parsed_view = base.controllers.main.View().fields_view_get( + parsed_view = web.controllers.main.View().fields_view_get( req, 'project.task', 42, 'tree') self.assertTrue(field_attrs(parsed_view, 'sequence')['invisible']) @@ -180,7 +180,7 @@ class AttrsNormalizationTest(unittest2.TestCase): class ListViewTest(unittest2.TestCase): def setUp(self): - self.view = base.controllers.main.ListView() + self.view = web.controllers.main.ListView() self.request = mock.Mock() self.request.context = {'set_editable': True} def test_no_editable_editable_context(self): diff --git a/addons/base_hello/__init__.py b/addons/web_calendar/__init__.py similarity index 100% rename from addons/base_hello/__init__.py rename to addons/web_calendar/__init__.py diff --git a/addons/base_calendar/__openerp__.py b/addons/web_calendar/__openerp__.py similarity index 88% rename from addons/base_calendar/__openerp__.py rename to addons/web_calendar/__openerp__.py index b8f6a954082..ba18ef0490e 100644 --- a/addons/base_calendar/__openerp__.py +++ b/addons/web_calendar/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base calendar", + "name": "web calendar", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js', 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js', diff --git a/addons/base_calendar/controllers/__init__.py b/addons/web_calendar/controllers/__init__.py similarity index 100% rename from addons/base_calendar/controllers/__init__.py rename to addons/web_calendar/controllers/__init__.py diff --git a/addons/base_calendar/controllers/main.py b/addons/web_calendar/controllers/main.py similarity index 100% rename from addons/base_calendar/controllers/main.py rename to addons/web_calendar/controllers/main.py diff --git a/addons/base_calendar/po/base_calendar.pot b/addons/web_calendar/po/base_calendar.pot similarity index 100% rename from addons/base_calendar/po/base_calendar.pot rename to addons/web_calendar/po/base_calendar.pot diff --git a/addons/web_calendar/po/web_calendar.pot b/addons/web_calendar/po/web_calendar.pot new file mode 100644 index 00000000000..822614f03bf --- /dev/null +++ b/addons/web_calendar/po/web_calendar.pot @@ -0,0 +1,23 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_calendar/static/src/xml/web_calendar.xml:0 +msgid " " +msgstr "" + diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/base_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/combo_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/connector.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/crosslink_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/dataprocessor.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_common.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mssql.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_mysqli.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_oracle.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_pdo.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/db_postgre.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/grid_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/scheduler_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tools.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/tree_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/treegrid_connector.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/connector/update.php diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_glossy.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_mobile.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_active_links.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_agenda_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_collision.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_cookie.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_editors.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_expand.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_html_templates.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_key_nav.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_limit.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_map_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multiselect.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_multisource.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_offline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_outerdrag.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_pdf.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_readonly.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_recurring.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_serialize.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_timeline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_tooltip.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_touch.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_treetimeline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_units.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_url.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_week_agenda.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_year_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/buttons.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/blue_tab_wide.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/but_repeat.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/buttons.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/calendar.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_big.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/clock_small.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/colapce-expand-icon.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/controlls5.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/databg_now.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/event-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/icon.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-separator.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/left-time-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/lightbox.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/loading.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/move.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/multi-days-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/second-top-days-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-days-bg.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/top-separator.gif diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_glossy/white_tab_wide.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/add.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_left.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/arrow_right.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/event_focus.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs_mobile/noevents.png diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/codebase/readme.txt diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/license.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/license.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/license.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/license.txt diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/readme.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/readme.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/readme.txt diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/base.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/base.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/base.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/base.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/clear.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/clear.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/clear.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/clear.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/config.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/config.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/config.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/config.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/connector.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/connector.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/connector.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/connector.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dataprocessor_hook.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dayevents.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxcommon.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_debug.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/dhtmlxdataprocessor_jsonp.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/event.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/event.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/event.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/event.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_active_links.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_agenda_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_collision.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_cookie.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_editors.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_expand.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_html_templates.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_key_nav.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_layer.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_limit.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_map_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_matrix.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_minical.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_monthheight.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multiselect.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_multisource.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_offline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_outerdrag.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_pdf.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_readonly.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_serialize.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_tooltip.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_treetimeline.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_url.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_week_agenda.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_wp.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/ext_year_view.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/glossy.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/glossy.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/glossy.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/glossy.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/ical.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ical.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/ical.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/ical.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/layout.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/layout.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/layout.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/layout.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/lightbox.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/load.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/load.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/load.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ar.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ca.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cn.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_cs.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_da.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_de.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_el.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_es.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fi.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_fr.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_he.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_hu.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_id.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_it.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_jp.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nb.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_nl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_no.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_pt.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cn.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_cs.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_da.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_de.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_el.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_es.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fi.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_fr.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_it.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nb.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_nl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pl.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_pt.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ru.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_sv.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_recurring_ua.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ru.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_si.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_sv.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_tr.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/locale_ua.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/mobile.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/mobile.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/note.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/note.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/note.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/note.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/property.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/property.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/property.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/property.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.css b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.css similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.css rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.css diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/recurring.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/recurring.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_cn.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_de.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_el.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_es.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_fr.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_it.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_nl.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/repeat_template_ru.html diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js rename to addons/web_calendar/static/lib/dhtmlxScheduler/sources/scheduler.js diff --git a/addons/base_calendar/static/lib/dhtmlxScheduler/whatsnew.txt b/addons/web_calendar/static/lib/dhtmlxScheduler/whatsnew.txt similarity index 100% rename from addons/base_calendar/static/lib/dhtmlxScheduler/whatsnew.txt rename to addons/web_calendar/static/lib/dhtmlxScheduler/whatsnew.txt diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js similarity index 87% rename from addons/base_calendar/static/src/js/calendar.js rename to addons/web_calendar/static/src/js/calendar.js index 808c1ba31ab..7b9fcc3ed33 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -1,11 +1,12 @@ /*--------------------------------------------------------- - * OpenERP base_calendar + * OpenERP web_calendar *---------------------------------------------------------*/ -openerp.base_calendar = function(openerp) { -QWeb.add_template('/base_calendar/static/src/xml/base_calendar.xml'); -openerp.base.views.add('calendar', 'openerp.base_calendar.CalendarView'); -openerp.base_calendar.CalendarView = openerp.base.View.extend({ +openerp.web_calendar = function(openerp) { +var QWeb = openerp.web.qweb; +QWeb.add_template('/web_calendar/static/src/xml/web_calendar.xml'); +openerp.web.views.add('calendar', 'openerp.web_calendar.CalendarView'); +openerp.web_calendar.CalendarView = openerp.web.View.extend({ // Dhtmlx scheduler ? init: function(parent, element_id, dataset, view_id, options) { this._super(parent, element_id); @@ -19,7 +20,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.creating_event_id = null; this.dataset_events = []; if (this.options.action_views_ids.form) { - this.form_dialog = new openerp.base_calendar.CalendarFormDialog(this, {}, this.options.action_views_ids.form, dataset); + this.form_dialog = new openerp.web_calendar.CalendarFormDialog(this, {}, this.options.action_views_ids.form, dataset); this.form_dialog.start(); } this.COLOR_PALETTE = ['#f57900', '#cc0000', '#d400a8', '#75507b', '#3465a4', '#73d216', '#c17d11', '#edd400', @@ -29,18 +30,18 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.color_map = {}; }, start: function() { - this.rpc("/base_calendar/calendarview/load", {"model": this.model, "view_id": this.view_id, 'toolbar': true}, this.on_loaded); + this.rpc("/web/view/load", {"model": this.model, "view_id": this.view_id, "view_type":"calendar", 'toolbar': true}, this.on_loaded); }, stop: function() { scheduler.clearAll(); }, on_loaded: function(data) { + this.fields_view = data; this.calendar_fields = {}; this.ids = this.dataset.ids; this.color_values = []; this.info_fields = []; - this.fields_view = data.fields_view; this.name = this.fields_view.name || this.fields_view.arch.attrs.string; this.view_id = this.fields_view.view_id; @@ -75,11 +76,11 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ this.$element.html(QWeb.render("CalendarView", {"fields_view": this.fields_view})); if (this.options.sidebar && this.options.sidebar_id) { - this.sidebar = new openerp.base.Sidebar(this, this.options.sidebar_id); + this.sidebar = new openerp.web.Sidebar(this, this.options.sidebar_id); this.sidebar.start(); - this.sidebar.navigator = new openerp.base_calendar.SidebarNavigator(this.sidebar, this.sidebar.add_section('navigator', "Navigator"), this); - this.sidebar.responsible = new openerp.base_calendar.SidebarResponsible(this.sidebar, this.sidebar.add_section('responsible', "Responsible"), this); - this.sidebar.add_toolbar(data.fields_view.toolbar); + 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.add_toolbar(this.fields_view.toolbar); this.set_common_sidebar_sections(this.sidebar); this.sidebar.do_unfold(); this.sidebar.do_fold.add_last(this.refresh_scheduler); @@ -170,7 +171,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ value: filter_value, label: (typeof filter === 'object') ? filter[1] : filter, color: this.get_color(filter_value) - } + }; if (!sidebar_items[filter_value]) { sidebar_items[filter_value] = filter_item; } @@ -180,10 +181,10 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ } if (this.fields[this.date_start]['type'] == 'date') { - evt[this.date_start] = openerp.base.str_to_date(evt[this.date_start]).set({hour: 9}).toString('yyyy-MM-dd HH:mm:ss'); + evt[this.date_start] = openerp.web.str_to_date(evt[this.date_start]).set({hour: 9}).toString('yyyy-MM-dd HH:mm:ss'); } if (this.date_stop && evt[this.date_stop] && this.fields[this.date_stop]['type'] == 'date') { - evt[this.date_stop] = openerp.base.str_to_date(evt[this.date_stop]).set({hour: 17}).toString('yyyy-MM-dd HH:mm:ss'); + evt[this.date_stop] = openerp.web.str_to_date(evt[this.date_stop]).set({hour: 17}).toString('yyyy-MM-dd HH:mm:ss'); } res_events.push(this.convert_event(evt)); } @@ -195,8 +196,8 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ } }, convert_event: function(evt) { - var date_start = openerp.base.str_to_datetime(evt[this.date_start]), - date_stop = this.date_stop ? openerp.base.str_to_datetime(evt[this.date_stop]) : null, + var date_start = openerp.web.str_to_datetime(evt[this.date_start]), + date_stop = this.date_stop ? openerp.web.str_to_datetime(evt[this.date_stop]) : null, date_delay = evt[this.date_delay] || null, res_text = '', res_description = []; @@ -224,7 +225,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ 'text': res_text, 'id': evt.id, 'title': res_description.join() - } + }; if (evt.color) { r.color = evt.color; } @@ -280,9 +281,9 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ var data = { name: event_obj.text }; - data[this.date_start] = openerp.base.datetime_to_str(event_obj.start_date); + data[this.date_start] = openerp.web.datetime_to_str(event_obj.start_date); if (this.date_stop) { - data[this.date_stop] = openerp.base.datetime_to_str(event_obj.end_date); + data[this.date_stop] = openerp.web.datetime_to_str(event_obj.end_date); } if (this.date_delay) { var diff_seconds = Math.round((event_obj.end_date.getTime() - event_obj.start_date.getTime()) / 1000); @@ -294,7 +295,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ var self = this; scheduler.clearAll(); $.when(this.has_been_loaded).then(function() { - self.rpc('/base/session/eval_domain_and_context', { + self.rpc('/web/session/eval_domain_and_context', { domains: domains, contexts: contexts, group_by_seq: groupbys @@ -334,7 +335,7 @@ openerp.base_calendar.CalendarView = openerp.base.View.extend({ } }); -openerp.base_calendar.CalendarFormDialog = openerp.base.Dialog.extend({ +openerp.web_calendar.CalendarFormDialog = openerp.web.Dialog.extend({ init: function(view, options, view_id, dataset) { this._super(view, options); this.dataset = dataset; @@ -343,7 +344,7 @@ openerp.base_calendar.CalendarFormDialog = openerp.base.Dialog.extend({ }, start: function() { this._super(); - this.form = new openerp.base.FormView(this, this.element_id, this.dataset, this.view_id, { + this.form = new openerp.web.FormView(this, this.element_id, this.dataset, this.view_id, { sidebar: false, pager: false }); @@ -368,7 +369,7 @@ openerp.base_calendar.CalendarFormDialog = openerp.base.Dialog.extend({ } }); -openerp.base_calendar.SidebarResponsible = openerp.base.Widget.extend({ +openerp.web_calendar.SidebarResponsible = openerp.web.Widget.extend({ init: function(parent, element_id, view) { this._super(parent, element_id); this.view = view; @@ -394,7 +395,7 @@ openerp.base_calendar.SidebarResponsible = openerp.base.Widget.extend({ } }); -openerp.base_calendar.SidebarNavigator = openerp.base.Widget.extend({ +openerp.web_calendar.SidebarNavigator = openerp.web.Widget.extend({ init: function(parent, element_id, view) { this._super(parent, element_id); this.view = view; diff --git a/addons/base_calendar/static/src/xml/base_calendar.xml b/addons/web_calendar/static/src/xml/web_calendar.xml similarity index 100% rename from addons/base_calendar/static/src/xml/base_calendar.xml rename to addons/web_calendar/static/src/xml/web_calendar.xml diff --git a/addons/web_chat/__openerp__.py b/addons/web_chat/__openerp__.py index 6bd08f81e6a..c5e2fa7fc13 100644 --- a/addons/web_chat/__openerp__.py +++ b/addons/web_chat/__openerp__.py @@ -1,7 +1,7 @@ { "name": "Web Chat", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/lib/AjaxIM/js/jquery.jsonp-1.1.0.js', 'static/lib/AjaxIM/js/jquery.jstore-all-min.js', diff --git a/addons/web_chat/controllers/main.py b/addons/web_chat/controllers/main.py index e445eb4be6d..e9a026759b1 100644 --- a/addons/web_chat/controllers/main.py +++ b/addons/web_chat/controllers/main.py @@ -2,7 +2,10 @@ import time import simplejson -import base.common as openerpweb +import web.common as openerpweb +import logging + +_logger = logging.getLogger(__name__) #---------------------------------------------------------- # OpenERP Web ajaxim Controllers @@ -195,7 +198,7 @@ class PollServer(openerpweb.Controller): """ mq = req.applicationsession.setdefault("web_chat", PollServerMessageQueue()) - print "======== chat status ========",kw + _logger.debug("======== chat status ======== %s", kw) # mq.write() return {"action": ""} diff --git a/addons/web_chat/po/web_chat.pot b/addons/web_chat/po/web_chat.pot index b1700659a8f..d7f6df2d73d 100644 --- a/addons/web_chat/po/web_chat.pot +++ b/addons/web_chat/po/web_chat.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2011-08-17 13:28+0200\n" +"POT-Creation-Date: 2011-09-06 12:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/addons/base_dashboard/__init__.py b/addons/web_dashboard/__init__.py similarity index 100% rename from addons/base_dashboard/__init__.py rename to addons/web_dashboard/__init__.py diff --git a/addons/base_dashboard/__openerp__.py b/addons/web_dashboard/__openerp__.py similarity index 72% rename from addons/base_dashboard/__openerp__.py rename to addons/web_dashboard/__openerp__.py index e6248c2c515..e4bad9c1eaf 100644 --- a/addons/base_dashboard/__openerp__.py +++ b/addons/web_dashboard/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base Dashboard", + "name": "web Dashboard", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/src/js/dashboard.js' ], diff --git a/addons/base_dashboard/controllers.py b/addons/web_dashboard/controllers.py similarity index 91% rename from addons/base_dashboard/controllers.py rename to addons/web_dashboard/controllers.py index 2ebfefab1e8..80235492c0f 100644 --- a/addons/base_dashboard/controllers.py +++ b/addons/web_dashboard/controllers.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -import base.common as openerpweb +import web.common as openerpweb WIDGET_CONTENT_PATTERN = """ @@ -19,7 +19,7 @@ WIDGET_CONTENT_PATTERN = """ """ class Widgets(openerpweb.Controller): - _cp_path = '/base_dashboard/widgets' + _cp_path = '/web_dashboard/widgets' @openerpweb.httprequest def content(self, request, widget_id): diff --git a/addons/base_dashboard/po/base_dashboard.pot b/addons/web_dashboard/po/base_dashboard.pot similarity index 100% rename from addons/base_dashboard/po/base_dashboard.pot rename to addons/web_dashboard/po/base_dashboard.pot diff --git a/addons/web_dashboard/po/web_dashboard.pot b/addons/web_dashboard/po/web_dashboard.pot new file mode 100644 index 00000000000..3ebe95737bc --- /dev/null +++ b/addons/web_dashboard/po/web_dashboard.pot @@ -0,0 +1,47 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Reset" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Undo" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Add Widget" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Change layout" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "Choose dashboard layout" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "progress:" +msgstr "" + +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:0 +msgid "%" +msgstr "" + diff --git a/addons/base_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css similarity index 100% rename from addons/base_dashboard/static/src/css/dashboard.css rename to addons/web_dashboard/static/src/css/dashboard.css diff --git a/addons/base_dashboard/static/src/img/layout_1-1-1.png b/addons/web_dashboard/static/src/img/layout_1-1-1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1-1-1.png rename to addons/web_dashboard/static/src/img/layout_1-1-1.png diff --git a/addons/base_dashboard/static/src/img/layout_1-1.png b/addons/web_dashboard/static/src/img/layout_1-1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1-1.png rename to addons/web_dashboard/static/src/img/layout_1-1.png diff --git a/addons/base_dashboard/static/src/img/layout_1-2.png b/addons/web_dashboard/static/src/img/layout_1-2.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1-2.png rename to addons/web_dashboard/static/src/img/layout_1-2.png diff --git a/addons/base_dashboard/static/src/img/layout_1.png b/addons/web_dashboard/static/src/img/layout_1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_1.png rename to addons/web_dashboard/static/src/img/layout_1.png diff --git a/addons/base_dashboard/static/src/img/layout_2-1.png b/addons/web_dashboard/static/src/img/layout_2-1.png similarity index 100% rename from addons/base_dashboard/static/src/img/layout_2-1.png rename to addons/web_dashboard/static/src/img/layout_2-1.png diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js similarity index 87% rename from addons/base_dashboard/static/src/js/dashboard.js rename to addons/web_dashboard/static/src/js/dashboard.js index f83d841d19a..9fe904319f9 100644 --- a/addons/base_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -1,8 +1,8 @@ -openerp.base_dashboard = function(openerp) { +openerp.web_dashboard = function(openerp) { +var QWeb = openerp.web.qweb; +QWeb.add_template('/web_dashboard/static/src/xml/web_dashboard.xml'); -QWeb.add_template('/base_dashboard/static/src/xml/base_dashboard.xml'); - -openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ +openerp.web.form.DashBoard = openerp.web.form.Widget.extend({ init: function(view, node) { this._super(view, node); this.template = 'DashBoard'; @@ -36,7 +36,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ delete(action.attrs.height); delete(action.attrs.colspan); self.actions_attrs[action.attrs.name] = action.attrs; - self.rpc('/base/action/load', { + self.rpc('/web/action/load', { action_id: parseInt(action.attrs.name, 10) }, self.on_load_action); }); @@ -48,20 +48,20 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ }); }, on_undo: function() { - this.rpc('/base/view/undo_custom', { + this.rpc('/web/view/undo_custom', { view_id: this.view.fields_view.view_id }, this.do_reload); }, on_reset: function() { - this.rpc('/base/view/undo_custom', { + this.rpc('/web/view/undo_custom', { view_id: this.view.fields_view.view_id, reset: true }, this.do_reload); }, on_add_widget: function() { var self = this; - var action_manager = new openerp.base.ActionManager(this); - var dialog = new openerp.base.Dialog(this, { + var action_manager = new openerp.web.ActionManager(this); + var dialog = new openerp.web.Dialog(this, { title : 'Actions', width: 800, height: 600, @@ -97,16 +97,16 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ qdict = { view : this.view }; // TODO: should load multiple actions at once _.each(actions, function(aid) { - self.rpc('/base/action/load', { + self.rpc('/web/action/load', { action_id: aid }, function(result) { self.actions_attrs[aid] = { name: aid, string: _.trim(result.result.name) - } + }; qdict.action = { attrs : self.actions_attrs[aid] - } + }; self.$element.find('.oe-dashboard-column:first').prepend(QWeb.render('DashBoard.action', qdict)); self.do_save_dashboard(); self.on_load_action(result) @@ -209,7 +209,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ board.columns.push(actions); }); var arch = QWeb.render('DashBoard.xml', board); - this.rpc('/base/view/add_custom', { + this.rpc('/web/view/add_custom', { view_id: this.view.fields_view.view_id, arch: arch }, function() { @@ -225,7 +225,7 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ action_buttons : false, pager: false }; - var am = new openerp.base.ActionManager(this); + var am = new openerp.web.ActionManager(this); this.action_managers.push(am); am.appendTo($("#"+this.view.element_id + '_action_' + action.id)); am.do_action(action); @@ -250,10 +250,10 @@ openerp.base.form.DashBoard = openerp.base.form.Widget.extend({ this.view.start(); } }); -openerp.base.form.DashBoardLegacy = openerp.base.form.DashBoard.extend({ +openerp.web.form.DashBoardLegacy = openerp.web.form.DashBoard.extend({ render: function() { if (this.node.tag == 'hpaned') { - this.node.attrs.style = '1-1'; + this.node.attrs.style = '2-1'; } else if (this.node.tag == 'vpaned') { this.node.attrs.style = '1'; } @@ -274,21 +274,22 @@ openerp.base.form.DashBoardLegacy = openerp.base.form.DashBoard.extend({ } }); -openerp.base.form.widgets.add('hpaned', 'openerp.base.form.DashBoardLegacy'); -openerp.base.form.widgets.add('vpaned', 'openerp.base.form.DashBoardLegacy'); -openerp.base.form.widgets.add('board', 'openerp.base.form.DashBoard'); +openerp.web.form.widgets.add('hpaned', 'openerp.web.form.DashBoardLegacy'); +openerp.web.form.widgets.add('vpaned', 'openerp.web.form.DashBoardLegacy'); +openerp.web.form.widgets.add('board', 'openerp.web.form.DashBoard'); -openerp.base.client_actions.add( - 'board.config.overview', 'openerp.base_dashboard.ConfigOverview' +openerp.web.client_actions.add( + 'board.config.overview', 'openerp.web_dashboard.ConfigOverview' ); -if (!openerp.base_dashboard) { - openerp.base_dashboard = {}; +if (!openerp.web_dashboard) { + /** @namespace */ + openerp.web_dashboard = {}; } -openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ +openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({ template: 'ConfigOverview', init: function (parent, element_id) { this._super(parent, element_id); - this.dataset = new openerp.base.DataSetSearch( + this.dataset = new openerp.web.DataSetSearch( this, 'ir.actions.todo'); this.dataset.domain = [['type', '=', 'manual']]; }, @@ -332,7 +333,7 @@ openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ }); }) .delegate('li:not(.oe-done)', 'click', function () { - self.execute_action({ + self.widget_parent.widget_parent.widget_parent.execute_action({ type: 'object', name: 'action_launch' }, self.dataset, @@ -345,13 +346,13 @@ openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ } }); -openerp.base.client_actions.add( - 'board.home.applications', 'openerp.base_dashboard.ApplicationTiles'); -openerp.base_dashboard.ApplicationTiles = openerp.base.View.extend({ +openerp.web.client_actions.add( + 'board.home.applications', 'openerp.web_dashboard.ApplicationTiles'); +openerp.web_dashboard.ApplicationTiles = openerp.web.View.extend({ template: 'ApplicationTiles', start: function () { var self = this; - return new openerp.base.DataSetSearch( + return new openerp.web.DataSetSearch( this, 'ir.ui.menu', null, [['parent_id', '=', false]]) .read_slice( ['name', 'web_icon_data', 'web_icon_hover_data'], {}, function (applications) { // Create a matrix of 3*x applications @@ -371,16 +372,17 @@ openerp.base_dashboard.ApplicationTiles = openerp.base.View.extend({ }); } }); -openerp.base.client_actions.add( - 'board.home.widgets', 'openerp.base_dashboard.Widget'); -openerp.base_dashboard.Widget = openerp.base.View.extend(/** @lends openerp.base_dashboard.Widgets# */{ +openerp.web.client_actions.add( + 'board.home.widgets', 'openerp.web_dashboard.Widget'); +openerp.web_dashboard.Widget = openerp.web.View.extend(/** @lends openerp.web_dashboard.Widgets# */{ template: 'HomeWidget', /** * Initializes a "HomeWidget" client widget: handles the display of a given * res.widget objects in an OpenERP view (mainly a dashboard). * - * @constructs - * @extends openerp.base.View + * @constructs openerp.web_dashboard.Widget + * @extends openerp.web.View + * * @param {Object} parent * @param {Object} options * @param {Number} options.widget_id @@ -390,13 +392,13 @@ openerp.base_dashboard.Widget = openerp.base.View.extend(/** @lends openerp.base this.widget_id = options.widget_id; }, start: function () { - return new openerp.base.DataSet(this, 'res.widget').read_ids( + return new openerp.web.DataSet(this, 'res.widget').read_ids( [this.widget_id], ['title'], this.on_widget_loaded); }, on_widget_loaded: function (widgets) { var widget = widgets[0]; var url = _.sprintf( - '/base_dashboard/widgets/content?session_id=%s&widget_id=%d', + '/web_dashboard/widgets/content?session_id=%s&widget_id=%d', this.session.session_id, widget.id); this.$element.html(QWeb.render('HomeWidget.content', { widget: widget, diff --git a/addons/base_dashboard/static/src/xml/base_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml similarity index 88% rename from addons/base_dashboard/static/src/xml/base_dashboard.xml rename to addons/web_dashboard/static/src/xml/web_dashboard.xml index b60e466964b..e03e21b6487 100644 --- a/addons/base_dashboard/static/src/xml/base_dashboard.xml +++ b/addons/web_dashboard/static/src/xml/web_dashboard.xml @@ -2,19 +2,19 @@ @@ -32,7 +32,7 @@

      - + @@ -48,9 +48,9 @@

      • - + + src="/web/static/src/img/icons/gtk-apply.png" width="16" height="16" class="oe-selected-layout"/>

      diff --git a/addons/base/controllers/__init__.py b/addons/web_default_home/__init__.py similarity index 100% rename from addons/base/controllers/__init__.py rename to addons/web_default_home/__init__.py diff --git a/addons/base_default_home/__openerp__.py b/addons/web_default_home/__openerp__.py similarity index 86% rename from addons/base_default_home/__openerp__.py rename to addons/web_default_home/__openerp__.py index 097ff0e19c0..2093e6236f0 100644 --- a/addons/base_default_home/__openerp__.py +++ b/addons/web_default_home/__openerp__.py @@ -1,7 +1,7 @@ { "name" : "OpenERP Web installer home", "version" : "2.0", - "depends" : ['base'], + "depends" : ['web'], 'active': True, 'js': ['static/src/js/home.js'], 'css': ['static/src/css/home.css'] diff --git a/addons/base_default_home/po/base_default_home.pot b/addons/web_default_home/po/base_default_home.pot similarity index 100% rename from addons/base_default_home/po/base_default_home.pot rename to addons/web_default_home/po/base_default_home.pot diff --git a/addons/web_default_home/po/web_default_home.pot b/addons/web_default_home/po/web_default_home.pot new file mode 100644 index 00000000000..2b533ee15e6 --- /dev/null +++ b/addons/web_default_home/po/web_default_home.pot @@ -0,0 +1,39 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Welcome to your new OpenERP instance." +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Remember to bookmark this page." +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Remember your login:" +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Choose the first OpenERP Application you want to install.." +msgstr "" + +#: addons/web_default_home/static/src/xml/web_default_home.xml:0 +msgid "Install" +msgstr "" + diff --git a/addons/base_default_home/static/src/css/home.css b/addons/web_default_home/static/src/css/home.css similarity index 100% rename from addons/base_default_home/static/src/css/home.css rename to addons/web_default_home/static/src/css/home.css diff --git a/addons/base_default_home/static/src/img/account_voucher.png b/addons/web_default_home/static/src/img/account_voucher.png similarity index 100% rename from addons/base_default_home/static/src/img/account_voucher.png rename to addons/web_default_home/static/src/img/account_voucher.png diff --git a/addons/base_default_home/static/src/img/crm.png b/addons/web_default_home/static/src/img/crm.png similarity index 100% rename from addons/base_default_home/static/src/img/crm.png rename to addons/web_default_home/static/src/img/crm.png diff --git a/addons/base_default_home/static/src/img/hr.png b/addons/web_default_home/static/src/img/hr.png similarity index 100% rename from addons/base_default_home/static/src/img/hr.png rename to addons/web_default_home/static/src/img/hr.png diff --git a/addons/base_default_home/static/src/img/knowledge.png b/addons/web_default_home/static/src/img/knowledge.png similarity index 100% rename from addons/base_default_home/static/src/img/knowledge.png rename to addons/web_default_home/static/src/img/knowledge.png diff --git a/addons/base_default_home/static/src/img/marketing.png b/addons/web_default_home/static/src/img/marketing.png similarity index 100% rename from addons/base_default_home/static/src/img/marketing.png rename to addons/web_default_home/static/src/img/marketing.png diff --git a/addons/base_default_home/static/src/img/mrp.png b/addons/web_default_home/static/src/img/mrp.png similarity index 100% rename from addons/base_default_home/static/src/img/mrp.png rename to addons/web_default_home/static/src/img/mrp.png diff --git a/addons/base_default_home/static/src/img/point_of_sale.png b/addons/web_default_home/static/src/img/point_of_sale.png similarity index 100% rename from addons/base_default_home/static/src/img/point_of_sale.png rename to addons/web_default_home/static/src/img/point_of_sale.png diff --git a/addons/base_default_home/static/src/img/profile_tools.png b/addons/web_default_home/static/src/img/profile_tools.png similarity index 100% rename from addons/base_default_home/static/src/img/profile_tools.png rename to addons/web_default_home/static/src/img/profile_tools.png diff --git a/addons/base_default_home/static/src/img/project.png b/addons/web_default_home/static/src/img/project.png similarity index 100% rename from addons/base_default_home/static/src/img/project.png rename to addons/web_default_home/static/src/img/project.png diff --git a/addons/base_default_home/static/src/img/purchase.png b/addons/web_default_home/static/src/img/purchase.png similarity index 100% rename from addons/base_default_home/static/src/img/purchase.png rename to addons/web_default_home/static/src/img/purchase.png diff --git a/addons/base_default_home/static/src/img/sale.png b/addons/web_default_home/static/src/img/sale.png similarity index 100% rename from addons/base_default_home/static/src/img/sale.png rename to addons/web_default_home/static/src/img/sale.png diff --git a/addons/base_default_home/static/src/img/stock.png b/addons/web_default_home/static/src/img/stock.png similarity index 100% rename from addons/base_default_home/static/src/img/stock.png rename to addons/web_default_home/static/src/img/stock.png diff --git a/addons/base_default_home/static/src/js/home.js b/addons/web_default_home/static/src/js/home.js similarity index 85% rename from addons/base_default_home/static/src/js/home.js rename to addons/web_default_home/static/src/js/home.js index 57b5fab71f3..ed8561bc44d 100644 --- a/addons/base_default_home/static/src/js/home.js +++ b/addons/web_default_home/static/src/js/home.js @@ -1,7 +1,8 @@ -openerp.base_default_home = function (openerp) { - QWeb.add_template('/base_default_home/static/src/xml/base_default_home.xml'); +openerp.web_default_home = function (openerp) { + var QWeb = openerp.web.qweb; + QWeb.add_template('/web_default_home/static/src/xml/web_default_home.xml'); - openerp.base_default_home = { + openerp.web_default_home = { applications: [ [ { @@ -49,7 +50,7 @@ openerp.base_default_home = function (openerp) { ] }; - openerp.base.WebClient.include({ + openerp.web.WebClient.include({ default_home: function () { var self = this, // resig class can't handle _super in async contexts, by the @@ -57,7 +58,7 @@ openerp.base_default_home = function (openerp) { // reset to a baseline value of this.prototype (or something // like that) old_home = this._super; - var Installer = new openerp.base.DataSet( + var Installer = new openerp.web.DataSet( this, 'base.setup.installer'); Installer.call('already_installed', [], function (installed_modules) { if (!_(installed_modules).isEmpty()) { @@ -74,9 +75,9 @@ openerp.base_default_home = function (openerp) { } }); - openerp.base.client_actions.add( - 'home.default', 'openerp.base_default_home.DefaultHome'); - openerp.base_default_home.DefaultHome = openerp.base.View.extend({ + openerp.web.client_actions.add( + 'home.default', 'openerp.web_default_home.DefaultHome'); + openerp.web_default_home.DefaultHome = openerp.web.View.extend({ template: 'StaticHome', start: function () { var r = this._super(), self = this; @@ -89,15 +90,15 @@ openerp.base_default_home = function (openerp) { return this._super({ url: window.location.protocol + '//' + window.location.host + window.location.pathname, session: this.session, - rows: openerp.base_default_home.applications + rows: openerp.web_default_home.applications }) }, install_module: function (module_name) { - var Modules = new openerp.base.DataSetSearch( + var Modules = new openerp.web.DataSetSearch( this, 'ir.module.module', null, [['name', '=', module_name], ['state', '=', 'uninstalled']]); - var Upgrade = new openerp.base.DataSet(this, 'base.module.upgrade'); + var Upgrade = new openerp.web.DataSet(this, 'base.module.upgrade'); - $.blockUI({message:''}); + $.blockUI({message:''}); Modules.read_slice(['id'], {}, function (records) { if (!(records.length === 1)) { return; } Modules.call('state_update', diff --git a/addons/base_default_home/static/src/xml/base_default_home.xml b/addons/web_default_home/static/src/xml/web_default_home.xml similarity index 92% rename from addons/base_default_home/static/src/xml/base_default_home.xml rename to addons/web_default_home/static/src/xml/web_default_home.xml index 9ed7415afb6..5ee11387db9 100644 --- a/addons/base_default_home/static/src/xml/base_default_home.xml +++ b/addons/web_default_home/static/src/xml/web_default_home.xml @@ -14,7 +14,7 @@ diff --git a/addons/base_diagram/__init__.py b/addons/web_diagram/__init__.py similarity index 100% rename from addons/base_diagram/__init__.py rename to addons/web_diagram/__init__.py diff --git a/addons/web_diagram/__openerp__.py b/addons/web_diagram/__openerp__.py new file mode 100644 index 00000000000..c1851af362b --- /dev/null +++ b/addons/web_diagram/__openerp__.py @@ -0,0 +1,16 @@ +{ + "name" : "OpenERP Web Diagram", + "version" : "2.0", + "depends" : ["base"], + "js": [ + 'static/lib/js/raphael-min.js', + 'static/lib/js/dracula_graffle.js', + 'static/lib/js/dracula_graph.js', + 'static/lib/js/dracula_algorithms.js', + 'static/src/js/diagram.js' + ], + 'css' : [ + "static/src/css/base_diagram.css", + ], + 'active': True, +} diff --git a/addons/base_diagram/controllers/__init__.py b/addons/web_diagram/controllers/__init__.py similarity index 100% rename from addons/base_diagram/controllers/__init__.py rename to addons/web_diagram/controllers/__init__.py diff --git a/addons/base_diagram/controllers/main.py b/addons/web_diagram/controllers/main.py similarity index 82% rename from addons/base_diagram/controllers/main.py rename to addons/web_diagram/controllers/main.py index 8e258810eca..c443b048ea6 100644 --- a/addons/base_diagram/controllers/main.py +++ b/addons/web_diagram/controllers/main.py @@ -1,62 +1,52 @@ -import base.common as openerpweb -from base.controllers.main import View +import web.common as openerpweb +from web.controllers.main import View class DiagramView(View): - _cp_path = "/base_diagram/diagram" + _cp_path = "/web_diagram/diagram" @openerpweb.jsonrequest def load(self, req, model, view_id): - print req - print dir(req) fields_view = self.fields_view_get(req, model, view_id, 'diagram') return {'fields_view': fields_view} - + @openerpweb.jsonrequest - def get_diagram_info(self, req, **kw): - id = kw['id'] - model = kw['model'] - node = kw['node'] - connector = kw['connector'] - src_node = kw['src_node'] - des_node = kw['des_node'] - + def get_diagram_info(self, req, id, model, node, connector, src_node, des_node, **kw): + visible_node_fields = kw.get('visible_node_fields',[]) invisible_node_fields = kw.get('invisible_node_fields',[]) node_fields_string = kw.get('node_fields_string',[]) connector_fields = kw.get('connector_fields',[]) connector_fields_string = kw.get('connector_fields_string',[]) - + bgcolors = {} shapes = {} bgcolor = kw.get('bgcolor','') shape = kw.get('shape','') - + if bgcolor: for color_spec in bgcolor.split(';'): if color_spec: colour, color_state = color_spec.split(':') bgcolors[colour] = color_state - + if shape: for shape_spec in shape.split(';'): if shape_spec: shape_colour, shape_color_state = shape_spec.split(':') shapes[shape_colour] = shape_color_state - + ir_view = req.session.model('ir.ui.view') - graphs = ir_view.graph_get(id, model, node, connector, src_node, des_node, False, + graphs = ir_view.graph_get(int(id), model, node, connector, src_node, des_node, False, (140, 180), req.session.context) - nodes = graphs['nodes'] transitions = graphs['transitions'] isolate_nodes = {} - - for node in graphs['blank_nodes']: - isolate_nodes[node['id']] = node + for blnk_node in graphs['blank_nodes']: + isolate_nodes[blnk_node['id']] = blnk_node else: y = map(lambda t: t['y'],filter(lambda x: x['y'] if x['x']==20 else None, nodes.values())) y_max = (y and max(y)) or 120 - + connectors = {} list_tr = [] @@ -69,29 +59,29 @@ class DiagramView(View): }) connector_tr = req.session.model(connector) connector_ids = connector_tr.search([('id', 'in', list_tr)], 0, 0, 0, req.session.context) - + data_connectors =connector_tr.read(connector_ids, connector_fields, req.session.context) - - + + for tr in data_connectors: t = connectors.get(str(tr['id'])) t.update({ 'source': tr[src_node][1], 'destination': tr[des_node][1], - 'options': {} + 'options': {}, + 'signal': tr['signal'] }) for i, fld in enumerate(connector_fields): t['options'][connector_fields_string[i]] = tr[fld] - + fields = req.session.model('ir.model.fields') field_ids = fields.search([('model', '=', model), ('relation', '=', node)], 0, 0, 0, req.session.context) field_data = fields.read(field_ids, ['relation_field'], req.session.context) - node_act = req.session.model(node) search_acts = node_act.search([(field_data[0]['relation_field'], '=', id)], 0, 0, 0, req.session.context) data_acts = node_act.read(search_acts, invisible_node_fields + visible_node_fields, req.session.context) - + for act in data_acts: n = nodes.get(str(act['id'])) if not n: @@ -116,7 +106,7 @@ class DiagramView(View): for i, fld in enumerate(visible_node_fields): n['options'][node_fields_string[i]] = act[fld] - + #to relate m2o field of transition to corresponding o2m in activity in_transition_field_id = fields.search([('relation', '=', connector), ('relation_field', '=', des_node), ('model', '=', node)], 0, 0, 0, req.session.context) in_transition_field = fields.read(in_transition_field_id[0], ['name'], req.session.context)['name'] @@ -124,4 +114,5 @@ class DiagramView(View): out_transition_field_id = fields.search([('relation', '=', connector), ('relation_field', '=', src_node), ('model', '=', node)], 0, 0, 0, req.session.context) out_transition_field = fields.read(out_transition_field_id[0], ['name'], req.session.context)['name'] - return dict(nodes=nodes, conn=connectors, in_transition_field=in_transition_field, out_transition_field=out_transition_field) + id_model = req.session.model(model).read([id],['name'], req.session.context)[0]['name'] + return dict(nodes=nodes, conn=connectors, id_model = id_model) diff --git a/addons/base_diagram/po/base_diagram.pot b/addons/web_diagram/po/base_diagram.pot similarity index 100% rename from addons/base_diagram/po/base_diagram.pot rename to addons/web_diagram/po/base_diagram.pot diff --git a/addons/web_diagram/po/web_diagram.pot b/addons/web_diagram/po/web_diagram.pot new file mode 100644 index 00000000000..3fb8462aff3 --- /dev/null +++ b/addons/web_diagram/po/web_diagram.pot @@ -0,0 +1,55 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "New Node" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "New Edge" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "Show Grid:" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "First" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "<<" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "0" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "/" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid ">>" +msgstr "" + +#: addons/web_diagram/static/src/xml/base_diagram.xml:0 +msgid "Last" +msgstr "" + diff --git a/addons/base_diagram/static/lib/js/Curry-1.0.1.js b/addons/web_diagram/static/lib/js/Curry-1.0.1.js similarity index 100% rename from addons/base_diagram/static/lib/js/Curry-1.0.1.js rename to addons/web_diagram/static/lib/js/Curry-1.0.1.js diff --git a/addons/base_diagram/static/lib/js/dracula_algorithms.js b/addons/web_diagram/static/lib/js/dracula_algorithms.js similarity index 100% rename from addons/base_diagram/static/lib/js/dracula_algorithms.js rename to addons/web_diagram/static/lib/js/dracula_algorithms.js diff --git a/addons/base_diagram/static/lib/js/dracula_graffle.js b/addons/web_diagram/static/lib/js/dracula_graffle.js similarity index 100% rename from addons/base_diagram/static/lib/js/dracula_graffle.js rename to addons/web_diagram/static/lib/js/dracula_graffle.js diff --git a/addons/base_diagram/static/lib/js/dracula_graph.coffee b/addons/web_diagram/static/lib/js/dracula_graph.coffee similarity index 100% rename from addons/base_diagram/static/lib/js/dracula_graph.coffee rename to addons/web_diagram/static/lib/js/dracula_graph.coffee diff --git a/addons/base_diagram/static/lib/js/dracula_graph.js b/addons/web_diagram/static/lib/js/dracula_graph.js similarity index 96% rename from addons/base_diagram/static/lib/js/dracula_graph.js rename to addons/web_diagram/static/lib/js/dracula_graph.js index f7069c5d2e5..df9945882a7 100644 --- a/addons/base_diagram/static/lib/js/dracula_graph.js +++ b/addons/web_diagram/static/lib/js/dracula_graph.js @@ -58,7 +58,7 @@ var Graph = function() { this.edgeFactory = new EdgeFactory(); }; Graph.prototype = { - /* + /* * add a node * @id the node's ID (string or number) * @content (optional, dictionary) can contain any information that is @@ -83,7 +83,7 @@ Graph.prototype = { // NOTE: Even directed edges are added to both nodes. t.edges.push(edge); }, - + /* TODO to be implemented * Preserve a copy of the graph state (nodes, positions, ...) * @comment a comment describing the state @@ -154,19 +154,21 @@ Graph.Renderer.Raphael = function(element, graph, width, height) { return; } } - + /* * Dragging */ this.isDrag = false; this.dragger = function (e) { - this.dx = e.clientX; - this.dy = e.clientY; - selfRef.isDrag = this; - this.set && this.set.animate({"fill-opacity": .1}, 200) && this.set.toFront(); - e.preventDefault && e.preventDefault(); + if(e.detail < 2) { + this.dx = e.clientX; + this.dy = e.clientY; + selfRef.isDrag = this; + this.set && this.set.animate({"fill-opacity": .1}, 200) && this.set.toFront(); + e.preventDefault && e.preventDefault(); + } }; - + var d = document.getElementById(element); d.onmousemove = function (e) { e = e || window.event; @@ -234,7 +236,7 @@ Graph.Renderer.Raphael.prototype = { var shape; - /* if a node renderer function is provided by the user, then use it + /* if a node renderer function is provided by the user, then use it or the default render function instead */ if(!node.render) { node.render = function(r, node) { @@ -305,7 +307,7 @@ Graph.Layout.Spring.prototype = { } this.layoutCalcBounds(); }, - + layoutPrepare: function() { for (i in this.graph.nodes) { var node = this.graph.nodes[i]; @@ -314,16 +316,16 @@ Graph.Layout.Spring.prototype = { node.layoutForceX = 0; node.layoutForceY = 0; } - + }, - + layoutCalcBounds: function() { var minx = Infinity, maxx = -Infinity, miny = Infinity, maxy = -Infinity; for (i in this.graph.nodes) { var x = this.graph.nodes[i].layoutPosX; var y = this.graph.nodes[i].layoutPosY; - + if(x > maxx) maxx = x; if(x < minx) minx = x; if(y > maxy) maxy = y; @@ -335,7 +337,7 @@ Graph.Layout.Spring.prototype = { this.graph.layoutMinY = miny; this.graph.layoutMaxY = maxy; }, - + layoutIteration: function() { // Forces on nodes due to node-node repulsions @@ -345,17 +347,17 @@ Graph.Layout.Spring.prototype = { for (var d in prev) { var node2 = this.graph.nodes[prev[d]]; this.layoutRepulsive(node1, node2); - + } prev.push(c); } - + // Forces on nodes due to edge attractions for (var i = 0; i < this.graph.edges.length; i++) { var edge = this.graph.edges[i]; - this.layoutAttractive(edge); + this.layoutAttractive(edge); } - + // Move by the given force for (i in this.graph.nodes) { var node = this.graph.nodes[i]; @@ -367,7 +369,7 @@ Graph.Layout.Spring.prototype = { if(xmove < -max) xmove = -max; if(ymove > max) ymove = max; if(ymove < -max) ymove = -max; - + node.layoutPosX += xmove; node.layoutPosY += ymove; node.layoutForceX = 0; @@ -397,7 +399,7 @@ Graph.Layout.Spring.prototype = { layoutAttractive: function(edge) { var node1 = edge.source; var node2 = edge.target; - + var dx = node2.layoutPosX - node1.layoutPosX; var dy = node2.layoutPosY - node1.layoutPosY; var d2 = dx * dx + dy * dy; @@ -414,7 +416,7 @@ Graph.Layout.Spring.prototype = { var attractiveForce = (d2 - this.k * this.k) / this.k; if(edge.attraction == undefined) edge.attraction = 1; attractiveForce *= Math.log(edge.attraction) * 0.5 + 1; - + node2.layoutForceX -= attractiveForce * dx / d; node2.layoutForceY -= attractiveForce * dy / d; node1.layoutForceX += attractiveForce * dx / d; @@ -432,7 +434,7 @@ Graph.Layout.Ordered.prototype = { this.layoutPrepare(); this.layoutCalcBounds(); }, - + layoutPrepare: function(order) { for (i in this.graph.nodes) { var node = this.graph.nodes[i]; @@ -447,14 +449,14 @@ Graph.Layout.Ordered.prototype = { counter++; } }, - + layoutCalcBounds: function() { var minx = Infinity, maxx = -Infinity, miny = Infinity, maxy = -Infinity; for (i in this.graph.nodes) { var x = this.graph.nodes[i].layoutPosX; var y = this.graph.nodes[i].layoutPosY; - + if(x > maxx) maxx = x; if(x < minx) minx = x; if(y > maxy) maxy = y; @@ -470,7 +472,7 @@ Graph.Layout.Ordered.prototype = { }; /* - * usefull JavaScript extensions, + * usefull JavaScript extensions, */ function log(a) {console.log&&console.log(a);} @@ -491,14 +493,14 @@ Raphael.el.tooltip = function (tp) { this.tp.o = {x: 0, y: 0}; this.tp.hide(); this.hover( - function(event){ - this.mousemove(function(event){ - this.tp.translate(event.clientX - + function(event){ + this.mousemove(function(event){ + this.tp.translate(event.clientX - this.tp.o.x,event.clientY - this.tp.o.y); this.tp.o = {x: event.clientX, y: event.clientY}; }); this.tp.show().toFront(); - }, + }, function(event){ this.tp.hide(); this.unmousemove(); diff --git a/addons/base_diagram/static/lib/js/raphael-min.js b/addons/web_diagram/static/lib/js/raphael-min.js similarity index 100% rename from addons/base_diagram/static/lib/js/raphael-min.js rename to addons/web_diagram/static/lib/js/raphael-min.js diff --git a/addons/base_diagram/static/lib/js/seedrandom.js b/addons/web_diagram/static/lib/js/seedrandom.js similarity index 100% rename from addons/base_diagram/static/lib/js/seedrandom.js rename to addons/web_diagram/static/lib/js/seedrandom.js diff --git a/addons/web_diagram/static/src/css/base_diagram.css b/addons/web_diagram/static/src/css/base_diagram.css new file mode 100644 index 00000000000..9ba2f6b0c83 --- /dev/null +++ b/addons/web_diagram/static/src/css/base_diagram.css @@ -0,0 +1,18 @@ +.openerp .diagram { + border: 1px solid #999; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; +} + +.openerp .show_grid { + background: url("/web_diagram/static/src/img/grid.jpg") repeat; +} + +.openerp .oe_diagram_pager { + text-align: right; + white-space: nowrap; +} + +.openerp .oe_diagram_buttons { + float: left; +} diff --git a/addons/web_diagram/static/src/img/grid.jpg b/addons/web_diagram/static/src/img/grid.jpg new file mode 100644 index 00000000000..5254207b964 Binary files /dev/null and b/addons/web_diagram/static/src/img/grid.jpg differ diff --git a/addons/web_diagram/static/src/js/diagram.js b/addons/web_diagram/static/src/js/diagram.js new file mode 100644 index 00000000000..6ddaf26df98 --- /dev/null +++ b/addons/web_diagram/static/src/js/diagram.js @@ -0,0 +1,296 @@ +/*--------------------------------------------------------- + * OpenERP diagram library + *---------------------------------------------------------*/ + +openerp.web_diagram = function (openerp) { +var QWeb = openerp.web.qweb; +QWeb.add_template('/web_diagram/static/src/xml/base_diagram.xml'); +openerp.web.views.add('diagram', 'openerp.web.DiagramView'); +openerp.web.DiagramView = openerp.web.View.extend({ + searchable: false, + init: function(parent, element_id, dataset, view_id, options) { + this._super(parent, element_id); + this.set_default_options(options); + this.view_manager = parent; + this.dataset = dataset; + this.model = this.dataset.model; + this.view_id = view_id; + this.domain = this.dataset._domain || []; + this.context = {}; + this.ids = this.dataset.ids; + }, + start: function() { + return this.rpc("/web_diagram/diagram/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); + }, + + toTitleCase: function(str) { + return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); + }, + + on_loaded: function(result) { + + var self = this; + if(this.ids && this.ids.length) { + this.id = this.ids[self.dataset.index || 0]; + } + + this.fields_view = result.fields_view, + this.view_id = this.fields_view.view_id, + this.fields = this.fields_view.fields, + this.nodes = this.fields_view.arch.children[0], + this.connectors = this.fields_view.arch.children[1], + this.node = this.nodes.attrs.object, + this.connector = this.connectors.attrs.object; + + this.$element.html(QWeb.render("DiagramView", this)); + + this.$element.find('div.oe_diagram_pager button[data-pager-action]').click(function() { + var action = $(this).data('pager-action'); + self.on_pager_action(action); + }); + + this.do_update_pager(); + + // New Node,Edge + this.$element.find('#new_node.oe_diagram_button_new').click(function(){self.add_edit_node(null, self.node);}); + this.$element.find('#new_edge.oe_diagram_button_new').click(function(){self.add_edit_node(null, self.connector);}); + + this.$element.find('#toggle_grid').click(function() { + self.$element.find('.diagram').toggleClass('show_grid'); + }); + + if(this.id) { + self.get_diagram_info(); + } + + }, + + get_diagram_info: function() { + var self = this; + var params = { + 'id': this.id, + 'model': this.model, + 'node': this.node, + 'connector': this.connector, + 'bgcolor': this.nodes.attrs.bgcolor, + 'shape': this.nodes.attrs.shape, + 'src_node': this.connectors.attrs.source, + 'des_node': this.connectors.attrs.destination, + 'visible_nodes': [], + 'invisible_nodes': [], + 'node_fields': [], + 'connectors': [], + 'connectors_fields': [] + }; + + _.each(this.nodes.children, function(child) { + if(child.attrs.invisible == '1') + params['invisible_nodes'].push(child.attrs.name); + else { + params['visible_nodes'].push(child.attrs.name); + params['node_fields'].push(self.fields[child.attrs.name]['string']|| this.toTitleCase(child.attrs.name)); + } + }); + + _.each(this.connectors.children, function(conn) { + params['connectors_fields'].push(self.fields[conn.attrs.name]['string']|| this.toTitleCase(conn.attrs.name)); + params['connectors'].push(conn.attrs.name); + }); + + this.rpc( + '/web_diagram/diagram/get_diagram_info',params, + function(result) { + self.draw_diagram(result); + } + ); + }, + + on_diagram_loaded: function(record) { + var id_record = record['id']; + if(id_record) { + this.id = id_record; + this.get_diagram_info(); + } + }, + + draw_diagram: function(result) { + var diagram = new Graph(); + + this.active_model = result['id_model']; + + var res_nodes = result['nodes']; + var res_connectors = result['conn']; + + //Custom logic + var self = this; + var renderer = function(r, n) { + var node; + var set; + var shape = n.node.shape; + if(shape == 'rectangle') + shape = 'rect'; + node = r[shape](n.node.x, n.node.y).attr({ + "fill": n.node.color + }).dblclick(function() { + self.add_edit_node(n.node.id, self.node); + }); + set = r.set() + .push(node) + .push( + r.text(n.node.x, n.node.y, (n.label || n.id)) + .attr({"cursor":"pointer"}) + .dblclick(function() { + self.add_edit_node(n.node.id, self.node); + }) + ); + node.attr({cursor: "pointer"}); + + if(shape == "ellipse") + node.attr({rx: "40", ry: "20"}); + else if(shape == 'rect') { + node.attr({width: "60", height: "44"}); + node.next.attr({"text-anchor": "middle", x: n.node.x + 20, y: n.node.y + 20}); + } + return set; + }; + + _.each(res_nodes, function(res_node) { + diagram.addNode(res_node['name'],{node: res_node,render: renderer}); + }); + + // Id for Path(Edges) + var edge_ids = []; + + _.each(res_connectors, function(connector, index) { + edge_ids.push(index); + diagram.addEdge(connector['source'], connector['destination'], {directed : true, label: connector['signal']}); + }); + + + if ($('div#dia-canvas').children().length > 0) { + $('div#dia-canvas').children().remove(); + } + + var layouter = new Graph.Layout.Ordered(diagram); + var render_diagram = new Graph.Renderer.Raphael('dia-canvas', diagram, $('div#dia-canvas').width(), $('div#dia-canvas').height()); + + _.each(diagram.edges, function(edge, index) { + if(edge.connection) { + edge.connection.fg.attr({cursor: "pointer"}).dblclick(function() { + self.add_edit_node(edge_ids[index], self.connector); + }); + } + }); + }, + + add_edit_node: function(id, model) { + var self = this; + + if(!model) + model = self.node; + if(id) + id = parseInt(id, 10); + var action_manager = new openerp.web.ActionManager(this); + var dialog = new openerp.web.Dialog(this, { + width: 800, + height: 600, + buttons : { + Cancel : function() { + $(this).dialog('destroy'); + }, + Save : function() { + var form_view = action_manager.inner_viewmanager.views.form.controller; + + form_view.do_save(function() { + self.dataset.read_index(_.keys(self.fields_view.fields), self.on_diagram_loaded); + }); + $(this).dialog('destroy'); + } + } + }).start().open(); + action_manager.appendTo(dialog.$element); + action_manager.do_action({ + res_model : model, + res_id: id, + views : [[false, 'form']], + type : 'ir.actions.act_window', + auto_search : false, + flags : { + search_view: false, + sidebar : false, + views_switcher : false, + action_buttons : false, + pager: false + } + }); + + var form_controller = action_manager.inner_viewmanager.views.form.controller; + + var form_fields; + + if(model == self.node) { + form_fields = ['wkf_id']; + } else { + form_fields = ['act_from', 'act_to']; + } + + if(model == self.node || id) { + $.each(form_fields, function(index, fld) { + form_controller.on_record_loaded.add_first(function() { + form_controller.fields[fld].modifiers.readonly = true; + form_controller.fields[fld].$input.attr('disabled', true); + form_controller.fields[fld].$drop_down.unbind(); + form_controller.fields[fld].$menu_btn.unbind(); + }); + }); + } + if(!id && (model == self.node)) { + $.each(form_fields, function(index, fld) { + form_controller.on_record_loaded.add_last(function() { + form_controller.fields[fld].set_value([self.id,self.active_model]); + form_controller.fields[fld].dirty = true; + }); + }); + } + }, + + on_pager_action: function(action) { + switch (action) { + case 'first': + this.dataset.index = 0; + break; + case 'previous': + this.dataset.previous(); + break; + case 'next': + this.dataset.next(); + break; + case 'last': + this.dataset.index = this.dataset.ids.length - 1; + break; + } + this.dataset.read_index(_.keys(this.fields_view.fields), this.on_diagram_loaded); + this.do_update_pager(); + }, + + do_update_pager: function(hide_index) { + var $pager = this.$element.find('div.oe_diagram_pager'); + var index = hide_index ? '-' : this.dataset.index + 1; + if(!this.dataset.count) { + this.dataset.count = this.dataset.ids.length; + } + $pager.find('span.oe_pager_index').html(index); + $pager.find('span.oe_pager_count').html(this.dataset.count); + }, + + do_show: function () { + this.$element.show(); + }, + + do_hide: function () { + this.$element.hide(); + } +}); +}; + +// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web_diagram/static/src/xml/base_diagram.xml b/addons/web_diagram/static/src/xml/base_diagram.xml new file mode 100644 index 00000000000..f57505d81ac --- /dev/null +++ b/addons/web_diagram/static/src/xml/base_diagram.xml @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/addons/base_graph/__init__.py b/addons/web_gantt/__init__.py similarity index 50% rename from addons/base_graph/__init__.py rename to addons/web_gantt/__init__.py index 53e20f29429..013e4b7ec4e 100644 --- a/addons/base_graph/__init__.py +++ b/addons/web_gantt/__init__.py @@ -1,2 +1 @@ #!/usr/bin/python -import controllers \ No newline at end of file diff --git a/addons/base_gantt/__openerp__.py b/addons/web_gantt/__openerp__.py similarity index 84% rename from addons/base_gantt/__openerp__.py rename to addons/web_gantt/__openerp__.py index c23f352a4f7..6d857e5dc48 100644 --- a/addons/base_gantt/__openerp__.py +++ b/addons/web_gantt/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base Gantt", + "name": "web Gantt", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ 'static/lib/dhtmlxGantt/sources/dhtmlxcommon.js', 'static/lib/dhtmlxGantt/sources/dhtmlxgantt.js', diff --git a/addons/base_gantt/controllers/__init__.py b/addons/web_gantt/controllers/__init__.py similarity index 100% rename from addons/base_gantt/controllers/__init__.py rename to addons/web_gantt/controllers/__init__.py diff --git a/addons/base_gantt/controllers/main.py b/addons/web_gantt/controllers/main.py similarity index 100% rename from addons/base_gantt/controllers/main.py rename to addons/web_gantt/controllers/main.py diff --git a/addons/base_gantt/po/base_gantt.pot b/addons/web_gantt/po/base_gantt.pot similarity index 100% rename from addons/base_gantt/po/base_gantt.pot rename to addons/web_gantt/po/base_gantt.pot diff --git a/addons/web_gantt/po/web_gantt.pot b/addons/web_gantt/po/web_gantt.pot new file mode 100644 index 00000000000..945fa401fd2 --- /dev/null +++ b/addons/web_gantt/po/web_gantt.pot @@ -0,0 +1,19 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/License_GPL.html b/addons/web_gantt/static/lib/dhtmlxGantt/License_GPL.html similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/License_GPL.html rename to addons/web_gantt/static/lib/dhtmlxGantt/License_GPL.html diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxcommon.js diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.css diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/dhtmlxgantt.js diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/arr.gif diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/bg_week.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_bg.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/menu_selection.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/menu/window_tr.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/minus.gif diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/parentnode_filled.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/plus.gif diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_bg.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png b/addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png rename to addons/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/progress_filled.png diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/index.html b/addons/web_gantt/static/lib/dhtmlxGantt/index.html similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/index.html rename to addons/web_gantt/static/lib/dhtmlxGantt/index.html diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/readme.txt b/addons/web_gantt/static/lib/dhtmlxGantt/readme.txt similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/readme.txt rename to addons/web_gantt/static/lib/dhtmlxGantt/readme.txt diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js b/addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js rename to addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxcommon.js diff --git a/addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js b/addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js similarity index 100% rename from addons/base_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js rename to addons/web_gantt/static/lib/dhtmlxGantt/sources/dhtmlxgantt.js diff --git a/addons/base_gantt/static/src/js/gantt.js b/addons/web_gantt/static/src/js/gantt.js similarity index 93% rename from addons/base_gantt/static/src/js/gantt.js rename to addons/web_gantt/static/src/js/gantt.js index ad44382397b..5bf04ff46c7 100644 --- a/addons/base_gantt/static/src/js/gantt.js +++ b/addons/web_gantt/static/src/js/gantt.js @@ -1,14 +1,15 @@ /*--------------------------------------------------------- - * OpenERP base_gantt + * OpenERP web_gantt *---------------------------------------------------------*/ -openerp.base_gantt = function (openerp) { -QWeb.add_template('/base_gantt/static/src/xml/base_gantt.xml'); -openerp.base.views.add('gantt', 'openerp.base_gantt.GanttView'); -openerp.base_gantt.GanttView = openerp.base.View.extend({ +openerp.web_gantt = function (openerp) { +var QWeb = openerp.web.qweb; +QWeb.add_template('/web_gantt/static/src/xml/web_gantt.xml'); +openerp.web.views.add('gantt', 'openerp.web_gantt.GanttView'); +openerp.web_gantt.GanttView = openerp.web.View.extend({ init: function(parent, element_id, dataset, view_id) { this._super(parent, element_id); - this.view_manager = parent || new openerp.base.NullViewManager(); + this.view_manager = parent || new openerp.web.NullViewManager(); this.dataset = dataset; this.model = dataset.model; this.view_id = view_id; @@ -31,14 +32,13 @@ init: function(parent, element_id, dataset, view_id) { }, start: function() { - this.rpc("/base_gantt/ganttview/load", - {"model": this.model, "view_id": this.view_id}, this.on_loaded); + this.rpc("/web/view/load", {"model": this.model, "view_id": this.view_id, "view_type": "gantt"}, this.on_loaded); }, on_loaded: function(data) { var self = this; - this.fields_view = data.fields_view; + this.fields_view = data; this.name = this.fields_view.arch.attrs.string; this.view_id = this.fields_view.view_id; @@ -67,7 +67,7 @@ init: function(parent, element_id, dataset, view_id) { create_gantt: function() { ganttChartControl = new GanttChart(this.day_length); - ganttChartControl.setImagePath("/base_gantt/static/lib/dhtmlxGantt/codebase/imgs/"); + ganttChartControl.setImagePath("/web_gantt/static/lib/dhtmlxGantt/codebase/imgs/"); ganttChartControl.setEditable(true); ganttChartControl.showTreePanel(true); ganttChartControl.showContextMenu(true); @@ -94,7 +94,7 @@ init: function(parent, element_id, dataset, view_id) { COLOR_PALETTE = ['#ccccff', '#cc99ff', '#75507b', '#3465a4', '#73d216', '#c17d11', '#edd400', '#fcaf3e', '#ef2929', '#ff00c9', '#ad7fa8', '#729fcf', '#8ae234', '#e9b96e', '#fce94f', '#ff8e00', '#ff0000', '#b0008c', '#9000ff', '#0078ff', '#00ff00', '#e6ff00', '#ffff00', - '#905000', '#9b0000', '#840067', '#510090', '#0000c9', '#009b00', '#9abe00', '#ffc900'] + '#905000', '#9b0000', '#840067', '#510090', '#0000c9', '#009b00', '#9abe00', '#ffc900']; if (result.length != 0){ var show_event = []; @@ -141,7 +141,7 @@ init: function(parent, element_id, dataset, view_id) { var color = res[this.color_field][0] || res[this.color_field]; if (color_box[color] == undefined){ color_box[color] = COLOR_PALETTE[k]; - k = k + 1; + k += 1; } if (this.date_stop != undefined){ @@ -156,8 +156,8 @@ init: function(parent, element_id, dataset, view_id) { else{ var duration = res[this.date_delay]; } - if (duration == false) - duration = 0 + if (!duration) + duration = 0; if (self.grp.length){ for (var j in self.grp){ @@ -169,7 +169,7 @@ init: function(parent, element_id, dataset, view_id) { grp_key = res[self.grp[j]['group_by']]; } - if (grp_key == false){ + if (!grp_key){ grp_key = "Undefined"; } @@ -233,7 +233,7 @@ init: function(parent, element_id, dataset, view_id) { evt_date = all_events[evt_id]['evt'][2]; evt_duration = all_events[evt_id]['evt'][3]; - evt_str_date = this.convert_date_str(evt_date); + var evt_str_date = this.convert_date_str(evt_date); evt_end_date = this.end_date(evt_str_date, evt_duration); while (all_events[evt_id]['parent'] != "") { @@ -396,14 +396,14 @@ init: function(parent, element_id, dataset, view_id) { "type":"ir.actions.act_window", "view_type":"form", "view_mode":"form" - } + }; action.flags = { search_view: false, sidebar : false, views_switcher : false, pager: false - } + }; var element_id = _.uniqueId("act_window_dialog"); var dialog = jQuery('
      ', { 'id': element_id @@ -425,7 +425,7 @@ init: function(parent, element_id, dataset, view_id) { } } }); - var action_manager = new openerp.base.ActionManager(this, element_id); + var action_manager = new openerp.web.ActionManager(this, element_id); action_manager.start(); action_manager.do_action(action); @@ -474,24 +474,24 @@ init: function(parent, element_id, dataset, view_id) { convert_str_date: function (str){ if (str.length == 19){ this.format = "yyyy-MM-dd HH:mm:ss"; - return openerp.base.str_to_datetime(str); + return openerp.web.str_to_datetime(str); } else if (str.length == 10){ this.format = "yyyy-MM-dd"; - return openerp.base.str_to_date(str); + return openerp.web.str_to_date(str); } else if (str.length == 8){ this.format = "HH:mm:ss"; - return openerp.base.str_to_time(str); + return openerp.web.str_to_time(str); } throw "Unrecognized date/time format"; }, convert_date_str: function(full_date) { if (this.format == "yyyy-MM-dd HH:mm:ss"){ - return openerp.base.datetime_to_str(full_date); + return openerp.web.datetime_to_str(full_date); } else if (this.format == "yyyy-MM-dd"){ - return openerp.base.date_to_str(full_date); + return openerp.web.date_to_str(full_date); } else if (this.format == "HH:mm:ss"){ - return openerp.base.time_to_str(full_date); + return openerp.web.time_to_str(full_date); } throw "Unrecognized date/time format"; }, @@ -508,7 +508,7 @@ init: function(parent, element_id, dataset, view_id) { do_search: function (domains, contexts, groupbys) { var self = this; this.grp = groupbys; - return this.rpc('/base/session/eval_domain_and_context', { + return this.rpc('/web/session/eval_domain_and_context', { domains: domains, contexts: contexts, group_by_seq: groupbys diff --git a/addons/base_gantt/static/src/xml/base_gantt.xml b/addons/web_gantt/static/src/xml/web_gantt.xml similarity index 100% rename from addons/base_gantt/static/src/xml/base_gantt.xml rename to addons/web_gantt/static/src/xml/web_gantt.xml diff --git a/addons/base_gantt/__init__.py b/addons/web_graph/__init__.py similarity index 100% rename from addons/base_gantt/__init__.py rename to addons/web_graph/__init__.py diff --git a/addons/base_graph/__openerp__.py b/addons/web_graph/__openerp__.py similarity index 80% rename from addons/base_graph/__openerp__.py rename to addons/web_graph/__openerp__.py index c393953b9fd..4a1c4a6576f 100644 --- a/addons/base_graph/__openerp__.py +++ b/addons/web_graph/__openerp__.py @@ -1,7 +1,7 @@ { - "name": "Base Graph", + "name": "web Graph", "version": "2.0", - "depends": ['base'], + "depends": ['web'], "js": [ "static/lib/dhtmlxGraph/codebase/dhtmlxchart.js", "static/src/js/graph.js"], diff --git a/addons/base_graph/controllers/__init__.py b/addons/web_graph/controllers/__init__.py similarity index 100% rename from addons/base_graph/controllers/__init__.py rename to addons/web_graph/controllers/__init__.py diff --git a/addons/base_graph/controllers/main.py b/addons/web_graph/controllers/main.py similarity index 72% rename from addons/base_graph/controllers/main.py rename to addons/web_graph/controllers/main.py index f326faf3854..cda868c0809 100644 --- a/addons/base_graph/controllers/main.py +++ b/addons/web_graph/controllers/main.py @@ -1,8 +1,8 @@ -from base.controllers.main import View -import base.common as openerpweb +from web.controllers.main import View +import web.common as openerpweb class GraphView(View): - _cp_path = "/base_graph/graphview" + _cp_path = "/web_graph/graphview" @openerpweb.jsonrequest def load(self, req, model, view_id): diff --git a/addons/base_graph/po/base_graph.pot b/addons/web_graph/po/base_graph.pot similarity index 100% rename from addons/base_graph/po/base_graph.pot rename to addons/web_graph/po/base_graph.pot diff --git a/addons/web_graph/po/web_graph.pot b/addons/web_graph/po/web_graph.pot new file mode 100644 index 00000000000..945fa401fd2 --- /dev/null +++ b/addons/web_graph/po/web_graph.pot @@ -0,0 +1,19 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:02+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + diff --git a/addons/base_graph/static/lib/dhtmlxGraph/License_GPL.html b/addons/web_graph/static/lib/dhtmlxGraph/License_GPL.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/License_GPL.html rename to addons/web_graph/static/lib/dhtmlxGraph/License_GPL.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.css diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart.js diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.css diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js b/addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/dhtmlxchart_debug.js diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/AUTHORS diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/COPYING diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/README diff --git a/addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js b/addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js rename to addons/web_graph/static/lib/dhtmlxGraph/codebase/thirdparty/excanvas/excanvas.js diff --git a/addons/base_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip b/addons/web_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip rename to addons/web_graph/static/lib/dhtmlxGraph/dhtmlxchart_full.zip diff --git a/addons/base_graph/static/lib/dhtmlxGraph/readme.txt b/addons/web_graph/static/lib/dhtmlxGraph/readme.txt similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/readme.txt rename to addons/web_graph/static/lib/dhtmlxGraph/readme.txt diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/01_load_xml.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/02_load_json.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/03_load_csv.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/04_load_jsarray.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/01_initialization/05_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/01_default.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/02_custom.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/03_custom_logic.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/02_color/04_gradient.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/01_basic.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/03_group/02_scales.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/02_text.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/03_3d_chart.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/04_pie_chart/04_legend.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/02_style.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/03_scale.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/04_spline.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/05_line_chart/05_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/02_text.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/03_scales.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/04_styles.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/05_stacked_chart.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/06_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/07_horizonal_bars.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/06_bar_chart/08_horizonal_stacked_bars.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/01_init.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/02_scale.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_series.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/07_area_chart/03_stacked_area.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/01_add.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/02_events.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/03_sorting.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/08_dynamic/04_filtering.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/01_dhtmlxgrid.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/02_dhtmlxgrid_group.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html b/addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html rename to addons/web_graph/static/lib/dhtmlxGraph/samples/09_integration/03_windows.html diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/config.php b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/config.php similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/config.php rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/config.php diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/data.php b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/data.php similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/data.php rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/data.php diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/sales.xml b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/sales.xml similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/sales.xml rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/sales.xml diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/common/stat.xml b/addons/web_graph/static/lib/dhtmlxGraph/samples/common/stat.xml similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/common/stat.xml rename to addons/web_graph/static/lib/dhtmlxGraph/samples/common/stat.xml diff --git a/addons/base_graph/static/lib/dhtmlxGraph/samples/readme.txt b/addons/web_graph/static/lib/dhtmlxGraph/samples/readme.txt similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/samples/readme.txt rename to addons/web_graph/static/lib/dhtmlxGraph/samples/readme.txt diff --git a/addons/base_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js b/addons/web_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js similarity index 100% rename from addons/base_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js rename to addons/web_graph/static/lib/dhtmlxGraph/sources/dhtmlxchart.js diff --git a/addons/base_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js similarity index 97% rename from addons/base_graph/static/src/js/graph.js rename to addons/web_graph/static/src/js/graph.js index e76d38b33bc..f35e6ab112c 100644 --- a/addons/base_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -1,8 +1,8 @@ /*--------------------------------------------------------- - * OpenERP base_graph + * OpenERP web_graph *---------------------------------------------------------*/ -openerp.base_graph = function (openerp) { +openerp.web_graph = function (openerp) { var COLOR_PALETTE = [ '#cc99ff', '#ccccff', '#48D1CC', '#CFD784', '#8B7B8B', '#75507b', '#b0008c', '#ff0000', '#ff8e00', '#9000ff', '#0078ff', '#00ff00', @@ -12,9 +12,10 @@ var COLOR_PALETTE = [ '#ad7fa8', '#729fcf', '#8ae234', '#e9b96e', '#fce94f', '#f57900', '#cc0000', '#d400a8']; -QWeb.add_template('/base_graph/static/src/xml/base_graph.xml'); -openerp.base.views.add('graph', 'openerp.base_graph.GraphView'); -openerp.base_graph.GraphView = openerp.base.View.extend({ +var QWeb = openerp.web.qweb; +QWeb.add_template('/web_graph/static/src/xml/web_graph.xml'); +openerp.web.views.add('graph', 'openerp.web_graph.GraphView'); +openerp.web_graph.GraphView = openerp.web.View.extend({ init: function(parent, element_id, dataset, view_id) { this._super(parent, element_id); @@ -32,7 +33,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ this.$element.hide(); }, start: function() { - return this.rpc("/base_graph/graphview/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); + return this.rpc("/web_graph/graphview/load", {"model": this.model, "view_id": this.view_id}, this.on_loaded); }, on_loaded: function(data) { this.all_fields = data.all_fields; @@ -455,7 +456,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ do_search: function(domains, contexts, groupbys) { var self = this; - this.rpc('/base/session/eval_domain_and_context', { + this.rpc('/web/session/eval_domain_and_context', { domains: domains, contexts: contexts, group_by_seq: groupbys diff --git a/addons/base_graph/static/src/xml/base_graph.xml b/addons/web_graph/static/src/xml/web_graph.xml similarity index 100% rename from addons/base_graph/static/src/xml/base_graph.xml rename to addons/web_graph/static/src/xml/web_graph.xml diff --git a/addons/web_hello/__init__.py b/addons/web_hello/__init__.py new file mode 100644 index 00000000000..013e4b7ec4e --- /dev/null +++ b/addons/web_hello/__init__.py @@ -0,0 +1 @@ +#!/usr/bin/python diff --git a/addons/base_hello/__openerp__.py b/addons/web_hello/__openerp__.py similarity index 100% rename from addons/base_hello/__openerp__.py rename to addons/web_hello/__openerp__.py diff --git a/addons/base_hello/po/base_hello.pot b/addons/web_hello/po/base_hello.pot similarity index 100% rename from addons/base_hello/po/base_hello.pot rename to addons/web_hello/po/base_hello.pot diff --git a/addons/web_hello/po/web_hello.pot b/addons/web_hello/po/web_hello.pot new file mode 100644 index 00000000000..d7f6df2d73d --- /dev/null +++ b/addons/web_hello/po/web_hello.pot @@ -0,0 +1,19 @@ +# Translations template for PROJECT. +# Copyright (C) 2011 ORGANIZATION +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2011. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2011-09-06 12:03+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 0.9.6\n" + diff --git a/addons/base_hello/static/openerp/base_hello.js b/addons/web_hello/static/openerp/base_hello.js similarity index 80% rename from addons/base_hello/static/openerp/base_hello.js rename to addons/web_hello/static/openerp/base_hello.js index 5d6a02d355b..99c97006eac 100644 --- a/addons/base_hello/static/openerp/base_hello.js +++ b/addons/web_hello/static/openerp/base_hello.js @@ -2,9 +2,9 @@ * OpenERP base_hello (Example module) *---------------------------------------------------------*/ -openerp.base_hello = function(openerp) { +openerp.web_hello = function(openerp) { -openerp.base.SearchView = openerp.base.SearchView.extend({ +openerp.web.SearchView = openerp.web.SearchView.extend({ init:function() { this._super.apply(this,arguments); this.on_search.add(function(){console.log('hello');}); diff --git a/addons/base_default_home/__init__.py b/addons/web_kanban/__init__.py similarity index 100% rename from addons/base_default_home/__init__.py rename to addons/web_kanban/__init__.py diff --git a/addons/web_kanban/__openerp__.py b/addons/web_kanban/__openerp__.py new file mode 100644 index 00000000000..30a6421cca1 --- /dev/null +++ b/addons/web_kanban/__openerp__.py @@ -0,0 +1,12 @@ +{ + "name" : "Base Kanban", + "version" : "2.0", + "depends" : ["web"], + "js": [ + "static/src/js/kanban.js" + ], + "css": [ + "static/src/css/kanban.css" + ], + 'active': True +} diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css new file mode 100644 index 00000000000..afac6cdef47 --- /dev/null +++ b/addons/web_kanban/static/src/css/kanban.css @@ -0,0 +1,203 @@ +.openerp .oe_kanban_view .oe_column { + float: left; + width: 100%; +} + +.openerp .oe_kanban_view .ui-sortable-placeholder { + border: 1px dotted black; + visibility: visible !important; + height: 60px !important; +} + +.openerp .oe_kanban_view .oe_column_heading { + color: #000000; + font-size: 1.5em; + font-weight: bold; +} +.openerp .oe_kanban_action_button { + height: 22px; + margin: 0; +} +.openerp .oe_kanban_action_a { + text-decoration: none; +} + +.openerp .oe_kanban_box { + background: #FFF; + border: 2px solid #CCC; + border-radius: 4px; + margin-bottom: 5px; +} +.openerp .oe_kanban_box_header { + background: #EEE; + border-bottom: 1px solid #CCC; +} +.openerp .oe_kanban_title1 { + font-size: 130%; + font-weight: bold; + padding: 0 4px 0 4px; +} +.openerp .oe_kanban_title2 { + font-size: 120%; + font-weight: bold; + padding: 0 4px 0 4px; +} +.openerp .oe_kanban_title3 { + font-size: 110%; + font-weight: normal; + padding: 0 4px 0 4px; +} +.openerp .oe_kanban_small { + font-size: 80%; + font-weight: normal; +} +.openerp .oe_kanban_table { + width: 100%; + border: none; + border-collapse: collapse; + margin: 0; + padding: 0; +} +.openerp .oe_kanban_gravatar { + display: block; + border-radius: 2px; +} +.openerp .oe_kanban_box_content { + padding: 4px; +} +.openerp .oe_kanban_buttons_set { + border-top: 1px dotted; + white-space: nowrap; + padding-top: 2px; + position: relative; +} +.openerp .oe_kanban_buttons_set a { + padding: 2px; +} +.oe_kanban_color_picker { + position: absolute; + top: -10px; + border: 1px solid black; + -moz-box-shadow: 2px 2px 5px #666; + -webkit-box-shadow: 2px 2px 5px #666; + box-shadow: 2px 2px 5px #666; +} +.oe_kanban_color_picker a { + display: block; + width: 30px; + height: 30px; + border: 1px solid black; +} +.oe_kanban_color_picker a:hover { + border-color: white; +} +.openerp .oe_kanban_left { + float: left; +} +.openerp .oe_kanban_right { + float: right; +} +.openerp .oe_kanban_clear { + clear: both; +} +.openerp .oe_kanban_box_show_onclick { + display: none; +} +.openerp .oe_kanban_draghandle { + cursor: move; +} + +/* Custom colors are also present in kanban.js */ +/* Custom color#1 */ +.openerp .oe_kanban_color_1 .oe_kanban_color_bglight { + background: #FFC7C7; +} +.openerp .oe_kanban_color_1 .oe_kanban_color_bgdark { + background: #FF8F8F; +} +.openerp .oe_kanban_color_1 .oe_kanban_color_border { + border-color: #D97979; +} + +/* Custom color#2 */ +.openerp .oe_kanban_color_2 .oe_kanban_color_bglight { + background: #FFF1C7; +} +.openerp .oe_kanban_color_2 .oe_kanban_color_bgdark { + background: #FFE38F; +} +.openerp .oe_kanban_color_2 .oe_kanban_color_border { + border-color: #D9C179; +} + +/* Custom color#3 */ +.openerp .oe_kanban_color_3 .oe_kanban_color_bglight { + background: #E3FFC7; +} +.openerp .oe_kanban_color_3 .oe_kanban_color_bgdark { + background: #C7FF8F; +} +.openerp .oe_kanban_color_3 .oe_kanban_color_border { + border-color: #A9D979; +} + +/* Custom color#4 */ +.openerp .oe_kanban_color_4 .oe_kanban_color_bglight { + background: #C7FFD5; +} +.openerp .oe_kanban_color_4 .oe_kanban_color_bgdark { + background: #8FFFAB; +} +.openerp .oe_kanban_color_4 .oe_kanban_color_border { + border-color: #79D991; +} + +/* Custom color#5 */ +.openerp .oe_kanban_color_5 .oe_kanban_color_bglight { + background: #C7FFFF; +} +.openerp .oe_kanban_color_5 .oe_kanban_color_bgdark { + background: #8FFFFF; +} +.openerp .oe_kanban_color_5 .oe_kanban_color_border { + border-color: #79D9D9; +} + +/* Custom color#6 */ +.openerp .oe_kanban_color_6 .oe_kanban_color_bglight { + background: #C7D5FF; +} +.openerp .oe_kanban_color_6 .oe_kanban_color_bgdark { + background: #8FABFF; +} +.openerp .oe_kanban_color_6 .oe_kanban_color_border { + border-color: #8FABFF; +} + +/* Custom color#7 */ +.openerp .oe_kanban_color_7 .oe_kanban_color_bglight { + background: #E3C7FF; +} +.openerp .oe_kanban_color_7 .oe_kanban_color_bgdark { + background: #C78FFF; +} +.openerp .oe_kanban_color_7 .oe_kanban_color_border { + border-color: #A979D9; +} + +/* Custom color#8 */ +.openerp .oe_kanban_color_8 .oe_kanban_color_bglight { + background: #FFC7F1; +} +.openerp .oe_kanban_color_8 .oe_kanban_color_bgdark { + background: #FF8FE3; +} +.openerp .oe_kanban_color_8 .oe_kanban_color_border { + border-color: #D979C1; +} + +/* Alert color */ +.openerp .oe_kanban_color_alert .oe_kanban_color_border { + border-color: #c00 !important; +} + diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js new file mode 100644 index 00000000000..dfaf7769df5 --- /dev/null +++ b/addons/web_kanban/static/src/js/kanban.js @@ -0,0 +1,448 @@ +openerp.web_kanban = function (openerp) { + +var QWeb = openerp.web.qweb; +QWeb.add_template('/web_kanban/static/src/xml/web_kanban.xml'); +openerp.web.views.add('kanban', 'openerp.web_kanban.KanbanView'); +openerp.web_kanban.KanbanView = openerp.web.View.extend({ + init: function (parent, element_id, dataset, view_id, options) { + this._super(parent, element_id); + this.set_default_options(options); + this.dataset = dataset; + this.model = dataset.model; + this.domain = dataset.domain; + this.context = dataset.context; + this.view_id = view_id; + this.fields_view = {}; + this.group_by = []; + this.source_index = {}; + this.all_display_data = false; + this.groups = []; + this.qweb = new QWeb2.Engine(); + if (this.options.action_views_ids.form) { + this.form_dialog = new openerp.web.FormDialog(this, {}, this.options.action_views_ids.form, dataset).start(); + this.form_dialog.on_form_dialog_saved.add_last(this.on_record_saved); + } + }, + start: function() { + return this.rpc("/web/view/load", {"model": this.model, "view_id": this.view_id, "view_type": "kanban"}, this.on_loaded); + }, + on_loaded: function(data) { + var self = this; + this.fields_view = data; + this.add_qweb_template(); + if (this.qweb.has_template('kanban-box')) { + this.do_actual_search(); + } + }, + add_qweb_template: function() { + for (var i=0, ii=this.fields_view.arch.children.length; i < ii; i++) { + var child = this.fields_view.arch.children[i]; + if (child.tag === "templates") { + this.transform_qweb_template(child); + this.qweb.add_template(openerp.web.json_node_to_xml(child)); + break; + } + } + }, + kanban_color: function(variable) { + var number_of_color_schemes = 8, + index = 0; + switch (typeof(variable)) { + case 'string': + for (var i=0, ii=variable.length; i 0) { + drag_handel = ".oe_kanban_draghandle"; + } + this.$element.find(".oe_column").sortable({ + connectWith: ".oe_column", + handle : drag_handel, + start: function(event, ui) { + self.source_index['index'] = ui.item.index(); + self.source_index['column'] = ui.item.parent().attr('id'); + }, + stop: self.on_receive_record, + }); + this.$element.find(".oe_column").disableSelection() + this.$element.find('button.oe_kanban_button_new').click(this.do_add_record); + }, + on_button_click: function (button_attrs, record_id) { + var self = this; + if (this.groups.length) { + _.each(this.groups, function (group) { + group.list([], + function (groups) {}, + function (dataset) { + dataset.read_slice([], {}, function(records) { + var index = parseInt(_.indexOf(dataset.ids, record_id)); + if(index >= 0) { + self.on_confirm_click(dataset, button_attrs, index, record_id); + } + }); + } + ); + }); + } else { + var index = parseInt(_.indexOf(self.dataset.ids, record_id)); + if (index >= 0) { + _.extend(self.dataset, {domain: self.domain, context: self.context}); + self.on_confirm_click(self.dataset, button_attrs, index, record_id); + } + } + }, + on_confirm_click: function (dataset, button_attrs, index, record_id) { + this.on_execute_button_click(dataset, button_attrs, record_id); + }, + do_add_record: function() { + this.dataset.index = null; + this.do_switch_view('form'); + }, + do_edit_record: function(record_id) { + if (this.form_dialog) { + this.form_dialog.load_id(record_id); + this.form_dialog.open(); + } else { + this.notification.warn("Kanban", "No form view defined for this object"); + } + }, + on_record_saved: function(r) { + var id = this.form_dialog.form.datarecord.id; + // TODO fme: reload record instead of all. need refactoring + this.do_actual_search(); + }, + do_change_color: function(record_id, $e) { + var self = this, + id = record_id, + colors = '#FFC7C7,#FFF1C7,#E3FFC7,#C7FFD5,#C7FFFF,#C7D5FF,#E3C7FF,#FFC7F1'.split(','), + $cpicker = $(QWeb.render('KanbanColorPicker', { colors : colors, columns: 2 })); + $e.after($cpicker); + $cpicker.mouseenter(function() { + clearTimeout($cpicker.data('timeoutId')); + }).mouseleave(function(evt) { + var timeoutId = setTimeout(function() { $cpicker.remove() }, 500); + $cpicker.data('timeoutId', timeoutId); + }); + $cpicker.find('a').click(function() { + var data = {}; + data[$e.data('name')] = $(this).data('color'); + self.dataset.write(id, data, {}, function() { + // TODO fme: reload record instead of all. need refactoring + self.do_actual_search(); + }); + $cpicker.remove(); + }); + }, + do_delete: function (id) { + var self = this; + return $.when(this.dataset.unlink([id])).then(function () { + self.drop_records(id); + }); + }, + drop_records: function (id) { + var self = this; + _.each(self.all_display_data, function(data, index) { + _.each(data.records, function(record, index_row) { + if (parseInt(record.id) == id) { + self.all_display_data[index]['records'].splice(index_row, 1); + self.all_display_data[index]['ids'].splice(index_row, 1); + return false; + } + }); + }); + self.$element.find("#main_" + id).remove(); + }, + on_execute_button_click: function (dataset, button_attrs, record_id) { + var self = this; + this.execute_action( + button_attrs, dataset, + record_id, function () { + var count = 1; + _.each(self.all_display_data, function(data, index) { + self.dataset.read_ids( data.ids, [], function(records){ + self.all_display_data[index].records = records; + if(self.all_display_data.length == count) { + self.do_actual_search(); + } + count++; + }); + }); + } + ); + }, + on_receive_record: function (event, ui) { + var self = this; + var from = ui.item.index(); + var search_action = false; + var to = ui.item.prev().index() || 0; + if (!ui.item.attr("id")) { + return false; + } + // TODO fme: check what was this sequence + if (self.fields_view.fields.sequence && (self.source_index.index >= 0 && self.source_index.index != from) || + (self.source_index.column && self.source_index.column != ui.item.parent().attr('id'))) { + var child_record = ui.item.parent().children(); + var data, sequence = 1, index = to; + child_record.splice(0, to); + var flag = false; + if (to >= 0 && child_record) { + var record_id = parseInt($(child_record).attr("id").split("_")[1]); + if (record_id) { + _.each(self.all_display_data, function(data, index) { + _.each(data.records, function(record, index_row) { + if(record_id == record.id && record.sequence) { + sequence = record.sequence; + flag = true; + return false; + } + }); + if(flag) {return false;} + }); + } + } + _.each(child_record, function (child) { + var child_id = parseInt($(child).attr("id").split("_")[1]); + if (child_id) { + flag = false; + _.each(self.all_display_data, function(data, index) { + _.each(data.records, function(record, index_row) { + if(parseInt(record.id) == child_id) { + self.all_display_data[index]['records'][index_row]['sequence'] = sequence; + flag = true; + return false; + } + }); + if (flag) {return false;} + }); + self.dataset.write(child_id, {sequence: sequence}); + sequence++; + search_action = true; + } + }); + } + if (self.group_by.length > 0 && self.source_index.column && self.source_index.column != ui.item.parent().attr('id')) { + var value = ui.item.closest("td").attr("id"); + if (value) { + var data_val = {}; + var wirte_id = parseInt(ui.item.attr("id").split("_")[1]); + value = value.split("_")[1]; + if (value == 'false') { + value = false; + } + var update_record = false; + _.each(self.all_display_data, function(data, index) { + _.each(data.records, function(record, index_row) { + if(parseInt(record.id) == wirte_id) { + self.all_display_data[index]['records'][index_row][self.group_by[0]] = value; + update_record = self.all_display_data[index]['records'].splice(index_row,1) + return false; + } + }); + if (update_record) {return false;} + }); + _.each(self.all_display_data, function(data, index) { + if (data.value == value || (data.value == 'false' && value == false)) { + self.all_display_data[index]['records'].push(update_record[0]); + } + }); + data_val[self.group_by[0]] = value; + self.dataset.write(wirte_id, data_val); + search_action = true; + } + } + if (search_action) { + self.on_reload_kanban(); + } + this.source_index = {}; + }, + on_reload_kanban: function (){ + var self = this; + _.each(self.all_display_data, function(data, index) { + if (data.records.length > 0){ + _.each(data.records, function(record) { + self.$element.find("#main_" + record.id).children().remove(); + self.$element.find("#main_" + record.id).append(self.qweb.render('kanban-box', { + record: self.do_transform_record(record), + kanban_color: self.kanban_color, + kanban_gravatar: self.kanban_gravatar + })); + }); + } else { + self.$element.find("#column_" + data.value).remove(); + self.all_display_data.splice(index, 1); + } + }); + this.$element.find('.oe_kanban_action').click(this.on_action_clicked); + this.$element.find('.oe_kanban_box_show_onclick_trigger').click(function() { + $(this).parent('.oe_kanban_box').find('.oe_kanban_box_show_onclick').toggle(); + }); + }, + on_action_clicked: function(evt) { + var $action = $(evt.currentTarget), + record_id = parseInt($action.closest(".oe_kanban_record").attr("id").split('_')[1]), + type = $action.data('type'); + if (type == 'delete') { + this.do_delete(record_id); + } else if (type == 'edit') { + this.do_edit_record(record_id); + } else if (type == 'color') { + this.do_change_color(record_id, $action); + } else { + var button_attrs = $action.data(); + this.on_button_click(button_attrs, record_id); + } + }, + do_transform_record: function(record) { + var self = this, + new_record = {}; + _.each(record, function(value, name) { + var r = _.clone(self.fields_view.fields[name]); + r.raw_value = value; + r.value = openerp.web.format_value(value, r); + new_record[name] = r; + }); + return new_record; + }, + do_search: function (domains, contexts, group_by) { + var self = this; + this.rpc('/web/session/eval_domain_and_context', { + domains: domains, + contexts: contexts, + group_by_seq: group_by + }, function (results) { + self.domain = results.domain; + self.context = results.context; + self.group_by = results.group_by; + self.do_actual_search(); + }); + }, + do_actual_search : function () { + var self = this, + group_by = self.group_by; + if (!group_by.length && this.fields_view.arch.attrs.default_group_by) { + group_by = [this.fields_view.arch.attrs.default_group_by]; + } + self.datagroup = new openerp.web.DataGroup(self, self.model, self.domain, self.context, group_by); + self.dataset.context = self.context; + self.dataset.domain = self.domain; + self.datagroup.list([], + function (groups) { + self.groups = groups; + self.do_render_group(groups); + }, + function (dataset) { + self.domain = dataset.domain; + self.context = dataset.context; + self.groups = []; + self.dataset.read_slice([], {}, function(records) { + self.all_display_data = [{'records': records, 'value':false, 'header' : false, 'ids': self.dataset.ids}]; + self.$element.find(".oe_kanban_view").remove(); + self.on_show_data(self.all_display_data); + }); + } + ); + }, + do_render_group : function (datagroups) { + this.all_display_data = []; + var self = this; + _.each(datagroups, function (group) { + self.dataset.context = group.context; + self.dataset.domain = group.domain; + var group_name = group.value; + var group_value = group.value; + if (!group.value) { + group_name = "Undefined"; + group_value = 'false'; + } else if (group.value instanceof Array) { + group_name = group.value[1]; + group_value = group.value[0]; + } + self.dataset.read_slice([], {}, function(records) { + self.all_display_data.push({"value" : group_value, "records": records, 'header':group_name, 'ids': self.dataset.ids}); + if (datagroups.length == self.all_display_data.length) { + self.$element.find(".oe_kanban_view").remove(); + self.on_show_data(self.all_display_data); + } + }); + }); + }, + do_show: function () { + this.$element.show(); + }, + do_hide: function () { + this.$element.hide(); + } +}); +}; + +// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web_kanban/static/src/xml/web_kanban.xml b/addons/web_kanban/static/src/xml/web_kanban.xml new file mode 100644 index 00000000000..aa7bc73190d --- /dev/null +++ b/addons/web_kanban/static/src/xml/web_kanban.xml @@ -0,0 +1,37 @@ + diff --git a/addons/web_mobile/__init__.py b/addons/web_mobile/__init__.py index ee5959455ad..e69de29bb2d 100644 --- a/addons/web_mobile/__init__.py +++ b/addons/web_mobile/__init__.py @@ -1 +0,0 @@ -import controllers diff --git a/addons/web_mobile/controllers/__init__.py b/addons/web_mobile/controllers/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/addons/web_mobile/po/web_mobile.pot b/addons/web_mobile/po/web_mobile.pot index b8582b3f12f..37b557def1d 100644 --- a/addons/web_mobile/po/web_mobile.pot +++ b/addons/web_mobile/po/web_mobile.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2011-08-17 13:28+0200\n" +"POT-Creation-Date: 2011-09-06 12:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,18 +21,10 @@ msgstr "" msgid "OpenERP" msgstr "" -#: addons/web_mobile/static/src/xml/web_mobile.xml:0 -msgid "Home" -msgstr "" - #: addons/web_mobile/static/src/xml/web_mobile.xml:0 msgid "Database:" msgstr "" -#: addons/web_mobile/static/src/xml/web_mobile.xml:0 -msgid "Choose Database..." -msgstr "" - #: addons/web_mobile/static/src/xml/web_mobile.xml:0 msgid "Login:" msgstr "" @@ -46,7 +38,11 @@ msgid "Login" msgstr "" #: addons/web_mobile/static/src/xml/web_mobile.xml:0 -msgid ":" +msgid "Bad username or password" +msgstr "" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Home" msgstr "" #: addons/web_mobile/static/src/xml/web_mobile.xml:0 @@ -69,3 +65,7 @@ msgstr "" msgid "Preferences" msgstr "" +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid ":" +msgstr "" + diff --git a/addons/web_mobile/static/src/js/chrome_mobile.js b/addons/web_mobile/static/src/js/chrome_mobile.js index 551856e01fb..2b9d8600fef 100644 --- a/addons/web_mobile/static/src/js/chrome_mobile.js +++ b/addons/web_mobile/static/src/js/chrome_mobile.js @@ -5,22 +5,21 @@ openerp.web_mobile.chrome_mobile = function(openerp) { openerp.web_mobile.mobilewebclient = function(element_id) { - // TODO Helper to start mobile webclient rename it openerp.base.webclient + // TODO Helper to start mobile webclient rename it openerp.web.webclient var client = new openerp.web_mobile.MobileWebClient(element_id); client.start(); return client; }; -openerp.web_mobile.MobileWebClient = openerp.base.Widget.extend({ +openerp.web_mobile.MobileWebClient = openerp.web.Widget.extend({ init: function(element_id) { - var self = this; this._super(null, element_id); QWeb.add_template("xml/web_mobile.xml"); var params = {}; this.$element.html(QWeb.render("WebClient", {})); - this.session = new openerp.base.Session("oe_errors"); - this.crashmanager = new openerp.base.CrashManager(this); - this.login = new openerp.web_mobile.Login(this, "oe_app"); + this.session = new openerp.web.Session("oe_errors"); + this.crashmanager = new openerp.web.CrashManager(this); + this.login = new openerp.web_mobile.Login(this, "oe_login"); // this.session.on_session_invalid.add(this.login.do_ask_login); }, start: function() { @@ -29,14 +28,11 @@ openerp.web_mobile.MobileWebClient = openerp.base.Widget.extend({ } }); -openerp.web_mobile.Login = openerp.base.Widget.extend({ - init: function(session, element_id) { - this._super(session, element_id); - }, +openerp.web_mobile.Login = openerp.web.Widget.extend({ start: function() { var self = this; jQuery("#oe_header").children().remove(); - this.rpc("/base/database/get_list", {}, function(result) { + this.rpc("/web/database/get_list", {}, function(result) { var selection = new openerp.web_mobile.Selection(); self.db_list = result.db_list; self.$element.html(QWeb.render("Login", self)); @@ -53,6 +49,7 @@ openerp.web_mobile.Login = openerp.base.Widget.extend({ var db = $e.find("div select[name=database]").val(); var login = $e.find("div input[name=login]").val(); var password = $e.find("div input[name=password]").val(); + //$e.hide(); // Should hide then call callback this.session.session_login(db, login, password, function() { @@ -74,8 +71,9 @@ openerp.web_mobile.Login = openerp.base.Widget.extend({ .removeClass("login_invalid") .addClass("login_valid"); //.hide(); - this.homepage = new openerp.web_mobile.HomePage(this, "oe_app"); - this.homepage.start(); + + this.menu = new openerp.web_mobile.Menu(this, "oe_menu", "oe_secondary_menu"); + this.menu.start(); }, do_ask_login: function(continuation) { this.on_login_invalid(); @@ -87,66 +85,60 @@ openerp.web_mobile.Login = openerp.base.Widget.extend({ } }); -openerp.web_mobile.HomePage = openerp.base.Widget.extend({ - init: function(session, element_id) { - this._super(session, element_id); - }, - start: function() { - this.$element.html(QWeb.render("HomePage", {})); - this.header = new openerp.web_mobile.Header(this, "oe_header"); - this.shortcuts = new openerp.web_mobile.Shortcuts(this, "oe_shortcuts"); - this.menu = new openerp.web_mobile.Menu(this, "oe_menu", "oe_secondary_menu"); - this.options = new openerp.web_mobile.Options(this, "oe_options"); - this.header.start(); - this.shortcuts.start(); - this.menu.start(); - this.options.start(); - jQuery("#oe_header").find("h1").html('Home'); - this.$element.find("a").click(this.on_clicked); - } -}); - -openerp.web_mobile.Header = openerp.base.Widget.extend({ +openerp.web_mobile.Header = openerp.web.Widget.extend({ init: function(session, element_id) { this._super(session, element_id); }, start: function() { var self = this; self.$element.html(QWeb.render("Header", this)); - self.$element.find("a").click(this.on_clicked); - }, - on_clicked: function(ev) { - $opt = $(ev.currentTarget); - current_id = $opt.attr('id'); - if (current_id == 'home') { - this.homepage = new openerp.web_mobile.HomePage(this, "oe_app"); - this.homepage.start(); - } } }); -openerp.web_mobile.Shortcuts = openerp.base.Widget.extend({ +openerp.web_mobile.Footer = openerp.web.Widget.extend({ init: function(session, element_id) { this._super(session, element_id); }, start: function() { var self = this; - this.rpc('/base/session/sc_list',{} ,function(res){ + self.$element.html(QWeb.render("Footer", this)); + } +}); + +openerp.web_mobile.Shortcuts = openerp.web.Widget.extend({ + init: function(session, element_id) { + this._super(session, element_id); + }, + start: function() { + var self = this; + this.rpc('/web/session/sc_list',{} ,function(res){ self.$element.html(QWeb.render("Shortcuts", {'sc' : res})) - self.$element.find("a").click(self.on_clicked); - }) + self.$element.find('#content').find("a").click(self.on_clicked); + self.$element.find("#footer").find('#preference').click(function(){ + if(!$('#oe_options').html().length){ + this.options = new openerp.web_mobile.Options(self, "oe_options"); + this.options.start(); + } + else{ + self.$element.find("#footer").find('#preference').attr('href','#oe_options'); + } + }); + $.mobile.changePage($("#oe_shortcuts"), "slide", true, true); + }); }, on_clicked: function(ev) { $shortcut = $(ev.currentTarget); id = $shortcut.data('menu'); res_id = $shortcut.data('res'); - jQuery("#oe_header").find("h1").html($shortcut.data('name')); - this.listview = new openerp.web_mobile.ListView(this, "oe_app", res_id); +// this.header = new openerp.web_mobile.Header(this, "oe_header"); + this.listview = new openerp.web_mobile.ListView(this, "oe_list", res_id); +// this.header.start(); this.listview.start(); + jQuery("#oe_header").find("h1").html($shortcut.data('name')); } }); -openerp.web_mobile.Menu = openerp.base.Widget.extend({ +openerp.web_mobile.Menu = openerp.web.Widget.extend({ init: function(session, element_id, secondary_menu_id) { this._super(session, element_id); this.secondary_menu_id = secondary_menu_id; @@ -154,96 +146,141 @@ openerp.web_mobile.Menu = openerp.base.Widget.extend({ this.menu = false; }, start: function() { - this.rpc("/base/menu/load", {}, this.on_loaded); + this.rpc("/web/menu/load", {}, this.on_loaded); }, on_loaded: function(data) { + var self = this; this.data = data; this.$element.html(QWeb.render("Menu", this.data)); - this.$element.add(this.$secondary_menu).find("a").click(this.on_menu_click); + + this.$element.find("#footer").find('#shrotcuts').click(function(){ + if(!$('#oe_shortcuts').html().length){ + this.shortcuts = new openerp.web_mobile.Shortcuts(self, "oe_shortcuts"); + this.shortcuts.start(); + } + else{ + self.$element.find("#footer").find('#shrotcuts').attr('href','#oe_shortcuts'); + } + }); + this.$element.find("#footer").find('#preference').click(function(){ + if(!$('#oe_options').html().length){ + this.options = new openerp.web_mobile.Options(self, "oe_options"); + this.options.start(); + } + else{ + self.$element.find("#footer").find('#preference').attr('href','#oe_options'); + } + }); + this.$element.add(this.$secondary_menu).find("#content").find('a').click(this.on_menu_click); + $.mobile.changePage($("#oe_menu"), "slide", true, true); }, on_menu_click: function(ev, id) { - $menu = $(ev.currentTarget); + var $menu = $(ev.currentTarget); id = $menu.data('menu'); for (var i = 0; i < this.data.data.children.length; i++) { if (this.data.data.children[i].id == id) { this.children = this.data.data.children[i]; } } - jQuery("#oe_header").find("h1").html($menu.data('name')); this.$element .removeClass("login_valid") .addClass("secondary_menu"); //.hide(); - this.secondary = new openerp.web_mobile.Secondary(this, "oe_app", this.children); - this.secondary.start(); + if(!$('#oe_sec_menu').html().length){ + this.secondary = new openerp.web_mobile.Secondary(this, "oe_sec_menu", this.children); + this.secondary.start(); + }else{ + this.$element.find("#content").find('a').attr('href','#oe_sec_menu'); + } + /*if(!$('#oe_sec_menu').html().length){ + this.secondary = new openerp.web_mobile.Secondary(this, "oe_sec_menu", this.children); + this.secondary.start(); + }else{ + // self.$element.find("#content").find('a').attr('href','#oe_sec_menu'); + this.$element.add(this.$secondary_menu).find("#content").find('a').attr('href','#oe_sec_menu'); + }*/ + } }); - -openerp.web_mobile.Secondary = openerp.base.Widget.extend({ +openerp.web_mobile.Secondary = openerp.web.Widget.extend({ init: function(session, element_id, secondary_menu_id) { this._super(session, element_id); this.data = secondary_menu_id; }, start: function(ev, id) { + var self = this; + // console.log(this.data,this.$element.html().length); + + /* if(this.$element.html().length){ + self.$element.find('[data-role="listview"]').remove(); + + _.each(self.data.children,function(i){ + var newul = '
      • '+ + i.name+'
      '; // Create New List Item + self.$element.find('#content').append(newul); + //console.log('in for loop',i.children); + }); + console.log('saaasasaaa',self.$element.find('#content'),self.data); + //self.$element.find('[data-role="listview"]').listview('refresh'); + }else{*/ + var v = { menu : this.data }; this.$element.html(QWeb.render("Menu.secondary", v)); - this.$element.add(this.$secondary_menu).find("a").click(this.on_menu_click); + this.$element.find("#header").find("h1").html(this.data.name); + this.$element.add(this.$secondary_menu).find('#content').find("a").click(this.on_menu_click); + this.$element.find("#footer").find('#shrotcuts').click(function(){ + if(!$('#oe_shortcuts').html().length){ + this.shortcuts = new openerp.web_mobile.Shortcuts(self, "oe_shortcuts"); + this.shortcuts.start(); + } + else{ + self.$element.find("#footer").find('#shrotcuts').attr('href','#oe_shortcuts'); + } + }); + this.$element.find("#footer").find('#preference').click(function(){ + if(!$('#oe_options').html().length){ + this.options = new openerp.web_mobile.Options(self, "oe_options"); + this.options.start(); + } + else{ + self.$element.find("#footer").find('#preference').attr('href','#oe_options'); + } + }); + $.mobile.changePage($("#oe_sec_menu"), "slide", true, true); }, on_menu_click: function(ev, id) { - $menu = $(ev.currentTarget); + var $menu = $(ev.currentTarget); id = $menu.data('menu'); - for (var i = 0; i < this.data.children.length; i++) { - if (this.data.children[i].id == id) { - this.children = this.data.children[i]; - } + if (id) { + this.listview = new openerp.web_mobile.ListView(this, "oe_list", id); + this.listview.start(); } jQuery("#oe_header").find("h1").html($menu.data('name')); - var child_len = this.children.children.length; - if (child_len > 0) { - this.$element - .removeClass("secondary_menu") - .addClass("content_menu"); - //.hide(); - this.secondary = new openerp.web_mobile.Secondary(this, "oe_app", this.children); - this.secondary.start(); - } - else { - if (id) { - this.listview = new openerp.web_mobile.ListView(this, "oe_app", id); - this.listview.start(); - } - } } }); -openerp.web_mobile.Options = openerp.base.Widget.extend({ - init: function(session, element_id) { - this._super(session, element_id); - }, +openerp.web_mobile.Options = openerp.web.Widget.extend({ start: function() { var self = this; this.$element.html(QWeb.render("Options", this)); - self.$element.find("#logout").click(self.on_logout); - }, - on_logout: function(ev) { - this.session.logout(); -// this.login = new openerp.web_mobile.Login(this, "oe_app"); -// this.login.start(); + this.$element.find("#footer").find('#shrotcuts').click(function(){ + if(!$('#oe_shortcuts').html().length){ + this.shortcuts = new openerp.web_mobile.Shortcuts(self, "oe_shortcuts"); + this.shortcuts.start(); + } + else{ + self.$element.find("#footer").find('#shrotcuts').attr('href','#oe_shortcuts'); + } + }); + $.mobile.changePage($("#oe_options"), "slide", true, true); } }); -openerp.web_mobile.Selection = openerp.base.Widget.extend({ - init: function (){ - this._super(); - }, - start: function(){ - this._super(); - var self = this; - }, +openerp.web_mobile.Selection = openerp.web.Widget.extend({ on_select_option: function(ev){ ev.preventDefault(); var $this = ev.currentTarget; $($this).prev().find(".ui-btn-text").html($($this).find("option:selected").text()); } }); -} +}; diff --git a/addons/web_mobile/static/src/js/form_mobile.js b/addons/web_mobile/static/src/js/form_mobile.js index 4a3e2167c02..3dc777a2bd6 100644 --- a/addons/web_mobile/static/src/js/form_mobile.js +++ b/addons/web_mobile/static/src/js/form_mobile.js @@ -4,7 +4,7 @@ openerp.web_mobile.form_mobile = function (openerp) { -openerp.web_mobile.FormView = openerp.base.Widget.extend({ +openerp.web_mobile.FormView = openerp.web.Widget.extend({ init: function(session, element_id, list_id, action) { this._super(session, element_id); this.list_id = list_id; @@ -18,19 +18,20 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ }, start: function() { var self = this; - id = this.list_id; - model = this.action.res_model; - view_id = this.action.views[1][0]; - this.dataset = new openerp.base.DataSetSearch(this, this.action.res_model, null, null); + var id = this.list_id; + var model = this.action.res_model; + var view_id = this.action.views[1][0]; + this.dataset = new openerp.web.DataSetSearch(this, this.action.res_model, null, null); + var context = new openerp.web.CompoundContext(this.dataset.get_context()); this.dataset.read_slice([],{}, function (result) { for (var i = 0; i < result.length; i++) { if (result[i].id == id) { var data = result[i]; } } - self.rpc("/base/formview/load", {"model": model, "view_id": view_id }, function (result) { - var fields = result.fields_view.fields; - var view_fields = result.fields_view.arch.children; + self.rpc("/web/view/load", {"model": model, "view_id": view_id, "view_type": "form", context: context}, function (result) { + var fields = result.fields; + var view_fields = result.arch.children; var get_fields = self.get_fields(view_fields); var selection = new openerp.web_mobile.Selection(); for (var j = 0; j < view_fields.length; j++) { @@ -38,8 +39,9 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ var notebooks = view_fields[j]; } } - $("#oe_header").find("h1").html(result.fields_view.arch.attrs.string); self.$element.html(QWeb.render("FormView", {'get_fields': get_fields, 'notebooks': notebooks || false, 'fields' : fields, 'values' : data })); + + self.$element.find("#header").find('h1').html(self.action.name); self.$element.find('select').change(function(ev){ selection.on_select_option(ev); }); @@ -69,31 +71,50 @@ openerp.web_mobile.FormView = openerp.base.Widget.extend({ if (!next.find('.detail').html().length) { for (var i = 0; i < get_fields.length; i++) { if (fields[get_fields[i].attrs.name].type == 'one2many'){ - var get_fields_test = self.get_fields(fields[get_fields[i].attrs.name].views.form.arch.children); - var fields_test = fields[get_fields[i].attrs.name]['views'].form.fields; - var notebook=fields[get_fields[i].attrs.name].views.form.arch; + if(fields[get_fields[i].attrs.name].views.form){ + var get_fields_test = self.get_fields(fields[get_fields[i].attrs.name].views.form.arch.children); + var fields_test = fields[get_fields[i].attrs.name]['views'].form.fields; + var notebook=fields[get_fields[i].attrs.name].views.form.arch; + } + var relational = get_fields[i].attrs.name; } } if(notebook){ - next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields_view.fields, 'values' : data,'til': notebook.attrs.string })); + next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields, 'values' : data,'til': notebook.attrs.string })); }else{ - next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields_view.fields, 'values' : data })); + next.find('.detail').append(QWeb.render("FormView", {'get_fields': get_fields,'fields' : result.fields, 'values' : data })); } } - next.find('.detail').find('a').click(function(){ - if(next.find('.detail').find('a').next().find('.detail').html().length){ - if (next.find('.detail').find('a').next().hasClass(self.content_collapsed_class)) { - self.collapsed(next.find('.detail').find('a').next(),next.find('.detail').find('a').find('span .ui-icon')); - } - else if (next.find('.detail').find('a').next().hasClass(self.content_expanded_class)) { - self.expanded(next.find('.detail').find('a').next(),next.find('.detail').find('a').find('span .ui-icon')); - } + + //$.mobile.changePage($("#oe_form"), "slide", true, true); + /*next.find('.detail').find('li').click(function(){ + if(data[relational]){ + var dataset = new openerp.web.DataSetStatic(self, result.fields[relational].relation, result.fields[relational].context); + dataset.domain=[['id', 'in', data[relational]]]; + dataset.name_search('', dataset.domain, 'in',false ,function(res){ + for(var i=0;i' + result[i][1] + ''; // Create New List Item + self.$element.find('[data-role="listview"]').append(newli); + } + self.$element.find('[data-role="listview"]').listview('refresh'); + }else{ self.$element.html(QWeb.render("ListView", {'records' : result})); - self.$element.find("#searchid").focus(); - if(request.term){ - self.$element.find("#searchid").val(request.term); - } - self.$element.find("#searchid").autocomplete({ - source: function(req) { self.on_search_data(req); }, - focus: function(e, ui) { - e.preventDefault(); - }, - html: true, - minLength: 0, - delay: 0 + self.$element.find("#header").find('h1').html(self.action.name); + self.$element.find("#footer").find('#shortcuts').click(function(){ + if(!$('#oe_shortcuts').html().length){ + this.shortcut = new openerp.web_mobile.Options(self, "oe_shortcuts"); + this.options.start(); + } + else{ + self.$element.find("#footer").find('#shrotcuts').attr('href','#oe_shortcuts'); + } }); - self.$element.find("#searchid").keyup(self.on_search_data); + self.$element.find("#footer").find('#preference').click(function(){ + if(!$('#oe_options').html().length){ + this.options = new openerp.web_mobile.Options(self, "oe_options"); + this.options.start(); + } + else{ + self.$element.find("#footer").find('#preference').attr('href','#oe_options'); + } + }); + } self.$element.find("a#list-id").click(self.on_list_click); + $.mobile.changePage($("#oe_list"), "slide", true, true); }); }, on_list_click: function(ev) { - $record = $(ev.currentTarget); + var $record = $(ev.currentTarget); var self = this; id = $record.data('id'); - this.formview = new openerp.web_mobile.FormView(this, "oe_app", id, this.action); +// this.header = new openerp.web_mobile.Header(this, "oe_header"); + this.formview = new openerp.web_mobile.FormView(this, "oe_form", id, this.action); +// this.header.start(); this.formview.start(); } }); -} \ No newline at end of file +}; diff --git a/addons/web_mobile/static/src/web_mobile.html b/addons/web_mobile/static/src/web_mobile.html index 6efc28b6532..9a17ff49dbb 100755 --- a/addons/web_mobile/static/src/web_mobile.html +++ b/addons/web_mobile/static/src/web_mobile.html @@ -7,19 +7,19 @@ - - - - - + + + + + - - - - - - + + + + + + @@ -27,6 +27,7 @@