forked from Techsystech/web
[MIG] web_translate_dialog
parent
910c4145fd
commit
207266d298
|
@ -1,7 +1,15 @@
|
||||||
|
.. 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
|
||||||
|
|
||||||
|
====================
|
||||||
Web Translate Dialog
|
Web Translate Dialog
|
||||||
====================
|
====================
|
||||||
|
|
||||||
This module replaces the standard translation view by an easy-to-use pop-up view where you can translate all the fields of the object in all the installed languages (for long-time users, it may remind them the translation pop-up of OpenERP 6.1).
|
This module replaces the standard translation view by an easy-to-use pop-up
|
||||||
|
view where you can translate all the fields of the object in all the installed
|
||||||
|
languages (for long-time users, it may remind them the translation pop-up of
|
||||||
|
OpenERP 6.1).
|
||||||
|
|
||||||
This module also features:
|
This module also features:
|
||||||
|
|
||||||
|
@ -12,25 +20,53 @@ This module also features:
|
||||||
Usage
|
Usage
|
||||||
=====
|
=====
|
||||||
|
|
||||||
Go to an object that has translatable fields (*Products* for example) and select *More > Translate* (or click on *Edit* and then click on the flag at the top-right of one of the translatable fields): the translation view will pop-up on your screen. This translation view contains all the translatable fields of the object.
|
Go to an object that has translatable fields (*Products* for example) and
|
||||||
|
select *More > Translate* (or click on *Edit* and then click on the flag at
|
||||||
|
the top-right of one of the translatable fields): the translation view will
|
||||||
|
pop-up on your screen. This translation view contains all the translatable
|
||||||
|
fields of the object.
|
||||||
|
|
||||||
|
If you click in the standard translate icon then the translation view will
|
||||||
|
pop-up with this field only.
|
||||||
|
|
||||||
|
.. 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
|
||||||
|
|
||||||
|
|
||||||
|
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
|
Credits
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
Images
|
||||||
|
------
|
||||||
|
|
||||||
|
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
|
||||||
|
|
||||||
Contributors
|
Contributors
|
||||||
------------
|
------------
|
||||||
|
|
||||||
* Guewen Baconnier (Camptocamp)
|
* Guewen Baconnier (Camptocamp)
|
||||||
|
* Antonio Espinosa <antonio.espinosa@tecnativa.com>
|
||||||
|
|
||||||
Maintainer
|
Maintainer
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. image:: http://odoo-community.org/logo.png
|
.. image:: https://odoo-community.org/logo.png
|
||||||
:alt: Odoo Community Association
|
:alt: Odoo Community Association
|
||||||
:target: http://odoo-community.org
|
:target: https://odoo-community.org
|
||||||
|
|
||||||
This module is maintained by the OCA.
|
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.
|
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 http://odoo-community.org.
|
To contribute to this module, please visit https://odoo-community.org.
|
||||||
|
|
|
@ -1,32 +1,26 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
##############################################################################
|
# Copyright 2012 Guewen Baconnier (Camptocamp SA)
|
||||||
#
|
# Copyright 2016 Antonio Espinosa <antonio.espinosa@tecnativa.com>
|
||||||
# Author: Guewen Baconnier
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
# Copyright 2012 Camptocamp SA
|
{
|
||||||
#
|
"name": "Web Translate Dialog",
|
||||||
# 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": "Web Translate Dialog",
|
|
||||||
"category": "Web",
|
|
||||||
"summary": "Easy-to-use pop-up to translate fields in several languages",
|
"summary": "Easy-to-use pop-up to translate fields in several languages",
|
||||||
|
"version": "9.0.1.0.0",
|
||||||
|
"category": "Web",
|
||||||
|
"website": "https://odoo-community.org/",
|
||||||
|
"author": "Camptocamp, "
|
||||||
|
"Tecnativa, "
|
||||||
|
"Odoo Community Association (OCA)",
|
||||||
"license": "AGPL-3",
|
"license": "AGPL-3",
|
||||||
"author": "Camptocamp,Odoo Community Association (OCA)",
|
"application": False,
|
||||||
"version": "8.0.1.0.0",
|
"installable": True,
|
||||||
"depends": ['web'],
|
"depends": [
|
||||||
'data': ['view/web_translate.xml'],
|
"web",
|
||||||
'qweb': ["static/src/xml/base.xml"],
|
],
|
||||||
'installable': False,
|
"data": [
|
||||||
|
"view/web_translate.xml",
|
||||||
|
],
|
||||||
|
"qweb": [
|
||||||
|
"static/src/xml/base.xml",
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
/* Copyright 2012 Guewen Baconnier (Camptocamp SA)
|
||||||
|
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
|
||||||
|
|
||||||
.openerp .oe_translation_field {
|
.openerp .oe_translation_field {
|
||||||
width: 95%;
|
width: 95%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,38 +1,27 @@
|
||||||
openerp.web_translate_dialog = function (instance) {
|
/* Copyright 2012 Guewen Baconnier (Camptocamp SA)
|
||||||
|
Copyright 2016 Antonio Espinosa <antonio.espinosa@tecnativa.com>
|
||||||
|
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
|
||||||
|
|
||||||
|
odoo.define('web_translate_dialog.translate_dialog', function(require){
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var QWeb = instance.web.qweb,
|
var _ = require('_');
|
||||||
_t = instance.web._t,
|
var $ = require('$');
|
||||||
_lt = instance.web._lt;
|
|
||||||
|
|
||||||
instance.web.FormView.include({
|
var core = require('web.core');
|
||||||
load_form: function(data) {
|
var data = require('web.data');
|
||||||
var self = this;
|
var common = require('web.form_common');
|
||||||
this._super(data);
|
|
||||||
if (this.sidebar) {
|
|
||||||
this.sidebar.add_items('other', _.compact([
|
|
||||||
self.is_action_enabled('edit') && { label: _t('Translate'), callback: self.on_button_translate },
|
|
||||||
]));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
on_button_translate: function() {
|
|
||||||
var self = this;
|
|
||||||
$.when(this.has_been_loaded).then(function() {
|
|
||||||
self.open_translate_dialog(this);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
instance.web.View.include({
|
var FormView = require('web.FormView');
|
||||||
open_translate_dialog: function() {
|
var View = require('web.View');
|
||||||
new instance.web_translate_dialog.TranslateDialog(this).open();
|
var Dialog = require('web.Dialog');
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
instance.web_translate_dialog.TranslateDialog = instance.web.Dialog.extend({
|
var _t = core._t;
|
||||||
|
var QWeb = core.qweb;
|
||||||
|
|
||||||
|
var translateDialog = Dialog.extend({
|
||||||
template: "TranslateDialog",
|
template: "TranslateDialog",
|
||||||
init: function(parent, options, content) {
|
init: function(parent, field, content) {
|
||||||
this._super(parent,
|
this._super(parent,
|
||||||
{title: _t("Translations"),
|
{title: _t("Translations"),
|
||||||
width: '90%',
|
width: '90%',
|
||||||
|
@ -43,12 +32,22 @@ openerp.web_translate_dialog = function (instance) {
|
||||||
this.view_type = parent.fields_view.type || '';
|
this.view_type = parent.fields_view.type || '';
|
||||||
this.$view_form = null;
|
this.$view_form = null;
|
||||||
this.$sidebar_form = null;
|
this.$sidebar_form = null;
|
||||||
this.translatable_fields_keys = _.map(this.view.translatable_fields || [], function(i) { return i.name;});
|
if (!!field) {
|
||||||
|
this.translatable_fields_keys = [field];
|
||||||
|
this.translatable_fields = _.filter(
|
||||||
|
this.view.translatable_fields || [],
|
||||||
|
function(i) {return i.name == field;}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.translatable_fields_keys = _.map(
|
||||||
|
this.view.translatable_fields || [],
|
||||||
|
function(i) {return i.name;}
|
||||||
|
);
|
||||||
|
this.translatable_fields = this.view.translatable_fields.slice(0);
|
||||||
|
}
|
||||||
this.languages = null;
|
this.languages = null;
|
||||||
this.languages_loaded = $.Deferred();
|
this.languages_loaded = $.Deferred();
|
||||||
(new instance.web.DataSetSearch(this,
|
(new data.DataSetSearch(this, 'res.lang', this.view.dataset.get_context(),
|
||||||
'res.lang',
|
|
||||||
this.view.dataset.get_context(),
|
|
||||||
[['translatable', '=', '1']]))
|
[['translatable', '=', '1']]))
|
||||||
.read_slice(['code', 'name'], { sort: 'id' })
|
.read_slice(['code', 'name'], { sort: 'id' })
|
||||||
.then(this.on_languages_loaded);
|
.then(this.on_languages_loaded);
|
||||||
|
@ -70,59 +69,48 @@ openerp.web_translate_dialog = function (instance) {
|
||||||
this.$el.find('.oe_translation_field').change(function() {
|
this.$el.find('.oe_translation_field').change(function() {
|
||||||
$(this).toggleClass('touched', ($(this).val() != $(this).attr('data-value')));
|
$(this).toggleClass('touched', ($(this).val() != $(this).attr('data-value')));
|
||||||
});
|
});
|
||||||
this.$buttons.html(QWeb.render("TranslateDialog.buttons"));
|
this.$footer.html(QWeb.render("TranslateDialog.buttons"));
|
||||||
this.$buttons.find(".oe_form_translate_dialog_save_button").click(function(){
|
this.$footer.find(".oe_form_translate_dialog_save_button").click(function(){
|
||||||
self.on_button_save();
|
self.on_button_save();
|
||||||
self.on_button_close();
|
self.on_button_close();
|
||||||
});
|
});
|
||||||
this.$buttons.find(".oe_form_translate_dialog_cancel_button").click(function(){
|
this.$footer.find(".oe_form_translate_dialog_cancel_button").click(function(){
|
||||||
self.on_button_close();
|
self.on_button_close();
|
||||||
});
|
});
|
||||||
this.initialize_html_fields();
|
|
||||||
|
|
||||||
this.do_load_fields_values();
|
this.do_load_fields_values();
|
||||||
},
|
},
|
||||||
initialize_html_fields: function() {
|
initialize_html_fields: function(lang) {
|
||||||
this.$el.find('.oe_form_field_html textarea').each(function() {
|
var self = this;
|
||||||
var $textarea = $(this);
|
_.each(this.translatable_fields_keys, function(f) {
|
||||||
var width = 100; // forced to fixed size on initialization
|
// Initialize summernote if HTML field
|
||||||
// will be changed to percentage right after
|
self.$el.find('.oe_form_field_html .oe_translation_field[name="' + lang.code + '-' + f + '"]').each(function() {
|
||||||
// the creation
|
var $parent = $(this).summernote({
|
||||||
var height = 250;
|
'focus': false,
|
||||||
$textarea.cleditor({
|
'toolbar': [
|
||||||
width: width, // width not including margins, borders or padding
|
['style', ['style']],
|
||||||
height: height, // height not including margins, borders or padding
|
['font', ['bold', 'italic', 'underline', 'clear']],
|
||||||
controls: // controls to add to the toolbar
|
['fontsize', ['fontsize']],
|
||||||
"bold italic underline strikethrough " +
|
['color', ['color']],
|
||||||
"| removeformat | bullets numbering | outdent " +
|
['para', ['ul', 'ol', 'paragraph']],
|
||||||
"indent | link unlink | source",
|
['table', ['table']],
|
||||||
bodyStyle: // style to assign to document body contained within the editor
|
['insert', ['link', 'picture']],
|
||||||
"margin:4px; color:#4c4c4c; font-size:13px; font-family:'Lucida Grande',Helvetica,Verdana,Arial,sans-serif; cursor:text"
|
['history', ['undo', 'redo']]
|
||||||
});
|
],
|
||||||
|
'prettifyHtml': false,
|
||||||
var $cleditor = $textarea.cleditor()[0];
|
'styleWithSpan': false,
|
||||||
// Down to -- end, this is a workaround for the bug
|
'inlinemedia': ['p'],
|
||||||
// https://bugs.launchpad.net/openerp-web/+bug/1258463
|
'lang': "odoo",
|
||||||
// The editor is initially created with a fixed size so
|
'onChange': function (value) {
|
||||||
// the buggy event is not bound to $(window), then we restore
|
$(this).toggleClass('touched', (value != $(this).attr('data-value')));
|
||||||
// a percentage width and bind the "normal" event without the
|
|
||||||
// CHM's buggy change.
|
|
||||||
$cleditor.$main.width('95%');
|
|
||||||
$cleditor.options.width = '95%';
|
|
||||||
$(window).resize(function() {
|
|
||||||
//Forcefully blurred iframe contentWindow, chrome, IE, safari doesn't trigger blur on window resize and due to which text disappears
|
|
||||||
var contentWindow = $cleditor.$frame[0].contentWindow;
|
|
||||||
if(!$.browser.mozilla && contentWindow){
|
|
||||||
$(contentWindow).trigger('blur');
|
|
||||||
}
|
}
|
||||||
|
}).parent();
|
||||||
|
// Triggers a mouseup to refresh the editor toolbar
|
||||||
|
$parent.find('.note-editable').trigger('mouseup');
|
||||||
|
$parent.find('.note-editing-area').css({
|
||||||
|
minHeight:'100px',
|
||||||
|
minWidth:'260px',
|
||||||
});
|
});
|
||||||
$cleditor.refresh();
|
|
||||||
// -- end
|
|
||||||
|
|
||||||
$cleditor.change(function() {
|
|
||||||
this.updateTextArea();
|
|
||||||
this.$area.toggleClass('touched',
|
|
||||||
(this.$area.val() != this.$area.attr('data-value')));
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -132,16 +120,12 @@ openerp.web_translate_dialog = function (instance) {
|
||||||
self.$el.find('.oe_translation_field[name="' + lang.code + '-' + f + '"]')
|
self.$el.find('.oe_translation_field[name="' + lang.code + '-' + f + '"]')
|
||||||
.val(values[f] || '')
|
.val(values[f] || '')
|
||||||
.attr('data-value', values[f] || '');
|
.attr('data-value', values[f] || '');
|
||||||
|
|
||||||
var $tarea = self.$el.find('.oe_form_field_html .oe_translation_field[name="' + lang.code + '-' + f + '"]');
|
|
||||||
if ($tarea.length) {
|
|
||||||
$tarea.cleditor()[0].updateFrame();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
var $textarea = this.$el.find('textarea.oe_translation_field');
|
this.$el.find('textarea.oe_translation_field').css({
|
||||||
$textarea.css({minHeight:'100px'});
|
minHeight:'100px',
|
||||||
$textarea.autosize();
|
});
|
||||||
$(window).resize(); // triggers the autosize
|
$(window).resize(); // triggers the autosize
|
||||||
|
this.initialize_html_fields(lang);
|
||||||
},
|
},
|
||||||
do_load_fields_values: function() {
|
do_load_fields_values: function() {
|
||||||
var self = this,
|
var self = this,
|
||||||
|
@ -169,7 +153,7 @@ openerp.web_translate_dialog = function (instance) {
|
||||||
self.set_fields_values(lg, rows[0]);
|
self.set_fields_values(lg, rows[0]);
|
||||||
deff.resolve();
|
deff.resolve();
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
});
|
});
|
||||||
return deferred;
|
return deferred;
|
||||||
},
|
},
|
||||||
|
@ -184,12 +168,15 @@ openerp.web_translate_dialog = function (instance) {
|
||||||
}
|
}
|
||||||
translations[field[0]][field[1]] = $(this).val();
|
translations[field[0]][field[1]] = $(this).val();
|
||||||
});
|
});
|
||||||
_.each(translations, function(data, code) {
|
_.each(translations, function(text, code) {
|
||||||
if (code === self.view_language) {
|
if (code === self.view_language) {
|
||||||
self.view.set_values(data);
|
self.view.set_values(text);
|
||||||
}
|
}
|
||||||
translation_mutex.exec(function() {
|
translation_mutex.exec(function() {
|
||||||
return new instance.web.DataSet(self, self.view.dataset.model, self.view.dataset.get_context()).write(self.view.datarecord.id, data, { context : { 'lang': code }});
|
return new data.DataSet(self, self.view.dataset.model,
|
||||||
|
self.view.dataset.get_context())
|
||||||
|
.write(self.view.datarecord.id, text,
|
||||||
|
{ context : { 'lang': code }});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.close();
|
this.close();
|
||||||
|
@ -200,10 +187,42 @@ openerp.web_translate_dialog = function (instance) {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
instance.web.form.AbstractField.include({
|
FormView.include({
|
||||||
on_translate: function() {
|
render_sidebar: function($node) {
|
||||||
// the image next to the fields opens the translate dialog
|
this._super($node);
|
||||||
this.view.open_translate_dialog();
|
if (this.sidebar) {
|
||||||
|
this.sidebar.add_items('other', _.compact([
|
||||||
|
this.is_action_enabled('edit') &&
|
||||||
|
this.translatable_fields.length > 0 && {
|
||||||
|
label: _t('Translate'),
|
||||||
|
callback: this.on_button_translate
|
||||||
|
},
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
on_button_translate: function() {
|
||||||
|
var self = this;
|
||||||
|
$.when(this.has_been_loaded).then(function() {
|
||||||
|
self.open_translate_dialog();
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
View.include({
|
||||||
|
open_translate_dialog: function(field) {
|
||||||
|
new translateDialog(this, field).open();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
common.AbstractField.include({
|
||||||
|
on_translate: function() {
|
||||||
|
// the image next to the fields opens the translate dialog
|
||||||
|
this.view.open_translate_dialog(this.name);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
translateDialog: translateDialog,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}); // odoo.define
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
<templates>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Copyright 2012 Guewen Baconnier (Camptocamp SA)
|
||||||
|
Copyright 2016 Antonio Espinosa <antonio.espinosa@tecnativa.com>
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||||
|
<template>
|
||||||
|
|
||||||
<t t-name="TranslateDialog">
|
<t t-name="TranslateDialog">
|
||||||
<table t-if="widget.view.translatable_fields" class="oe_frame oe_forms oe_translation_form" border="0" cellpadding="0" cellspacing="0" width="100%">
|
<div class="modal-body">
|
||||||
|
<table t-if="widget.view.translatable_fields"
|
||||||
|
class="oe_frame oe_forms oe_translation_form"
|
||||||
|
border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="oe_form_separator" width="1%" nowrap="nowrap">
|
<td class="oe_form_separator" width="1%" nowrap="nowrap">
|
||||||
<div class="separator horizontal">Field</div>
|
<div class="separator horizontal">Field</div>
|
||||||
|
@ -10,25 +17,35 @@
|
||||||
<div class="separator horizontal"><t t-esc="name"/></div>
|
<div class="separator horizontal"><t t-esc="name"/></div>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr t-foreach="widget.view.translatable_fields" t-as="field" t-att-data-field="field.name">
|
<tr t-foreach="widget.translatable_fields" t-as="field"
|
||||||
|
t-att-data-field="field.name">
|
||||||
<td class="oe_form_frame_cell" width="1%" nowrap="nowrap">
|
<td class="oe_form_frame_cell" width="1%" nowrap="nowrap">
|
||||||
<label class="oe_label"><t t-esc="field.string"/>:</label>
|
<label class="oe_label"><t t-esc="field.string"/>:</label>
|
||||||
</td>
|
</td>
|
||||||
<td t-foreach="widget.languages" t-as="lg" class="oe_form_frame_cell">
|
<td t-foreach="widget.languages" t-as="lg" class="oe_form_frame_cell">
|
||||||
<input t-if="field.field.type == 'char' || field.field.type == 'url'" type="text" t-attf-name="#{lg.code}-#{field.name}" value="" data-value="" class="oe_translation_field"/>
|
<input t-if="field.field.type == 'char' || field.field.type == 'url'"
|
||||||
<textarea t-if="field.field.type == 'text'" t-attf-name="#{lg.code}-#{field.name}" data-value="" class="oe_translation_field" ></textarea>
|
type="text" t-attf-name="#{lg.code}-#{field.name}"
|
||||||
|
value="" data-value="" class="oe_translation_field"/>
|
||||||
|
<textarea t-if="field.field.type == 'text'"
|
||||||
|
t-attf-name="#{lg.code}-#{field.name}" data-value=""
|
||||||
|
class="oe_translation_field" ></textarea>
|
||||||
<div t-if="field.field.type == 'html'" class="oe_form_field_html">
|
<div t-if="field.field.type == 'html'" class="oe_form_field_html">
|
||||||
<textarea class="oe_translation_field oe_form_field" t-attf-name="#{lg.code}-#{field.name}" data-value=""/>
|
<textarea class="oe_translation_field oe_form_field"
|
||||||
|
t-attf-name="#{lg.code}-#{field.name}" data-value=""/>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
<t t-name="TranslateDialog.buttons">
|
<t t-name="TranslateDialog.buttons">
|
||||||
<button class="oe_form_translate_dialog_save_button oe_button oe_highlight">Save</button>
|
<button class="btn btn-sm oe_button btn-primary oe_form_translate_dialog_save_button">
|
||||||
<button class="oe_form_translate_dialog_cancel_button oe_button">Cancel</button>
|
<span>Save</span>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-sm oe_button btn-default oe_form_translate_dialog_cancel_button">
|
||||||
|
<span>Cancel</span>
|
||||||
|
</button>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
</templates>
|
</template>
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright 2012 Guewen Baconnier (Camptocamp SA)
|
||||||
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<template id="assets_backend" name="web_translate_dialog assets" inherit_id="web.assets_backend">
|
<template id="assets_backend" name="web_translate_dialog assets"
|
||||||
|
inherit_id="web.assets_backend">
|
||||||
<xpath expr="." position="inside">
|
<xpath expr="." position="inside">
|
||||||
<script type="text/javascript" src="/web_translate_dialog/static/src/js/web_translate_dialog.js"></script>
|
<script type="text/javascript"
|
||||||
<link rel="stylesheet" href="/web_translate_dialog/static/src/css/base.css" id="translate-dialog-stylesheet"/>
|
src="/web_translate_dialog/static/src/js/web_translate_dialog.js"/>
|
||||||
|
<link rel="stylesheet" id="translate-dialog-stylesheet"
|
||||||
|
href="/web_translate_dialog/static/src/css/base.css"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue