Navrang Oza (Open ERP) has proposed merging
lp:~openerp-dev/openerp-web/capslock-check_noz into lp:openerp-web.
Requested reviews:
OpenERP R&D Web Team (openerp-dev-web)
For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/capslock-check_noz/+merge/71817
- To check weather capslock key is ON or OFF.
- Works for database, login forms.
--
https://code.launchpad.net/~openerp-dev/openerp-web/capslock-check_noz/+merge/71817
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openerp-web/capslock-check_noz.
=== modified file 'addons/base/__openerp__.py'
--- addons/base/__openerp__.py 2011-08-09 15:30:21 +0000
+++ addons/base/__openerp__.py 2011-08-17 06:44:24 +0000
@@ -8,6 +8,7 @@
"static/lib/jquery/jquery-1.6.2.js",
"static/lib/jquery.form/jquery.form.js",
"static/lib/jquery.validate/jquery.validate.js",
+ "static/lib/jquery.capslock/jquery.capslock.js",
"static/lib/jquery.ba-bbq/jquery.ba-bbq.js",
"static/lib/jquery.contextmenu/jquery.contextmenu.r2.packed.js",
"static/lib/jquery.blockUI/jquery.blockUI.js",
=== added directory 'addons/base/static/lib/jquery.capslock'
=== added file 'addons/base/static/lib/jquery.capslock/jquery.capslock.js'
--- addons/base/static/lib/jquery.capslock/jquery.capslock.js 1970-01-01 00:00:00 +0000
+++ addons/base/static/lib/jquery.capslock/jquery.capslock.js 2011-08-17 06:44:24 +0000
@@ -0,0 +1,221 @@
+/*
+ * Capslock 0.3 - jQuery plugin to detect if a user's caps lock is on or not.
+ *
+ * Provides events, "caps_lock_on" and "caps_lock_off", that custom functions can be bound to.
+ * The capslock function can be called on a specific element, or a set of elements:
+ * $("#my_textarea").capslock(options); // One textarea
+ * $("textarea").capslock(options); // All textareas
+ *
+ * Copyright (c) 2009 Arthur McLean
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+; // Just in case the previously included plug-in failed to close with a semi-colon.
+(function($) {
+
+ $.fn.capslock = function(options) {
+
+ if (options) $.extend($.fn.capslock.defaults, options);
+
+ this.each(function() {
+ $(this).bind("caps_lock_on", $.fn.capslock.defaults.caps_lock_on);
+ $(this).bind("caps_lock_off", $.fn.capslock.defaults.caps_lock_off);
+
+ $(this).keypress(function(e){
+ check_caps_lock(e);
+ });
+ });
+
+ return this;
+ };
+
+
+
+ // The actual check:
+ function check_caps_lock(e) {
+
+ var ascii_code = e.which;
+ var letter = String.fromCharCode(ascii_code);
+ var upper = letter.toUpperCase();
+ var shift_key = e.shiftKey;
+
+ if(
+ ($.inArray(ascii_code, $.fn.capslock.defaults.ascii_exceptions) === -1)
+ &&
+ (letter === upper)
+ &&
+ !shift_key
+ ) {
+ $(e.target).trigger("caps_lock_on");
+ } else {
+ $(e.target).trigger("caps_lock_off");
+ }
+
+ /*
+ if( (65 <= ascii_code) && (ascii_code <= 90) && !shift_key) {
+ $(e.target).trigger("caps_lock_on");
+ } else {
+ $(e.target).trigger("caps_lock_off");
+ }
+ */
+
+ if($.fn.capslock.defaults.debug) {
+ if(console) {
+ console.log("Ascii code: " + ascii_code);
+ console.log("Letter: " + letter);
+ console.log("Upper Case: " + upper);
+ console.log("Shift key: " + shift_key);
+ }
+ }
+
+ }
+
+ // Public definition of defaults for easy overriding:
+ $.fn.capslock.defaults = {
+ caps_lock_on: function() {},
+ caps_lock_off: function() {},
+ debug: false,
+ ascii_exceptions: [
+ 0, // Null char
+ 1, // Start of Heading
+ 2, // Start of Text
+ 3, // End of Text
+ 4, // End of Transmission
+ 5, // Enquiry
+ 6, // Acknowledgment
+ 7, // Bell
+ 8, // Back Space
+ 9, // Horizontal Tab
+ 10, // Line Feed
+ 11, // Vertical Tab
+ 12, // Form Feed
+ 13, // Carriage Return
+ 14, // Shift Out / X-On
+ 15, // Shift In / X-Off
+ 16, // Data Line Escape
+ 17, // Device Control 1 (oft. XON)
+ 18, // Device Control 2
+ 19, // Device Control 3 (oft. XOFF)
+ 20, // Device Control 4
+ 21, // Negative Acknowledgement
+ 22, // Synchronous Idle
+ 23, // End of Transmit Block
+ 24, // Cancel
+ 25, // End of Medium
+ 26, // Substitute
+ 27, // Escape
+ 28, // File Separator
+ 29, // Group Separator
+ 30, // Record Separator
+ 31, // Unit Separator
+ 32, // Space
+ 33, // Exclamation mark
+ 34, // Double quotes (or speech marks)
+ 35, // Number
+ 36, // Dollar
+ 37, // Procenttecken
+ 38, // Ampersand
+ 39, // Single quote
+ 40, // Open parenthesis (or open bracket)
+ 41, // Close parenthesis (or close bracket)
+ 42, // Asterisk
+ 43, // Plus
+ 44, // Comma
+ 45, // Hyphen
+ 46, // Period, dot or full stop
+ 47, // Slash or divide
+ 48, // Zero
+ 49, // One
+ 50, // Two
+ 51, // Three
+ 52, // Four
+ 53, // Five
+ 54, // Six
+ 55, // Seven
+ 56, // Eight
+ 57, // Nine
+ 58, // Colon
+ 59, // Semicolon
+ 60, // Less than (or open angled bracket)
+ 61, // Equals
+ 62, // Greater than (or close angled bracket)
+ 63, // Question mark
+ 64, // At symbol
+ 91, // Opening bracket
+ 92, // Backslash
+ 93, // Closing bracket
+ 94, // Caret - circumflex
+ 95, // Underscore
+ 96, // Grave accent
+ 123, // Opening brace
+ 124, // Vertical bar
+ 125, // Closing brace
+ 126, // Equivalency sign - tilde
+ 127, // Delete
+ 128, // Euro sign
+ 129, // Unassigned?
+ 130, // Single low-9 quotation mark
+ 132, // Double low-9 quotation mark
+ 133, // Horizontal ellipsis
+ 134, // Dagger
+ 135, // Double dagger
+ 136, // Modifier letter circumflex accent
+ 137, // Per mille sign
+ 139, // Single left-pointing angle quotation
+ 141, // Unassigned?
+ 143, // Unassigned?
+ 144, // Unassigned?
+ 145, // Left single quotation mark
+ 146, // Right single quotation mark
+ 147, // Left double quotation mark
+ 148, // Right double quotation mark
+ 149, // Bullet
+ 150, // En dash
+ 151, // Em dash
+ 152, // Small tilde
+ 153, // Trade mark sign
+ 155, // Single right-pointing angle quotation mark
+ 157, // Unassigned?
+ 160, // Non-breaking space
+ 161, // Inverted exclamation mark
+ 162, // Cent sign
+ 163, // Pound sign
+ 164, // Currency sign
+ 165, // Yen sign
+ 166, // Pipe, Broken vertical bar
+ 167, // Section sign
+ 168, // Spacing diaeresis - umlaut
+ 169, // Copyright sign
+ 170, // Feminine ordinal indicator
+ 171, // Left double angle quotes
+ 172, // Not sign
+ 173, // Soft hyphen
+ 174, // Registered trade mark sign
+ 175, // Spacing macron - overline
+ 176, // Degree sign
+ 177, // Plus-or-minus sign
+ 178, // Superscript two - squared
+ 179, // Superscript three - cubed
+ 180, // Acute accent - spacing acute
+ 181, // Micro sign
+ 182, // Pilcrow sign - paragraph sign
+ 183, // Middle dot - Georgian comma
+ 184, // Spacing cedilla
+ 185, // Superscript one
+ 186, // Masculine ordinal indicator
+ 187, // Right double angle quotes
+ 188, // Fraction one quarter
+ 189, // Fraction one half
+ 190, // Fraction three quarters
+ 191, // Inverted question mark
+ 215, // Multiplication sign
+ 247 // Division sign
+ ]
+ };
+
+})(jQuery);
+
=== modified file 'addons/base/static/src/css/base.css'
--- addons/base/static/src/css/base.css 2011-08-16 14:30:38 +0000
+++ addons/base/static/src/css/base.css 2011-08-17 06:44:24 +0000
@@ -144,6 +144,11 @@
display: none;
}
+img#caps_on_img {
+ position: fixed;
+ margin: 2px 0 0 -20px;
+}
+
/* Database */
.openerp.database_block .db_options_row {
height: 100%;
=== added file 'addons/base/static/src/img/caps-warning.png'
Binary files addons/base/static/src/img/caps-warning.png 1970-01-01 00:00:00 +0000 and addons/base/static/src/img/caps-warning.png 2011-08-17 06:44:24 +0000 differ
=== removed file 'addons/base/static/src/img/db.png'
Binary files addons/base/static/src/img/db.png 2011-06-24 06:52:12 +0000 and addons/base/static/src/img/db.png 1970-01-01 00:00:00 +0000 differ
=== modified file 'addons/base/static/src/js/chrome.js'
--- addons/base/static/src/js/chrome.js 2011-08-16 14:25:15 +0000
+++ addons/base/static/src/js/chrome.js 2011-08-17 06:44:24 +0000
@@ -171,6 +171,30 @@
}
});
+openerp.base.Capslock = openerp.base.Widget.extend({
+ init: function(parent, element_id) {
+ this._super(parent, element_id);
+ },
+ start: function() {
+ $('input[type=password]').each(function() {
+ $(this).focus(function() {
+ var img_class = $(this).attr('name') + '_warn_img';
+ var options = {
+ caps_lock_on: function() {
+ if ($('img.' + img_class).length == 0) {
+ $("<img class=" + img_class + " src='/base/static/src/img/caps-warning.png' title='Caps lock is ON' id='caps_on_img'></img>").insertAfter($(this));
+ }
+ },
+ caps_lock_off: function() {
+ if ($('img.' + img_class)) $('img.' + img_class).remove();
+ }
+ };
+ $(this).capslock(options);
+ });
+ });
+ }
+});
+
openerp.base.Database = openerp.base.Widget.extend({
init: function(parent, element_id, option_id) {
this._super(parent, element_id);
@@ -178,6 +202,8 @@
},
start: function() {
this.$element.html(QWeb.render("Database", this));
+ this.capslock = new openerp.base.Capslock();
+
this.$element.closest(".openerp")
.removeClass("login-mode")
.addClass("database_block");
@@ -291,8 +317,9 @@
},
do_create: function() {
var self = this;
- self.$option_id.html(QWeb.render("CreateDB", self));
-
+ self.$option_id.html(QWeb.render("CreateDB", self));
+ this.capslock.start();
+
self.$option_id.find("form[name=create_db_form]").validate({
submitHandler: function (form) {
var fields = $(form).serializeArray();
@@ -318,6 +345,7 @@
do_drop: function() {
var self = this;
self.$option_id.html(QWeb.render("DropDB", self));
+ this.capslock.start();
self.$option_id.find("form[name=drop_db_form]").validate({
submitHandler: function (form) {
@@ -367,7 +395,8 @@
do_backup: function() {
var self = this;
self.$option_id.html(QWeb.render("BackupDB", self));
-
+ this.capslock.start();
+
self.$option_id.find("form[name=backup_db_form]").validate({
submitHandler: function (form) {
$.blockUI();
@@ -406,6 +435,7 @@
do_restore: function() {
var self = this;
self.$option_id.html(QWeb.render("RestoreDB", self));
+ this.capslock.start();
self.$option_id.find("form[name=restore_db_form]").validate({
submitHandler: function (form) {
@@ -445,7 +475,8 @@
do_change_password: function() {
var self = this;
self.$option_id.html(QWeb.render("Change_DB_Pwd", self));
-
+ this.capslock.start();
+
self.$option_id.find("form[name=change_pwd_form]").validate({
messages: {
old_pwd: "Please enter your previous password",
@@ -500,8 +531,12 @@
},
display: function() {
var self = this;
-
+
this.$element.html(QWeb.render("Login", this));
+
+ this.capslock = new openerp.base.Capslock();
+ this.capslock.start();
+
this.database = new openerp.base.Database(
this, "oe_database", "oe_db_options");
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp