diff --git a/addons/web/po/pt.po b/addons/web/po/pt.po new file mode 100644 index 00000000000..ca98e18bce9 --- /dev/null +++ b/addons/web/po/pt.po @@ -0,0 +1,688 @@ +# Portuguese translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"PO-Revision-Date: 2011-11-21 22:22+0000\n" +"Last-Translator: Daniel Reis \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-11-22 05:13+0000\n" +"X-Generator: Launchpad (build 14299)\n" + +#: addons/web/static/src/js/view_form.js:355 +msgid "" +"Warning, the record has been modified, your changes will be discarded." +msgstr "" +"Atenção, o o registo foi modificado, as suas alterações serão descartadas." + +#: addons/web/static/src/js/view_form.js:1659 +msgid "   Search More..." +msgstr "" + +#: addons/web/static/src/js/view_form.js:1672 +#, python-format +msgid "   Create \"%s\"" +msgstr "" + +#: addons/web/static/src/js/view_form.js:1678 +msgid "   Create and Edit..." +msgstr "" + +#: addons/web/static/src/js/views.js:568 +msgid "You must choose at least one record." +msgstr "Escolha pelo menos um registo." + +#: addons/web/static/src/js/views.js:569 +msgid "Warning" +msgstr "Aviso" + +#: addons/web/static/src/js/views.js:609 +msgid "Translations" +msgstr "Traduções" + +#: addons/web/static/src/js/views.js:614 addons/web/static/src/xml/base.xml:0 +msgid "Save" +msgstr "Guardar" + +#: addons/web/static/src/js/views.js:615 +msgid "Close" +msgstr "Fechar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "x" +msgstr "x" + +#: 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 "A carregar ..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create" +msgstr "Criar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Drop" +msgstr "Excluir" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Backup" +msgstr "Cópia de segurança" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Restore" +msgstr "Restaurar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password" +msgstr "Senha" + +#: 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 "Nome da nova base de dados" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Load Demonstration data:" +msgstr "Carregar dados de demonstração" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Default language:" +msgstr "Idioma predefinido:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Admin password:" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm password:" +msgstr "Confirmar senha:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "DROP DATABASE" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database:" +msgstr "Base de dados:" + +#: 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 "Ficheiro:" + +#: 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 "Utilizador:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Password:" +msgstr "Senha:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Database" +msgstr "Base de dados" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Login" +msgstr "Iniciar sessão" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Bad username or password" +msgstr "Nome de utilizador ou senha incorrectos" + +#: 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 "" +"Pensamos que as atividades do trabalho diário pode ser mais intuitivas, " +"eficientes, automatizadas, ... e até mesmo divertidas." + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP's vision to be:" +msgstr "A visão do OpenERP é:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Full featured" +msgstr "Pleno de funcionalidade" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Today's enterprise challenges are multiple. We provide one module for each " +"need." +msgstr "" +"Os desafios atuais das empresas são múltiplos. Nós fornecemos um módulo para " +"cada necessidade." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open Source" +msgstr "Código aberto" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"To Build a great product, we rely on the knowledge of thousands of " +"contributors." +msgstr "" +"Para construir um grande produto, nós contamos com o conhecimento de " +"milhares de contribuidores." + +#: addons/web/static/src/xml/base.xml:0 +msgid "User Friendly" +msgstr "Amigável para o utilizador" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"In order to be productive, people need clean and easy to use interface." +msgstr "" +"Para serem produtivas, as pessoas precisam de uma interface simples e fácil " +"de usar." + +#: 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 "SAIR" + +#: 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 "oe_secondary_menu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "oe_secondary_submenu_item" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Hide this tip" +msgstr "Ocultar esta dica" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Disable all tips" +msgstr "Desativar todas as dicas" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View#" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields" +msgstr "Campos" + +#: addons/web/static/src/xml/base.xml:0 +msgid "View labels" +msgstr "Ver etiquetas" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Sidebar Relates" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Field" +msgstr "Campo" + +#: addons/web/static/src/xml/base.xml:0 +msgid ":" +msgstr ":" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Translate view" +msgstr "Traduzir vista" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Translate sidebar" +msgstr "Traduzir barra lateral" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delete" +msgstr "Apagar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "First" +msgstr "Primeiro" + +#: 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 "Last" +msgstr "Último" + +#: addons/web/static/src/xml/base.xml:0 +msgid "♻" +msgstr "♻" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Edit" +msgstr "Gravar & Editar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create & Edit" +msgstr "Criar & Editar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New" +msgstr "Novo" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Duplicate" +msgstr "Duplicar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Readonly/Editable" +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "<<" +msgstr "<<" + +#: addons/web/static/src/xml/base.xml:0 +msgid "0" +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 "Acrescentar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Unhandled widget" +msgstr "Widget não tratado" + +#: 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 "Done" +msgstr "Concluído" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Open..." +msgstr "Abrir..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Create..." +msgstr "Criar..." + +#: addons/web/static/src/xml/base.xml:0 +msgid "Search..." +msgstr "Procurar..." + +#: 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 "Selecionar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save As" +msgstr "Guardar como" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Clear" +msgstr "Limpar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Advanced Filter" +msgstr "Filtro avançados" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-- Filters --" +msgstr "-- Filtros --" + +#: addons/web/static/src/xml/base.xml:0 +msgid "-- Actions --" +msgstr "-- Ações --" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save Filter" +msgstr "Guardar filtro" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Manage Filters" +msgstr "Gerir filtros" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Filter Name:" +msgstr "Nome do filtro:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "(Any existing filter with the same name will be replaced)" +msgstr "(filtros existentes com esse nome serão substituídos)" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Any of the following conditions must match" +msgstr "Deve satisfazer alguma das seguintes condições" + +#: addons/web/static/src/xml/base.xml:0 +msgid "All the following conditions must match" +msgstr "Deve satisfazer toas as seguintes condições" + +#: addons/web/static/src/xml/base.xml:0 +msgid "None of the following conditions must match" +msgstr "Não deve satisfazernenhuma das seguintes condições" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Add condition" +msgstr "Acrescentar condição" + +#: addons/web/static/src/xml/base.xml:0 +msgid "and" +msgstr "e" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & New" +msgstr "Guardar & Novo" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save & Close" +msgstr "Guardar & Fechar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export" +msgstr "Exportar" + +#: 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 "Tipo de exportação:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Compatible Export" +msgstr "Exportação compatível com importação" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export all Data" +msgstr "Exportar todos os dados" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Export Formats" +msgstr "Formatos de exportação" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Available fields" +msgstr "Campos disponíveis" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Fields to export" +msgstr "Campos a exportar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save fields list" +msgstr "Gravar lista de campos" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove" +msgstr "Remover" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Remove All" +msgstr "Remover tudo" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Name" +msgstr "Nome" + +#: addons/web/static/src/xml/base.xml:0 +msgid " " +msgstr " " + +#: addons/web/static/src/xml/base.xml:0 +msgid "Save as:" +msgstr "Guardar como:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Ok" +msgstr "Ok" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Saved exports:" +msgstr "Exportações guardadas:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Old Password:" +msgstr "Senha antiga:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "New Password:" +msgstr "Nova senha:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Confirm Password:" +msgstr "Confirme a senha:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import" +msgstr "Importar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "1. Import a .CSV file" +msgstr "1. Importar um ficheiro .CSV" + +#: addons/web/static/src/xml/base.xml:0 +msgid "" +"Select a .CSV file to import. If you need a sample of file to import,\n" +" you should use the export tool with the \"Import Compatible\" option." +msgstr "" + +#: addons/web/static/src/xml/base.xml:0 +msgid "CSV File:" +msgstr "Ficheiro CSV:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "2. Check your file format" +msgstr "2. Verifique o formato do ficheiro" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Import Options" +msgstr "Opções de importação" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Does your file have titles?" +msgstr "O ficheiro tem títulos?" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Separator:" +msgstr "Separador:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Delimiter:" +msgstr "Delimitador:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Encoding:" +msgstr "Codificação:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "UTF-8" +msgstr "UTF-8" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Latin 1" +msgstr "Latin-1" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Lines to skip" +msgstr "Linhas a ignorar" + +#: addons/web/static/src/xml/base.xml:0 +msgid "The import failed due to:" +msgstr "Importação falhou devido a:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Here is a preview of the file we could not import:" +msgstr "Previsão do ficheiro que não conseguiu ser importado:" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP Web" +msgstr "OpenERP Web" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Version" +msgstr "Versão" + +#: addons/web/static/src/xml/base.xml:0 +msgid "Copyright © 2011-TODAY OpenERP SA. All Rights Reserved." +msgstr "Copyright © 2011-HOJE OpenERP SA. Todos os direitos reservados." + +#: 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 "Acerca do OpenERP" + +#: addons/web/static/src/xml/base.xml:0 +msgid "OpenERP" +msgstr "OpenERP" + +#: 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 "" +"Dependendo de suas necessidades, o OpenERP está disponível através da web ou " +"de uma aplicação cliente." diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index a9731ef5b16..906ddefc6e5 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -809,7 +809,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W */ tag_name: 'div', /** - * Construct the widget and set its parent if a parent is given. + * Constructs the widget and sets its parent if a parent is given. * * @constructs openerp.web.Widget * @extends openerp.web.CallbackEnabled @@ -841,7 +841,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W this.widget_is_stopped = false; }, /** - * Render the current widget and appends it to the given jQuery object or Widget. + * Renders the current widget and appends it to the given jQuery object or Widget. * * @param target A jQuery object or a Widget instance. */ @@ -852,7 +852,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W }, target); }, /** - * Render the current widget and prepends it to the given jQuery object or Widget. + * Renders the current widget and prepends it to the given jQuery object or Widget. * * @param target A jQuery object or a Widget instance. */ @@ -863,7 +863,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W }, target); }, /** - * Render the current widget and inserts it after to the given jQuery object or Widget. + * Renders the current widget and inserts it after to the given jQuery object or Widget. * * @param target A jQuery object or a Widget instance. */ @@ -874,7 +874,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W }, target); }, /** - * Render the current widget and inserts it before to the given jQuery object or Widget. + * Renders the current widget and inserts it before to the given jQuery object or Widget. * * @param target A jQuery object or a Widget instance. */ @@ -884,6 +884,16 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W self.$element.insertBefore(t); }, target); }, + /** + * Renders the current widget and replaces the given jQuery object. + * + * @param target A jQuery object or a Widget instance. + */ + replace: function(target) { + return this._render_and_insert(_.bind(function(t) { + this.$element.replaceAll(t); + }, this), target); + }, _render_and_insert: function(insertion, target) { this.render_element(); if (target instanceof openerp.web.Widget) @@ -929,7 +939,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W return $.Deferred().done().promise(); }, /** - * Destroys the current widget, also destroy all its children before destroying itself. + * Destroys the current widget, also destroys all its children before destroying itself. */ stop: function() { _.each(_.clone(this.widget_children), function(el) { @@ -945,7 +955,7 @@ openerp.web.Widget = openerp.web.CallbackEnabled.extend(/** @lends openerp.web.W this.widget_is_stopped = true; }, /** - * Inform the action manager to do an action. Of course, this suppose that + * Informs the action manager to do an action. This supposes that * the action manager can be found amongst the ancestors of the current widget. * If that's not the case this method will simply return `false`. */ diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index 69d8fd9ddfd..0d3833ee835 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -730,6 +730,19 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ return_records(); } return completion.promise(); + }, + call_button: function (method, args, callback, error_callback) { + var id = args[0][0], index; + for(var i=0, len=this.cache.length; i 1 && _.str.trim(splitted[0]) === "parent" && self.dataset.parent_view) { + if (parent_fields === null) { + parent_fields = self.dataset.parent_view.get_fields_values(); + } + var p_val = parent_fields[_.str.trim(splitted[1])]; + if (p_val !== undefined) { + return p_val == null ? false : p_val; + } + } + // string literal + var first_char = field[0], last_char = field[field.length-1]; + if ((first_char === '"' && last_char === '"') + || (first_char === "'" && last_char === "'")) { + return field.slice(1, -1); + } + + throw new Error("Could not get field with name '" + field + + "' for onchange '" + onchange + "'"); + }); + + return { + method: method, + args: args, + context_index: context_index + }; + }, do_onchange: function(widget, processed) { var self = this; var act = function() { try { - processed = processed || []; - if (widget.node.attrs.on_change) { - var onchange = _.str.trim(widget.node.attrs.on_change); - var call = onchange.match(/^\s?(.*?)\((.*?)\)\s?$/); - if (call) { - var method = call[1], args = []; - var context_index = null; - var argument_replacement = { - 'False' : function() {return false;}, - 'True' : function() {return true;}, - 'None' : function() {return null;}, - 'context': function(i) { - context_index = i; - var ctx = widget.build_context ? widget.build_context() : {}; - return ctx; - } - }; - var parent_fields = null; - _.each(call[2].split(','), function(a, i) { - var field = _.str.trim(a); - if (field in argument_replacement) { - args.push(argument_replacement[field](i)); - return; - } else if (self.fields[field]) { - var value = self.fields[field].get_on_change_value(); - args.push(value == null ? false : value); - return; - } else { - var splitted = field.split('.'); - if (splitted.length > 1 && _.str.trim(splitted[0]) === "parent" && self.dataset.parent_view) { - if (parent_fields === null) { - parent_fields = self.dataset.parent_view.get_fields_values(); - } - var p_val = parent_fields[_.str.trim(splitted[1])]; - if (p_val !== undefined) { - args.push(p_val == null ? false : p_val); - return; - } - } - } - throw "Could not get field with name '" + field + - "' for onchange '" + onchange + "'"; - }); - var ajax = { - url: '/web/dataset/call', - async: false - }; - return self.rpc(ajax, { - model: self.dataset.model, - method: method, - args: [(self.datarecord.id == null ? [] : [self.datarecord.id])].concat(args), - context_id: context_index === null ? null : context_index + 1 - }).pipe(function(response) { - return self.on_processed_onchange(response, processed); - }); - } else { - console.warn("Wrong on_change format", on_change); + processed = processed || []; + var on_change = widget.node.attrs.on_change; + if (on_change) { + var change_spec = self.parse_on_change(on_change, widget); + if (change_spec) { + var ajax = { + url: '/web/dataset/call', + async: false + }; + return self.rpc(ajax, { + model: self.dataset.model, + method: change_spec.method, + args: [(self.datarecord.id == null ? [] : [self.datarecord.id])].concat(change_spec.args), + context_id: change_spec.context_index == undefined ? null : change_spec.context_index + 1 + }).pipe(function(response) { + return self.on_processed_onchange(response, processed); + }); + } else { + console.warn("Wrong on_change format", on_change); + } } - } } catch(e) { console.error(e); return $.Deferred().reject(); @@ -580,8 +606,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# return true; }, sidebar_context: function () { - // TODO: ensure form is saved? - return $.Deferred().resolve(this.get_fields_values()).promise(); + return this.do_save().pipe($.proxy(this, 'get_fields_values')); } }); openerp.web.FormDialog = openerp.web.Dialog.extend({ diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index e119f2deabe..5a26ef58b03 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -679,13 +679,7 @@ session.web.Sidebar = session.web.Widget.extend({ item.callback.apply(self, [item]); } if (item.action) { - if (self.widget_parent instanceof session.web.FormView) { - self.widget_parent.do_save(function() { - self.on_item_action_clicked(item); - }); - } else { - self.on_item_action_clicked(item); - } + self.on_item_action_clicked(item); } return false; }); @@ -699,16 +693,16 @@ session.web.Sidebar = session.web.Widget.extend({ }, on_item_action_clicked: function(item) { var self = this; - var ids = self.widget_parent.get_selected_ids(); - if (ids.length == 0) { - //TODO: make prettier warning? - $("
").text(_t("You must choose at least one record.")).dialog({ - title: _t("Warning"), - modal: true - }); - return false; - } self.widget_parent.sidebar_context().then(function (context) { + var ids = self.widget_parent.get_selected_ids(); + if (ids.length == 0) { + //TODO: make prettier warning? + $("
").text(_t("You must choose at least one record.")).dialog({ + title: _t("Warning"), + modal: true + }); + return false; + } var additional_context = _.extend({ active_id: ids[0], active_ids: ids, diff --git a/addons/web/static/test/onchange.js b/addons/web/static/test/onchange.js new file mode 100644 index 00000000000..9f047f33d93 --- /dev/null +++ b/addons/web/static/test/onchange.js @@ -0,0 +1,65 @@ +$(document).ready(function () { + var openerp, + make_form = function (default_values) { + var fields = {}; + _(default_values).each(function (value, name) { + fields[name] = value instanceof Function ? value : { + get_on_change_value: function () { return value; } + }; + }); + return _.extend(new openerp.web.FormView(null, {}), + {fields: fields}); + }; + module("form.onchange", { + setup: function () { + openerp = window.openerp.init(true); + window.openerp.web.core(openerp); + window.openerp.web.chrome(openerp); + // views loader stuff + window.openerp.web.data(openerp); + window.openerp.web.views(openerp); + window.openerp.web.list(openerp); + window.openerp.web.form(openerp); + } + }); + test('Parse args-less onchange', function () { + var f = new openerp.web.FormView(null, {}); + var result = f.parse_on_change('on_change_foo()', {}); + equal(result.method, 'on_change_foo'); + deepEqual(result.args, []); + }); + test('Parse 1-arg onchange', function () { + var f = make_form({foo: 3}); + var result = f.parse_on_change('on_change_foo(foo)', {}); + equal(result.method, 'on_change_foo'); + deepEqual(result.args, [3]); + }); + test('Parse 2-args onchange', function () { + var f = make_form({foo: 3, bar: 'qux'}); + var result = f.parse_on_change('on_change_foo(bar, foo)', {}); + equal(result.method, 'on_change_foo'); + deepEqual(result.args, ['qux', 3]); + }); + test('Literal null', function () { + var f = make_form(); + var result = f.parse_on_change('on_null(None)', {}); + deepEqual(result.args, [null]); + }); + test('Literal true', function () { + var f = make_form(); + var result = f.parse_on_change('on_null(True)', {}); + deepEqual(result.args, [true]); + }); + test('Literal false', function () { + var f = make_form(); + var result = f.parse_on_change('on_null(False)', {}); + deepEqual(result.args, [false]); + }); + test('Literal string', function () { + var f = make_form(); + var result = f.parse_on_change('on_str("foo")', {}); + deepEqual(result.args, ['foo']); + var result2 = f.parse_on_change("on_str('foo')", {}); + deepEqual(result2.args, ['foo']); + }); +}); diff --git a/addons/web/static/test/test.html b/addons/web/static/test/test.html index d182ce18707..9bbfff168fd 100644 --- a/addons/web/static/test/test.html +++ b/addons/web/static/test/test.html @@ -49,4 +49,5 @@ + diff --git a/addons/web_calendar/__openerp__.py b/addons/web_calendar/__openerp__.py index 5b09e70cba8..fcdbd3746c7 100644 --- a/addons/web_calendar/__openerp__.py +++ b/addons/web_calendar/__openerp__.py @@ -8,8 +8,9 @@ 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js', 'static/src/js/calendar.js' ], - "css": ['static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler.css', - 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_ext.css' + "css": [ + 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_ext.css', + 'static/src/css/web_calendar.css' ], 'qweb' : [ "static/src/xml/*.xml", diff --git a/addons/web_calendar/po/pt.po b/addons/web_calendar/po/pt.po new file mode 100644 index 00000000000..a2ba6e02a2a --- /dev/null +++ b/addons/web_calendar/po/pt.po @@ -0,0 +1,22 @@ +# Portuguese translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-10-07 10:38+0200\n" +"PO-Revision-Date: 2011-11-21 21:57+0000\n" +"Last-Translator: Daniel Reis \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-11-22 05:13+0000\n" +"X-Generator: Launchpad (build 14299)\n" + +#: addons/web_calendar/static/src/xml/web_calendar.xml:0 +msgid " " +msgstr " " diff --git a/addons/web_calendar/static/src/css/web_calendar.css b/addons/web_calendar/static/src/css/web_calendar.css new file mode 100644 index 00000000000..cdad3ae794f --- /dev/null +++ b/addons/web_calendar/static/src/css/web_calendar.css @@ -0,0 +1,1062 @@ +#openerp_scheduler { + background-color:white; +} +.openerp .dhx_mini_calendar { + -moz-box-shadow: none; + -khtml-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .dhx_cal_container, .openerp .dhx_cal_event { + background-position:0 24px; + background-repeat:repeat-x; + font-family: Ubuntu, Helvetica, sans-serif; + position:relative; + overflow:hidden; +} +.openerp .dhx_cal_container.dhx_mini_calendar { + background-color:#eee; +} +.openerp .dhx_cal_container div{ + -moz-user-select:none; + -moz-user-select:-moz-none; +} + +.openerp .dhx_cal_navline{ + height:20px; position:absolute;z-index:3;width:750px;color:#2F3A48; +} +.openerp .dhx_cal_navline div{ + top:2px; + white-space:nowrap; +} + +.openerp .dhx_cal_navline .dhx_cal_date{ + font-weight:bold; + float:left; + font-size:1em; + margin:2px 0px 0px 10px; +} + +.openerp .dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;} + +.openerp .dhx_cal_today_button, .openerp .dhx_cal_prev_button, .openerp .dhx_cal_next_button { + color:white; + height:17px; + line-height:17px; + font-weight:bold; + cursor:pointer; + font-size:90%; + text-decoration:none; + float:left; + margin:0px 3px; + padding:2px 2px; + border:1px solid black; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + vertical-align:0px; +} + +.openerp .dhx_cal_today_button { + background: #ccc; /* Old browsers */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9c9c9', endColorstr='#999999'); /* IE6-9 */ + background: -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999)); /* Chrome,Safari4+ */ + background: -moz-linear-gradient(top, #c9c9c9, #999999); /* FF3.6+ */ + background: -webkit-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Opera11.10+ */ + background: -ms-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* IE10+ */ + background: linear-gradient(top, #c9c9c9 0%,#999999 60%); /* W3C */ + padding-left:5px; + padding-right:5px; +} + +.openerp .dhx_cal_prev_button{ + background: #bbb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9c9c9', endColorstr='#999999'); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999)); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -moz-linear-gradient(top, #c9c9c9, #999999); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-linear-gradient(top, #c9c9c9 0%,#999999 60%); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -o-linear-gradient(top, #c9c9c9 0%,#999999 60%); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -ms-linear-gradient(top, #c9c9c9 0%,#999999 60%); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, linear-gradient(top, #c9c9c9 0%,#999999 60%); + background-repeat:no-repeat; + width:20px; +} + +.openerp .dhx_cal_next_button { + background: #ccc; /* Old browsers */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888'); /* IE6-9 */ + background: url("/web_calendar/src/img/cal_right.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#c9c9c9), to(#999999)); /* Chrome,Safari4+ */ + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -moz-linear-gradient(top, #c9c9c9, #999999); /* FF3.6+ */ + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -webkit-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Chrome10+,Safari5.1+ */ + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -o-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* Opera11.10+ */ + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -ms-linear-gradient(top, #c9c9c9 0%,#999999 60%); /* IE10+ */ + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, linear-gradient(top, #c9c9c9 0%,#999999 60%); /* W3C */ + background-repeat:no-repeat; + width:20px; +} + +.openerp .dhx_cal_prev_button:hover, .openerp .dhx_cal_prev_button:active { + background: #bbb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888'); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-gradient(linear, left top, left bottom, from(#888), to(#888)); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -moz-linear-gradient(top, #888, #888); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -webkit-linear-gradient(top, #888 0%,#888 60%); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -o-linear-gradient(top, #888 0%,#888 60%); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, -ms-linear-gradient(top, #888 0%,#888 60%); + background: url("/web_calendar/static/src/img/cal_left.png") 5px 3px, linear-gradient(top, #888 0%,#888 60%); + background-repeat:no-repeat; +} + +.openerp .dhx_cal_next_button:hover, .openerp .dhx_cal_next_button:active { + background: #bbb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#888'); + background:-webkit-gradient(linear, left top, left bottom, from(#888), to(#888)); + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -moz-linear-gradient(top, #888, #888); + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -webkit-linear-gradient(top, #888 0%,#888 60%); + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -o-linear-gradient(top, #888 0%,#888 60%); + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, -ms-linear-gradient(top, #888 0%,#888 60%); + background: url("/web_calendar/static/src/img/cal_right.png") 5px 3px, linear-gradient(top, #888 0%,#888 60%); + background-repeat:no-repeat; +} + +.openerp .dhx_cal_today_button:hover, .openerp .dhx_cal_today_button:active { + background: #bbb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bbb', endColorstr='#bbb'); + background: -webkit-gradient(linear, left top, left bottom, from(#888), to(#888)); + background: -moz-linear-gradient(top, #888, #888); + background: -webkit-linear-gradient(top, #888 0%,#888 60%); + background: -o-linear-gradient(top, #888 0%,#888 60%); + background: -ms-linear-gradient(top, #888 0%,#888 60%); + background: linear-gradient(top, #888 0%,#888 60%); + background-repeat:no-repeat; +} + +.openerp .dhx_mini_calendar .dhx_cal_prev_button, .openerp .dhx_mini_calendar .dhx_cal_next_button, .openerp .dhx_mini_calendar .dhx_cal_today_button { + background:none; + border:0px; +} +.openerp .dhx_mini_calendar .dhx_cal_prev_button, .openerp .dhx_mini_calendar .dhx_cal_next_button { + width:16px; + height:18px; +} +.openerp .dhx_mini_calendar .dhx_cal_prev_button { + background:url("/web_calendar/static/src/img/minical_left.png") no-repeat 5px 6px; +} + +.openerp .dhx_mini_calendar .dhx_cal_next_button { + background:url("/web_calendar/static/src/img/minical_right.png") no-repeat 8px 6px; +} + +.openerp .dhx_mini_calendar .dhx_month_head { + font-size:0.9em; + color:#888 +} +.openerp .dhx_mini_calendar .dhx_month_head:hover { + background-color:#bbb; + color:white; + text-shadow:none; +} +.openerp .dhx_mini_calendar .dhx_scale_bar { + border-width:0px; + padding:2px 0px; +} + +.openerp .dhx_cal_tab { + width:59px; + height:16px; + line-height:16px; + text-align:center; + text-transform:uppercase; + text-decoration:none; + font-weight:bold; + font-size:80%; + color:#555; + margin:6px 1px 0px 1px; + padding-top:2px; + cursor:pointer; + float:right; + background-color:#bbb; + -webkit-border-top-left-radius:4px; + -webkit-border-top-right-radius:4px; + -moz-border-radius-topleft:4px; + -moz-border-radius-topright:4px; + border-top-left-radius:4px; + border-top-right-radius:4px; +} +.openerp .dhx_cal_tab[name="month_tab"] { right:16px; } +.openerp .dhx_cal_tab[name="week_tab"] { right:78px; } +.openerp .dhx_cal_tab[name="day_tab"] { right:123px; } + +.openerp .dhx_cal_tab:hover { + background-color:#ddd; +} + +.openerp .dhx_cal_tab.active{ + height:17px; + line-height:17px; + text-decoration:none; + cursor:default; + border:1px dotted #8894A3; + border-bottom:0px; + background-color:white /*#F4F4F4;*/ +} + +.openerp .dhx_cal_tab[name="day_tab"] { + margin-right:18px; +} + +.openerp .dhx_cal_header{ + position:absolute; + left:10px; + top:23px; + width:750px; + text-transform:uppercase; + font-size:0.8em; + font-weight:bold; + color:#3F3F3F; + border-bottom:1px dotted #8894A3; + border-top:1px dotted #8894A3; + /*border-right:1px dotted #8894A3;z-index:2;*/ + overflow:hidden; + background-color: white; /*#F4F4F4;*/ + text-shadow: 0 1px 0 white; +} + +.openerp .dhx_cal_data{ + position:absolute; + top:44px; + width:600px; + overflow-y:auto; + overflow-x:hidden; +} + +.openerp .dhx_cal_data tr td { + border-width:0px; +} + +.openerp .dhx_scale_bar{ + position:absolute; + text-align:center; + text-shadow: 0 1px 0 white; + background-color:#C2D5FC; + padding-top:3px; + border-left:1px dotted #586A7E; +} + +.openerp .dhx_scale_holder{ + position:absolute; + border-right:1px solid #ccc; + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png"); +} +.openerp .dhx_scale_holder_now{ + position:absolute; + border-right:1px solid #ccc; + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png"); +} + +.openerp .dhx_scale_hour{ + height:41px; + width:50px; + border-bottom:1px dotted #8894A3; + border-right:1px dotted #8894A3; + background-color:#ddd; + text-align:center; + line-height:40px; + color:#586A7E; + overflow:hidden; +} + +.openerp .dhx_month_head{ + background-color:#F4F4F4; + color:#2F3A48; + text-shadow: 0 1px 0 white; + font-weight:bold; + text-align:center; + border-left:1px solid #E9E9E9; + height:18px; + padding-right:4px; + padding-top:4px; + text-align:right; + font-size:0.9em; +} +.openerp .dhx_mini_calendar .dhx_month_head{ + padding-right:6px; +} + +.openerp .dhx_cal_data table tbody tr td:nth-child(7) { + color:red; +} + + +.openerp .dhx_now .openerp .dhx_month_body{ + background-color:#cccccc; +} + +.openerp .dhx_after .dhx_month_body,.openerp .dhx_before .dhx_month_body{background-color:#ECECEC;} + +.openerp .dhx_after .dhx_month_head,.openerp .dhx_before .dhx_month_head{background-color:#F4F4F4;color:#94A6BB;} + +.openerp .dhx_now .dhx_month_head{ + background-color:#ddd; +} + +.openerp .dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);} + +.openerp .dhx_loading{position:absolute;width:128px;height:15px;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/loading.gif);z-index:9999;} + +.openerp .dhx_multi_day_icon, .openerp .dhx_multi_day{ + background-color:#ddd; + background-repeat:no-repeat; + /*border-right:1px dotted #8894A3;*/ +} +.openerp .dhx_multi_day{ + position:absolute; +/*border-top:1px dotted #8894A3;*/ +} + +.openerp .dhx_multi_day_icon{ + background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_big.gif); +} + +.openerp .dhx_multi_day_icon_small { + background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/clock_small.gif); +} + +.openerp .dhx_multi_day_icon, .openerp .dhx_multi_day_icon_small{ + background-position:center center; + background-repeat:no-repeat; + border:1px dotted #8894A3; + border-left:0px; +} + +.openerp .dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:none;} + +.openerp .dhx_cal_event div{ + font-family: Ubuntu, Helvetica, sans-serif; + background-color:#FFE763; + border:1px solid #a73636; + color:#887A2E; + overflow:hidden; + font-size:100%; +} + +.openerp .dhx_move_denied .dhx_cal_event .dhx_header, .openerp .dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;} + +.openerp .dhx_cal_event .dhx_header{ + height:0px; + margin-left:1px; + /*border-width:1px 1px 0 1px;*/ + cursor:pointer; +} + +.openerp .dhx_cal_event .dhx_title{ + height:18px; + border-bottom-style:solid; + border-top-style:solid; + font-weight:bold; + text-align:center; + background-position:right; + background-repeat:no-repeat; + cursor:pointer; + vertical-align:middle; + padding-top:2px; + font-size: 90%; + -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; +} + +.openerp .dhx_cal_event .dhx_body{ + border-width:0 1px 1px 1px; + padding:0px 5px; + -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; + font-size:90%; + line-height:9px; +} + +.openerp .dhx_resize_denied .dhx_cal_event .dhx_footer{ + cursor:default; +} + +.openerp .dhx_cal_event .dhx_footer{ + height:2px; + margin-left:2px; + border-width:0 1px 1px 1px; + cursor:s-resize; + overflow:auto; +} + +/* +The old one + +.openerp .dhx_cal_event_line{ + background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/event-bg.png); + background-color:#FFE763; + border:1px solid #FFBD51; + border-radius:3px; + height:13px; + padding-left:10px; + color:#000; + cursor:pointer; + overflow:hidden; +}*/ + +.openerp .dhx_cal_event_clear, .openerp .dhx_cal_event_line{ + font-family:Ubuntu, Helvetica, sans-serif; + font-size:95%; + height:15px; + line-height:15px; + padding:0px 2px; + color:white; + white-space:nowrap; + overflow:hidden; + cursor:pointer; + vertical-align:middle; +} +.openerp .dhx_cal_event_clear:hover, .openerp .dhx_cal_event_line:hover{ + background-color:#ccc; +} + +.openerp .dhx_in_move{background-color:#FFFF80;} + +.openerp div .dhx_cal_editor{ + background-color:white; + border:1px solid #B7A543; + width:100%; + /*min-height:40px;*/ + height:100%; + z-index:999; + position:absolute; + overflow:hidden; +} + +.openerp textarea .dhx_cal_editor{ + background-color:white; + width:100%; +/*min-height:40px;*/ + height:100%; + border:0 solid black; + margin:none; + padding:none; + overflow:auto; +} + +.openerp div .dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;} + +.openerp div .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;} +.openerp div .icon_details{background-position:0 0;} + +.openerp div .icon_edit{background-position:-22px 0;} +.openerp div .icon_save{background-position:-84px -1px;} +.openerp div .icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;} +.openerp div .dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;} +.openerp div .dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;} + +.openerp .dhx_unselectable, .dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;} + +.openerp .dhx_cal_light{background-color:#FFE763;border-radius:5px; + font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;} + +.openerp .dhx_cal_light_wide{width:650px;} +.openerp .dhx_mark{position:relative;top:3px;background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:0 -43px;padding-left:10px;} + +.openerp .dhx_ie6 .dhx_mark{background-position:6px -41px;} + +.openerp .dhx_cal_light select{font-size:8pt;color:#887A2E;padding:2px;margin:0;}.openerp .dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;} + +.openerp .dhx_cal_ltitle span{white-space:nowrap;} + +.openerp .dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.openerp .dhx_section_time{background-color:#DBCF8C;} + +.openerp .dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;} + +.openerp .dhx_cal_lsection{font-size:18px;} + +.openerp .dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;} +.openerp .dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;} +.openerp .dhx_time{font-weight:bold;} + +.openerp .dhx_cal_light .openerp .dhx_title{padding-left:10px;} + +.openerp .dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;} +.openerp .dhx_btn_set{padding:5px 10px 0 10px;float:left;}.openerp .dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;} +.openerp .dhx_save_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-84px 0;width:21px;} +.openerp .dhx_cancel_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-63px 0;width:20px;} +.openerp .dhx_delete_btn{background-image:url('/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controls.gif');background-position:-42px 0;width:20px;} +.openerp .dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);} +.openerp .dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;} +.openerp .dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;} + +.openerp .dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;} +.openerp .dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;} +.openerp .dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;} +.openerp .dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;} +.openerp .dhx_section_time{text-align:center;} +.openerp .dhx_cal_light_wide .dhx_cal_larea{width:730px;} +.openerp .dhx_cal_light_wide{width:738px;} +.openerp .dhx_cal_light_wide .dhx_section_time{background:transparent;} +.openerp .dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;} +.openerp .dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;} +.openerp .dhx_cal_light input{;font-size:8pt;color:#887A2E;} + +.openerp .dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;cursor:pointer;} + +.openerp .dhx_custom_button{float:right;height:21px;width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;} +.openerp .dhx_cal_light_wide .dhx_custom_button{position:absolute;top:0;right:0;margin-top:2px;} +.openerp .dhx_cal_light_wide .dhx_repeat_right{margin-right:55px;} +.openerp .dhx_cal_light_wide .dhx_repeat_divider{border-color:#FFE763;} + +.openerp .dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;} + +.openerp .dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;} +.openerp .dhx_agenda_area{width:100%;height:100%;overflow-y:auto;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);} +.openerp .dhx_agenda_line{height:21px;clear:both;overflow:hidden;} +.openerp .dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;} +.openerp .dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;} +.openerp .dhx_v_border{position:absolute;left:186px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;} +.openerp .dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;} +.openerp .dhx_agenda_line span{padding-left:5px;line-height:21px;} + + +.openerp .dhx_year_week{ + position:relative; + font-weight:bold; + font-size:1em; + color:#aaa; + vertical-align:middle; + border-top:1px solid #ccc; + border-bottom:1px solid #ccc; +} + +.openerp .dhx_scale_bar_last{border-right:1px dotted #586A7E;} + +.openerp .dhx_year_month{ + height:18px; + line-height:18px; + padding-top:2px; + text-align:center; + vertical-align:middle; + text-transform:uppercase; + font-weight:bold; + font-size:0.9em; + text-shadow: 0 1px 0 white; + border:0px; + color:#444; +} +/*.openerp .dhx_mini_calendar .openerp .dhx_year_month{ + padding-top:0px; +} */ + +.openerp .dhx_mini_calendar + .dhx_year_body { + border:0px; +} + +.openerp .dhx_year_body .dhx_before .dhx_month_head,.openerp .dhx_year_body .dhx_after .dhx_month_head, .openerp .dhx_year_body .dhx_before .dhx_month_head a,.openerp .dhx_year_body .dhx_after .dhx_month_head a {color:#bbb;} + +.openerp .dhx_year_body .dhx_month_body{height:0;overflow:hidden;} + +.openerp .dhx_year_body .dhx_before .dhx_month_head, .dhx_year_body .dhx_after .dhx_month_head{cursor:default;} + +.openerp .dhx_tooltip{border:1px solid #BBB;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto; +font-size:8pt;overflow:hidden;} +.openerp .dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;} +.openerp .dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;} +.openerp .dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;} + +.openerp .dhx_text_disabled{color:#887A2E;font-size:8pt;} + +.openerp .dhx_cal_navline div .dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/calendar.gif);} + +.openerp .dhx_matrix_scell{height:100%;} +.openerp .dhx_matrix_cell, +.openerp .dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;} +.openerp .dhx_matrix_cell{background-color:white;} +.openerp .dhx_matrix_line{overflow:hidden;} +.openerp .dhx_matrix_cell div, .openerp .dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;} +.openerp .dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;} + +.openerp .dhx_matrix_scell.folder,.openerp .dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;} +.openerp .dhx_matrix_scell .dhx_scell_level0{padding-left:5px;} +.openerp .dhx_matrix_scell .dhx_scell_level1{padding-left:20px;} +.openerp .dhx_matrix_scell .dhx_scell_level2{padding-left:35px;} +.openerp .dhx_matrix_scell .dhx_scell_level3{padding-left:50px;} +.openerp .dhx_matrix_scell .dhx_scell_level4{padding-left:65px;} +.openerp .dhx_matrix_scell.folder{font-weight:bold;text-align:left;} +.openerp .dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;} +.openerp .dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;} +.openerp .dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;} + +.openerp .dhx_data_table.folder .dhx_matrix_cell{border-right:0;} +.openerp .dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;} +.openerp .dhx_section_timeline select{width:552px;} +.openerp .dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png);} +.openerp .dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;} +.openerp .dhx_map_line{height:21px;clear:both;overflow:hidden;} +.openerp .dhx_map{position:absolute;} +.openerp .dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;} +.openerp .dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;} +.openerp .dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;} + +.openerp .dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;} +.openerp .dhx_map_line.highlight{background-color:#C4C5CC;} +.openerp .dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;} +.openerp .dhx_cal_checkbox label{padding-left:5px;} +.openerp .dhx_cal_light .radio{padding:2px 0 2px 10px;} +.openerp .dhx_cal_light .radio input,.openerp .dhx_cal_light .radio label{line-height:15px;} +.openerp .dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;} +.openerp .dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;} +.openerp .dhx_cal_light .combo{padding:4px;} +.openerp .dhx_wa_column{float:left;} +.openerp .dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;} + +.openerp .dhx_wa_scale_bar{padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;} +.openerp .dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;} +.openerp .dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;} + +.openerp .dhx_wa_dnd{position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;} +.openerp .dhx_cal_event_selected{background-color:#9cc1db;color:white;} +.openerp .dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;} +.openerp div .dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;} +.openerp div .dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;} + +.openerp .dhx_form_repeat,.openerp .dhx_form_repeat input{padding:0;margin:0;padding-left:5px; +font-size:11px;line-height:24px;} +.openerp .dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;} +.openerp .dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;} +.openerp .dhx_repeat_center,.openerp .dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;} +.openerp .dhx_repeat_left{width:95px;} +.openerp .dhx_repeat_center{width:335px;margin-top:12px;} +.openerp .dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;} +.openerp .dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;} +.openerp input .dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;} +.openerp .dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;} +.openerp input .dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.openerp .dhx_repeat_radio{margin-right:4px;} +.openerp input .dhx_repeat_checkbox{margin:4px 4px 0 0;} +.openerp .dhx_repeat_days td{padding-right:5px;} +.openerp .dhx_repeat_days label{font-size:10px;} +.openerp .dhx_custom_button{width:90px;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;-o-border-radius:4px;border-radius:4px;} +.openerp .dhx_custom_button_recurring{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;} +.openerp .dhx_cal_light_rec{width:640px;} +.openerp .dhx_cal_light_rec .dhx_cal_larea{width:632px;} +.openerp .dhx_cal_light_rec .dhx_cal_light_wide{width:816px;} +.openerp .dhx_cal_light_rec .dhx_cal_light_wide .dhx_cal_larea{width:808px;} + +.openerp .dhx_cal_navline{background-color:none;height:23px!important;} + + + + +.openerp .dhx_scale_bar{/*background-image:url(imgs/top-separator.gif);background-position:0 0;background-repeat:no-repeat; */background-color:transparent;padding-top:3px;border-left:0;} + +.openerp .dhx_multi_day{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);background-repeat:repeat;} + +.openerp .dhx_month_head{background-color:#F4F4F4;} + +.openerp .dhx_after .dhx_month_head,.openerp .dhx_before .dhx_month_head{background-color:#F4F4F4;} + +.openerp .dhx_after .dhx_month_body,.openerp .dhx_before .dhx_month_body{background-color:#EFEDE2;} + +.openerp .dhx_cal_event div{border:1px solid #FFBD51;background-color:#FFE4AB;color:#000;} + +.openerp .dhx_in_move{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png);} + +.openerp .dhx_cal_event .dhx_title{background-color:#FFE4AB;} + +.openerp .dhx_cal_light{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;background-color:#EBEBEB;border:2px solid #A4BED4;color:#000;} +.openerp .dhx_cal_larea{border:1px solid #A4BED4;border-width:0 1px 1px;background-color:#FFF;} + +.openerp .dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/lightbox.png);font-size:14px;padding:5px 0 5px 10px;color:#000;} + +.openerp .dhx_cal_light_wide .dhx_cal_lsection{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);}.openerp .dhx_cal_ltext textarea{background-color:#fff;color:#000;} + +.openerp .dhx_cal_light select,.openerp .dhx_cal_light input{color:#000;} +.openerp .dhx_save_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);} + +.openerp .dhx_cancel_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);} +.openerp .dhx_delete_btn{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);} + +.openerp .div .dhx_menu_head{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:1px solid #FFE4AB;} + +.openerp .div .dhx_menu_icon{background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/controlls5.png);border:medium none;} + +.openerp .dhx_section_time{height:20px!important;padding:7px 0!important;text-align:center;background:white;} + +.openerp .div .dhx_cal_editor{background-color:#FFE4AB;} + +.openerp .dhx_month_body{ + border-left:1px solid #E9E9E9; + border-bottom:1px solid #E9E9E9; +} + +.openerp .dhx_scale_bar_last{border-right:none;} + +.openerp .dhx_month_head .dhx_year_event{background-color:#ddd;} + +.openerp .dhx_year_body .dhx_before .dhx_month_head,.openerp .dhx_year_body .dhx_after .dhx_month_head, .dhx_year_body .dhx_before .dhx_month_head a,.openerp .dhx_year_body .dhx_after .dhx_month_head a{color:#EFEDE2 ;} + +.openerp .dhx_cal_lsection .dhx_readonly{color:#000;} +.openerp .dhx_tooltip{-moz-box-shadow:2px 2px 2px #888;-khtml-box-shadow:2px 2px 2px #888;} +.openerp .dhx_custom_button{margin-top:-2px;} +.openerp .dhx_cal_lsection .dhx_fullday{color:#000;} +.openerp .dhx_cal_lsection .dhx_cal_checkbox{height:16px;line-height:18px;} +.openerp .dhx_cal_light_wide +.openerp .dhx_cal_lsection .dhx_cal_checkbox{height:20px;} +.openerp .dhx_cal_checkbox label{vertical-align:top;} +.openerp .dhx_cal_light_wide .dhx_cal_lsection{color:black;} +.openerp .dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #A4BED4;background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png);} +.openerp .dhx_cal_light_wide .dhx_cal_ltext{border-left:1px solid #A4BED4;} +.openerp .dhx_cal_light_wide .dhx_cal_ltext{background-color:white;} +.openerp .dhx_custom_button{background:white;color:black;} +.openerp .dhx_form_repeat{background:white;} +.openerp .dhx_repeat_divider{border-left:1px solid #A4BED4;} +.openerp .dhx_cal_header .dhx_second_cal_header{background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/second-top-days-bg.png");padding-right:20px;} +.openerp .dhx_scale_bar{padding-top:4px;} + +.openerp .dhx_second_scale_bar{border-bottom:0;padding-top:4px;} +.openerp .dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday,.openerp .dhx_cal_lsection .dhx_fullday{color:#000;font-size:14px;} +.openerp .dhx_cal_light_wide .dhx_cal_lsection{font-size:14px;padding-right:10px;} + + +.openerp .dhx_scale_bar { +/*background-color:#bac6cf; + border-left:1px dotted #7e7e7e; */ + } + + +.openerp .dhx_cal_drag { + background-color:#ff8d8d; + border:1px solid #a73636; +} + + + +.openerp .dhx_in_move{ + background-color:#f7ffb1; +} + + +.openerp .dhx_cal_event div .dhx_menu_icon { + border: medium none; +} + +.openerp .dhx_after .dhx_month_body, .openerp .dhx_before .dhx_month_body { + background-color:#e9e9e9; +} + + +.openerp .dhx_cal_light { + background-color:#ff8d8d; + color: #000102; + border:1px solid #b7a543; +} + +.openerp .dhx_cal_light select { + color: #000102; +} + +.openerp .dhx_cal_lsection { + background-color:#dbcf8c; + color: #fff4b5; +} + +.openerp .dhx_cal_larea { + background-color:#fff4b5; + border:1px solid #b7a543; +} + + +.openerp .dhx_agenda_area{ + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png"); +} + +.openerp .dhx_agenda_line div { + border-right:1px dotted #7e7e7e; +} + +.openerp .dhx_agenda_area .dhx_agenda_line div { + border-right:0px dotted #7e7e7e; +} + + +.openerp .dhx_scale_bar_last { + border-right: none; +} + +.openerp .dhx_year_body .dhx_before .dhx_month_head, .openerp .dhx_year_body .dhx_after .dhx_month_head, .openerp .dhx_year_body .dhx_before .dhx_month_head a, .openerp .dhx_year_body .dhx_after .dhx_month_head a { + color:#bbb; +} +.openerp .dhx_year_body .dhx_before .dhx_month_head:hover, .openerp .dhx_year_body .dhx_after .dhx_month_head:hover, .openerp .dhx_year_body .dhx_before .dhx_month_head a:hover, .openerp .dhx_year_body .dhx_after .dhx_month_head a:hover { + color:white; + text-shadow:none; +} + +.openerp .dhx_tooltip { + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png"); +} + +.openerp .dhx_cal_event div .dhx_menu_head { + border:none; +} + +div.openerp .dhx_menu_head{ + border:1px solid #ff8d8d; +} + +.openerp .dhx_after .dhx_month_head, .openerp .dhx_before .dhx_month_head { + color:#8c9299; +} + +.openerp .dhx_cal_data .dhx_agenda_line { + color:#000102; +} + +.openerp .dhx_cal_header .dhx_agenda_line { + color: #020202; +} + +.openerp .dhx_tooltip_line { + color:#000102; +} + +.openerp .dhx_cal_light select { + background-color: #ffffff; +} + +.openerp .dhx_custom_button { + color: #000102; + background-color: #bac6cf; +} + +div.openerp .dhx_form_repeat { + background-color: #ffffff; +} + +div.openerp .dhx_repeat_divider { + border-left:1px dotted #dbcf8c; +} + + +.openerp .dhx_v_border { + border-right:1px dotted #8c9299; +} + + +.openerp .dhx_scale_bar_last { + border-right: none; +} + +.openerp .dhx_tooltip { + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png"); +} + +.openerp .dhx_text_disabled { + color:#000102; +} + +.openerp .dhx_mini_calendar .dhx_calendar_click { + background-color:#bac6cf; +} + +.openerp .dhx_matrix_cell, .openerp .dhx_matrix_scell { + border-bottom:1px dotted #757575; + border-right:1px dotted #757575; +} + +.openerp .dhx_matrix_cell { + background-color: #ffffff; +} + + +/*=================================================================*/ +/* pro */ +/*=================================================================*/ + + +.openerp .dhx_cal_navline{ + background-color:none; +} + +.openerp .dhx_in_move{ + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/move.png"); +} +.openerp .dhx_cal_light{ + background-color:#bac6cf; + border:2px solid #757575; + color:#000102; +} + +.openerp .dhx_cal_larea{ + border:1px solid #757575; + background-color:#FFFFFF; +} + +.openerp .dhx_cal_lsection{ + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/lightbox.png"); + color:#000102; +} + +.openerp .dhx_cal_ltext{ + background-color:#ffffff; +} + +.openerp .dhx_cal_ltext textarea{ + color:#000102; + background-color:#ffffff; +} + +.openerp .dhx_form_repeat input, .openerp .dhx_form_repeat select{ + background-color:white; + color:black; +} + +.openerp .dhx_cal_light select{ + color:#000102; + background-color:#ffffff; +} + +.openerp .dhx_section_time{ + background-image:none; + background-color:#ffffff; +} + +div.openerp .dhx_cal_editor{ + background-color:#ff8d8d; +} + +div.openerp .dhx_cal_editor textarea { + color: #000102; +} + + +/* .openerp .dhx_year_week{ + background-image:url("./imgs/top-days-bg.png"); +} + +.openerp .dhx_month_head.openerp .dhx_year_event{ + background-color:#ff8d8d; +} */ + +.openerp .dhx_cal_lsection .dhx_readonly{ + color:#000102; +} + +.openerp .dhx_after .dhx_month_head, .openerp .dhx_before .dhx_month_head { + background-color:#F4F4F4; +} + +/* Tree view */ +.openerp .dhx_matrix_scell.folder, .dhx_data_table.folder .dhx_matrix_cell{ + background-color: #7e7e7e; +} +.dhtmlXTooltip.tooltip{ + border-left:1px dotted #7e7e7e; + border-top:1px dotted #7e7e7e; +} +.openerp .dhx_map_area{ + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg_now.png"); +} +.openerp .dhx_map_line div{ + border-right:1px dotted #7e7e7e; +} +.openerp .dhx_map_line .headline_description{ + border-right:1px dotted #7e7e7e; +} +.openerp .dhx_map_line .dhx_map_description{ + border-right: 0px dotted #7e7e7e; +} +.openerp .dhx_map_line .line_description{ + border-right:1px dotted #7e7e7e; +} +.openerp .dhx_map_line.highlight{ + background-color: #bac6cf; +} +.openerp .dhx_map_area .dhx_map_line div{ + border-right:0px dotted #7e7e7e; +} +/* Map view */ +.openerp .dhx_map_area{ + background-image:url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/databg.png"); +} +/* Map view end */ + + +/* Agenda week start */ +.openerp .dhx_wa_column_last .dhx_wa_day_cont{ + border-left: 1px dotted #757575; +} +.openerp .dhx_wa_scale_bar { + border-top: 1px dotted #757575; + border-bottom: 1px dotted #757575; + color: #020202; +} +.openerp .dhx_wa_day_data { + background-color: #ffffff; +} +.openerp .dhx_wa_ev_body { + border-bottom: 1px dotted #757575; + color: #000102; +} +.openerp .dhx_wa_dnd { + color: #525253 !important; + background-color: #f7ffb1 !important; + border: 1px solid #757575; +} +.openerp .dhx_cal_event_selected{ + background-color: #757575; + color: ffffff; +} +/* Agenda week end */ +.openerp .dhx_scale_bar_header { + border-bottom: 1px dotted #8894A3; +} + +/*All*/ +/* increase width of lightbox */ +.openerp .dhx_cal_light_wide .dhx_cal_lsection{ + background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png); +} +/*2.3*/ +.openerp .dhx_cal_lsection .dhx_fullday{ + color:#000000; +} +.openerp .dhx_cal_light_wide .dhx_cal_lsection{ + color:#000000; +} +.openerp .dhx_cal_light_wide .dhx_wrap_section{ + border-top:1px solid #757575; + background-image:url(/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/multi-days-bg.png); +} +.openerp .dhx_cal_light_wide .dhx_cal_ltext{ + border-left:1px solid #757575; +} +.openerp .dhx_cal_light_wide .dhx_cal_ltext { + background-color:#ffffff; +} +.openerp .dhx_custom_button{ + background:#ffffff; + color:#000000; +} +/* timeline second scale start */ +.openerp .dhx_cal_header.openerp .dhx_second_cal_header { + background-image: url("/web_calendar/static/lib/dhtmlxScheduler/codebase/imgs/second-top-days-bg.png"); +} +/* timeline second scale end */ +.openerp .dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday, .openerp .dhx_cal_lsection .dhx_fullday{ + color:#000000; + font-size: 14px; +} +.openerp .dhx_cal_light_wide .dhx_cal_lsection { + font-size: 14px; +} +.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container { + background-color: #d0e5ff; +} +.openerp div .dhx_cal_editor{ + border:1px solid #B7A543; +} +.openerp .dhx_cal_light_wide .dhx_repeat_divider { + border-color: #757575; +} +.openerp .dhx_cal_event .dhx_header, .openerp .dhx_cal_event .dhx_header { + display:none; +} diff --git a/addons/web_calendar/static/src/img/cal_left.png b/addons/web_calendar/static/src/img/cal_left.png new file mode 100644 index 00000000000..b9b66aaeb63 Binary files /dev/null and b/addons/web_calendar/static/src/img/cal_left.png differ diff --git a/addons/web_calendar/static/src/img/cal_right.png b/addons/web_calendar/static/src/img/cal_right.png new file mode 100644 index 00000000000..3c48e521be4 Binary files /dev/null and b/addons/web_calendar/static/src/img/cal_right.png differ diff --git a/addons/web_calendar/static/src/img/minical_left.png b/addons/web_calendar/static/src/img/minical_left.png new file mode 100644 index 00000000000..b17118fcc67 Binary files /dev/null and b/addons/web_calendar/static/src/img/minical_left.png differ diff --git a/addons/web_calendar/static/src/img/minical_right.png b/addons/web_calendar/static/src/img/minical_right.png new file mode 100644 index 00000000000..ab660de81f0 Binary files /dev/null and b/addons/web_calendar/static/src/img/minical_right.png differ diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index 0c814811766..93e798ba804 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -112,6 +112,9 @@ openerp.web_calendar.CalendarView = openerp.web.View.extend({ scheduler.init('openerp_scheduler', null, this.mode || 'month'); + // Remove hard coded style attributes from dhtmlx scheduler + this.$element.find(".dhx_cal_navline div").removeAttr('style'); + scheduler.detachAllEvents(); scheduler.attachEvent('onEventAdded', this.do_create_event); scheduler.attachEvent('onEventDeleted', this.do_delete_event); diff --git a/addons/web_graph/static/src/js/graph.js b/addons/web_graph/static/src/js/graph.js index f2af5503381..f940cac8b0b 100644 --- a/addons/web_graph/static/src/js/graph.js +++ b/addons/web_graph/static/src/js/graph.js @@ -187,7 +187,6 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ schedule_bar: function(results) { var self = this; - var group_list, view_chart; if (!this.group_field) { view_chart = (this.orientation === 'horizontal') ? 'barH' : 'bar'; @@ -220,7 +219,7 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ .map(function (value, index) { return { group: self.ordinate + '_' + - value.toLowerCase().replace(/\s/g, '_'), + value.toLowerCase().replace(/[\s\/]+/g,'_'), text: value, color: COLOR_PALETTE[index % COLOR_PALETTE.length] }; @@ -235,21 +234,19 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ _(records).each(function (record) { var key = _.str.sprintf('%s_%s', self.ordinate, - record[self.group_field].toLowerCase().replace(/\s/g, '_')); + record[self.group_field].toLowerCase().replace(/[\s\/]+/g,'_')); r[key] = record[self.ordinate]; }); return r; }) .value(); } - var abscissa_description = { title: "" + this.fields[this.abscissa].string + "", template: function (obj) { return obj[self.abscissa] || 'Undefined'; } }; - var ordinate_description = { lines: true, title: "" + this.fields[this.ordinate].string + "" @@ -263,7 +260,6 @@ openerp.web_graph.GraphView = openerp.web.View.extend({ x_axis = abscissa_description; y_axis = ordinate_description; } - var renderer = function () { if (self.$element.is(':hidden')) { self.renderer = setTimeout(renderer, 100); diff --git a/addons/web_mobile/po/pt.po b/addons/web_mobile/po/pt.po new file mode 100644 index 00000000000..8054ab4ceac --- /dev/null +++ b/addons/web_mobile/po/pt.po @@ -0,0 +1,66 @@ +# Portuguese translation for openerp-web +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-10-07 10:39+0200\n" +"PO-Revision-Date: 2011-11-21 22:23+0000\n" +"Last-Translator: Daniel Reis \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-11-22 05:13+0000\n" +"X-Generator: Launchpad (build 14299)\n" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "OpenERP" +msgstr "OpenERP" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Database:" +msgstr "Base de dados:" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Login:" +msgstr "Utilizador (login):" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Password:" +msgstr "Senha:" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Login" +msgstr "" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Bad username or password" +msgstr "Nome de utilizador ou senha incorrectos" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Favourite" +msgstr "Favorito" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Preference" +msgstr "Preferência" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Applications" +msgstr "Aplicações" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Options" +msgstr "Opções" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid "Logout" +msgstr "" + +#: addons/web_mobile/static/src/xml/web_mobile.xml:0 +msgid ":" +msgstr ""