diff --git a/web_widget_fieldtext_options/__init__.py b/web_widget_fieldtext_options/__init__.py new file mode 100644 index 00000000..4b46d480 --- /dev/null +++ b/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. (). +# Copyright (C) 2015 initOS GmbH (). +# +# 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 . +# +############################################################################## diff --git a/web_widget_fieldtext_options/__openerp__.py b/web_widget_fieldtext_options/__openerp__.py new file mode 100644 index 00000000..a0fa0832 --- /dev/null +++ b/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. (). +# Copyright (C) 2015 initOS GmbH (). +# +# 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 . +# +############################################################################## +{ + '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: + +""", + '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, +} diff --git a/web_widget_fieldtext_options/static/src/css/text_limited.css b/web_widget_fieldtext_options/static/src/css/text_limited.css new file mode 100644 index 00000000..c01c56bd --- /dev/null +++ b/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; +} diff --git a/web_widget_fieldtext_options/static/src/js/text_limited.js b/web_widget_fieldtext_options/static/src/js/text_limited.js new file mode 100644 index 00000000..83d4c768 --- /dev/null +++ b/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); + }, + +}); +} \ No newline at end of file