diff -r 315255cd1aef -r 20be4dd42b12 mypackage_wrt/Login.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mypackage_wrt/Login.js Fri Apr 30 15:01:03 2010 +0100 @@ -0,0 +1,91 @@ +// //////////////////////////////////////////////////////////////////////////// +// Symbian Foundation Example Code +// +// This software is in the public domain. No copyright is claimed, and you +// may use it for any purpose without license from the Symbian Foundation. +// No warranty for any purpose is expressed or implied by the authors or +// the Symbian Foundation. +// //////////////////////////////////////////////////////////////////////////// + +// Login to the developer site + +var loginUrlContent = null; +var loginUrlHttpReq = null; +var loginCallback = null; + +var isHideNotifications = true; +function login(callback){ + if ( forumUsername == null || forumPassword == null ) { + loginInitiated = true; + loginInitiatedCallback = callback; + promptForPassword(); + return; + } + loginCallback = callback; + loginInitiated = false; + loginInitiatedCallback = null; + uiManager.showNotification(-1, "wait", "Please wait...", -1); + + var parameters = symbianOrgLoginUsernameField + "=" + forumUsername + + "&" + symbianOrgLoginPasswordField + "=" + forumPassword + + "&submit=Login&image_submit.x=0&image_submit.y=0&image_submit=submit" + + "&referrer="+symbianOrgBaseUrl; + loginUrlHttpReq = new Ajax(); + loginUrlHttpReq.onreadystatechange = loginComplete; + + // initiate the request + loginUrlHttpReq.open('POST', symbianOrgLoginUrl +"?referer="+symbianOrgBaseUrl, true); + loginUrlHttpReq.setRequestHeader("Referer", symbianOrgBaseUrl); + loginUrlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + loginUrlHttpReq.setRequestHeader("Content-length", parameters.length); + loginUrlHttpReq.setRequestHeader("Connection", "close"); + loginUrlHttpReq.send(parameters); +} + +function loginComplete(){ + if ( loginUrlHttpReq == null ) { + return; + } + // complete request? + var readyState = loginUrlHttpReq.readyState; + // attempt to get response status + var responseStatus = null; + try { + responseStatus = loginUrlHttpReq.status; + } catch (noStatusException) {} + if (readyState == 4) { + + if (responseStatus < 300) { + + var content = loginUrlHttpReq.responseText; + if (content.indexOf("LoginWelcome") == -1) { + uiManager.showNotification(3000, "warning", "Login failed."); + promptForPassword(); + } + else { + if (loginCallback != null) { + loginCallback.call(); + } + // ensure we have all the cookies we need + var vbCookieGet = new Ajax(); + var vburl = symbianOrgBaseUrl + "/forum/"; + vbCookieGet.onreadystatechange = forumCookieHarvestComplete; + vbCookieGet.open('GET', vburl, true); + vbCookieGet.send(null); + } + } else if (responseStatus < 400) { + // do nothing, this must be a redirect + } else { + uiManager.hideNotification(); + uiManager.showNotification(3000, "warning", "Login failed."); + promptForPassword(); + } + } +} + +function forumCookieHarvestComplete () { + if (isHideNotifications) { + uiManager.hideNotification(); + } + isHideNotifications = true; +}