forked from Techsystech/web
Merge branch '9.0' of github.com:OCA/web into 9.0-mig-web_dashboard_tile
commit
f9843d4ec1
|
@ -17,19 +17,21 @@ Available addons
|
||||||
----------------
|
----------------
|
||||||
addon | version | summary
|
addon | version | summary
|
||||||
--- | --- | ---
|
--- | --- | ---
|
||||||
|
[help_online](help_online/) | 9.0.1.0.0 | Help Online
|
||||||
[support_branding](support_branding/) | 9.0.2.0.0 | Adds your branding to an Odoo instance
|
[support_branding](support_branding/) | 9.0.2.0.0 | Adds your branding to an Odoo instance
|
||||||
[web_access_rule_buttons](web_access_rule_buttons/) | 9.0.1.0.0 | Disable Edit button if access rules prevent this action
|
[web_access_rule_buttons](web_access_rule_buttons/) | 9.0.1.0.0 | Disable Edit button if access rules prevent this action
|
||||||
[web_dialog_size](web_dialog_size/) | 9.0.1.0.0 | A module that lets the user expand a dialog box to the full screen width.
|
[web_dialog_size](web_dialog_size/) | 9.0.1.0.0 | A module that lets the user expand a dialog box to the full screen width.
|
||||||
[web_duplicate_visibility](web_duplicate_visibility/) | 9.0.1.0.1 | Manage the duplicate button visibiliy
|
[web_duplicate_visibility](web_duplicate_visibility/) | 9.0.1.0.1 | Manage the duplicate button visibiliy
|
||||||
[web_easy_switch_company](web_easy_switch_company/) | 9.0.1.0.0 | Multicompany - Easy Switch Company
|
[web_easy_switch_company](web_easy_switch_company/) | 9.0.1.0.0 | Multicompany - Easy Switch Company
|
||||||
[web_environment_ribbon](web_environment_ribbon/) | 9.0.1.0.0 | Web Environment Ribbon
|
[web_environment_ribbon](web_environment_ribbon/) | 9.0.1.0.0 | Web Environment Ribbon
|
||||||
[web_export_view](web_export_view/) | 9.0.1.0.0 | Export Current View
|
[web_export_view](web_export_view/) | 9.0.1.0.1 | Export Current View
|
||||||
[web_favicon](web_favicon/) | 9.0.1.0.0 | Allows to set a custom shortcut icon (aka favicon)
|
[web_favicon](web_favicon/) | 9.0.1.0.0 | Allows to set a custom shortcut icon (aka favicon)
|
||||||
[web_hide_db_manager_link](web_hide_db_manager_link/) | 9.0.1.0.0 | Hide link to database manager in login screen
|
[web_hide_db_manager_link](web_hide_db_manager_link/) | 9.0.1.0.0 | Hide link to database manager in login screen
|
||||||
[web_m2x_options](web_m2x_options/) | 9.0.1.0.0 | web_m2x_options
|
[web_m2x_options](web_m2x_options/) | 9.0.1.0.0 | web_m2x_options
|
||||||
|
[web_menu_collapsible](web_menu_collapsible/) | 9.0.1.0.0 | Foldable second level Odoo menu
|
||||||
[web_notify](web_notify/) | 9.0.1.0.0 | Send notification messages to user
|
[web_notify](web_notify/) | 9.0.1.0.0 | Send notification messages to user
|
||||||
[web_readonly_bypass](web_readonly_bypass/) | 9.0.1.0.1 | Allow to save onchange modifications to readonly fields
|
[web_readonly_bypass](web_readonly_bypass/) | 9.0.1.0.1 | Allow to save onchange modifications to readonly fields
|
||||||
[web_responsive](web_responsive/) | 9.0.1.0.0 | It provides a mobile compliant interface for Odoo Community web
|
[web_responsive](web_responsive/) | 9.0.2.0.0 | It provides a mobile compliant interface for Odoo Community web
|
||||||
[web_searchbar_full_width](web_searchbar_full_width/) | 9.0.1.0.0 | Show search bar in full screen width
|
[web_searchbar_full_width](web_searchbar_full_width/) | 9.0.1.0.0 | Show search bar in full screen width
|
||||||
[web_send_message_popup](web_send_message_popup/) | 9.0.1.0.0 | Web Send Message as Popup
|
[web_send_message_popup](web_send_message_popup/) | 9.0.1.0.0 | Web Send Message as Popup
|
||||||
[web_sheet_full_width](web_sheet_full_width/) | 9.0.1.0.0 | Use the whole available screen width when displaying sheets
|
[web_sheet_full_width](web_sheet_full_width/) | 9.0.1.0.0 | Use the whole available screen width when displaying sheets
|
||||||
|
@ -50,7 +52,6 @@ Unported addons
|
||||||
---------------
|
---------------
|
||||||
addon | version | summary
|
addon | version | summary
|
||||||
--- | --- | ---
|
--- | --- | ---
|
||||||
[help_online](help_online/) | 8.0.1.0.0 (unported) | Help Online
|
|
||||||
[help_popup](help_popup/) | 8.0.0.5.0 (unported) | Help Popup
|
[help_popup](help_popup/) | 8.0.0.5.0 (unported) | Help Popup
|
||||||
[web_action_conditionable](web_action_conditionable/) | 8.0.0.1.0 (unported) | web_action_conditionable
|
[web_action_conditionable](web_action_conditionable/) | 8.0.0.1.0 (unported) | web_action_conditionable
|
||||||
[web_advanced_search_x2x](web_advanced_search_x2x/) | 8.0.1.0.0 (unported) | Use a search widget in advanced search for x2x fields
|
[web_advanced_search_x2x](web_advanced_search_x2x/) | 8.0.1.0.0 (unported) | Use a search widget in advanced search for x2x fields
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||||
|
:alt: License: AGPL-3
|
||||||
|
|
||||||
|
===========
|
||||||
|
Help Online
|
||||||
|
===========
|
||||||
|
|
||||||
|
|
||||||
|
This module allows the creation of an online help available from the lists
|
||||||
|
and forms in Odoo.
|
||||||
|
|
||||||
|
When loading a view, the module generates a button allowing access to an help
|
||||||
|
page for the related model if the page exists and the user is member of the
|
||||||
|
group 'Help reader'. If the page doesn't exist and the user is member of
|
||||||
|
the group 'Help writer', the module generate a button allowing the creation an
|
||||||
|
help page.
|
||||||
|
|
||||||
|
The help pages are created and managed via the website Module.
|
||||||
|
|
||||||
|
Note: When updating the page prefix parameters, the record rules must be
|
||||||
|
adapted.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
=====
|
||||||
|
|
||||||
|
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
||||||
|
:alt: Try me on Runbot
|
||||||
|
:target: https://runbot.odoo-community.org/runbot/162/9.0
|
||||||
|
|
||||||
|
|
||||||
|
Known issues / Roadmap
|
||||||
|
======================
|
||||||
|
|
||||||
|
Even if the generated urls to the documentation contains an anchor (website/hel-xx#view_type),
|
||||||
|
it's no more possible to insert/edit anchors elements into the website since this functionnality is not supported
|
||||||
|
by the new html editor in Odoo 9.0 (summernote).
|
||||||
|
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
===========
|
||||||
|
|
||||||
|
Bugs are tracked on `GitHub Issues
|
||||||
|
<https://github.com/OCA/web/issues>`_. In case of trouble, please
|
||||||
|
check there if your issue has already been reported. If you spotted it first,
|
||||||
|
help us smashing it by providing a detailed and welcomed feedback.
|
||||||
|
|
||||||
|
Credits
|
||||||
|
=======
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
------------
|
||||||
|
|
||||||
|
* Laurent Mignon <laurent.mignon@acsone.eu>
|
||||||
|
* Jonathan Nemry <jonathan.nemry@acsone.eu>
|
||||||
|
* Cédric Pigeon <cedric.pigeon@acsone.eu>
|
||||||
|
|
||||||
|
Maintainer
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. image:: https://odoo-community.org/logo.png
|
||||||
|
:alt: Odoo Community Association
|
||||||
|
:target: https://odoo-community.org
|
||||||
|
|
||||||
|
This module is maintained by the OCA.
|
||||||
|
|
||||||
|
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
|
||||||
|
|
||||||
|
To contribute to this module, please visit https://odoo-community.org.
|
|
@ -1,22 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Nemry Jonathan
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
from . import controllers
|
from . import controllers
|
||||||
from . import models
|
from . import models
|
||||||
|
from . import wizards
|
||||||
|
|
|
@ -1,65 +1,30 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Nemry Jonathan
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
{
|
{
|
||||||
'name': 'Help Online',
|
'name': 'Help Online',
|
||||||
'version': '8.0.1.0.0',
|
'version': '9.0.1.0.0',
|
||||||
'author': "ACSONE SA/NV,Odoo Community Association (OCA)",
|
'author': "ACSONE SA/NV,Odoo Community Association (OCA)",
|
||||||
'maintainer': 'ACSONE SA/NV',
|
'maintainer': 'ACSONE SA/NV',
|
||||||
'website': 'http://www.acsone.eu',
|
'website': 'http://www.acsone.eu',
|
||||||
|
'license': 'AGPL-3',
|
||||||
'category': 'Documentation',
|
'category': 'Documentation',
|
||||||
'depends': [
|
'depends': [
|
||||||
'base',
|
'base',
|
||||||
'website',
|
'website',
|
||||||
],
|
],
|
||||||
'description': """
|
|
||||||
Help Online
|
|
||||||
===========
|
|
||||||
|
|
||||||
This module allows the creation of an online help available from the lists
|
|
||||||
and forms in Odoo.
|
|
||||||
|
|
||||||
When loading a view, the module generates a button allowing access to an help
|
|
||||||
page for the related model if the page exists and the user is member of the
|
|
||||||
group 'Help reader'. If the page doesn't exist and the user is member of
|
|
||||||
the group 'Help writer', the module generate a button allowing the creation an
|
|
||||||
help page.
|
|
||||||
|
|
||||||
The help pages are created and managed via the website Module.
|
|
||||||
|
|
||||||
Note: When updating the page prefix parameters, the record rules must be
|
|
||||||
adapted.
|
|
||||||
""",
|
|
||||||
'data': [
|
'data': [
|
||||||
'security/help_online_groups.xml',
|
'security/help_online_groups.xml',
|
||||||
'security/help_online_rules.xml',
|
'security/help_online_rules.xml',
|
||||||
'views/export_help_wizard_view.xml',
|
'wizards/export_help_wizard_view.xml',
|
||||||
'views/import_help_wizard_view.xml',
|
'wizards/import_help_wizard_view.xml',
|
||||||
'views/ir_ui_view_view.xml',
|
'views/ir_ui_view_view.xml',
|
||||||
'views/help_online_view.xml',
|
'views/help_online_view.xml',
|
||||||
'views/website_help_online.xml',
|
|
||||||
'data/ir_config_parameter_data.xml',
|
'data/ir_config_parameter_data.xml',
|
||||||
],
|
],
|
||||||
'qweb': [
|
'qweb': [
|
||||||
'static/src/xml/help_online.xml',
|
'static/src/xml/help_online.xml',
|
||||||
],
|
],
|
||||||
'installable': False,
|
'installable': True,
|
||||||
'auto_install': False,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,5 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Laurent Mignon
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
from .import help_online_controllers
|
from .import help_online_controllers
|
||||||
|
|
|
@ -1,23 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Laurent Mignon
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
import openerp.http as http
|
import openerp.http as http
|
||||||
from openerp.http import request
|
from openerp.http import request
|
||||||
|
|
|
@ -0,0 +1,244 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * help_online
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-01-14 02:26+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-01-14 02:26+0000\n"
|
||||||
|
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\n"
|
||||||
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: es\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Cerrar"
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/models/help_online.py:45
|
||||||
|
#, python-format
|
||||||
|
msgid "Create Help page for %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_create_uid
|
||||||
|
msgid "Created by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_create_date
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_create_date
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_create_date
|
||||||
|
msgid "Created on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_display_name
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_display_name
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_display_name
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
|
msgid "Export"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/wizards/export_help_wizard.py:302
|
||||||
|
#: model:ir.actions.act_window,name:help_online.action_export_help_wizard
|
||||||
|
#, python-format
|
||||||
|
msgid "Export Help"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
|
msgid "Export Help Data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_export_help_wizard
|
||||||
|
#: model:ir.ui.menu,name:help_online.menu_help_export
|
||||||
|
msgid "Export Help Online"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_export_filename
|
||||||
|
msgid "Export XML Filename"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.menu,name:help_online.menu_help
|
||||||
|
#: model:ir.ui.menu,name:help_online.menu_help_main
|
||||||
|
msgid "Help Online"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/models/help_online.py:40
|
||||||
|
#, python-format
|
||||||
|
msgid "Help on %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:res.groups,name:help_online.help_online_group_reader
|
||||||
|
msgid "Help reader"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:res.groups,name:help_online.help_online_group_writer
|
||||||
|
msgid "Help writer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_id
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_id
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_id
|
||||||
|
msgid "ID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
|
msgid "Import"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.actions.act_window,name:help_online.action_import_help_wizard
|
||||||
|
msgid "Import Help"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
|
msgid "Import Help Data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.menu,name:help_online.menu_help_import
|
||||||
|
msgid "Import Help Online"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard___last_update
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online___last_update
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard___last_update
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_write_uid
|
||||||
|
msgid "Last Updated by"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_write_date
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_write_date
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_write_date
|
||||||
|
msgid "Last Updated on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/wizards/export_help_wizard.py:295
|
||||||
|
#, python-format
|
||||||
|
msgid "No data to export !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/models/help_online.py:17
|
||||||
|
#, python-format
|
||||||
|
msgid "No page prefix parameter specified !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/wizards/export_help_wizard.py:99
|
||||||
|
#, python-format
|
||||||
|
msgid "Only images from ir.attachment are supported when exporting help pages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/help_online/static/src/js/help_online.js:37
|
||||||
|
#, python-format
|
||||||
|
msgid "Page does not exist. Do you want to create?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_source_file
|
||||||
|
msgid "Source File"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
|
msgid ""
|
||||||
|
"This wizard allow you to export all QWeb views\n"
|
||||||
|
" related to help online. The result will be an Odoo\n"
|
||||||
|
" data xml file."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
|
msgid ""
|
||||||
|
"This wizard allow you to import QWeb views\n"
|
||||||
|
" related to help online. The required file format is an Odoo\n"
|
||||||
|
" data xml file."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/wizards/export_help_wizard.py:332
|
||||||
|
#, python-format
|
||||||
|
msgid "Unable to write autobackup file in given directory: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.view_view_search
|
||||||
|
msgid "Website Page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.view_view_form
|
||||||
|
msgid "Website Page?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.actions.act_window,name:help_online.action_website_pages
|
||||||
|
#: model:ir.ui.menu,name:help_online.menu_help_pages
|
||||||
|
msgid "Website Pages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_data
|
||||||
|
msgid "XML"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_help_online
|
||||||
|
msgid "help.online"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_import_help_wizard
|
||||||
|
msgid "import.help.wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_ir_model_data
|
||||||
|
msgid "ir.model.data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
|
msgid "or"
|
||||||
|
msgstr ""
|
|
@ -2,71 +2,70 @@
|
||||||
# This file contains the translation of the following modules:
|
# This file contains the translation of the following modules:
|
||||||
# * help_online
|
# * help_online
|
||||||
#
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
# leemannd <denis.leemann@camptocamp.com>, 2017
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2014-10-14 09:06+0000\n"
|
"POT-Creation-Date: 2017-01-14 02:26+0000\n"
|
||||||
"PO-Revision-Date: 2014-10-14 09:06+0000\n"
|
"PO-Revision-Date: 2017-01-14 02:26+0000\n"
|
||||||
"Last-Translator: <>\n"
|
"Last-Translator: leemannd <denis.leemann@camptocamp.com>, 2017\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: \n"
|
"Content-Transfer-Encoding: \n"
|
||||||
"Plural-Forms: \n"
|
"Language: fr\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#. openerp-web
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
#: code:addons/help_online/static/src/js/help_online.js:83
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
#, python-format
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "Annuler"
|
|
||||||
|
|
||||||
#. module: help_online
|
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Fermer"
|
msgstr "Fermer"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#. openerp-web
|
#: code:addons/help_online/models/help_online.py:45
|
||||||
#: code:addons/help_online/static/src/js/help_online.js:81
|
|
||||||
#, python-format
|
|
||||||
msgid "Confirm"
|
|
||||||
msgstr "Confirmer"
|
|
||||||
|
|
||||||
#. module: help_online
|
|
||||||
#: code:addons/help_online/models/help_online.py:60
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Create Help page for %s"
|
msgid "Create Help page for %s"
|
||||||
msgstr "Créer la page d'aide pour %s"
|
msgstr "Créer la page d'aide pour %s"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,create_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_create_uid
|
||||||
#: field:help.online,create_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online_create_uid
|
||||||
#: field:import.help.wizard,create_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_create_uid
|
||||||
msgid "Created by"
|
msgid "Created by"
|
||||||
msgstr "Créé par"
|
msgstr "Créé par"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,create_date:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_create_date
|
||||||
#: field:help.online,create_date:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online_create_date
|
||||||
#: field:import.help.wizard,create_date:0
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_create_date
|
||||||
msgid "Created on"
|
msgid "Created on"
|
||||||
msgstr "Créé le"
|
msgstr "Créé le"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_display_name
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_display_name
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_display_name
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr "Nom affiché"
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "Export"
|
msgstr "Export"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/wizards/export_help_wizard.py:302
|
||||||
#: model:ir.actions.act_window,name:help_online.action_export_help_wizard
|
#: model:ir.actions.act_window,name:help_online.action_export_help_wizard
|
||||||
|
#, python-format
|
||||||
msgid "Export Help"
|
msgid "Export Help"
|
||||||
msgstr "Export des pages d'aide"
|
msgstr "Export des pages d'aide"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
msgid "Export Help Data"
|
msgid "Export Help Data"
|
||||||
msgstr "Export des pages d'aide"
|
msgstr "Export des pages d'aide"
|
||||||
|
|
||||||
|
@ -77,7 +76,7 @@ msgid "Export Help Online"
|
||||||
msgstr "Export des pages d'aide"
|
msgstr "Export des pages d'aide"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,export_filename:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_export_filename
|
||||||
msgid "Export XML Filename"
|
msgid "Export XML Filename"
|
||||||
msgstr "Fichier XML"
|
msgstr "Fichier XML"
|
||||||
|
|
||||||
|
@ -88,7 +87,7 @@ msgid "Help Online"
|
||||||
msgstr "Aide en ligne"
|
msgstr "Aide en ligne"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: code:addons/help_online/models/help_online.py:55
|
#: code:addons/help_online/models/help_online.py:40
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Help on %s"
|
msgid "Help on %s"
|
||||||
msgstr "Aide sur %s"
|
msgstr "Aide sur %s"
|
||||||
|
@ -104,14 +103,14 @@ msgid "Help writer"
|
||||||
msgstr "Aide: rédacteur"
|
msgstr "Aide: rédacteur"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,id:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_id
|
||||||
#: field:help.online,id:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online_id
|
||||||
#: field:import.help.wizard,id:0
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_id
|
||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr "ID"
|
msgstr "ID"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Import"
|
msgstr "Import"
|
||||||
|
|
||||||
|
@ -121,7 +120,7 @@ msgid "Import Help"
|
||||||
msgstr "Import des pages d'aide"
|
msgstr "Import des pages d'aide"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid "Import Help Data"
|
msgid "Import Help Data"
|
||||||
msgstr "Import des pages d'aide"
|
msgstr "Import des pages d'aide"
|
||||||
|
|
||||||
|
@ -131,81 +130,93 @@ msgid "Import Help Online"
|
||||||
msgstr "Import des pages d'aide"
|
msgstr "Import des pages d'aide"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,write_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard___last_update
|
||||||
#: field:help.online,write_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online___last_update
|
||||||
#: field:import.help.wizard,write_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard___last_update
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr "Dernière modification le"
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_write_uid
|
||||||
msgid "Last Updated by"
|
msgid "Last Updated by"
|
||||||
msgstr "Mis à jour par"
|
msgstr "Mis à jour par"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,write_date:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_write_date
|
||||||
#: field:help.online,write_date:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online_write_date
|
||||||
#: field:import.help.wizard,write_date:0
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_write_date
|
||||||
msgid "Last Updated on"
|
msgid "Last Updated on"
|
||||||
msgstr "Mis à jour le"
|
msgstr "Mis à jour le"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: code:addons/help_online/models/export_help_wizard.py:238
|
#: code:addons/help_online/wizards/export_help_wizard.py:295
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "No data to export !"
|
msgid "No data to export !"
|
||||||
msgstr "Aucune page à exporter !"
|
msgstr "Aucune page à exporter !"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: code:addons/help_online/models/help_online.py:33
|
#: code:addons/help_online/models/help_online.py:17
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "No page prefix parameter specified !"
|
msgid "No page prefix parameter specified !"
|
||||||
msgstr "Le paramètre spécifiant le préfixe des pages n'est pas configuré !"
|
msgstr "Le paramètre spécifiant le préfixe des pages n'est pas configuré !"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#. openerp-web
|
#: code:addons/help_online/wizards/export_help_wizard.py:99
|
||||||
#: code:addons/help_online/static/src/js/help_online.js:88
|
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ok"
|
msgid "Only images from ir.attachment are supported when exporting help pages"
|
||||||
msgstr "Ok"
|
msgstr ""
|
||||||
|
"Seules les images provenant de ir.attachement sont supportées lors de "
|
||||||
|
"l'export de pages d'aide"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/help_online/static/src/js/help_online.js:107
|
#: code:addons/help_online/static/src/js/help_online.js:37
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Page does not exist. Do you want to create?"
|
msgid "Page does not exist. Do you want to create?"
|
||||||
msgstr "La page n'existe pas. Voulez-vous la créer?"
|
msgstr "La page n'existe pas. Voulez-vous la créer?"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:import.help.wizard,source_file:0
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_source_file
|
||||||
msgid "Source File"
|
msgid "Source File"
|
||||||
msgstr "Fichier de données"
|
msgstr "Fichier de données"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
msgid "This wizard allow you to export all QWeb views\n"
|
msgid ""
|
||||||
|
"This wizard allow you to export all QWeb views\n"
|
||||||
" related to help online. The result will be an Odoo\n"
|
" related to help online. The result will be an Odoo\n"
|
||||||
" data xml file."
|
" data xml file."
|
||||||
msgstr "Cet assistant vous permet d'exporter toutes les vues QWeb \n"
|
msgstr ""
|
||||||
" concernant l'aide. Le résultat sera un\n"
|
"Cette fenêtre de l'assistant permet l'export de toutes les vues QWeb\n"
|
||||||
" fichier de données Odoo."
|
"liées à l'aide en ligne. Le résultat sera sous la forme d'un fichier de données xml."
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid "This wizard allow you to import QWeb views\n"
|
msgid ""
|
||||||
|
"This wizard allow you to import QWeb views\n"
|
||||||
" related to help online. The required file format is an Odoo\n"
|
" related to help online. The required file format is an Odoo\n"
|
||||||
" data xml file."
|
" data xml file."
|
||||||
msgstr "Cet assistant vous permet d'importer toutes les vues QWeb\n"
|
msgstr ""
|
||||||
" concernant l'aide. Le format de fichier requis est un\n"
|
"Cette fenêtre de l'assistant permet l'import de toutes les vues QWeb\n"
|
||||||
" fichier de données Odoo."
|
"liées à l'aide en ligne. Le fichier doit être un fichier \n"
|
||||||
|
"de donnés au format xml"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: code:addons/help_online/models/export_help_wizard.py:275
|
#: code:addons/help_online/wizards/export_help_wizard.py:332
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Unable to write autobackup file in given directory: %s"
|
msgid "Unable to write autobackup file in given directory: %s"
|
||||||
msgstr "Impossible d'écrire le fichier de sauvegarde dans le répertoire spécifié: %s"
|
msgstr ""
|
||||||
|
"Impossible d'écrire le fichier de sauvegarde dans le répertoire spécifié: %s"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:ir.ui.view:help_online.view_view_search
|
#: model:ir.ui.view,arch_db:help_online.view_view_search
|
||||||
msgid "Website Page"
|
msgid "Website Page"
|
||||||
msgstr "Page du site"
|
msgstr "Page du site"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:ir.ui.view:help_online.view_view_form
|
#: model:ir.ui.view,arch_db:help_online.view_view_form
|
||||||
msgid "Website Page?"
|
msgid "Website Page?"
|
||||||
msgstr "Page du site?"
|
msgstr "Page du site?"
|
||||||
|
|
||||||
|
@ -216,7 +227,27 @@ msgid "Website Pages"
|
||||||
msgstr "Pages du site"
|
msgstr "Pages du site"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,data:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_data
|
||||||
msgid "XML"
|
msgid "XML"
|
||||||
msgstr "XML"
|
msgstr "XML"
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_help_online
|
||||||
|
msgid "help.online"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_import_help_wizard
|
||||||
|
msgid "import.help.wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_ir_model_data
|
||||||
|
msgid "ir.model.data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
|
msgid "or"
|
||||||
|
msgstr "ou"
|
||||||
|
|
|
@ -2,52 +2,69 @@
|
||||||
# This file contains the translation of the following modules:
|
# This file contains the translation of the following modules:
|
||||||
# * help_online
|
# * help_online
|
||||||
#
|
#
|
||||||
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015.
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 8.0\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2015-08-02 10:20+0200\n"
|
"POT-Creation-Date: 2017-01-14 02:26+0000\n"
|
||||||
"PO-Revision-Date: 2015-08-02 10:20+0200\n"
|
"PO-Revision-Date: 2017-01-14 02:26+0000\n"
|
||||||
"Last-Translator: Matjaz Mozetic <m.mozetic@matmoz.si>\n"
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
"Language-Team: Slovenian <translate@matmoz.si>\n"
|
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
|
||||||
"Language: sl\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: \n"
|
||||||
"Plural-Forms: \n"
|
"Language: sl\n"
|
||||||
"X-Generator: Poedit 1.8.2\n"
|
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zaključi"
|
msgstr "Zaključi"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,create_uid:0 field:help.online,create_uid:0
|
#: code:addons/help_online/models/help_online.py:45
|
||||||
#: field:import.help.wizard,create_uid:0
|
#, python-format
|
||||||
|
msgid "Create Help page for %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_create_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_create_uid
|
||||||
msgid "Created by"
|
msgid "Created by"
|
||||||
msgstr "Ustvaril"
|
msgstr "Ustvaril"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,create_date:0 field:help.online,create_date:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_create_date
|
||||||
#: field:import.help.wizard,create_date:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online_create_date
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_create_date
|
||||||
msgid "Created on"
|
msgid "Created on"
|
||||||
msgstr "Ustvarjeno"
|
msgstr "Ustvarjeno"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_display_name
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_display_name
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_display_name
|
||||||
|
msgid "Display Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
msgid "Export"
|
msgid "Export"
|
||||||
msgstr "Izvoz"
|
msgstr "Izvoz"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/wizards/export_help_wizard.py:302
|
||||||
#: model:ir.actions.act_window,name:help_online.action_export_help_wizard
|
#: model:ir.actions.act_window,name:help_online.action_export_help_wizard
|
||||||
|
#, python-format
|
||||||
msgid "Export Help"
|
msgid "Export Help"
|
||||||
msgstr "Izvoz navodil"
|
msgstr "Izvoz navodil"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
msgid "Export Help Data"
|
msgid "Export Help Data"
|
||||||
msgstr "Izvoz podatkov spletnih navodil"
|
msgstr "Izvoz podatkov spletnih navodil"
|
||||||
|
|
||||||
|
@ -58,7 +75,7 @@ msgid "Export Help Online"
|
||||||
msgstr "Izvozi spletna navodila"
|
msgstr "Izvozi spletna navodila"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,export_filename:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_export_filename
|
||||||
msgid "Export XML Filename"
|
msgid "Export XML Filename"
|
||||||
msgstr "Naziv izvožene XML datoteke"
|
msgstr "Naziv izvožene XML datoteke"
|
||||||
|
|
||||||
|
@ -68,6 +85,12 @@ msgstr "Naziv izvožene XML datoteke"
|
||||||
msgid "Help Online"
|
msgid "Help Online"
|
||||||
msgstr "Spletna navodila"
|
msgstr "Spletna navodila"
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/models/help_online.py:40
|
||||||
|
#, python-format
|
||||||
|
msgid "Help on %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: model:res.groups,name:help_online.help_online_group_reader
|
#: model:res.groups,name:help_online.help_online_group_reader
|
||||||
msgid "Help reader"
|
msgid "Help reader"
|
||||||
|
@ -79,13 +102,14 @@ msgid "Help writer"
|
||||||
msgstr "Avtor navodil"
|
msgstr "Avtor navodil"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,id:0 field:help.online,id:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_id
|
||||||
#: field:import.help.wizard,id:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online_id
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_id
|
||||||
msgid "ID"
|
msgid "ID"
|
||||||
msgstr "ID"
|
msgstr "ID"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid "Import"
|
msgid "Import"
|
||||||
msgstr "Uvoz"
|
msgstr "Uvoz"
|
||||||
|
|
||||||
|
@ -95,7 +119,7 @@ msgid "Import Help"
|
||||||
msgstr "Uvoz navodil"
|
msgstr "Uvoz navodil"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid "Import Help Data"
|
msgid "Import Help Data"
|
||||||
msgstr "Uvoz podatkov navodil"
|
msgstr "Uvoz podatkov navodil"
|
||||||
|
|
||||||
|
@ -105,52 +129,85 @@ msgid "Import Help Online"
|
||||||
msgstr "Uvoz spletnih navodil"
|
msgstr "Uvoz spletnih navodil"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,write_uid:0 field:help.online,write_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard___last_update
|
||||||
#: field:import.help.wizard,write_uid:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online___last_update
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard___last_update
|
||||||
|
msgid "Last Modified on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_help_online_write_uid
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_write_uid
|
||||||
msgid "Last Updated by"
|
msgid "Last Updated by"
|
||||||
msgstr "Zadnjič posodobil"
|
msgstr "Zadnjič posodobil"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,write_date:0 field:help.online,write_date:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_write_date
|
||||||
#: field:import.help.wizard,write_date:0
|
#: model:ir.model.fields,field_description:help_online.field_help_online_write_date
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_write_date
|
||||||
msgid "Last Updated on"
|
msgid "Last Updated on"
|
||||||
msgstr "Zadnjič posodobljeno"
|
msgstr "Zadnjič posodobljeno"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:import.help.wizard,source_file:0
|
#: code:addons/help_online/wizards/export_help_wizard.py:295
|
||||||
|
#, python-format
|
||||||
|
msgid "No data to export !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/models/help_online.py:17
|
||||||
|
#, python-format
|
||||||
|
msgid "No page prefix parameter specified !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: code:addons/help_online/wizards/export_help_wizard.py:99
|
||||||
|
#, python-format
|
||||||
|
msgid "Only images from ir.attachment are supported when exporting help pages"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/help_online/static/src/js/help_online.js:37
|
||||||
|
#, python-format
|
||||||
|
msgid "Page does not exist. Do you want to create?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model.fields,field_description:help_online.field_import_help_wizard_source_file
|
||||||
msgid "Source File"
|
msgid "Source File"
|
||||||
msgstr "Izvorna datoteka"
|
msgstr "Izvorna datoteka"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
msgid ""
|
msgid ""
|
||||||
"This wizard allow you to export all QWeb views\n"
|
"This wizard allow you to export all QWeb views\n"
|
||||||
" related to help online. The result will be an Odoo\n"
|
" related to help online. The result will be an Odoo\n"
|
||||||
" data xml file."
|
" data xml file."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ta čarovnik omogoča izvoz vseh QWeb pogledov,\n"
|
|
||||||
" ki se tičejo spletnih navodil v Odoo\n"
|
|
||||||
" xml podatkovno datoteko."
|
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid ""
|
msgid ""
|
||||||
"This wizard allow you to import QWeb views\n"
|
"This wizard allow you to import QWeb views\n"
|
||||||
" related to help online. The required file format is "
|
" related to help online. The required file format is an Odoo\n"
|
||||||
"an Odoo\n"
|
|
||||||
" data xml file."
|
" data xml file."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ta čarovnik omogoča uvoz QWeb pogledov,\n"
|
|
||||||
" ki se tičejo spletnih navodil iz Odoo\n"
|
|
||||||
" xml podatkovne datoteke."
|
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:ir.ui.view:help_online.view_view_search
|
#: code:addons/help_online/wizards/export_help_wizard.py:332
|
||||||
|
#, python-format
|
||||||
|
msgid "Unable to write autobackup file in given directory: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.view_view_search
|
||||||
msgid "Website Page"
|
msgid "Website Page"
|
||||||
msgstr "Spletna stran"
|
msgstr "Spletna stran"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:ir.ui.view:help_online.view_view_form
|
#: model:ir.ui.view,arch_db:help_online.view_view_form
|
||||||
msgid "Website Page?"
|
msgid "Website Page?"
|
||||||
msgstr "Spletna stran?"
|
msgstr "Spletna stran?"
|
||||||
|
|
||||||
|
@ -161,12 +218,27 @@ msgid "Website Pages"
|
||||||
msgstr "Spletne strani"
|
msgstr "Spletne strani"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: field:export.help.wizard,data:0
|
#: model:ir.model.fields,field_description:help_online.field_export_help_wizard_data
|
||||||
msgid "XML"
|
msgid "XML"
|
||||||
msgstr "XML"
|
msgstr "XML"
|
||||||
|
|
||||||
#. module: help_online
|
#. module: help_online
|
||||||
#: view:export.help.wizard:help_online.export_help_wizard_view
|
#: model:ir.model,name:help_online.model_help_online
|
||||||
#: view:import.help.wizard:help_online.import_help_wizard_view
|
msgid "help.online"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_import_help_wizard
|
||||||
|
msgid "import.help.wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.model,name:help_online.model_ir_model_data
|
||||||
|
msgid "ir.model.data"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: help_online
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.export_help_wizard_view
|
||||||
|
#: model:ir.ui.view,arch_db:help_online.import_help_wizard_view
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "ali"
|
msgstr "ali"
|
||||||
|
|
|
@ -1,24 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Nemry Jonathan
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
from . import help_online
|
from . import help_online
|
||||||
from . import export_help_wizard
|
|
||||||
from . import import_help_wizard
|
|
||||||
from . import ir_model
|
from . import ir_model
|
||||||
|
|
|
@ -1,23 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Laurent Mignon
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
from openerp import models, exceptions
|
from openerp import models, exceptions
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
|
|
||||||
|
@ -34,9 +18,9 @@ class HelpOnline(models.TransientModel):
|
||||||
name = '%s-%s' % (page_prefix, model.replace('.', '-'))
|
name = '%s-%s' % (page_prefix, model.replace('.', '-'))
|
||||||
return name
|
return name
|
||||||
|
|
||||||
def page_exists(self, name):
|
def get_existing_pages(self, name, limit=None):
|
||||||
website_model = self.env['website']
|
website = self.env['website']
|
||||||
return website_model.page_exists(name)
|
return website.search_pages(needle=name, limit=limit)
|
||||||
|
|
||||||
def get_page_url(self, model, view_type, domain=None, context=None):
|
def get_page_url(self, model, view_type, domain=None, context=None):
|
||||||
user_model = self.env['res.users']
|
user_model = self.env['res.users']
|
||||||
|
@ -48,8 +32,9 @@ class HelpOnline(models.TransientModel):
|
||||||
if res:
|
if res:
|
||||||
description = res[0][1]
|
description = res[0][1]
|
||||||
name = self._get_view_name(model, view_type, domain, context)
|
name = self._get_view_name(model, view_type, domain, context)
|
||||||
if self.page_exists(name):
|
pages = self.get_existing_pages(name, limit=1)
|
||||||
url = '/page/%s' % name
|
if pages:
|
||||||
|
url = pages[0]['loc']
|
||||||
if view_type:
|
if view_type:
|
||||||
url = url + '#' + view_type
|
url = url + '#' + view_type
|
||||||
title = _('Help on %s') % description
|
title = _('Help on %s') % description
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
# All Rights Reserved
|
|
||||||
#
|
|
||||||
# WARNING: This program as such is intended to be used by professional
|
|
||||||
# programmers who take the whole responsibility of assessing all potential
|
|
||||||
# consequences resulting from its eventual inadequacies and bugs.
|
|
||||||
# End users who are looking for a ready-to-use solution with commercial
|
|
||||||
# guarantees and support are strongly advised to contact a Free Software
|
|
||||||
# Service Company.
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as
|
|
||||||
# published by the Free Software Foundation, either version 3 of the
|
|
||||||
# License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
from openerp import models, fields, api
|
|
||||||
from openerp.tools import convert
|
|
||||||
|
|
||||||
import base64
|
|
||||||
from cStringIO import StringIO
|
|
||||||
|
|
||||||
|
|
||||||
class ImportHelpWizard(models.TransientModel):
|
|
||||||
_name = "import.help.wizard"
|
|
||||||
|
|
||||||
source_file = fields.Binary('Source File')
|
|
||||||
|
|
||||||
@api.one
|
|
||||||
def import_help(self):
|
|
||||||
source_file = base64.decodestring(self.source_file)
|
|
||||||
convert.convert_xml_import(self.env.cr,
|
|
||||||
self._module,
|
|
||||||
StringIO(source_file),
|
|
||||||
idref=None,
|
|
||||||
mode='init',
|
|
||||||
noupdate=False,
|
|
||||||
report=None)
|
|
|
@ -1,29 +1,13 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Cédric Pigeon
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
from openerp import models, api
|
from openerp import models, api
|
||||||
|
|
||||||
from lxml import etree as ET
|
from lxml import etree as ET
|
||||||
|
|
||||||
|
|
||||||
class ir_model_data(models.Model):
|
class IrModelData(models.Model):
|
||||||
_inherit = 'ir.model.data'
|
_inherit = 'ir.model.data'
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
|
@ -38,7 +22,7 @@ class ir_model_data(models.Model):
|
||||||
xml_str = self.manageImageReferences(values['arch'], module)
|
xml_str = self.manageImageReferences(values['arch'], module)
|
||||||
values['arch'] = xml_str
|
values['arch'] = xml_str
|
||||||
|
|
||||||
return super(ir_model_data, self)._update(model,
|
return super(IrModelData, self)._update(model,
|
||||||
module,
|
module,
|
||||||
values,
|
values,
|
||||||
xml_id=xml_id,
|
xml_id=xml_id,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<openerp>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<data>
|
<odoo>
|
||||||
<record id="help_online_group_reader" model="res.groups">
|
<record id="help_online_group_reader" model="res.groups">
|
||||||
<field name="name">Help reader</field>
|
<field name="name">Help reader</field>
|
||||||
<field name="category_id" ref="base.module_category_documentation"/>
|
<field name="category_id" ref="base.module_category_documentation"/>
|
||||||
|
@ -11,6 +11,6 @@
|
||||||
(4, ref('help_online_group_reader')),
|
(4, ref('help_online_group_reader')),
|
||||||
(4, ref('base.group_website_publisher')),
|
(4, ref('base.group_website_publisher')),
|
||||||
]"/>
|
]"/>
|
||||||
|
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</odoo>
|
||||||
</openerp>
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<openerp>
|
<odoo noupdate="1">
|
||||||
<data noupdate="1">
|
|
||||||
<record id="online_help_confidential_rule" model="ir.rule">
|
<record id="online_help_confidential_rule" model="ir.rule">
|
||||||
<field name="name">Online Help Hidden by Default</field>
|
<field name="name">Online Help Hidden by Default</field>
|
||||||
<field name="model_id" ref="base.model_ir_ui_view"/>
|
<field name="model_id" ref="base.model_ir_ui_view"/>
|
||||||
|
@ -28,5 +27,4 @@
|
||||||
<field name="perm_read" eval="1"/><field name="perm_write" eval="0"/>
|
<field name="perm_read" eval="1"/><field name="perm_write" eval="0"/>
|
||||||
<field name="perm_create" eval="0"/><field name="perm_unlink" eval="0"/>
|
<field name="perm_create" eval="0"/><field name="perm_unlink" eval="0"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</odoo>
|
||||||
</openerp>
|
|
||||||
|
|
|
@ -1,12 +1,3 @@
|
||||||
li.oe_help_online_not_found {
|
a.o_help_online_not_found {
|
||||||
background-color: #df3f3f;
|
background-color: #df3f3f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.openerp .oe_view_manager .oe_view_manager_switch .oe_list_button_help_online:after {
|
|
||||||
font-size: 28px;
|
|
||||||
content: "?";
|
|
||||||
text-align: center;
|
|
||||||
margin: 3px auto 4px;
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,95 +1,43 @@
|
||||||
openerp.help_online = function (instance) {
|
odoo.define('oca.HelpOnline', function (require) {
|
||||||
var QWeb = instance.web.qweb;
|
"use strict";
|
||||||
var _t = instance.web._t;
|
|
||||||
var _lt = instance.web._lt;
|
|
||||||
|
|
||||||
instance.web.ListView.include({
|
var core = require('web.core');
|
||||||
load_list: function () {
|
var QWeb = core.qweb;
|
||||||
var self = this;
|
var _t = core._t;
|
||||||
var add_button = false;
|
var ViewManager = require('web.ViewManager');
|
||||||
if (!this.$buttons) {
|
var ControlPanel = require('web.ControlPanel');
|
||||||
add_button = true;
|
var Dialog = require('web.Dialog');
|
||||||
}
|
|
||||||
|
ControlPanel.include({
|
||||||
|
start: function(){
|
||||||
this._super.apply(this, arguments);
|
this._super.apply(this, arguments);
|
||||||
this.$buttons.on('click', '.oe_list_button_help_online', function() {
|
this._toggle_visibility(true);
|
||||||
self.do_action({
|
this.nodes = _.extend(
|
||||||
type: 'ir.actions.act_url',
|
this.nodes,
|
||||||
url: '/partner_mobile',
|
{$help_online_buttons: this.$('.o_help_online_buttons')});
|
||||||
target: 'self',
|
this._toggle_visibility(false);
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.web.TreeView.include({
|
ViewManager.include({
|
||||||
view_loading: function(r) {
|
|
||||||
var ret = this._super(r);
|
|
||||||
if(! _.isUndefined(this.ViewManager.load_help_buttons)){
|
|
||||||
this.ViewManager.load_help_buttons();
|
|
||||||
}
|
|
||||||
return ret
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
openerp.web.ListView.include({
|
/**
|
||||||
view_loading: function(r) {
|
* This function render the help button with the informations received
|
||||||
var ret = this._super(r);
|
* from the call to the method build_url from the help_online controller
|
||||||
if(! _.isUndefined(this.ViewManager.load_help_buttons)){
|
*/
|
||||||
this.ViewManager.load_help_buttons();
|
render_help_button: function(url_info){
|
||||||
}
|
var $helpButton = $(QWeb.render("HelpOnline.Button", {'view_manager':this, 'url_info': url_info}));
|
||||||
return ret
|
$helpButton.tooltip();
|
||||||
},
|
if (url_info.exists === false) {
|
||||||
});
|
$helpButton.on('click', function (event) {
|
||||||
|
|
||||||
openerp.web.FormView.include({
|
|
||||||
view_loading: function(r) {
|
|
||||||
var ret = this._super(r);
|
|
||||||
if(!_.isUndefined(this.ViewManager.clean_help_buttons)){
|
|
||||||
this.ViewManager.clean_help_buttons();
|
|
||||||
}
|
|
||||||
return ret
|
|
||||||
},
|
|
||||||
|
|
||||||
do_show: function (options){
|
|
||||||
var ret = this._super(options);
|
|
||||||
if(! _.isUndefined(this.ViewManager.load_help_buttons)){
|
|
||||||
this.ViewManager.load_help_buttons();
|
|
||||||
}
|
|
||||||
return ret
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
openerp.web.ViewManager.include({
|
|
||||||
clean_help_buttons:function() {
|
|
||||||
this.$el.find("div.oe_help_online_buttons").first().remove();
|
|
||||||
},
|
|
||||||
|
|
||||||
load_help_buttons:function() {
|
|
||||||
var self = this;
|
|
||||||
this.rpc('/help_online/build_url', {model: this.dataset.model, view_type: this.active_view}).then(function(result) {
|
|
||||||
self.clean_help_buttons();
|
|
||||||
if (result && ! _.isEmpty(result)) {
|
|
||||||
self.$helpButtonsEl = $(QWeb.render("HelpOnline.Buttons", {'view_manager':self, 'url_info': result}));
|
|
||||||
self.$el.find("ul.oe_view_manager_switch.oe_button_group.oe_right").first().before(self.$helpButtonsEl);
|
|
||||||
self.$helpButtonsEl.find('a.oe_list_button_help_online').tooltip();
|
|
||||||
if (result.exists === false) {
|
|
||||||
self.$helpButtonsEl.find('li').addClass('oe_help_online_not_found')
|
|
||||||
self.$helpButtonsEl.find('a.oe_list_button_help_online').on('click', function (event) {
|
|
||||||
var evt = event;
|
var evt = event;
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
var dialog = new instance.web.Dialog(this, {
|
Dialog.confirm(
|
||||||
title: _t('Confirm'),
|
self,
|
||||||
buttons: [
|
_t('Page does not exist. Do you want to create?'),
|
||||||
{text: _t("Cancel"), click: function() {
|
{confirm_callback: function() {
|
||||||
this.parents('.modal').modal('hide');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{text: _t("Ok"), click: function() {
|
|
||||||
this.parents('.modal').modal('hide');
|
|
||||||
var form = $("<form></form>");
|
var form = $("<form></form>");
|
||||||
form.attr(
|
form.attr({
|
||||||
{
|
|
||||||
id : "formform",
|
id : "formform",
|
||||||
// The location given in the link itself
|
// The location given in the link itself
|
||||||
action : evt.target.href,
|
action : evt.target.href,
|
||||||
|
@ -102,14 +50,37 @@ openerp.help_online = function (instance) {
|
||||||
$("#formform").remove();
|
$("#formform").remove();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
],
|
|
||||||
}, $('<div/>').text(_t('Page does not exist. Do you want to create?'))).open();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
return $helpButton;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function render the help buttons container on the view.
|
||||||
|
* It should be called after start() by render_view_control_elements.
|
||||||
|
* @param {control_elements} the list of control elements to display into the ControlPanel
|
||||||
|
*/
|
||||||
|
render_help_buttons: function(control_elements){
|
||||||
|
if (! control_elements.$help_online_buttons){
|
||||||
|
control_elements.$help_online_buttons = $('<div/>');
|
||||||
|
}
|
||||||
|
var self = this;
|
||||||
|
this.rpc('/help_online/build_url', {model: this.dataset.model, view_type: this.active_view.type}).then(function(result) {
|
||||||
|
if (result && ! _.isEmpty(result)) {
|
||||||
|
var $helpButton = self.render_help_button(result);
|
||||||
|
control_elements.$help_online_buttons = $helpButton;
|
||||||
|
// update the control panel with the new help button
|
||||||
|
self.update_control_panel({cp_content: _.extend({}, self.searchview_elements, control_elements)}, {clear: false});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
render_view_control_elements: function() {
|
||||||
|
var control_elements = this._super.apply(this, arguments);
|
||||||
|
this.render_help_buttons(control_elements);
|
||||||
|
return control_elements;
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
(function () {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var website = openerp.website;
|
|
||||||
var _t = openerp._t;
|
|
||||||
website.RTE.include({
|
|
||||||
_config: function () {
|
|
||||||
// add anchor button
|
|
||||||
var config = this._super();
|
|
||||||
config.plugins = config.plugins.concat(',link');
|
|
||||||
_.each(config.toolbar, function (tb) {
|
|
||||||
if (tb.name === 'span'){
|
|
||||||
tb.items.unshift('Anchor');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return config;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
})();
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<templates>
|
<templates>
|
||||||
<t t-name='HelpOnline.Buttons'>
|
<t t-name='HelpOnline.Button'>
|
||||||
<div class='oe_help_online_buttons'>
|
<t t-if='url_info'>
|
||||||
<ul class='oe_view_manager_switch oe_button_group oe_right'>
|
<a t-att-class="'fa fa-question-circle btn btn-icon o_help_online_button ' + (url_info.exists? '': 'o_help_online_not_found')"
|
||||||
<li class='oe_i'>
|
t-att-title='url_info.title' t-att-href='url_info.url'
|
||||||
<a class='oe_list_button_help_online'
|
target='_blank'></a>
|
||||||
t-att-title='url_info.title'
|
</t>
|
||||||
t-att-href='url_info.url' target='_blank'></a>
|
</t>
|
||||||
</li>
|
|
||||||
</ul>
|
<t t-name='HelpOnline.ButtonsContainer'>
|
||||||
|
<div class='hidden-xs btn-group btn-group-sm o_help_online_buttons'>
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
|
<t t-extend="ControlPanel">
|
||||||
|
<t t-jquery="div.o_cp_switch_buttons" t-operation="after">
|
||||||
|
<t t-call='HelpOnline.ButtonsContainer' />
|
||||||
|
</t>
|
||||||
|
<t t-jquery="div.oe-cp-switch-buttons" t-operation="after">
|
||||||
|
<t t-call='HelpOnline.ButtonsContainer' />
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
|
|
||||||
|
<t t-extend="X2ManyControlPanel">
|
||||||
|
<t t-jquery="div.o_cp_pager" t-operation="after">
|
||||||
|
<t t-call='HelpOnline.ButtonsContainer' />
|
||||||
|
</t>
|
||||||
|
<t t-jquery="div.oe-cp-pager" t-operation="after">
|
||||||
|
<div class="pull-right">
|
||||||
|
<t t-call='HelpOnline.ButtonsContainer' />
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
|
</t>
|
||||||
|
|
||||||
</templates>
|
</templates>
|
||||||
|
|
|
@ -1,27 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
from . import test_help_online
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
from . import test_export_help_wizard
|
from . import test_export_help_wizard
|
||||||
|
from . import test_import_help_wizard
|
||||||
fast_suite = [
|
|
||||||
]
|
|
||||||
|
|
||||||
checks = [
|
|
||||||
test_export_help_wizard,
|
|
||||||
]
|
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2016 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from lxml import etree as ET
|
||||||
|
|
||||||
|
from openerp.tools.convert import convert_xml_import
|
||||||
|
|
||||||
|
|
||||||
|
class TestWizardCommon(object):
|
||||||
|
_data_files = ('data/help_test_data.xml',)
|
||||||
|
|
||||||
|
_module_ns = 'help_online'
|
||||||
|
|
||||||
|
def createPage(self, pageName, imgXmlId=False):
|
||||||
|
imgId = False
|
||||||
|
if imgXmlId:
|
||||||
|
imgId = self.ref(imgXmlId)
|
||||||
|
|
||||||
|
rootNode = ET.Element('t')
|
||||||
|
rootNode.attrib['name'] = pageName
|
||||||
|
rootNode.attrib['t-name'] = "website.%s" % pageName
|
||||||
|
tNode = ET.SubElement(rootNode,
|
||||||
|
't',
|
||||||
|
attrib={'t-call': 'website.layout'})
|
||||||
|
structDivNode = ET.SubElement(tNode,
|
||||||
|
'div',
|
||||||
|
attrib={'class': 'oe_structure oe_empty',
|
||||||
|
'id': 'wrap'})
|
||||||
|
sectionNode = ET.SubElement(structDivNode,
|
||||||
|
'section',
|
||||||
|
attrib={'class': 'mt16 mb16'})
|
||||||
|
containerNode = ET.SubElement(sectionNode,
|
||||||
|
'div',
|
||||||
|
attrib={'class': 'container'})
|
||||||
|
rowNode = ET.SubElement(containerNode,
|
||||||
|
'div',
|
||||||
|
attrib={'class': 'row'})
|
||||||
|
bodyDivNode = ET.SubElement(rowNode,
|
||||||
|
'div',
|
||||||
|
attrib={'class': 'col-md-12 '
|
||||||
|
'text-center mt16 mb32'})
|
||||||
|
style = "font-family: 'Helvetica Neue', Helvetica,"\
|
||||||
|
" Arial, sans-serif; color: rgb(51, 51, 51);"\
|
||||||
|
" text-align: left;"
|
||||||
|
h2Node = ET.SubElement(bodyDivNode,
|
||||||
|
'h2',
|
||||||
|
attrib={'style': style})
|
||||||
|
h2Node.text = "Test Sample Title"
|
||||||
|
if imgId:
|
||||||
|
imgDivNode = ET.SubElement(bodyDivNode,
|
||||||
|
'div',
|
||||||
|
attrib={'style': 'text-align: left;'})
|
||||||
|
src = "/website/image?field=datas&"\
|
||||||
|
"model=ir.attachment&id=%s" % str(imgId)
|
||||||
|
ET.SubElement(imgDivNode,
|
||||||
|
'img',
|
||||||
|
attrib={'class': 'img-thumbnail',
|
||||||
|
'src': src})
|
||||||
|
imgDivNode = ET.SubElement(bodyDivNode,
|
||||||
|
'div',
|
||||||
|
attrib={'style': 'text-align: left;'})
|
||||||
|
src = "/website/image/ir.attachment/%s_ccc838d/datas" % str(imgId)
|
||||||
|
ET.SubElement(imgDivNode,
|
||||||
|
'img',
|
||||||
|
attrib={'class': 'img-thumbnail',
|
||||||
|
'src': src})
|
||||||
|
imgDivNode = ET.SubElement(bodyDivNode,
|
||||||
|
'div',
|
||||||
|
attrib={'style': 'text-align: left;'})
|
||||||
|
src = "/web/image/%s" % str(imgId)
|
||||||
|
ET.SubElement(imgDivNode,
|
||||||
|
'img',
|
||||||
|
attrib={'class': 'img-thumbnail',
|
||||||
|
'src': src})
|
||||||
|
arch = ET.tostring(rootNode, encoding='utf-8', xml_declaration=False)
|
||||||
|
vals = {
|
||||||
|
'name': pageName,
|
||||||
|
'type': 'qweb',
|
||||||
|
'arch': arch,
|
||||||
|
'page': True,
|
||||||
|
}
|
||||||
|
view_id = self.env['ir.ui.view'].create(vals)
|
||||||
|
return view_id.id
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestWizardCommon, self).setUp()
|
||||||
|
self.pageName = False
|
||||||
|
self.imgXmlId = False
|
||||||
|
self.pageTemplate = False
|
||||||
|
# Loads the data file before
|
||||||
|
module = sys.modules[self.__class__.__module__]
|
||||||
|
base_path = os.path.dirname(module.__file__)
|
||||||
|
for path in self._data_files:
|
||||||
|
path = path.split('/')
|
||||||
|
path.insert(0, base_path)
|
||||||
|
path = os.path.join(*path)
|
||||||
|
convert_xml_import(self.cr, self._module_ns, path)
|
|
@ -1,105 +1,17 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Cédric Pigeon
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
import logging
|
|
||||||
import base64
|
import base64
|
||||||
from lxml import etree as ET
|
from lxml import etree as ET
|
||||||
|
|
||||||
from anybox.testing.openerp import SharedSetupTransactionCase
|
import openerp.tests.common as common
|
||||||
|
from .common import TestWizardCommon
|
||||||
_logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class test_export_help_wizard(object):
|
class TestExportHelpWizard(TestWizardCommon):
|
||||||
_data_files = ('data/help_test_data.xml',)
|
pageName = None
|
||||||
|
imgXmlId = None
|
||||||
_module_ns = 'help_online'
|
|
||||||
|
|
||||||
def createPage(self, pageName, imgXmlId=False):
|
|
||||||
imgId = False
|
|
||||||
if imgXmlId:
|
|
||||||
imgId = self.ref('%s.%s' % (self._module_ns, imgXmlId))
|
|
||||||
|
|
||||||
rootNode = ET.Element('t')
|
|
||||||
rootNode.attrib['name'] = pageName
|
|
||||||
rootNode.attrib['t-name'] = "website.%s" % pageName
|
|
||||||
tNode = ET.SubElement(rootNode,
|
|
||||||
't',
|
|
||||||
attrib={'t-call': 'website.layout'})
|
|
||||||
structDivNode = ET.SubElement(tNode,
|
|
||||||
'div',
|
|
||||||
attrib={'class': 'oe_structure oe_empty',
|
|
||||||
'id': 'wrap'})
|
|
||||||
sectionNode = ET.SubElement(structDivNode,
|
|
||||||
'section',
|
|
||||||
attrib={'class': 'mt16 mb16'})
|
|
||||||
containerNode = ET.SubElement(sectionNode,
|
|
||||||
'div',
|
|
||||||
attrib={'class': 'container'})
|
|
||||||
rowNode = ET.SubElement(containerNode,
|
|
||||||
'div',
|
|
||||||
attrib={'class': 'row'})
|
|
||||||
bodyDivNode = ET.SubElement(rowNode,
|
|
||||||
'div',
|
|
||||||
attrib={'class': 'col-md-12 '
|
|
||||||
'text-center mt16 mb32'})
|
|
||||||
style = "font-family: 'Helvetica Neue', Helvetica,"\
|
|
||||||
" Arial, sans-serif; color: rgb(51, 51, 51);"\
|
|
||||||
" text-align: left;"
|
|
||||||
h2Node = ET.SubElement(bodyDivNode,
|
|
||||||
'h2',
|
|
||||||
attrib={'style': style})
|
|
||||||
h2Node.text = "Test Sample Title"
|
|
||||||
if imgId:
|
|
||||||
imgDivNode = ET.SubElement(bodyDivNode,
|
|
||||||
'div',
|
|
||||||
attrib={'style': 'text-align: left;'})
|
|
||||||
src = "/website/image?field=datas&"\
|
|
||||||
"model=ir.attachment&id=%s" % str(imgId)
|
|
||||||
ET.SubElement(imgDivNode,
|
|
||||||
'img',
|
|
||||||
attrib={'class': 'img-thumbnail',
|
|
||||||
'src': src})
|
|
||||||
imgDivNode = ET.SubElement(bodyDivNode,
|
|
||||||
'div',
|
|
||||||
attrib={'style': 'text-align: left;'})
|
|
||||||
src = "/website/image/ir.attachment/%s_ccc838d/datas" % str(imgId)
|
|
||||||
ET.SubElement(imgDivNode,
|
|
||||||
'img',
|
|
||||||
attrib={'class': 'img-thumbnail',
|
|
||||||
'src': src})
|
|
||||||
arch = ET.tostring(rootNode, encoding='utf-8', xml_declaration=False)
|
|
||||||
vals = {
|
|
||||||
'name': pageName,
|
|
||||||
'type': 'qweb',
|
|
||||||
'arch': arch,
|
|
||||||
'page': True,
|
|
||||||
}
|
|
||||||
view_id = self.env['ir.ui.view'].create(vals)
|
|
||||||
return view_id.id
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(test_export_help_wizard, self).setUp()
|
|
||||||
self.pageName = False
|
|
||||||
self.imgXmlId = False
|
|
||||||
self.pageTemplate = False
|
|
||||||
|
|
||||||
def test_export_help(self):
|
def test_export_help(self):
|
||||||
"""
|
"""
|
||||||
|
@ -123,7 +35,8 @@ class test_export_help_wizard(object):
|
||||||
if self.imgXmlId:
|
if self.imgXmlId:
|
||||||
xPath = ".//record[@id='%s']" % self.imgXmlId
|
xPath = ".//record[@id='%s']" % self.imgXmlId
|
||||||
imgNodeList = rootXml.findall(xPath)
|
imgNodeList = rootXml.findall(xPath)
|
||||||
self.assertEqual(len(imgNodeList), 2)
|
self.assertEqual(len(imgNodeList), 1,
|
||||||
|
'The same image should be exported only once')
|
||||||
|
|
||||||
for imgElem in templateNodeList[0].iter('img'):
|
for imgElem in templateNodeList[0].iter('img'):
|
||||||
imgSrc = imgElem.get('src')
|
imgSrc = imgElem.get('src')
|
||||||
|
@ -131,7 +44,7 @@ class test_export_help_wizard(object):
|
||||||
self.assertIn("/ir.attachment/%s|"
|
self.assertIn("/ir.attachment/%s|"
|
||||||
% self.imgXmlId, imgSrc)
|
% self.imgXmlId, imgSrc)
|
||||||
else:
|
else:
|
||||||
self.assertIn("id=%s" % self.imgXmlId, imgSrc)
|
self.assertIn("/web/image/%s" % self.imgXmlId, imgSrc)
|
||||||
|
|
||||||
if self.pageTemplate:
|
if self.pageTemplate:
|
||||||
xPath = ".//template[@id='website.%s_snippet']" % self.pageName
|
xPath = ".//template[@id='website.%s_snippet']" % self.pageName
|
||||||
|
@ -140,20 +53,18 @@ class test_export_help_wizard(object):
|
||||||
self.assertNotIn("website.", templateNodeList[0].attrib['name'])
|
self.assertNotIn("website.", templateNodeList[0].attrib['name'])
|
||||||
|
|
||||||
|
|
||||||
class test_export_help_with_image(test_export_help_wizard,
|
class TestExportHelpWithImage(TestExportHelpWizard, common.TransactionCase):
|
||||||
SharedSetupTransactionCase):
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(test_export_help_with_image, self).setUp()
|
super(TestExportHelpWithImage, self).setUp()
|
||||||
parameter_model = self.env['ir.config_parameter']
|
parameter_model = self.env['ir.config_parameter']
|
||||||
page_prefix = parameter_model.get_param('help_online_page_prefix')
|
page_prefix = parameter_model.get_param('help_online_page_prefix')
|
||||||
self.pageName = '%stest-page' % page_prefix
|
self.pageName = '%stest-page' % page_prefix
|
||||||
self.imgXmlId = 'test_img_1'
|
self.imgXmlId = '%s.test_img_1' % self._module_ns
|
||||||
|
|
||||||
|
|
||||||
class test_export_help_template(test_export_help_wizard,
|
class TestExportHelpTemplate(TestExportHelpWizard, common.TransactionCase):
|
||||||
SharedSetupTransactionCase):
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(test_export_help_template, self).setUp()
|
super(TestExportHelpTemplate, self).setUp()
|
||||||
parameter_model = self.env['ir.config_parameter']
|
parameter_model = self.env['ir.config_parameter']
|
||||||
param = 'help_online_template_prefix'
|
param = 'help_online_template_prefix'
|
||||||
template_prefix = parameter_model.get_param(param)
|
template_prefix = parameter_model.get_param(param)
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2016 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
import mock
|
||||||
|
|
||||||
|
import openerp.tests.common as common
|
||||||
|
from .common import TestWizardCommon
|
||||||
|
|
||||||
|
|
||||||
|
class TestHelpOnline(TestWizardCommon, common.TransactionCase):
|
||||||
|
|
||||||
|
def test_get_page_url(self):
|
||||||
|
model = 'res.partner'
|
||||||
|
help_online = self.env['help.online']
|
||||||
|
user = self.env.user
|
||||||
|
group_writer = self.env.ref('help_online.help_online_group_writer')
|
||||||
|
group_reader = self.env.ref('help_online.help_online_group_reader')
|
||||||
|
self.assertTrue(user.has_group('help_online.help_online_group_writer'))
|
||||||
|
with mock.patch('openerp.addons.website.models.website'
|
||||||
|
'.website.search_pages') as search_pages:
|
||||||
|
# The expected page dosn't exist
|
||||||
|
search_pages.return_value = []
|
||||||
|
info = help_online.get_page_url(model, 'form')
|
||||||
|
self.assertDictEqual(
|
||||||
|
{'exists': False,
|
||||||
|
'title': 'Create Help page for Partner',
|
||||||
|
'url': 'website/add/help-res-partner'}, info,
|
||||||
|
"If the user is member of help_online_group_writer "
|
||||||
|
"and the page doesn't exist, the module should return an url "
|
||||||
|
"to create the page")
|
||||||
|
# remove user of group writer.
|
||||||
|
group_writer.write({'users': [(3, self.env.user.id)]})
|
||||||
|
info = help_online.get_page_url(model, 'form')
|
||||||
|
self.assertDictEqual(
|
||||||
|
{}, info,
|
||||||
|
"If the user is not member of help_online_group_writer "
|
||||||
|
"and the page doesn't exist, the module should return an "
|
||||||
|
"empty dict")
|
||||||
|
# The expected page exists
|
||||||
|
search_pages.return_value = [{'loc': 'pages/help-res-partner'}]
|
||||||
|
self.assertTrue(
|
||||||
|
user.has_group('help_online.help_online_group_reader'))
|
||||||
|
info = help_online.get_page_url(model, 'form')
|
||||||
|
self.assertDictEqual(
|
||||||
|
{'exists': True,
|
||||||
|
'title': 'Help on Partner',
|
||||||
|
'url': 'pages/help-res-partner#form'}, info,
|
||||||
|
"If the user is member of help_online_group_reader "
|
||||||
|
"and the page exists, the module should return an url "
|
||||||
|
"to the page")
|
||||||
|
# remove user from group reader
|
||||||
|
group_reader.write({'users': [(3, self.env.user.id)]})
|
||||||
|
info = help_online.get_page_url(model, 'form')
|
||||||
|
self.assertDictEqual(
|
||||||
|
{}, info,
|
||||||
|
"If the user is not member of help_online_group_reader "
|
||||||
|
"and the page exists, the module should return an empty dict")
|
|
@ -0,0 +1,59 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2016 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
import base64
|
||||||
|
|
||||||
|
import openerp.tests.common as common
|
||||||
|
from .common import TestWizardCommon
|
||||||
|
|
||||||
|
|
||||||
|
class TestImportHelpWizard(TestWizardCommon, common.TransactionCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestImportHelpWizard, self).setUp()
|
||||||
|
self.page_name = "export_import_help"
|
||||||
|
self.img_xml_id = '%s.test_img_1' % self._module_ns
|
||||||
|
self.img_name = self.env.ref(self.img_xml_id).name
|
||||||
|
self.ir_attchement = self.env['ir.attachment']
|
||||||
|
self.ir_ui_view = self.env['ir.ui.view']
|
||||||
|
self.export_help_wizard = self.env['export.help.wizard']
|
||||||
|
self.import_help_wizard = self.env['import.help.wizard']
|
||||||
|
|
||||||
|
def _do_check_resources(self, expected=1):
|
||||||
|
pages = self.ir_ui_view.search([('name', '=', self.page_name)])
|
||||||
|
self.assertEqual(expected, len(pages))
|
||||||
|
attachments = self.ir_attchement.search(
|
||||||
|
[('name', '=', self.img_name)])
|
||||||
|
self.assertEqual(expected, len(attachments))
|
||||||
|
|
||||||
|
def test_import_help(self):
|
||||||
|
self.createPage(pageName=self.page_name, imgXmlId=self.img_xml_id)
|
||||||
|
self._do_check_resources()
|
||||||
|
wizard = self.export_help_wizard.create({})
|
||||||
|
wizard.export_help()
|
||||||
|
xmlData = base64.decodestring(wizard.data)
|
||||||
|
self.env.ref(self.img_xml_id).unlink()
|
||||||
|
self.ir_ui_view.search([('name', '=', self.page_name)]).unlink()
|
||||||
|
self._do_check_resources(0)
|
||||||
|
wizard = self.import_help_wizard.create({
|
||||||
|
'source_file': base64.encodestring(xmlData)
|
||||||
|
})
|
||||||
|
wizard.import_help()
|
||||||
|
self._do_check_resources()
|
||||||
|
|
||||||
|
def test_import_export_help(self):
|
||||||
|
"""Check that exported data are not ducplicated by export / import
|
||||||
|
"""
|
||||||
|
self.createPage(pageName=self.page_name, imgXmlId=self.img_xml_id)
|
||||||
|
self._do_check_resources()
|
||||||
|
# export
|
||||||
|
wizard = self.export_help_wizard.create({})
|
||||||
|
wizard.export_help()
|
||||||
|
xmlData = base64.decodestring(wizard.data)
|
||||||
|
self._do_check_resources()
|
||||||
|
wizard = self.import_help_wizard.create({
|
||||||
|
'source_file': base64.encodestring(xmlData)
|
||||||
|
})
|
||||||
|
wizard.import_help()
|
||||||
|
self._do_check_resources()
|
|
@ -1,52 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
<record model="ir.ui.view" id="export_help_wizard_view">
|
|
||||||
<field name="name">export.help.wizard.view</field>
|
|
||||||
<field name="model">export.help.wizard</field>
|
|
||||||
<field name="type">form</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Export Help Data">
|
|
||||||
<group colspan="2">
|
|
||||||
<field name="export_filename"
|
|
||||||
invisible="1"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<p>
|
|
||||||
This wizard allow you to export all QWeb views
|
|
||||||
related to help online. The result will be an Odoo
|
|
||||||
data xml file.
|
|
||||||
</p>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="data"
|
|
||||||
nolabel="1"
|
|
||||||
readonly="1"
|
|
||||||
filename="export_filename" />
|
|
||||||
</group>
|
|
||||||
<footer>
|
|
||||||
<span name="go-wizard" attrs="{'invisible': [('export_filename', '!=', False)]}">
|
|
||||||
<button name="export_help"
|
|
||||||
string="Export"
|
|
||||||
type="object"
|
|
||||||
icon="gtk-execute"
|
|
||||||
class="oe_highlight" />
|
|
||||||
or
|
|
||||||
</span>
|
|
||||||
<button string="Close" class="oe_link" special="cancel" />
|
|
||||||
</footer>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window" id="action_export_help_wizard">
|
|
||||||
<field name="name">Export Help</field>
|
|
||||||
<field name="res_model">export.help.wizard</field>
|
|
||||||
<field name="view_id" ref="export_help_wizard_view"/>
|
|
||||||
<field name="view_type">form</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
</record>
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
|
@ -1,8 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- vim:fdn=3:
|
<odoo>
|
||||||
-->
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
<template id="assets_backend" name="help.online.assets" inherit_id="web.assets_backend">
|
<template id="assets_backend" name="help.online.assets" inherit_id="web.assets_backend">
|
||||||
<xpath expr="." position="inside">
|
<xpath expr="." position="inside">
|
||||||
<link rel="stylesheet" href="/help_online/static/src/css/help_online.css" type="text/css"/>
|
<link rel="stylesheet" href="/help_online/static/src/css/help_online.css" type="text/css"/>
|
||||||
|
@ -24,5 +21,4 @@
|
||||||
<menuitem id="menu_help_pages" name="Website Pages" parent="menu_help" sequence="10" action="action_website_pages" groups="help_online_group_writer"/>
|
<menuitem id="menu_help_pages" name="Website Pages" parent="menu_help" sequence="10" action="action_website_pages" groups="help_online_group_writer"/>
|
||||||
<menuitem id="menu_help_import" name="Import Help Online" parent="menu_help" sequence="20" action="action_import_help_wizard" groups="help_online_group_writer"/>
|
<menuitem id="menu_help_import" name="Import Help Online" parent="menu_help" sequence="20" action="action_import_help_wizard" groups="help_online_group_writer"/>
|
||||||
<menuitem id="menu_help_export" name="Export Help Online" parent="menu_help" sequence="30" action="action_export_help_wizard" groups="help_online_group_writer"/>
|
<menuitem id="menu_help_export" name="Export Help Online" parent="menu_help" sequence="30" action="action_export_help_wizard" groups="help_online_group_writer"/>
|
||||||
</data>
|
</odoo>
|
||||||
</openerp>
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
<record model="ir.ui.view" id="import_help_wizard_view">
|
|
||||||
<field name="name">import.help.wizard.view</field>
|
|
||||||
<field name="model">import.help.wizard</field>
|
|
||||||
<field name="type">form</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Import Help Data">
|
|
||||||
<group>
|
|
||||||
<p>
|
|
||||||
This wizard allow you to import QWeb views
|
|
||||||
related to help online. The required file format is an Odoo
|
|
||||||
data xml file.
|
|
||||||
</p>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="source_file"/>
|
|
||||||
</group>
|
|
||||||
<footer>
|
|
||||||
<span name="go-wizard" attrs="{'invisible': [('source_file', '=', False)]}">
|
|
||||||
<button name="import_help"
|
|
||||||
string="Import"
|
|
||||||
type="object"
|
|
||||||
icon="gtk-execute"
|
|
||||||
class="oe_highlight" />
|
|
||||||
or
|
|
||||||
</span>
|
|
||||||
<button string="Close" class="oe_link" special="cancel" />
|
|
||||||
</footer>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="ir.actions.act_window" id="action_import_help_wizard">
|
|
||||||
<field name="name">Import Help</field>
|
|
||||||
<field name="res_model">import.help.wizard</field>
|
|
||||||
<field name="view_id" ref="import_help_wizard_view"/>
|
|
||||||
<field name="view_type">form</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
|
@ -1,13 +1,11 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data noupdate="0">
|
|
||||||
|
|
||||||
<record id="view_view_search" model="ir.ui.view">
|
<record id="view_view_search" model="ir.ui.view">
|
||||||
<field name="name">ir.ui.view search (help_online)</field>
|
<field name="name">ir.ui.view search (help_online)</field>
|
||||||
<field name="inherit_id" ref="base.view_view_search"/>
|
<field name="inherit_id" ref="base.view_view_search"/>
|
||||||
<field name="model">ir.ui.view</field>
|
<field name="model">ir.ui.view</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//filter[@string='QWeb']" position="after">
|
<xpath expr="//filter[last()]" position="after">
|
||||||
<filter name="website" string="Website Page" domain="[('type', '=', 'qweb'),('page', '=', True)]"/>
|
<filter name="website" string="Website Page" domain="[('type', '=', 'qweb'),('page', '=', True)]"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
|
@ -23,6 +21,4 @@
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
</odoo>
|
||||||
</data>
|
|
||||||
</openerp>
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<openerp>
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<template id="assets_editor" inherit_id="website.assets_editor" name="Help online customization">
|
|
||||||
<xpath expr="." position="inside">
|
|
||||||
<script type="text/javascript" src="/help_online/static/src/js/website_help_online.editor.js" groups="base.group_website_publisher"></script>
|
|
||||||
</xpath>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</openerp>
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
from . import export_help_wizard
|
||||||
|
from . import import_help_wizard
|
|
@ -1,31 +1,18 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
#
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
# Authors: Cédric Pigeon
|
|
||||||
# Copyright (c) 2014 Acsone SA/NV (http://www.acsone.eu)
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU Affero General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Affero General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
import logging
|
import logging
|
||||||
import base64
|
import base64
|
||||||
import time
|
import time
|
||||||
import copy
|
import copy
|
||||||
|
import urlparse
|
||||||
|
from werkzeug.routing import Map, Rule
|
||||||
from lxml import etree as ET
|
from lxml import etree as ET
|
||||||
from openerp import models, fields, api, exceptions
|
from openerp import models, fields, api, exceptions
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
|
from openerp.addons.web.controllers.main import Binary
|
||||||
|
from openerp.addons.website.controllers.main import WebsiteBinary
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -43,94 +30,114 @@ class ExportHelpWizard(models.TransientModel):
|
||||||
data = fields.Binary('XML', readonly=True)
|
data = fields.Binary('XML', readonly=True)
|
||||||
export_filename = fields.Char('Export XML Filename', size=128)
|
export_filename = fields.Char('Export XML Filename', size=128)
|
||||||
|
|
||||||
def _manage_images_on_page(self, page_node, data_node, images_reference):
|
binary = Binary()
|
||||||
|
websiteBinary = WebsiteBinary()
|
||||||
|
|
||||||
|
img_url_map = Map([
|
||||||
|
Rule('/web/image'),
|
||||||
|
Rule('/web/image/<string:xmlid>'),
|
||||||
|
Rule('/web/image/<string:xmlid>/<string:filename>'),
|
||||||
|
Rule('/web/image/<string:xmlid>/<int:width>x<int:height>'),
|
||||||
|
Rule('/web/image/<string:xmlid>/<int:width>x<int:height>/'
|
||||||
|
'<string:filename>'),
|
||||||
|
Rule('/web/image/<string:model>/<int:id>/<string:field>'),
|
||||||
|
Rule('/web/image/<string:model>/<int:id>/<string:field>/'
|
||||||
|
'<string:filename>'),
|
||||||
|
Rule('/web/image/<string:model>/<int:id>/<string:field>/'
|
||||||
|
'<int:width>x<int:height>'),
|
||||||
|
Rule('/web/image/<string:model>/<int:id>/<string:field>/'
|
||||||
|
'<int:width>x<int:height>/<string:filename>'),
|
||||||
|
Rule('/web/image/<int:id>'),
|
||||||
|
Rule('/web/image/<int:id>/<string:filename>'),
|
||||||
|
Rule('/web/image/<int:id>/<int:width>x<int:height>'),
|
||||||
|
Rule('/web/image/<int:id>/<int:width>x<int:height>/<string:filename>'),
|
||||||
|
Rule('/web/image/<int:id>-<string:unique>'),
|
||||||
|
Rule('/web/image/<int:id>-<string:unique>/<string:filename>'),
|
||||||
|
Rule('/web/image/<int:id>-<string:unique>/<int:width>x<int:height>'),
|
||||||
|
Rule('/web/image/<int:id>-<string:unique>/<int:width>x<int:height>'
|
||||||
|
'/<string:filename>'),
|
||||||
|
Rule('/website/image'),
|
||||||
|
Rule('/website/image/<xmlid>'),
|
||||||
|
Rule('/website/image/<xmlid>/<int:width>x<int:height>'),
|
||||||
|
Rule('/website/image/<xmlid>/<field>'),
|
||||||
|
Rule('/website/image/<xmlid>/<field>/<int:width>x<int:height>'),
|
||||||
|
Rule('/website/image/<model>/<id>/<field>'),
|
||||||
|
Rule('/website/image/<model>/<id>/<field>/<int:width>x<int:height>')
|
||||||
|
])
|
||||||
|
|
||||||
|
def _manage_images_on_page(self, page_node, data_node, exported_resources):
|
||||||
"""
|
"""
|
||||||
- Extract images from page and generate a xml node
|
- Extract images from page and generate an xml node
|
||||||
- Replace db id in url with xml id
|
- Replace db id in url with xml id
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def get_attach_id(images_reference,
|
|
||||||
img_model, img_src, generated_xml_id=False):
|
|
||||||
attach_id = False
|
|
||||||
if 'id=' in img_src:
|
|
||||||
id_pos = img_src.index('id=') + 3
|
|
||||||
attach_id = img_src[id_pos:]
|
|
||||||
else:
|
|
||||||
fragments = img_src.split('ir.attachment/')
|
|
||||||
attach_id, _ = fragments[1].split('_', 1)
|
|
||||||
|
|
||||||
if attach_id in images_reference:
|
|
||||||
xml_id = images_reference[attach_id]
|
|
||||||
else:
|
|
||||||
ir_data = self.env['ir.model.data'].search(
|
|
||||||
[('model', '=', img_model),
|
|
||||||
('res_id', '=', attach_id)])
|
|
||||||
xml_id = generated_xml_id
|
|
||||||
if ir_data:
|
|
||||||
xml_id = ir_data[0].name
|
|
||||||
images_reference[attach_id] = xml_id
|
|
||||||
|
|
||||||
return attach_id, xml_id
|
|
||||||
|
|
||||||
def substitute_id_by_xml_id(img_src, attach_id, xml_id):
|
|
||||||
new_src = False
|
|
||||||
if 'id=' in img_src:
|
|
||||||
new_src = img_src.replace(attach_id, xml_id)
|
|
||||||
else:
|
|
||||||
fragments = img_src.split('ir.attachment/')
|
|
||||||
_, trail = fragments[1].split('_', 1)
|
|
||||||
new_src = "/website/image/ir.attachment/%s|%s" % \
|
|
||||||
(xml_id, trail)
|
|
||||||
return new_src
|
|
||||||
|
|
||||||
i_img = 0
|
|
||||||
img_model = 'ir.attachment'
|
img_model = 'ir.attachment'
|
||||||
|
urls = self.img_url_map.bind("dummy.org", "/")
|
||||||
for img_elem in page_node.iter('img'):
|
for img_elem in page_node.iter('img'):
|
||||||
img_src = img_elem.get('src')
|
img_src = img_elem.get('src')
|
||||||
if img_model in img_src:
|
parse_result = urlparse.urlparse(img_src)
|
||||||
i_img += 1
|
path = parse_result.path
|
||||||
generated_xml_id = "%s_img_%s" % \
|
query_args = parse_result.query
|
||||||
(page_node.attrib['name'], str(i_img).rjust(2, '0'))
|
if urls.test(parse_result.path, "GET"):
|
||||||
attach_id, xml_id = get_attach_id(images_reference,
|
endpoint, kwargs = urls.match(path, "GET",
|
||||||
img_model,
|
query_args=query_args)
|
||||||
img_src,
|
kwargs.update(dict(urlparse.parse_qsl(query_args)))
|
||||||
generated_xml_id)
|
image = None
|
||||||
|
# get the binary object
|
||||||
new_src = substitute_id_by_xml_id(img_src, attach_id, xml_id)
|
xml_id = kwargs.get('xmlid')
|
||||||
|
if xml_id:
|
||||||
if not attach_id:
|
image = self.env.ref(xml_id, False)
|
||||||
continue
|
else:
|
||||||
|
_id = kwargs.get('id')
|
||||||
image = self.env[img_model].browse(int(attach_id))
|
model = kwargs.get('model', 'ir.attachment')
|
||||||
if not image:
|
if _id and model:
|
||||||
continue
|
_id, _, unique = str(_id).partition('_')
|
||||||
|
image = self.env[model].browse(int(_id))
|
||||||
|
if (not image or
|
||||||
|
not image.exists() or
|
||||||
|
image._name != img_model):
|
||||||
|
raise exceptions.UserError(
|
||||||
|
_('Only images from ir.attachment are supported when '
|
||||||
|
'exporting help pages'))
|
||||||
|
exported_data = image.export_data(
|
||||||
|
['id',
|
||||||
|
'datas',
|
||||||
|
'datas_fname',
|
||||||
|
'name',
|
||||||
|
'res_model',
|
||||||
|
'mimetype'],
|
||||||
|
raw_data=False)['datas'][0]
|
||||||
|
xml_id = exported_data[0]
|
||||||
|
new_src = '/web/image/%s' % xml_id
|
||||||
img_elem.attrib['src'] = new_src
|
img_elem.attrib['src'] = new_src
|
||||||
img_node = ET.SubElement(data_node,
|
if xml_id in exported_resources:
|
||||||
|
continue
|
||||||
|
img_node = ET.SubElement(
|
||||||
|
data_node,
|
||||||
'record',
|
'record',
|
||||||
attrib={'id': xml_id,
|
attrib={'id': xml_id,
|
||||||
'model': img_model})
|
'model': image._name})
|
||||||
field_node = ET.SubElement(img_node,
|
field_node = ET.SubElement(img_node,
|
||||||
'field',
|
'field',
|
||||||
attrib={'name': 'datas'})
|
attrib={'name': 'datas'})
|
||||||
field_node.text = str(image.datas)
|
field_node.text = str(exported_data[1])
|
||||||
field_node = ET.SubElement(img_node,
|
field_node = ET.SubElement(img_node,
|
||||||
'field',
|
'field',
|
||||||
attrib={'name': 'datas_fname'})
|
attrib={'name': 'datas_fname'})
|
||||||
field_node.text = image.datas_fname
|
field_node.text = exported_data[2]
|
||||||
field_node = ET.SubElement(img_node,
|
field_node = ET.SubElement(img_node,
|
||||||
'field',
|
'field',
|
||||||
attrib={'name': 'name'})
|
attrib={'name': 'name'})
|
||||||
field_node.text = image.name
|
field_node.text = exported_data[3]
|
||||||
field_node = ET.SubElement(img_node,
|
field_node = ET.SubElement(img_node,
|
||||||
'field',
|
'field',
|
||||||
attrib={'name': 'res_model'})
|
attrib={'name': 'res_model'})
|
||||||
field_node.text = image.res_model
|
field_node.text = exported_data[4]
|
||||||
field_node = ET.SubElement(img_node,
|
field_node = ET.SubElement(img_node,
|
||||||
'field',
|
'field',
|
||||||
attrib={'name': 'mimetype'})
|
attrib={'name': 'mimetype'})
|
||||||
field_node.text = image.mimetype
|
field_node.text = exported_data[5]
|
||||||
data_node.append(img_node)
|
data_node.append(img_node)
|
||||||
|
exported_resources.add(xml_id)
|
||||||
|
|
||||||
def _clean_href_urls(self, page_node, page_prefix, template_prefix):
|
def _clean_href_urls(self, page_node, page_prefix, template_prefix):
|
||||||
"""
|
"""
|
||||||
|
@ -216,39 +223,67 @@ class ExportHelpWizard(models.TransientModel):
|
||||||
('name', 'like', '%s%%' % page_prefix),
|
('name', 'like', '%s%%' % page_prefix),
|
||||||
('name', 'like', '%s%%' % template_prefix)]
|
('name', 'like', '%s%%' % template_prefix)]
|
||||||
|
|
||||||
view_data_list = self.env['ir.ui.view'].search_read(domain,
|
ir_ui_views = self.env['ir.ui.view'].search(domain, order='name')
|
||||||
['arch', 'name'],
|
|
||||||
order='name')
|
|
||||||
xml_to_export = ET.Element('openerp')
|
xml_to_export = ET.Element('openerp')
|
||||||
data_node = ET.SubElement(xml_to_export, 'data')
|
data_node = ET.SubElement(xml_to_export, 'data')
|
||||||
images_reference = {}
|
exported_resources = set()
|
||||||
for view_data in view_data_list:
|
for ir_ui_view in ir_ui_views:
|
||||||
parser = ET.XMLParser(remove_blank_text=True)
|
parser = ET.XMLParser(remove_blank_text=True)
|
||||||
root = ET.XML(view_data['arch'], parser=parser)
|
root = ET.XML(ir_ui_view.arch, parser=parser)
|
||||||
|
|
||||||
root.tag = 'template'
|
root.tag = 'template'
|
||||||
template_id = root.attrib.pop('t-name')
|
xml_id = self._get_ir_ui_view_xml_id(
|
||||||
root.attrib['name'] = view_data['name'].replace('website.', '')
|
ir_ui_view, root.attrib.pop('t-name'))
|
||||||
root.attrib['id'] = template_id
|
root.attrib['name'] = ir_ui_view.name.replace('website.', '')
|
||||||
|
root.attrib['id'] = xml_id
|
||||||
root.attrib['page'] = 'True'
|
root.attrib['page'] = 'True'
|
||||||
|
|
||||||
self._manage_images_on_page(root, data_node, images_reference)
|
self._manage_images_on_page(root, data_node, exported_resources)
|
||||||
self._clean_href_urls(root, page_prefix, template_prefix)
|
self._clean_href_urls(root, page_prefix, template_prefix)
|
||||||
data_node.append(root)
|
data_node.append(root)
|
||||||
|
|
||||||
if root.attrib['name'].startswith(template_prefix):
|
if root.attrib['name'].startswith(template_prefix):
|
||||||
snippet = self._generate_snippet_from_template(root,
|
snippet = self._generate_snippet_from_template(root,
|
||||||
template_id,
|
xml_id,
|
||||||
template_prefix)
|
template_prefix)
|
||||||
data_node.append(snippet)
|
data_node.append(snippet)
|
||||||
|
|
||||||
if len(view_data_list) > 0:
|
if len(ir_ui_views) > 0:
|
||||||
return ET.tostring(xml_to_export, encoding='utf-8',
|
return ET.tostring(xml_to_export, encoding='utf-8',
|
||||||
xml_declaration=True,
|
xml_declaration=True,
|
||||||
pretty_print=True)
|
pretty_print=True)
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _get_ir_ui_view_xml_id(self, ir_ui_view, template_name):
|
||||||
|
"""This method check if an xml_id exists for the given ir.ui.view
|
||||||
|
If no xml_id exists, a new one is created with template name as
|
||||||
|
value to ensure that the import of the generated file will update
|
||||||
|
the existing view in place of creating new copies.
|
||||||
|
"""
|
||||||
|
ir_model_data = self.sudo().env['ir.model.data']
|
||||||
|
data = ir_model_data.search([('model', '=', ir_ui_view._name),
|
||||||
|
('res_id', '=', ir_ui_view.id)])
|
||||||
|
if data:
|
||||||
|
if data[0].module:
|
||||||
|
return '%s.%s' % (data[0].module, data[0].name)
|
||||||
|
else:
|
||||||
|
return data[0].name
|
||||||
|
else:
|
||||||
|
module, name = template_name.split('.')
|
||||||
|
postfix = ir_model_data.search_count(
|
||||||
|
[('module', '=', module),
|
||||||
|
('name', 'like', name)])
|
||||||
|
if postfix:
|
||||||
|
name = '%s_%s' % (name, postfix)
|
||||||
|
ir_model_data.create({
|
||||||
|
'model': ir_ui_view._name,
|
||||||
|
'res_id': ir_ui_view.id,
|
||||||
|
'module': module,
|
||||||
|
'name': name,
|
||||||
|
})
|
||||||
|
return module + '.' + name
|
||||||
|
|
||||||
@api.multi
|
@api.multi
|
||||||
def export_help(self):
|
def export_help(self):
|
||||||
"""
|
"""
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record model="ir.ui.view" id="export_help_wizard_view">
|
||||||
|
<field name="name">export.help.wizard.view</field>
|
||||||
|
<field name="model">export.help.wizard</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Export Help Data">
|
||||||
|
<group colspan="2">
|
||||||
|
<field name="export_filename"
|
||||||
|
invisible="1"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<p>
|
||||||
|
This wizard allow you to export all QWeb views
|
||||||
|
related to help online. The result will be an Odoo
|
||||||
|
data xml file.
|
||||||
|
</p>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="data"
|
||||||
|
nolabel="1"
|
||||||
|
readonly="1"
|
||||||
|
filename="export_filename" />
|
||||||
|
</group>
|
||||||
|
<footer>
|
||||||
|
<span name="go-wizard" attrs="{'invisible': [('export_filename', '!=', False)]}">
|
||||||
|
<button name="export_help"
|
||||||
|
string="Export"
|
||||||
|
type="object"
|
||||||
|
icon="gtk-execute"
|
||||||
|
class="oe_highlight" />
|
||||||
|
or
|
||||||
|
</span>
|
||||||
|
<button string="Close" class="oe_link" special="cancel" />
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.actions.act_window" id="action_export_help_wizard">
|
||||||
|
<field name="name">Export Help</field>
|
||||||
|
<field name="res_model">export.help.wizard</field>
|
||||||
|
<field name="view_id" ref="export_help_wizard_view"/>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">form</field>
|
||||||
|
<field name="target">new</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
|
@ -0,0 +1,53 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
import base64
|
||||||
|
from cStringIO import StringIO
|
||||||
|
from lxml import etree
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
|
from openerp import api, fields, models
|
||||||
|
from openerp.tools import convert, misc
|
||||||
|
from openerp.tools.config import config
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class XmlImport(convert.xml_import):
|
||||||
|
"""Override base xml_import to be able to import record with an exported
|
||||||
|
xml_id ('__export__.XXX-XXX')
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _test_xml_id(self, xml_id):
|
||||||
|
if '.' in xml_id:
|
||||||
|
module, _id = xml_id.split('.')
|
||||||
|
if module == '__export__':
|
||||||
|
return True
|
||||||
|
super(XmlImport, self)._test_xml_id(xml_id)
|
||||||
|
|
||||||
|
|
||||||
|
class ImportHelpWizard(models.TransientModel):
|
||||||
|
_name = "import.help.wizard"
|
||||||
|
|
||||||
|
source_file = fields.Binary('Source File')
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def import_help(self):
|
||||||
|
for this in self:
|
||||||
|
xmlfile = StringIO(base64.decodestring(this.source_file))
|
||||||
|
doc = etree.parse(xmlfile)
|
||||||
|
relaxng = etree.RelaxNG(
|
||||||
|
etree.parse(
|
||||||
|
os.path.join(config['root_path'], 'import_xml.rng')))
|
||||||
|
try:
|
||||||
|
relaxng.assert_(doc)
|
||||||
|
except Exception:
|
||||||
|
_logger.info('The XML file does not fit the required schema !',
|
||||||
|
exc_info=True)
|
||||||
|
_logger.info(misc.ustr(relaxng.error_log.last_error))
|
||||||
|
raise
|
||||||
|
obj = XmlImport(self.env.cr, self._module, idref={}, mode='init',
|
||||||
|
report=None, noupdate=False, xml_filename=None)
|
||||||
|
obj.parse(doc.getroot(), mode='init')
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<record model="ir.ui.view" id="import_help_wizard_view">
|
||||||
|
<field name="name">import.help.wizard.view</field>
|
||||||
|
<field name="model">import.help.wizard</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Import Help Data">
|
||||||
|
<group>
|
||||||
|
<p>
|
||||||
|
This wizard allow you to import QWeb views
|
||||||
|
related to help online. The required file format is an Odoo
|
||||||
|
data xml file.
|
||||||
|
</p>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="source_file"/>
|
||||||
|
</group>
|
||||||
|
<footer>
|
||||||
|
<span name="go-wizard" attrs="{'invisible': [('source_file', '=', False)]}">
|
||||||
|
<button name="import_help"
|
||||||
|
string="Import"
|
||||||
|
type="object"
|
||||||
|
icon="gtk-execute"
|
||||||
|
class="oe_highlight" />
|
||||||
|
or
|
||||||
|
</span>
|
||||||
|
<button string="Close" class="oe_link" special="cancel" />
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record model="ir.actions.act_window" id="action_import_help_wizard">
|
||||||
|
<field name="name">Import Help</field>
|
||||||
|
<field name="res_model">import.help.wizard</field>
|
||||||
|
<field name="view_id" ref="import_help_wizard_view"/>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">form</field>
|
||||||
|
<field name="target">new</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
|
@ -0,0 +1 @@
|
||||||
|
__import__('pkg_resources').declare_namespace(__name__)
|
|
@ -0,0 +1 @@
|
||||||
|
../../../help_online
|
|
@ -0,0 +1,6 @@
|
||||||
|
import setuptools
|
||||||
|
|
||||||
|
setuptools.setup(
|
||||||
|
setup_requires=['setuptools-odoo'],
|
||||||
|
odoo_addon=True,
|
||||||
|
)
|
|
@ -0,0 +1 @@
|
||||||
|
__import__('pkg_resources').declare_namespace(__name__)
|
|
@ -0,0 +1 @@
|
||||||
|
../../../web_menu_collapsible
|
|
@ -0,0 +1,6 @@
|
||||||
|
import setuptools
|
||||||
|
|
||||||
|
setuptools.setup(
|
||||||
|
setup_requires=['setuptools-odoo'],
|
||||||
|
odoo_addon=True,
|
||||||
|
)
|
|
@ -29,7 +29,7 @@
|
||||||
dialog box to the full screen width.""",
|
dialog box to the full screen width.""",
|
||||||
|
|
||||||
'author': "ACSONE SA/NV, "
|
'author': "ACSONE SA/NV, "
|
||||||
"Serv. Tecnol. Avanzados - Pedro M. Baeza, "
|
"Tecnativa, "
|
||||||
"Therp BV, "
|
"Therp BV, "
|
||||||
"Odoo Community Association (OCA), "
|
"Odoo Community Association (OCA), "
|
||||||
"Siddharth Bhalgami",
|
"Siddharth Bhalgami",
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Export Current View',
|
'name': 'Export Current View',
|
||||||
'version': '9.0.1.0.0',
|
'version': '9.0.1.0.1',
|
||||||
'category': 'Web',
|
'category': 'Web',
|
||||||
'author': "Agile Business Group,Odoo Community Association (OCA)",
|
'author': "Agile Business Group,Odoo Community Association (OCA)",
|
||||||
'website': 'http://www.agilebg.com',
|
'website': 'http://www.agilebg.com',
|
||||||
|
|
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
||||||
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
|
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -20,21 +20,21 @@ msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:20
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Export Current View"
|
msgid "Export Current View"
|
||||||
msgstr "Aktuelle Liste exportieren"
|
msgstr "Aktuelle Liste exportieren"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:89
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "False"
|
msgid "False"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:83
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "True"
|
msgid "True"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
||||||
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -20,21 +20,21 @@ msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:20
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Export Current View"
|
msgid "Export Current View"
|
||||||
msgstr "Exportar vista actual"
|
msgstr "Exportar vista actual"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:89
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "False"
|
msgid "False"
|
||||||
msgstr "Falso"
|
msgstr "Falso"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:83
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "True"
|
msgid "True"
|
||||||
msgstr "Verdadero"
|
msgstr "Verdadero"
|
||||||
|
|
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
||||||
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
|
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -20,21 +20,21 @@ msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:20
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Export Current View"
|
msgid "Export Current View"
|
||||||
msgstr "Exporter la vue courante"
|
msgstr "Exporter la vue courante"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:89
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "False"
|
msgid "False"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:83
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "True"
|
msgid "True"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
||||||
"Language-Team: Icelandic (https://www.transifex.com/oca/teams/23907/is/)\n"
|
"Language-Team: Icelandic (https://www.transifex.com/oca/teams/23907/is/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -20,21 +20,21 @@ msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:20
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Export Current View"
|
msgid "Export Current View"
|
||||||
msgstr "Flytja út núverandi sýn"
|
msgstr "Flytja út núverandi sýn"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:89
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "False"
|
msgid "False"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:83
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "True"
|
msgid "True"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
||||||
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
|
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -20,21 +20,21 @@ msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:20
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Export Current View"
|
msgid "Export Current View"
|
||||||
msgstr "Huidige lijst exporteren"
|
msgstr "Huidige lijst exporteren"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:89
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "False"
|
msgid "False"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:83
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "True"
|
msgid "True"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
||||||
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
|
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -20,21 +20,21 @@ msgstr ""
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:20
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:21
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Export Current View"
|
msgid "Export Current View"
|
||||||
msgstr "Izvoz trenutnega pogleda"
|
msgstr "Izvoz trenutnega pogleda"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:89
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "False"
|
msgid "False"
|
||||||
msgstr "Nepravilno"
|
msgstr "Nepravilno"
|
||||||
|
|
||||||
#. module: web_export_view
|
#. module: web_export_view
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_export_view/static/src/js/web_export_view.js:83
|
#: code:addons/web_export_view/static/src/js/web_export_view.js:86
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "True"
|
msgid "True"
|
||||||
msgstr "Pravilno"
|
msgstr "Pravilno"
|
||||||
|
|
|
@ -7,6 +7,7 @@ odoo.define('web_export_view.Sidebar', function (require) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var core = require('web.core');
|
var core = require('web.core');
|
||||||
|
var formats = require('web.formats');
|
||||||
var Sidebar = require('web.Sidebar');
|
var Sidebar = require('web.Sidebar');
|
||||||
|
|
||||||
var _t = core._t;
|
var _t = core._t;
|
||||||
|
@ -75,7 +76,9 @@ Sidebar.include({
|
||||||
var cell = $row.find('td[data-field="' + this + '"]').get(0);
|
var cell = $row.find('td[data-field="' + this + '"]').get(0);
|
||||||
var text = cell.text || cell.textContent || cell.innerHTML || "";
|
var text = cell.text || cell.textContent || cell.innerHTML || "";
|
||||||
if (cell.classList.contains("oe_list_field_float")) {
|
if (cell.classList.contains("oe_list_field_float")) {
|
||||||
export_row.push(instance.web.parse_value(text, {'type': "float"}));
|
export_row.push(
|
||||||
|
formats.parse_value(text, {'type': "float"})
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else if (cell.classList.contains("oe_list_field_boolean")) {
|
else if (cell.classList.contains("oe_list_field_boolean")) {
|
||||||
var data_id = $('<div>' + cell.innerHTML + '</div>');
|
var data_id = $('<div>' + cell.innerHTML + '</div>');
|
||||||
|
@ -90,7 +93,10 @@ Sidebar.include({
|
||||||
var tmp2 = text;
|
var tmp2 = text;
|
||||||
do {
|
do {
|
||||||
tmp = tmp2;
|
tmp = tmp2;
|
||||||
tmp2 = tmp.replace(instance.web._t.database.parameters.thousands_sep, "");
|
tmp2 = tmp.replace(
|
||||||
|
_t.database.parameters.thousands_sep,
|
||||||
|
""
|
||||||
|
);
|
||||||
} while (tmp !== tmp2);
|
} while (tmp !== tmp2);
|
||||||
|
|
||||||
export_row.push(parseInt(tmp2));
|
export_row.push(parseInt(tmp2));
|
||||||
|
@ -116,4 +122,3 @@ Sidebar.include({
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,14 @@
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# OCA Transbot <transbot@odoo-community.org>, 2016
|
# OCA Transbot <transbot@odoo-community.org>, 2016
|
||||||
|
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
|
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\n"
|
||||||
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
@ -23,14 +24,14 @@ msgstr ""
|
||||||
#: code:addons/web_m2x_options/static/src/js/form.js:49
|
#: code:addons/web_m2x_options/static/src/js/form.js:49
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#. module: web_m2x_options
|
#. module: web_m2x_options
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
#: code:addons/web_m2x_options/static/src/js/form.js:35
|
#: code:addons/web_m2x_options/static/src/js/form.js:35
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Create"
|
msgid "Create"
|
||||||
msgstr ""
|
msgstr "Crear"
|
||||||
|
|
||||||
#. module: web_m2x_options
|
#. module: web_m2x_options
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
|
@ -45,7 +46,7 @@ msgstr "Crear \"<strong>%s</strong>\""
|
||||||
#: code:addons/web_m2x_options/static/src/js/form.js:32
|
#: code:addons/web_m2x_options/static/src/js/form.js:32
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Create a %s"
|
msgid "Create a %s"
|
||||||
msgstr ""
|
msgstr "Crear un %s"
|
||||||
|
|
||||||
#. module: web_m2x_options
|
#. module: web_m2x_options
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
|
@ -60,7 +61,7 @@ msgstr "Crear y editar..."
|
||||||
#: code:addons/web_m2x_options/static/src/js/form.js:45
|
#: code:addons/web_m2x_options/static/src/js/form.js:45
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Create and edit"
|
msgid "Create and edit"
|
||||||
msgstr ""
|
msgstr "Crear y editar"
|
||||||
|
|
||||||
#. module: web_m2x_options
|
#. module: web_m2x_options
|
||||||
#. openerp-web
|
#. openerp-web
|
||||||
|
@ -75,4 +76,4 @@ msgstr "Buscar más..."
|
||||||
#: code:addons/web_m2x_options/static/src/js/form.js:54
|
#: code:addons/web_m2x_options/static/src/js/form.js:54
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You are creating a new %s, are you sure it does not exist yet?"
|
msgid "You are creating a new %s, are you sure it does not exist yet?"
|
||||||
msgstr ""
|
msgstr "Está creando un nuevo %s, ¿está seguro de no existe ya?"
|
||||||
|
|
|
@ -412,7 +412,7 @@ odoo.define('web_m2x_options.web_m2x_options', function (require) {
|
||||||
var open = (self.options && self.is_option_set(self.options.open));
|
var open = (self.options && self.is_option_set(self.options.open));
|
||||||
if(open){
|
if(open){
|
||||||
self.mutex.exec(function(){
|
self.mutex.exec(function(){
|
||||||
var id = parseInt($(ev.handleObj.selector).attr('data-id'));
|
var id = parseInt($(ev.currentTarget).data('id'));
|
||||||
self.do_action({
|
self.do_action({
|
||||||
type: 'ir.actions.act_window',
|
type: 'ir.actions.act_window',
|
||||||
res_model: self.field.relation,
|
res_model: self.field.relation,
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||||
|
:alt: License: AGPL-3
|
||||||
|
|
||||||
|
================
|
||||||
|
Collapsible menu
|
||||||
|
================
|
||||||
|
|
||||||
|
This module makes all menus collapsible for all users.
|
||||||
|
|
||||||
|
Second level menus are collapsed by default.
|
||||||
|
|
||||||
|
.. image:: /web_menu_collapsible/static/description/menu_collapsible_1.png
|
||||||
|
:alt: In case first level menu is collapsed, click it to expand.
|
||||||
|
|
||||||
|
.. image:: /web_menu_collapsible/static/description/menu_collapsible_2.png
|
||||||
|
:alt: In case first level menu is expanded, click it to collapse.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
No configuration is needed.
|
||||||
|
|
||||||
|
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
||||||
|
:alt: Try me on Runbot
|
||||||
|
:target: https://runbot.odoo-community.org/runbot/162/9.0
|
||||||
|
|
||||||
|
Known issues / Roadmap
|
||||||
|
======================
|
||||||
|
|
||||||
|
* The visual hint is initially in state 'collapsed' when is actually 'expanded' (this is Odoo's menu standard mechanism).
|
||||||
|
|
||||||
|
Bug Tracker
|
||||||
|
===========
|
||||||
|
|
||||||
|
Bugs are tracked on `GitHub Issues
|
||||||
|
<https://github.com/OCA/162/issues>`_. In case of trouble, please
|
||||||
|
check there if your issue has already been reported. If you spotted it first,
|
||||||
|
help us smashing it by providing a detailed and welcomed feedback.
|
||||||
|
|
||||||
|
Credits
|
||||||
|
=======
|
||||||
|
|
||||||
|
Images
|
||||||
|
------
|
||||||
|
|
||||||
|
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
|
||||||
|
|
||||||
|
Contributors
|
||||||
|
------------
|
||||||
|
|
||||||
|
* Dennis Sluijk <d.sluijk@onestein.nl>
|
||||||
|
|
||||||
|
Maintainer
|
||||||
|
----------
|
||||||
|
|
||||||
|
.. image:: https://odoo-community.org/logo.png
|
||||||
|
:alt: Odoo Community Association
|
||||||
|
:target: https://odoo-community.org
|
||||||
|
|
||||||
|
This module is maintained by the OCA.
|
||||||
|
|
||||||
|
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||||
|
mission is to support the collaborative development of Odoo features and
|
||||||
|
promote its widespread use.
|
||||||
|
|
||||||
|
To contribute to this module, please visit https://odoo-community.org.
|
|
@ -0,0 +1,3 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2016 Onestein (<http://www.onestein.eu>)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
@ -0,0 +1,18 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# © 2016 Onestein (<http://www.onestein.eu>)
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'Collapsible menu',
|
||||||
|
'license': 'AGPL-3',
|
||||||
|
'images': [],
|
||||||
|
'summary': 'Foldable second level Odoo menu',
|
||||||
|
'author': 'Onestein,Odoo Community Association (OCA)',
|
||||||
|
'website': 'http://www.onestein.eu',
|
||||||
|
'category': 'Web',
|
||||||
|
'version': '9.0.1.0.0',
|
||||||
|
'depends': ['web'],
|
||||||
|
'data': [
|
||||||
|
'templates/menu_collapsible.xml',
|
||||||
|
],
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -0,0 +1,43 @@
|
||||||
|
.oe_secondary_menu_section {
|
||||||
|
height: 26px;
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_secondary_menu_section.oe_menu_toggler {
|
||||||
|
margin-left: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_secondary_submenu > li > a.oe_menu_leaf,
|
||||||
|
.oe_secondary_submenu > li > a.oe_menu_toggler {
|
||||||
|
padding-left: 27px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_secondary_menu_section.oe_menu_toggler::before {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
display: inline-block;
|
||||||
|
content: "&darr";
|
||||||
|
text-indent: -99999px;
|
||||||
|
vertical-align: top;
|
||||||
|
margin-left: -12px;
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-right: 4px;
|
||||||
|
border-top: 4px solid transparent;
|
||||||
|
border-bottom: 4px solid transparent;
|
||||||
|
border-left: 4px solid #4c4c4c;
|
||||||
|
filter: alpha(opacity=50);
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_secondary_menu_section.oe_menu_toggler.oe_menu_opened::before {
|
||||||
|
margin-top: 6px;
|
||||||
|
margin-left: -16px;
|
||||||
|
margin-right: 4px;
|
||||||
|
border-left: 4px solid transparent;
|
||||||
|
border-right: 4px solid transparent;
|
||||||
|
border-top: 4px solid #4c4c4c;
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
odoo.define('web_menu_collapsible.Menu', function(require) {
|
||||||
|
"use strict";
|
||||||
|
var $ = require('$'),
|
||||||
|
Menu = require('web.Menu');
|
||||||
|
|
||||||
|
Menu.include({
|
||||||
|
start: function() {
|
||||||
|
var self = this;
|
||||||
|
$(".oe_secondary_submenu").hide();
|
||||||
|
$(".oe_secondary_menu_section").each(function() {
|
||||||
|
if($(this).next().hasClass('oe_secondary_submenu')) {
|
||||||
|
$(this).unbind("click");
|
||||||
|
$(this).click(self.section_clicked);
|
||||||
|
$(this).addClass('oe_menu_toggler');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return this._super.apply(this, arguments);
|
||||||
|
},
|
||||||
|
section_clicked: function() {
|
||||||
|
$(this).toggleClass('oe_menu_opened').next().toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
<template id="assets_backend_menu_collapsible" name="assets.backend.menu.collapsible" inherit_id="web.assets_backend">
|
||||||
|
<xpath expr="." position="inside">
|
||||||
|
<link rel="stylesheet" href="/web_menu_collapsible/static/src/css/menu_collapsible.css" />
|
||||||
|
<script type="text/javascript" src="/web_menu_collapsible/static/src/js/menu_collapsible.js"></script>
|
||||||
|
</xpath>
|
||||||
|
</template>
|
||||||
|
</odoo>
|
|
@ -12,6 +12,8 @@ Features:
|
||||||
|
|
||||||
* New navigation with an App drawer
|
* New navigation with an App drawer
|
||||||
* Keyboard shortcuts for easier navigation
|
* Keyboard shortcuts for easier navigation
|
||||||
|
* Display kanban views for small screens format if an action or field One2x
|
||||||
|
has a kanban view
|
||||||
|
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
|
@ -52,6 +54,8 @@ this module.
|
||||||
* Adding ``oe_main_menu_navbar`` ID to the top navigation bar triggers some
|
* Adding ``oe_main_menu_navbar`` ID to the top navigation bar triggers some
|
||||||
great styles, but also `JavaScript that causes issues on mobile
|
great styles, but also `JavaScript that causes issues on mobile
|
||||||
<https://github.com/OCA/web/pull/446#issuecomment-254827880>`_
|
<https://github.com/OCA/web/pull/446#issuecomment-254827880>`_
|
||||||
|
* The kanban view not is shown if an action window has no kanban mode view
|
||||||
|
|
||||||
|
|
||||||
Bug Tracker
|
Bug Tracker
|
||||||
===========
|
===========
|
||||||
|
@ -75,6 +79,7 @@ Contributors
|
||||||
|
|
||||||
* Dave Lasley <dave@laslabs.com>
|
* Dave Lasley <dave@laslabs.com>
|
||||||
* Jairo Llopis <jairo.llopis@tecnativa.com>
|
* Jairo Llopis <jairo.llopis@tecnativa.com>
|
||||||
|
* Sergio Teruel <sergio.teruel@tecnativa.com>
|
||||||
|
|
||||||
Maintainer
|
Maintainer
|
||||||
----------
|
----------
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"name": "Web Responsive",
|
"name": "Web Responsive",
|
||||||
"summary": "It provides a mobile compliant interface for Odoo Community "
|
"summary": "It provides a mobile compliant interface for Odoo Community "
|
||||||
"web",
|
"web",
|
||||||
"version": "9.0.1.0.0",
|
"version": "9.0.2.0.0",
|
||||||
"category": "Website",
|
"category": "Website",
|
||||||
"website": "https://laslabs.com/",
|
"website": "https://laslabs.com/",
|
||||||
"author": "LasLabs, Tecnativa, Odoo Community Association (OCA)",
|
"author": "LasLabs, Tecnativa, Odoo Community Association (OCA)",
|
||||||
|
|
|
@ -3,13 +3,14 @@
|
||||||
# * web_responsive
|
# * web_responsive
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2016
|
||||||
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2016
|
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2016
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Odoo Server 9.0c\n"
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-11-23 03:40+0000\n"
|
"POT-Creation-Date: 2016-12-23 02:13+0000\n"
|
||||||
"PO-Revision-Date: 2016-11-23 03:40+0000\n"
|
"PO-Revision-Date: 2016-12-23 02:13+0000\n"
|
||||||
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2016\n"
|
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2016\n"
|
||||||
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
@ -26,12 +27,12 @@ msgstr "<span class=\"sr-only\">Mostrar/ocultar selector de aplicaciones</span>"
|
||||||
#. module: web_responsive
|
#. module: web_responsive
|
||||||
#: model:ir.ui.view,arch_db:web_responsive.webclient_bootstrap
|
#: model:ir.ui.view,arch_db:web_responsive.webclient_bootstrap
|
||||||
msgid "<span class=\"sr-only\">Toggle Navigation</span>"
|
msgid "<span class=\"sr-only\">Toggle Navigation</span>"
|
||||||
msgstr ""
|
msgstr "<span class=\"sr-only\">Mostrar/Ocultar navegación</span>"
|
||||||
|
|
||||||
#. module: web_responsive
|
#. module: web_responsive
|
||||||
#: model:ir.ui.view,arch_db:web_responsive.menu
|
#: model:ir.ui.view,arch_db:web_responsive.menu
|
||||||
msgid "Apps"
|
msgid "Apps"
|
||||||
msgstr ""
|
msgstr "Aplicaciones"
|
||||||
|
|
||||||
#. module: web_responsive
|
#. module: web_responsive
|
||||||
#: model:ir.ui.view,arch_db:web_responsive.menu
|
#: model:ir.ui.view,arch_db:web_responsive.menu
|
||||||
|
|
|
@ -66,6 +66,15 @@
|
||||||
.drawer-open .drawer-overlay {
|
.drawer-open .drawer-overlay {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XXX: local patch waiting for:
|
||||||
|
https://github.com/blivesta/drawer/pull/36
|
||||||
|
*/
|
||||||
|
.drawer-open {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
/* end local patch */
|
||||||
|
|
||||||
/*!------------------------------------*\
|
/*!------------------------------------*\
|
||||||
Top
|
Top
|
||||||
\*!------------------------------------*/
|
\*!------------------------------------*/
|
||||||
|
|
|
@ -121,7 +121,10 @@
|
||||||
return $this
|
return $this
|
||||||
.removeClass(__.settings.class.close)
|
.removeClass(__.settings.class.close)
|
||||||
.addClass(__.settings.class.open)
|
.addClass(__.settings.class.open)
|
||||||
.css({ 'overflow': 'hidden' })
|
// XXX: local patch waiting for:
|
||||||
|
// https://github.com/blivesta/drawer/pull/36
|
||||||
|
//.css({ 'overflow': 'hidden' })
|
||||||
|
// end local patch
|
||||||
.drawerCallback(function triggerOpenedListeners() {
|
.drawerCallback(function triggerOpenedListeners() {
|
||||||
__.settings.state = true;
|
__.settings.state = true;
|
||||||
$this.trigger(__.settings.events.opened);
|
$this.trigger(__.settings.events.opened);
|
||||||
|
@ -136,7 +139,10 @@
|
||||||
return $this
|
return $this
|
||||||
.removeClass(__.settings.class.open)
|
.removeClass(__.settings.class.open)
|
||||||
.addClass(__.settings.class.close)
|
.addClass(__.settings.class.close)
|
||||||
.css({ 'overflow': 'auto' })
|
// XXX: local patch waiting for:
|
||||||
|
// https://github.com/blivesta/drawer/pull/36
|
||||||
|
//.css("overflow", "auto")
|
||||||
|
// end local patch
|
||||||
.drawerCallback(function triggerClosedListeners() {
|
.drawerCallback(function triggerClosedListeners() {
|
||||||
__.settings.state = false;
|
__.settings.state = false;
|
||||||
$this.trigger(__.settings.events.closed);
|
$this.trigger(__.settings.events.closed);
|
||||||
|
|
|
@ -4,11 +4,13 @@
|
||||||
odoo.define('web_responsive', function(require) {
|
odoo.define('web_responsive', function(require) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var $ = require('$');
|
|
||||||
var Menu = require('web.Menu');
|
var Menu = require('web.Menu');
|
||||||
var Class = require('web.Class');
|
var Class = require('web.Class');
|
||||||
var SearchView = require('web.SearchView');
|
var SearchView = require('web.SearchView');
|
||||||
var core = require('web.core');
|
var core = require('web.core');
|
||||||
|
var config = require('web.config');
|
||||||
|
var FieldOne2Many = core.form_widget_registry.get('one2many');
|
||||||
|
var ViewManager = require('web.ViewManager');
|
||||||
|
|
||||||
Menu.include({
|
Menu.include({
|
||||||
|
|
||||||
|
@ -83,12 +85,18 @@ odoo.define('web_responsive', function(require) {
|
||||||
'-': this.LEFT,
|
'-': this.LEFT,
|
||||||
};
|
};
|
||||||
this.initDrawer();
|
this.initDrawer();
|
||||||
var $clickZones = $('.openerp_webclient_container, ' +
|
var $clickZones = $('.odoo_webclient_container, ' +
|
||||||
'a.oe_menu_leaf, ' +
|
'a.oe_menu_leaf, ' +
|
||||||
'a.oe_menu_toggler, ' +
|
'a.oe_menu_toggler, ' +
|
||||||
'a.oe_logo, ' +
|
'a.oe_logo, ' +
|
||||||
'i.oe_logo_edit'
|
'i.oe_logo_edit'
|
||||||
);
|
);
|
||||||
|
$('.o_content').scroll(function() {
|
||||||
|
$('.o_control_panel').css(
|
||||||
|
'margin-top',
|
||||||
|
-$(this).scrollTop() + 'px'
|
||||||
|
);
|
||||||
|
});
|
||||||
$clickZones.click($.proxy(this.handleClickZones, this));
|
$clickZones.click($.proxy(this.handleClickZones, this));
|
||||||
core.bus.on('resize', this, this.handleWindowResize);
|
core.bus.on('resize', this, this.handleWindowResize);
|
||||||
core.bus.on('keydown', this, this.handleNavKeys);
|
core.bus.on('keydown', this, this.handleNavKeys);
|
||||||
|
@ -287,10 +295,24 @@ odoo.define('web_responsive', function(require) {
|
||||||
new AppDrawer();
|
new AppDrawer();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// if we are in small screen change default view to kanban if exists
|
||||||
|
ViewManager.include({
|
||||||
|
get_default_view: function() {
|
||||||
|
var default_view = this._super()
|
||||||
|
if (config.device.size_class <= config.device.SIZES.XS &&
|
||||||
|
default_view != 'kanban' &&
|
||||||
|
this.views['kanban']){
|
||||||
|
default_view = 'kanban';
|
||||||
|
};
|
||||||
|
return default_view;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'AppDrawer': AppDrawer,
|
'AppDrawer': AppDrawer,
|
||||||
'SearchView': SearchView,
|
'SearchView': SearchView,
|
||||||
'Menu': Menu,
|
'Menu': Menu,
|
||||||
|
'ViewManager': ViewManager,
|
||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -11,10 +11,15 @@
|
||||||
border-radius: @border-radius-base;
|
border-radius: @border-radius-base;
|
||||||
.box-shadow(0 6px 12px rgba(0, 0, 0, .175));
|
.box-shadow(0 6px 12px rgba(0, 0, 0, .175));
|
||||||
background-clip: padding-box;
|
background-clip: padding-box;
|
||||||
|
z-index: 10000;
|
||||||
|
|
||||||
|
.o_tooltip {
|
||||||
|
z-index: 1051;
|
||||||
|
}
|
||||||
|
|
||||||
.oe_logo {
|
.oe_logo {
|
||||||
img {
|
img {
|
||||||
margin-top: -@app-drawer-navbar-padding-vertical;
|
margin-top: -@app-drawer-navbar-padding-vertical * 2;
|
||||||
height: @app-drawer-title-height;
|
height: @app-drawer-title-height;
|
||||||
}
|
}
|
||||||
.oe_logo_edit {
|
.oe_logo_edit {
|
||||||
|
@ -24,7 +29,7 @@
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
margin: 14px 0;
|
margin: 14px 0;
|
||||||
display: none;
|
display: none;
|
||||||
color: #eee;
|
color: @odoo-list-footer-bg-color;
|
||||||
background: rgba(37,37,37,0.9);
|
background: rgba(37,37,37,0.9);
|
||||||
}
|
}
|
||||||
&:hover .oe_logo_edit_admin {
|
&:hover .oe_logo_edit_admin {
|
||||||
|
@ -45,7 +50,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-drawer-panel-title {
|
.app-drawer-panel-title {
|
||||||
margin-top: 5px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-drawer-icon-app {
|
.app-drawer-icon-app {
|
||||||
|
@ -65,14 +70,12 @@
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: @app-drawer-title-height;
|
height: @app-drawer-title-height;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
z-index: 9999;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.drawer-nav {
|
.drawer-nav {
|
||||||
width: @app-drawer-width;
|
width: @app-drawer-width;
|
||||||
z-index: 9999;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.drawer--left .drawer-nav {
|
.drawer--left .drawer-nav {
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
/* Copyright 2016 Ponto Suprimentos Ltda.
|
||||||
|
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
|
||||||
|
|
||||||
|
.openerp .oe_formview .oe_form {
|
||||||
|
// Form must fill 100% width in any size
|
||||||
|
.oe_form_sheetbg {
|
||||||
|
padding: 16px;
|
||||||
|
|
||||||
|
.oe_form_sheet_width {
|
||||||
|
min-width: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: @screen-sm-max) {
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
.oe_form_sheet_width {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// No overflowing buttons or titles
|
||||||
|
.oe_button_box, .oe_title {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: @screen-sm-max) {
|
||||||
|
.oe_form_field > .ui-autocomplete-input {
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_form_group_row .oe_form_group_row {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_form_group, .oe_form_group_row, .oe_form_group_cell {
|
||||||
|
&, & tbody {
|
||||||
|
display: block;
|
||||||
|
margin-top: 8px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.oe_group_right {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_form_group_row {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_form_group_cell {
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_form_group_cell_label {
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
display: table-cell;
|
||||||
|
min-width: 30%;
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: @screen-xs-max) {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ .oe_form_group_cell {
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
display: table-cell;
|
||||||
|
max-width: 70%;
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make image editing controls always available, instead of depending on
|
||||||
|
// resolution or hover
|
||||||
|
.oe_form_field_image > .oe_form_field_image_controls {
|
||||||
|
display: block;
|
||||||
|
opacity: 0.7;
|
||||||
|
|
||||||
|
.oe_hidden_input_file {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adapt chatter widget to small viewports
|
||||||
|
.oe_chatter {
|
||||||
|
min-width: inherit;
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,6 +22,48 @@ main {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.oe_footer {
|
.navbar {
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_cp_switch_buttons {
|
||||||
|
.active {
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_leftbar {
|
||||||
|
.oe_logo {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.oe_footer {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_tooltip.active {
|
||||||
|
z-index: 1051;
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_web_client {
|
||||||
|
>.o_main {
|
||||||
|
overflow: auto;
|
||||||
|
> .o_main_content {
|
||||||
|
overflow: initial;
|
||||||
|
> .o_content {
|
||||||
|
overflow: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove z-index from CP buttons so it doesn't overlap the menu
|
||||||
|
.o_control_panel {
|
||||||
|
.btn-group > .btn.active {
|
||||||
|
z-index: initial;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.o_chat_window {
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
|
|
@ -1,23 +1,178 @@
|
||||||
/* Copyright 2016 LasLabs Inc.
|
/* Copyright 2016 LasLabs Inc.
|
||||||
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
|
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
|
||||||
|
|
||||||
.main-nav {
|
header {
|
||||||
margin-bottom: 0;
|
margin: 0;
|
||||||
min-height: @app-drawer-navbar-height;
|
padding: 0;
|
||||||
|
|
||||||
|
> .main-nav {
|
||||||
|
display: block;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
.navbar-systray {
|
||||||
|
white-space: nowrap;
|
||||||
|
@media (max-width: @screen-xs-max) {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 56px;
|
||||||
|
}
|
||||||
|
> .oe_user_menu_placeholder > li > a {
|
||||||
|
> .oe_topbar_avatar {
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-top: -8px;
|
||||||
|
max-height: 36px;
|
||||||
|
height: 36px;
|
||||||
|
width: 36px;
|
||||||
|
}
|
||||||
|
.oe_topbar_name {
|
||||||
|
position: relative;
|
||||||
|
top: -3px;
|
||||||
|
@media (max-width: @screen-xs-max) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.caret {
|
||||||
|
position: relative;
|
||||||
|
top: -3.5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
> .oe_systray > li > a {
|
||||||
|
.fa {
|
||||||
|
position: relative;
|
||||||
|
top: 3px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.caret {
|
||||||
|
position: relative;
|
||||||
|
top: 0.5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-nav ul.nav > li > a {
|
.navbar-right {
|
||||||
|
float: right;
|
||||||
|
> li {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
@media (max-width: @screen-xs-max) {
|
||||||
|
.navbar-nav .open .dropdown-menu {
|
||||||
|
position: fixed;
|
||||||
|
top: 46px;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
overflow: auto;
|
||||||
|
float: left;
|
||||||
|
background-color: @odoo-view-background-color;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.15);
|
||||||
|
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-fluid:before, .container-fluid:after, .navbar-collapse:before, .navbar-collapse:after {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .container-fluid {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
@media (max-width: @screen-xs-max) {
|
||||||
|
> .navbar-collapse {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow: auto;
|
||||||
|
&.collapsing {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
> .navbar-header {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
> .drawer-toggle, .navbar-toggle {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 1px solid @nav-tabs-active-link-hover-border-color;
|
||||||
|
> i.fa, div.fa {
|
||||||
|
padding: 16px 14px 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.oe_leftbar > .oe_secondary_menus_container > .oe_secondary_menu {
|
||||||
|
ul.dropdown-menu > li.dropdown-header {
|
||||||
|
color: @odoo-view-background-color;
|
||||||
|
text-decoration: none;
|
||||||
|
background-color: @odoo-main-color-muted;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
height: @navbar-height;
|
||||||
|
}
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
> li {
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
height: @navbar-height;
|
||||||
|
}
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
&.app-name {
|
||||||
|
display: block;
|
||||||
|
padding: 7px 8px;
|
||||||
|
> .oe_menu_text {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
padding: 8.5px 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
> a {
|
||||||
|
margin: 0;
|
||||||
|
@media (min-width: @screen-sm-min) {
|
||||||
|
height: @navbar-height;
|
||||||
|
padding: 14px 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .navbar-right.o_menu_systray {
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
> ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
> li > a {
|
||||||
|
margin: 0;
|
||||||
|
padding: 13px 8px;
|
||||||
|
height: @navbar-height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge {
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
right: @navbar-padding-horizontal / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.nav > li > a {
|
||||||
padding: @app-drawer-navbar-padding-vertical @app-drawer-padding-horizontal;
|
padding: @app-drawer-navbar-padding-vertical @app-drawer-padding-horizontal;
|
||||||
}
|
}
|
||||||
|
|
||||||
.oe_topbar_avatar {
|
.o_planner_systray > .progress {
|
||||||
margin-top: -@app-drawer-padding-horizontal;
|
margin-top: 15px;
|
||||||
height: @app-drawer-navbar-height;
|
}
|
||||||
border-radius: 50%;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a.navbar-collapse.collapse {
|
a.navbar-collapse.collapse {
|
||||||
@media (min-width: @screen-sm) {
|
@media (min-width: @screen-sm-min) {
|
||||||
padding-bottom: @app-drawer-navbar-padding-vertical;
|
padding-bottom: @app-drawer-navbar-padding-vertical;
|
||||||
padding-top: @app-drawer-navbar-padding-vertical;
|
padding-top: @app-drawer-navbar-padding-vertical;
|
||||||
}
|
}
|
||||||
|
@ -26,11 +181,3 @@ a.navbar-collapse.collapse {
|
||||||
.dropdown-scrollable {
|
.dropdown-scrollable {
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: @screen-xs-max) {
|
|
||||||
#odooMenuBarNav[aria-expanded="false"] {
|
|
||||||
/* Hack to hide the visibly expanded mobile menu on load. */
|
|
||||||
position: absolute;
|
|
||||||
z-index: -9999;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,9 +5,18 @@
|
||||||
@app-drawer-icon-size: 6em;
|
@app-drawer-icon-size: 6em;
|
||||||
@app-drawer-icon-margin: 1em;
|
@app-drawer-icon-margin: 1em;
|
||||||
@app-drawer-width: 80%;
|
@app-drawer-width: 80%;
|
||||||
@app-drawer-title-height: @navbar-height;
|
@app-drawer-title-height: 54px;
|
||||||
|
|
||||||
// Navbar
|
// Navbar
|
||||||
|
@navbar-height: 46px;
|
||||||
|
@navbar-margin-bottom: 0;
|
||||||
@app-drawer-navbar-height: @navbar-height / 2;
|
@app-drawer-navbar-height: @navbar-height / 2;
|
||||||
@app-drawer-navbar-padding-vertical: @navbar-padding-vertical / 2;
|
@app-drawer-navbar-padding-vertical: @navbar-padding-vertical / 2;
|
||||||
@app-drawer-padding-horizontal: @navbar-padding-horizontal / 2;
|
@app-drawer-padding-horizontal: @navbar-padding-horizontal / 2;
|
||||||
|
|
||||||
|
// Drawer Toggle
|
||||||
|
@drawer-toggle-height: @navbar-height;
|
||||||
|
@drawer-toggle-width: @navbar-height;
|
||||||
|
|
||||||
|
// Backported from v10
|
||||||
|
@odoo-list-footer-bg-color: #eee;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Copyright 2016 LasLabs Inc.
|
# Copyright 2016 LasLabs Inc.
|
||||||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
||||||
|
|
||||||
from openerp.tests import HttpCase
|
from odoo.tests import HttpCase
|
||||||
|
|
||||||
|
|
||||||
class TestUi(HttpCase):
|
class TestUi(HttpCase):
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="/web_responsive/static/src/less/app_drawer.less"
|
href="/web_responsive/static/src/less/app_drawer.less"
|
||||||
/>
|
/>
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="/web_responsive/static/src/less/form_view.less"
|
||||||
|
/>
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="/web_responsive/static/src/less/variables.less"
|
href="/web_responsive/static/src/less/variables.less"
|
||||||
/>
|
/>
|
||||||
|
@ -37,7 +40,7 @@
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
<template id="qunit_suite" inherit_id="web.qunit_suite">
|
<template id="qunit_suite" inherit_id="web.qunit_suite">
|
||||||
<xpath expr="//html/head" position="inside">
|
<xpath expr="//head" position="inside">
|
||||||
<script type="application/javascript"
|
<script type="application/javascript"
|
||||||
src="/web_responsive/static/tests/js/web_responsive.js"
|
src="/web_responsive/static/tests/js/web_responsive.js"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
<xpath expr="//nav[@id='oe_main_menu_navbar']" position="replace">
|
<xpath expr="//nav[@id='oe_main_menu_navbar']" position="replace">
|
||||||
|
|
||||||
<t t-set="body_classname" t-value="'drawer drawer--left'" />
|
<t t-set="body_classname" t-value="'drawer drawer--left o_web_client'" />
|
||||||
|
|
||||||
<header role="banner">
|
<header role="banner">
|
||||||
<nav id="odooAppDrawer" class="app-drawer-nav drawer-nav" role="navigation">
|
<nav id="odooAppDrawer" class="app-drawer-nav drawer-nav" role="navigation">
|
||||||
|
@ -40,8 +40,7 @@
|
||||||
|
|
||||||
<div class="navbar-header">
|
<div class="navbar-header">
|
||||||
|
|
||||||
<a href="#"
|
<a class="drawer-toggle navbar-collapse collapse btn btn-default app-drawer-toggle"
|
||||||
class="drawer-toggle navbar-collapse collapse btn btn-default app-drawer-toggle"
|
|
||||||
accesskey="A"
|
accesskey="A"
|
||||||
>
|
>
|
||||||
<span class="sr-only">Toggle App Drawer</span>
|
<span class="sr-only">Toggle App Drawer</span>
|
||||||
|
@ -73,7 +72,7 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="collapse navbar-collapse text-center"
|
<div class="collapse navbar-collapse"
|
||||||
id="odooMenuBarNav"
|
id="odooMenuBarNav"
|
||||||
data-parent="#odooMenuBarToggle"
|
data-parent="#odooMenuBarToggle"
|
||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
|
@ -83,15 +82,11 @@
|
||||||
>
|
>
|
||||||
<t t-call="web.menu_secondary" />
|
<t t-call="web.menu_secondary" />
|
||||||
</div>
|
</div>
|
||||||
<div class="nav navbar-nav navbar-right">
|
|
||||||
<ul class="nav navbar-nav navbar-right oe_user_menu_placeholder"
|
|
||||||
style="display: none;"
|
|
||||||
/>
|
|
||||||
<ul class="nav navbar-nav navbar-right oe_systray"
|
|
||||||
style="display: none;"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="nav navbar-nav navbar-right navbar-systray o_menu_systray">
|
||||||
|
<ul class="nav navbar-nav navbar-right navbar-systray-item oe_user_menu_placeholder"/>
|
||||||
|
<ul class="nav navbar-nav navbar-right navbar-systray-item oe_systray"/>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
@ -106,16 +101,20 @@
|
||||||
name="App Drawer - Secondary Menu"
|
name="App Drawer - Secondary Menu"
|
||||||
>
|
>
|
||||||
|
|
||||||
<xpath expr="//a[@class='oe_logo']" position="replace" />
|
|
||||||
|
|
||||||
<xpath expr="//div[@class='oe_secondary_menus_container']/t" position="replace">
|
<xpath expr="//div[@class='oe_secondary_menus_container']/t" position="replace">
|
||||||
|
|
||||||
<t t-foreach="menu_data['children']" t-as="menu">
|
<t t-foreach="menu_data['children']" t-as="menu">
|
||||||
<ul class="oe_secondary_menu nav navbar-nav"
|
<ul style="display: none"
|
||||||
t-att-data-menu-parent="menu['id']"
|
class="oe_secondary_menu nav navbar-nav"
|
||||||
style="display: none;"
|
t-att-data-menu-parent="menu['id']">
|
||||||
>
|
<li class="app-name">
|
||||||
|
<span class="oe_menu_text">
|
||||||
|
<t t-esc="menu['name']"/>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
<t t-call="web.menu_secondary_submenu" />
|
<t t-call="web.menu_secondary_submenu" />
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
|
@ -140,8 +139,7 @@
|
||||||
</t>
|
</t>
|
||||||
</t>
|
</t>
|
||||||
<t t-if="not submenu">
|
<t t-if="not submenu">
|
||||||
<a href="#"
|
<a class="dropdown-toggle"
|
||||||
class="dropdown-toggle"
|
|
||||||
data-toggle="dropdown"
|
data-toggle="dropdown"
|
||||||
role="button"
|
role="button"
|
||||||
aria-haspopup="true"
|
aria-haspopup="true"
|
||||||
|
@ -215,7 +213,7 @@
|
||||||
<div class="panel-heading" id="appDrawerAppPanelHead">
|
<div class="panel-heading" id="appDrawerAppPanelHead">
|
||||||
<div class="col-xs-6">
|
<div class="col-xs-6">
|
||||||
<h4 class="app-drawer-panel-title pull-left">
|
<h4 class="app-drawer-panel-title pull-left">
|
||||||
<a href="#" class="app-drawer-icon-close drawer-toggle">
|
<a class="app-drawer-icon-close drawer-toggle">
|
||||||
<i class="fa fa-lg fa-chevron-left"
|
<i class="fa fa-lg fa-chevron-left"
|
||||||
t-translation="off"
|
t-translation="off"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
|
@ -244,7 +242,7 @@
|
||||||
</t>
|
</t>
|
||||||
</li>
|
</li>
|
||||||
<li id="menu_more_container" class="dropdown" style="display: none;">
|
<li id="menu_more_container" class="dropdown" style="display: none;">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">More <b class="caret"></b></a>
|
<a class="dropdown-toggle" data-toggle="dropdown">More <b class="caret"></b></a>
|
||||||
<ul id="menu_more" class="dropdown-menu"></ul>
|
<ul id="menu_more" class="dropdown-menu"></ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_tree_dynamic_colored_field
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
|
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\n"
|
||||||
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: es\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_tree_dynamic_colored_field
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_tree_dynamic_colored_field/static/src/xml/web_tree_dynamic_colored_field.xml:7
|
||||||
|
#, python-format
|
||||||
|
msgid "columns.fct_colorize(record, column)"
|
||||||
|
msgstr "columns.fct_colorize(record, column)"
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_widget_image_webcam
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
|
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\n"
|
||||||
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: es\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:98
|
||||||
|
#, python-format
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Cerrar"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:74
|
||||||
|
#, python-format
|
||||||
|
msgid "Save & Close"
|
||||||
|
msgstr "Guardar y cerrar"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:62
|
||||||
|
#, python-format
|
||||||
|
msgid "Take Snapshot"
|
||||||
|
msgstr "Capturar instantánea"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/xml/web_widget_image_webcam.xml:8
|
||||||
|
#, python-format
|
||||||
|
msgid "WebCam"
|
||||||
|
msgstr "WebCam"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:58
|
||||||
|
#, python-format
|
||||||
|
msgid "WebCam Booth"
|
||||||
|
msgstr "Soporte de WebCam"
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_widget_image_webcam
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-01-14 02:26+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-01-14 02:26+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: fr\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:98
|
||||||
|
#, python-format
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Fermer"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:74
|
||||||
|
#, python-format
|
||||||
|
msgid "Save & Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:62
|
||||||
|
#, python-format
|
||||||
|
msgid "Take Snapshot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/xml/web_widget_image_webcam.xml:8
|
||||||
|
#, python-format
|
||||||
|
msgid "WebCam"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:58
|
||||||
|
#, python-format
|
||||||
|
msgid "WebCam Booth"
|
||||||
|
msgstr ""
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_widget_image_webcam
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# OCA Transbot <transbot@odoo-community.org>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-01-14 02:26+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-01-14 02:26+0000\n"
|
||||||
|
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
|
||||||
|
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: sl\n"
|
||||||
|
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:98
|
||||||
|
#, python-format
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Zaključi"
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:74
|
||||||
|
#, python-format
|
||||||
|
msgid "Save & Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:62
|
||||||
|
#, python-format
|
||||||
|
msgid "Take Snapshot"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/xml/web_widget_image_webcam.xml:8
|
||||||
|
#, python-format
|
||||||
|
msgid "WebCam"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: web_widget_image_webcam
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_widget_image_webcam/static/src/js/webcam_widget.js:58
|
||||||
|
#, python-format
|
||||||
|
msgid "WebCam Booth"
|
||||||
|
msgstr ""
|
|
@ -16,6 +16,9 @@ odoo.define('web_widget_x2many_2d_matrix.widget', function (require) {
|
||||||
var WidgetX2Many2dMatrix = FieldOne2Many.extend({
|
var WidgetX2Many2dMatrix = FieldOne2Many.extend({
|
||||||
template: 'FieldX2Many2dMatrix',
|
template: 'FieldX2Many2dMatrix',
|
||||||
widget_class: 'oe_form_field_x2many_2d_matrix',
|
widget_class: 'oe_form_field_x2many_2d_matrix',
|
||||||
|
events: {
|
||||||
|
"change .edit": "xy_value_change",
|
||||||
|
},
|
||||||
|
|
||||||
// those will be filled with rows from the dataset
|
// those will be filled with rows from the dataset
|
||||||
by_x_axis: {},
|
by_x_axis: {},
|
||||||
|
@ -144,8 +147,6 @@ odoo.define('web_widget_x2many_2d_matrix.widget', function (require) {
|
||||||
self.renderElement();
|
self.renderElement();
|
||||||
self.compute_totals();
|
self.compute_totals();
|
||||||
self.setup_many2one_axes();
|
self.setup_many2one_axes();
|
||||||
self.$el.find('.edit').on(
|
|
||||||
'change', self.proxy(self.xy_value_change));
|
|
||||||
self.effective_readonly_change();
|
self.effective_readonly_change();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -347,8 +348,6 @@ odoo.define('web_widget_x2many_2d_matrix.widget', function (require) {
|
||||||
start: function()
|
start: function()
|
||||||
{
|
{
|
||||||
var self = this;
|
var self = this;
|
||||||
this.$el.find('.edit').on(
|
|
||||||
'change', self.proxy(this.xy_value_change));
|
|
||||||
this.compute_totals();
|
this.compute_totals();
|
||||||
this.setup_many2one_axes();
|
this.setup_many2one_axes();
|
||||||
this.on("change:effective_readonly",
|
this.on("change:effective_readonly",
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Translation of Odoo Server.
|
||||||
|
# This file contains the translation of the following modules:
|
||||||
|
# * web_x2many_delete_all
|
||||||
|
#
|
||||||
|
# Translators:
|
||||||
|
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Odoo Server 9.0c\n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2017-01-05 01:38+0000\n"
|
||||||
|
"PO-Revision-Date: 2017-01-05 01:38+0000\n"
|
||||||
|
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\n"
|
||||||
|
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: \n"
|
||||||
|
"Language: es\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#. module: web_x2many_delete_all
|
||||||
|
#. openerp-web
|
||||||
|
#: code:addons/web_x2many_delete_all/static/src/xml/web_x2many_delete_all.xml:8
|
||||||
|
#: code:addons/web_x2many_delete_all/static/src/xml/web_x2many_delete_all.xml:13
|
||||||
|
#, python-format
|
||||||
|
msgid "Delete all"
|
||||||
|
msgstr "Eliminar todo"
|
Loading…
Reference in New Issue