~ubuntu-branches/ubuntu/saucy/phpmyadmin/saucy-proposed

« back to all changes in this revision

Viewing changes to js/keyhandler.js

  • Committer: Package Import Robot
  • Author(s): Thijs Kinkhorst
  • Date: 2013-08-04 13:24:37 UTC
  • mfrom: (1.2.44)
  • Revision ID: package-import@ubuntu.com-20130804132437-jznw8efwy4hr1nms
Tags: 4:4.0.5-1
* New upstream release.
  - Fixes security issue PMASA-2013-10.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
AJAX.registerTeardown("keyhandler.js",function(){$("#table_columns").die("keydown keyup");$("table.insertRowTable").die("keydown keyup")});AJAX.registerOnload("keyhandler.js",function(){$("#table_columns").live("keydown keyup",function(a){onKeyDownArrowsHandler(a.originalEvent)});$("table.insertRowTable").live("keydown keyup",function(a){onKeyDownArrowsHandler(a.originalEvent)})});function onKeyDownArrowsHandler(d){d=d||window.event;var f=(d.srcElement||d.target);if(!f){return}if(f.tagName!="TEXTAREA"&&f.tagName!="INPUT"&&f.tagName!="SELECT"){return}console.log(d);if(navigator.userAgent.toLowerCase().indexOf("applewebkit/")!=-1){if(d.ctrlKey||d.shiftKey||!d.altKey){return}}else{if(!d.ctrlKey||d.shiftKey||d.altKey){return}}if(!f.id){return}var i=f.id.split("_");if(i[0]!="field"||typeof i[2]=="undefined"){return}var b=i[2],h=i[1];var c=null;switch(d.keyCode){case 38:h--;break;case 40:h++;break;case 37:b--;break;case 39:b++;break;default:return}var a=navigator.userAgent.toLowerCase().indexOf("firefox/")>-1;if(a&&d.type=="keyup"){f.selectedIndex=window["selectedIndex_"+f.id]}var g="field_"+h+"_"+b;c=document.getElementById(g);if(!c){g="field_"+h+"_"+b+"_0";c=document.getElementById(g)}if(!c){return}if(d.type=="keydown"){c.focus();if(a){window["selectedIndex_"+c.id]=c.selectedIndex}}if(c.tagName!="SELECT"){c.select()}d.returnValue=false};
 
 
b'\\ No newline at end of file'
 
1
/* vim: set expandtab sw=4 ts=4 sts=4: */
 
2
/**
 
3
  * Allows moving around inputs/select by Ctrl+arrows
 
4
  *
 
5
  * @param object   event data
 
6
  */
 
7
 
 
8
AJAX.registerTeardown('keyhandler.js', function() {
 
9
    $('#table_columns').die('keydown keyup');
 
10
    $('table.insertRowTable').die('keydown keyup');
 
11
});
 
12
 
 
13
AJAX.registerOnload('keyhandler.js', function() {
 
14
    $('#table_columns').live('keydown keyup', function(event) {
 
15
        onKeyDownArrowsHandler(event.originalEvent);
 
16
    });
 
17
    $('table.insertRowTable').live('keydown keyup', function(event) {
 
18
        onKeyDownArrowsHandler(event.originalEvent);
 
19
    });
 
20
});
 
21
 
 
22
function onKeyDownArrowsHandler(e)
 
23
{
 
24
    e = e||window.event;
 
25
    var o = (e.srcElement||e.target);
 
26
    if (!o) {
 
27
        return;
 
28
    }
 
29
    if (o.tagName != "TEXTAREA" && o.tagName != "INPUT" && o.tagName != "SELECT") {
 
30
        return;
 
31
    }console.log(e);
 
32
    if (navigator.userAgent.toLowerCase().indexOf('applewebkit/') != -1) {
 
33
        if (e.ctrlKey || e.shiftKey || !e.altKey) {
 
34
            return;
 
35
        }
 
36
    } else {
 
37
        if (!e.ctrlKey || e.shiftKey || e.altKey) {
 
38
            return;
 
39
        }
 
40
    }
 
41
    if (!o.id) {
 
42
        return;
 
43
    }
 
44
 
 
45
    var pos = o.id.split("_");
 
46
    if (pos[0] != "field" || typeof pos[2] == "undefined") {
 
47
        return;
 
48
    }
 
49
 
 
50
    var x = pos[2], y = pos[1];
 
51
 
 
52
    var nO = null;
 
53
 
 
54
    switch(e.keyCode) {
 
55
        case 38:
 
56
            // up
 
57
            y--;
 
58
            break;
 
59
        case 40:
 
60
            // down
 
61
            y++;
 
62
            break;
 
63
        case 37:
 
64
            // left
 
65
            x--;
 
66
            break;
 
67
        case 39:
 
68
            // right
 
69
            x++;
 
70
            break;
 
71
        default:
 
72
            return;
 
73
    }
 
74
 
 
75
    var is_firefox = navigator.userAgent.toLowerCase().indexOf("firefox/") > -1;
 
76
 
 
77
    // restore selected index, bug #3799
 
78
    if (is_firefox && e.type == "keyup") {
 
79
        o.selectedIndex = window["selectedIndex_" + o.id];
 
80
    }
 
81
 
 
82
    var id = "field_" + y + "_" + x;
 
83
    nO = document.getElementById(id);
 
84
    if (! nO) {
 
85
        id = "field_" + y + "_" + x + "_0";
 
86
        nO = document.getElementById(id);
 
87
    }
 
88
 
 
89
    // skip non existent fields
 
90
    if (! nO) {
 
91
        return;
 
92
    }
 
93
    if (e.type == "keydown") {
 
94
        nO.focus();
 
95
        if (is_firefox) {
 
96
            window["selectedIndex_" + nO.id] = nO.selectedIndex;
 
97
        }
 
98
    }
 
99
    if (nO.tagName != 'SELECT') {
 
100
        nO.select();
 
101
    }
 
102
    e.returnValue = false;
 
103
}