# HG changeset patch # User Dan # Date 1203875527 18000 # Node ID 3a1c99845ca87bca684ecb7527ec57c6302a5b02 # Parent 31c23016ab626557ed2f4e786045789b3b8a8de0 Merging in changes from Nighthawk diff -r 31c23016ab62 -r 3a1c99845ca8 includes/clientside/static/login.js --- a/includes/clientside/static/login.js Sun Feb 24 12:50:52 2008 -0500 +++ b/includes/clientside/static/login.js Sun Feb 24 12:52:07 2008 -0500 @@ -327,6 +327,10 @@ } // Rid ourselves of any loading windows ajaxLoginSetStatus(AJAX_STATUS_DESTROY); + if ( IE ) + { + alert('Login: got AJAX response'); + } // Main mode switch switch ( response.mode ) { @@ -386,6 +390,10 @@ ajaxLoginSubmitForm(); return false; } + if ( IE ) + { + form.style.marginTop = '-20px'; + } // Using tables to wrap form elements because it results in a // more visually appealing form. Yes, tables suck. I don't really @@ -473,22 +481,41 @@ form.appendChild(table); // Field: enable Diffie Hellman - var lbl_dh = document.createElement('label'); - lbl_dh.style.fontSize = 'smaller'; - lbl_dh.style.display = 'block'; - lbl_dh.style.textAlign = 'center'; - var check_dh = document.createElement('input'); - check_dh.type = 'checkbox'; - // this onclick attribute changes the cookie whenever the checkbox or label is clicked - check_dh.setAttribute('onclick', 'var ck = ( this.checked ) ? "enable" : "disable"; createCookie("diffiehellman_login", ck, 3650);'); - if ( readCookie('diffiehellman_login') != 'disable' ) - check_dh.setAttribute('checked', 'checked'); - check_dh.id = 'ajax_login_field_dh'; - lbl_dh.appendChild(check_dh); - lbl_dh.innerHTML += $lang.get('user_login_ajax_check_dh'); - form.appendChild(lbl_dh); + if ( IE ) + { + var lbl_dh = document.createElement('span'); + lbl_dh.style.fontSize = 'smaller'; + lbl_dh.style.display = 'block'; + lbl_dh.style.textAlign = 'center'; + lbl_dh.innerHTML = $lang.get('user_login_ajax_check_dh_ie'); + form.appendChild(lbl_dh); + } + else + { + var lbl_dh = document.createElement('label'); + lbl_dh.style.fontSize = 'smaller'; + lbl_dh.style.display = 'block'; + lbl_dh.style.textAlign = 'center'; + var check_dh = document.createElement('input'); + check_dh.type = 'checkbox'; + // this onclick attribute changes the cookie whenever the checkbox or label is clicked + check_dh.setAttribute('onclick', 'var ck = ( this.checked ) ? "enable" : "disable"; createCookie("diffiehellman_login", ck, 3650);'); + if ( readCookie('diffiehellman_login') != 'disable' ) + check_dh.setAttribute('checked', 'checked'); + check_dh.id = 'ajax_login_field_dh'; + lbl_dh.appendChild(check_dh); + lbl_dh.innerHTML += $lang.get('user_login_ajax_check_dh'); + form.appendChild(lbl_dh); + } - div.appendChild(form); + if ( IE ) + { + div.innerHTML += form.outerHTML; + } + else + { + div.appendChild(form); + } // Diagnostic / help links // (only displayed in login, not in re-auth) @@ -513,10 +540,24 @@ logindata.mb_inner.appendChild(div); // Post operations: field focus - if ( data.username ) - f_password.focus(); + if ( IE ) + { + setTimeout( + function() + { + if ( logindata.loggedin_username ) + document.getElementById('ajax_login_field_password').focus(); + else + document.getElementById('ajax_login_field_username').focus(); + }, 200); + } else - f_username.focus(); + { + if ( data.username ) + f_password.focus(); + else + f_username.focus(); + } // Post operations: show captcha window if ( show_captcha ) @@ -526,6 +567,7 @@ logindata.key_aes = data.aes_key; logindata.key_dh = data.dh_public_key; logindata.captcha_hash = show_captcha; + logindata.loggedin_username = data.username // Are we locked out? If so simulate an error and disable the controls if ( data.lockout_info.lockout_policy == 'lockout' && data.locked_out ) @@ -573,8 +615,20 @@ } else { - // The user probably clicked ok when the form wasn't in there. - return false; + if ( IE ) + { + // IE doesn't have this control, continue silently IF the rest + // of the login form is there + if ( !document.getElementById('ajax_login_field_username') ) + { + return false; + } + } + else + { + // The user probably clicked ok when the form wasn't in there. + return false; + } } if ( !username ) { diff -r 31c23016ab62 -r 3a1c99845ca8 includes/clientside/static/pwstrength.js --- a/includes/clientside/static/pwstrength.js Sun Feb 24 12:50:52 2008 -0500 +++ b/includes/clientside/static/pwstrength.js Sun Feb 24 12:52:07 2008 -0500 @@ -200,11 +200,11 @@ language_onload(); } else - { + { return { - color: '#000000', - fgcolor: '#666666', - str: 'Language init failed', + 'color' : '#000000', + 'fgcolor' : '#666666', + 'str' : 'Language init failed' }; } } diff -r 31c23016ab62 -r 3a1c99845ca8 includes/sessions.php --- a/includes/sessions.php Sun Feb 24 12:50:52 2008 -0500 +++ b/includes/sessions.php Sun Feb 24 12:52:07 2008 -0500 @@ -2864,7 +2864,6 @@ $q = $this->sql('SELECT code_id, code FROM ' . table_prefix . "captcha WHERE session_id = '$hash' AND source_ip = '{$_SERVER['REMOTE_ADDR']}';"); if ( $db->numrows() < 1 ) { - die("session manager: no rows for captcha_code $hash"); return false; } diff -r 31c23016ab62 -r 3a1c99845ca8 includes/wikiformat.php --- a/includes/wikiformat.php Sun Feb 24 12:50:52 2008 -0500 +++ b/includes/wikiformat.php Sun Feb 24 12:52:07 2008 -0500 @@ -150,8 +150,8 @@ chdir(ENANO_ROOT); $class = 'Text_Wiki_' . $parser; - $c2 = '._includes_wikiengine_' . $parser; - $file = str_replace('_', '/', $c2).'.php'; + $c2 = $parser; + $file = ENANO_ROOT . '/includes/wikiengine/' . str_replace('_', '/', $c2).'.php'; if (!class_exists($class)) { $fp = @fopen($file, 'r', true); if ($fp === false) { diff -r 31c23016ab62 -r 3a1c99845ca8 language/english/user.json --- a/language/english/user.json Sun Feb 24 12:50:52 2008 -0500 +++ b/language/english/user.json Sun Feb 24 12:52:07 2008 -0500 @@ -68,6 +68,7 @@ login_ajax_loggingin: 'Logging in...', login_ajax_msg_used_temp_pass: 'You have logged in using a temporary password. Before you can log in, you must finish resetting your password. Do you want to reset your real password now?', login_ajax_check_dh: 'Enable strong encryption during logon? Learn more', + login_ajax_check_dh_ie: 'Use a standards-compliant browser to help protect your password. Learn more', err_key_not_found: 'Enano couldn\'t look up the encryption key used to encrypt your password. This most often happens if a cache rotation occurred during your login attempt, or if you refreshed the login page.', err_key_not_found_cleared: 'It seems that the list of encryption keys used for login information has reached its maximum length, thus preventing new keys from being inserted. The list has been automatically cleared. Please try logging in again; if you are still unable to log in, please contact the site administration.', diff -r 31c23016ab62 -r 3a1c99845ca8 themes/oxygen/footer.tpl --- a/themes/oxygen/footer.tpl Sun Feb 24 12:50:52 2008 -0500 +++ b/themes/oxygen/footer.tpl Sun Feb 24 12:52:07 2008 -0500 @@ -55,7 +55,9 @@ // This initializes the Javascript runtime when the DOM is ready - not when the page is // done loading, because enano-lib-basic still has to load some 15 other script files // check for the init function - this is a KHTML fix - if ( typeof ( enano_init ) == 'function' ) + // This doesn't seem to work properly in IE in 1.1.x - there are some problems with + // tinyMCE and l10n. + if ( typeof ( enano_init ) == 'function' && !IE ) { enano_init(); window.onload = function(e) { };