plugins/yubikey/yubikey.js
changeset 7 c8fc1493eacd
parent 6 4f85ab095cc8
child 9 65965da01c41
equal deleted inserted replaced
6:4f85ab095cc8 7:c8fc1493eacd
    53         if ( e.keyCode == 27 )
    53         if ( e.keyCode == 27 )
    54         {
    54         {
    55           window.clearInterval(yk_interval);
    55           window.clearInterval(yk_interval);
    56           miniPromptDestroy(this);
    56           miniPromptDestroy(this);
    57         }
    57         }
    58         else if ( this.value.length == 44 && !this.submitted )
    58         else if ( this.value.length >= 44 && !this.submitted )
    59         {
    59         {
    60           this.submitted = true;
    60           this.submitted = true;
    61           yk_handle_submit(this);
    61           yk_handle_submit(this);
    62         }
    62         }
    63         else
    63         else
    64         {
    64         {
    65           $('div.yubikey_bar > img', this.parentNode)
    65           $('div.yubikey_bar > img', this.parentNode)
    66             .css('width', String(this.value.length * 2) + 'px')
    66             .css('width', String(this.value.length * 2) + 'px')
    67             .css('background-position', String(this.value.length - 44) + 'px -88px');
    67             .css('background-position', String((this.value.length > 44 ? 44 : this.value.length) - 44) + 'px -88px');
    68         }
    68         }
    69         e.preventDefault();
    69         e.preventDefault();
    70         e.stopPropagation();
    70         e.stopPropagation();
    71       });
    71       });
    72   mp.appendChild(ta);
    72   mp.appendChild(ta);
    84   mp.appendChild(info);
    84   mp.appendChild(info);
    85 }
    85 }
    86 
    86 
    87 function yk_handle_submit(ta)
    87 function yk_handle_submit(ta)
    88 {
    88 {
    89   if ( !ta.value.match(/^[cbdefghijklnrtuv]{44}$/) )
    89   if ( ta.value.length > 44 || !ta.value.match(/^[cbdefghijklnrtuv]+$/) )
    90   {
    90   {
    91     setTimeout(function()
    91     setTimeout(function()
    92       {
    92       {
    93         yk_mb_construct(ta.parentNode);
    93         var parent = ta.parentNode;
       
    94         var tabackup = {
       
    95           field_id: ta.yk_field_id,
       
    96           status_id: ta.yk_status_id,
       
    97           submit_func: ta.submit_func
       
    98         };
       
    99         yk_mb_construct(parent);
       
   100         var input = parent.getElementsByTagName('input')[0];
       
   101         if ( tabackup.field_id )
       
   102           input.yk_field_id = tabackup.field_id;
       
   103         if ( tabackup.status_id )
       
   104           input.yk_status_id = tabackup.status_id;
       
   105         if ( tabackup.submit_func )
       
   106           input.submit_func = tabackup.submit_func;
    94       }, 1000);
   107       }, 1000);
    95     $('h3', ta.parentNode).text($lang.get('yubiauth_msg_invalid_chars'));
   108     $('h3', ta.parentNode).text($lang.get(ta.value.length > 44 ? 'yubiauth_msg_too_long' : 'yubiauth_msg_invalid_chars'));
    96     $('div.yubikey_bar > img', this.parentNode).addClass('yubikey_bar_error');
   109     $('div.yubikey_bar > img', this.parentNode).addClass('yubikey_bar_error');
    97     return false;
   110     return false;
    98   }
   111   }
    99   
   112   
   100   window.clearInterval(yk_interval);
   113   window.clearInterval(yk_interval);