diff -r ea43ac1ff2ee -r f2a824ce5f18 includes/clientside/static/login.js --- a/includes/clientside/static/login.js Tue Aug 12 00:05:09 2008 -0400 +++ b/includes/clientside/static/login.js Tue Aug 12 00:06:35 2008 -0400 @@ -524,6 +524,59 @@ // Done building the main part of the form form.appendChild(table); + // Field: remember login + if ( logindata.user_level <= USER_LEVEL_MEMBER ) + { + var lbl_remember = document.createElement('label'); + lbl_remember.style.fontSize = 'smaller'; + lbl_remember.style.display = 'block'; + lbl_remember.style.textAlign = 'center'; + + // figure out what text to put in the "remember me" checkbox + // infinite session length? + if ( data.extended_time == 0 ) + { + // yes, infinite + var txt_remember = $lang.get('user_login_ajax_check_remember_infinite'); + } + else + { + if ( data.extended_time % 7 == 0 ) + { + // number of days is a multiple of 7 + // use weeks as our unit + var sess_time = data.extended_time / 7; + var unit = 'week'; + } + else + { + // use days as our unit + var sess_time = data.extended_time; + var unit = 'day'; + } + // more than one week or day? + if ( sess_time != 1 ) + unit += 's'; + + // assemble the string + var txt_remember = $lang.get('user_login_ajax_check_remember', { + session_length: sess_time, + length_units: $lang.get('etc_unit_' + unit) + }); + } + var check_remember = document.createElement('input'); + check_remember.type = 'checkbox'; + // this onclick attribute changes the cookie whenever the checkbox or label is clicked + check_remember.setAttribute('onclick', 'var ck = ( this.checked ) ? "enable" : "disable"; createCookie("login_remember", ck, 3650);'); + if ( readCookie('login_remember') != 'disable' ) + check_remember.setAttribute('checked', 'checked'); + check_remember.id = 'ajax_login_field_remember'; + lbl_remember.appendChild(check_remember); + lbl_remember.innerHTML += ' ' + txt_remember; + + form.appendChild(lbl_remember); + } + // Field: enable Diffie Hellman if ( IE || is_iPhone ) { @@ -626,7 +679,7 @@ } } -window.ajaxLoginSubmitForm = function(real, username, password, captcha) +window.ajaxLoginSubmitForm = function(real, username, password, captcha, remember) { // Perform AES test to make sure it's all working if ( !aes_self_test() ) @@ -648,6 +701,22 @@ d.parentNode.removeChild(d); }, to); } + // "Remember session" switch + if ( typeof(remember) == 'boolean' ) + { + var remember_session = remember; + } + else + { + if ( document.getElementById('ajax_login_field_remember') ) + { + var remember_session = ( document.getElementById('ajax_login_field_remember').checked ) ? true : false; + } + else + { + var remember_session = false; + } + } // Encryption: preprocessor if ( real ) { @@ -695,7 +764,7 @@ // Wait while the browser updates the login window setTimeout(function() { - ajaxLoginSubmitForm(true, username, password, captcha); + ajaxLoginSubmitForm(true, username, password, captcha, remember_session); }, 200); return true; } @@ -750,7 +819,8 @@ dh_public_key: logindata.key_dh, dh_client_key: dh_pub, dh_secret_hash: secret_hash, - level: logindata.user_level + level: logindata.user_level, + remember: remember_session } } else @@ -761,7 +831,8 @@ captcha_code: captcha_code, captcha_hash: captcha_hash, key_aes: hex_md5(crypt_key), - level: logindata.user_level + level: logindata.user_level, + remember: remember_session } } ajaxLoginPerformRequest(json_packet);