Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added web_fields_masks/__init__.py
Empty file.
56 changes: 56 additions & 0 deletions web_fields_masks/__openerp__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
'name': 'Fields masks',
'version': '0.2',
'description': """
Fields masks
==============================================================================

Based on jquery.inputmask 3.x
(https://github.com/RobinHerbots/jquery.inputmask)

An inputmask helps the user with the input by ensuring a predefined format.
This can be useful for dates, numerics, phone numbers, ...



Instructions:
-------------

- Just add data-inputmask="mask" to <field />

Some examples:

<field name="email" data-inputmask="'alias': 'email'" />
<field name="ip_address" data-inputmask="'alias': 'ip'" />
<field name="masked_field" data-inputmask="'mask': '99-9999999'" />


Masking definition:
-------------------

- 9: numeric value
- a: alphabetical value
- *: alphanumeric value

Aliases available:
------------------

- email
- ip: IPv4 addresses
- url

""",
'author': 'Aristobulo Meneses',
'website': 'https://menecio.github.io',
'category': 'web',
'depends': ['web'],
'js': [
'static/lib/jquery.inputmask/jquery.inputmask.js',
'static/lib/jquery.inputmask/jquery.inputmask.extensions.js',
'static/lib/jquery.inputmask/jquery.inputmask.numeric.extensions.js',
'static/lib/jquery.inputmask/jquery.inputmask.regex.extensions.js',
'static/src/js/main.js',
],
'css': [
],
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
/*
Input Mask plugin extensions
http://github.com/RobinHerbots/jquery.inputmask
Copyright (c) 2010 - 2014 Robin Herbots
Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
Version: 0.0.0

Optional extensions on the jquery.inputmask base
*/
(function ($) {
//extra definitions
$.extend($.inputmask.defaults.definitions, {
'A': {
validator: "[A-Za-z]",
cardinality: 1,
casing: "upper" //auto uppercasing
},
'#': {
validator: "[A-Za-z\u0410-\u044F\u0401\u04510-9]",
cardinality: 1,
casing: "upper"
}
});
$.extend($.inputmask.defaults.aliases, {
'url': {
mask: "ir",
placeholder: "",
separator: "",
defaultPrefix: "http://",
regex: {
urlpre1: new RegExp("[fh]"),
urlpre2: new RegExp("(ft|ht)"),
urlpre3: new RegExp("(ftp|htt)"),
urlpre4: new RegExp("(ftp:|http|ftps)"),
urlpre5: new RegExp("(ftp:/|ftps:|http:|https)"),
urlpre6: new RegExp("(ftp://|ftps:/|http:/|https:)"),
urlpre7: new RegExp("(ftp://|ftps://|http://|https:/)"),
urlpre8: new RegExp("(ftp://|ftps://|http://|https://)")
},
definitions: {
'i': {
validator: function (chrs, buffer, pos, strict, opts) {
return true;
},
cardinality: 8,
prevalidator: (function () {
var result = [], prefixLimit = 8;
for (var i = 0; i < prefixLimit; i++) {
result[i] = (function () {
var j = i;
return {
validator: function (chrs, buffer, pos, strict, opts) {
if (opts.regex["urlpre" + (j + 1)]) {
var tmp = chrs, k;
if (((j + 1) - chrs.length) > 0) {
tmp = buffer.join('').substring(0, ((j + 1) - chrs.length)) + "" + tmp;
}
var isValid = opts.regex["urlpre" + (j + 1)].test(tmp);
if (!strict && !isValid) {
pos = pos - j;
for (k = 0; k < opts.defaultPrefix.length; k++) {
buffer[pos] = opts.defaultPrefix[k]; pos++;
}
for (k = 0; k < tmp.length - 1; k++) {
buffer[pos] = tmp[k]; pos++;
}
return { "pos": pos };
}
return isValid;
} else {
return false;
}
}, cardinality: j
};
})();
}
return result;
})()
},
"r": {
validator: ".",
cardinality: 50
}
},
insertMode: false,
autoUnmask: false
},
"ip": { //ip-address mask
mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
definitions: {
'i': {
validator: function (chrs, buffer, pos, strict, opts) {
if (pos - 1 > -1 && buffer[pos - 1] != ".") {
chrs = buffer[pos - 1] + chrs;
if (pos - 2 > -1 && buffer[pos - 2] != ".") {
chrs = buffer[pos - 2] + chrs;
} else chrs = "0" + chrs;
} else chrs = "00" + chrs;
return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
},
cardinality: 1
}
}
},
"email": {
mask: "*{1,20}[.*{1,20}][.*{1,20}][.*{1,20}]@*{1,20}.*{2,6}[.*{1,2}]",
greedy: false
}
});
})(jQuery);
Loading