Browse Source

Merge pull request #218 from initOS/7.0-add_web_text_widget

7.0 add web text widget
pull/297/head
Sylvain LE GAL 9 years ago
parent
commit
22a1dce99a
  1. 21
      web_widget_fieldtext_options/__init__.py
  2. 59
      web_widget_fieldtext_options/__openerp__.py
  3. 8
      web_widget_fieldtext_options/static/src/css/text_limited.css
  4. 68
      web_widget_fieldtext_options/static/src/js/text_limited.js

21
web_widget_fieldtext_options/__init__.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2015 OpenERP s.a. (<http://openerp.com>).
# Copyright (C) 2015 initOS GmbH (<http://www.initos.com>).
#
# 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/>.
#
##############################################################################

59
web_widget_fieldtext_options/__openerp__.py

@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2010-2015 OpenERP s.a. (<http://openerp.com>).
# Copyright (C) 2015 initOS GmbH (<http://www.initos.com>).
#
# 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 text limited widget',
'version': '7.0.1.0.0',
'author': 'initOS GmbH',
'category': 'web',
'description': """
* Add new functionality for TextField.
You can change default values by context varibles 'maxlines' and
'maxlength'.
If data contains more characters or lines, it will be cut.
Example of usage:
<field name="some_text_field"
context="{'maxlines': 8, 'maxlength': 400}"
/>
""",
'website': 'http://www.initos.com',
'license': 'AGPL-3',
'images': [],
'depends': [
'web',
],
'data': [],
'update_xml': [],
'js': [
'static/src/js/text_limited.js',
],
'qweb': [
],
'css': [
'static/src/css/text_limited.css',
],
'demo': [],
'test': [],
'active': False,
'installable': True,
'auto_install': True,
}

8
web_widget_fieldtext_options/static/src/css/text_limited.css

@ -0,0 +1,8 @@
div.oe_form_field.oe_form_field_text {
position: relative;
}
span.length_limit {
position: absolute;
right: 0;
}

68
web_widget_fieldtext_options/static/src/js/text_limited.js

@ -0,0 +1,68 @@
openerp.web_widget_fieldtext_options = function (instance)
{
var QWeb = instance.web.qweb;
var _t = instance.web._t;
instance.web.form.FieldText.include({
template: 'FieldText',
LIMIT_LINES_CONTEXT_KEY: 'maxlines',
LIMIT_CHARS_CONTEXT_KEY: 'maxlength',
events: {
'keyup': function (e) {
if (e.which === $.ui.keyCode.ENTER) {
e.stopPropagation();
}
this.limit_value($(e.target));
},
'change textarea': 'store_dom_value',
},
limit_value: function($textarea)
{
var ctx = this.build_context().eval();
var maxlines = ctx[this.LIMIT_LINES_CONTEXT_KEY]*1
var maxlength = ctx[this.LIMIT_CHARS_CONTEXT_KEY]*1
var value = $textarea.val();
var lines = value.split("\n");
if (maxlines && lines.length > maxlines){
$textarea.val(lines.slice(0, maxlines).join("\n"));
}
if (maxlength && value.length > maxlength){
$textarea.val(value.slice(0, maxlength));
}
this.$el.find('span.length_limit').html(value.length + '/' + maxlength);
},
});
instance.web.form.FieldChar.include({
template: 'FieldChar',
LIMIT_CHARS_CONTEXT_KEY: 'maxlength',
events: {
'keyup': function (e) {
this.limit_value($(e.target));
},
'change textarea': 'store_dom_value',
},
limit_value: function($textarea)
{
var ctx = this.build_context().eval();
var maxlength = ctx[this.LIMIT_CHARS_CONTEXT_KEY]*1
var value = $textarea.val();
if (maxlength && value.length > maxlength){
$textarea.val(value.slice(0, maxlength));
}
this.$el.find('span.length_limit').html(value.length + '/' + maxlength);
},
});
}
Loading…
Cancel
Save