GBrowse
view release on metacpan or search on metacpan
htdocs/js/login.js view on Meta::CPAN
var LoginScript = '../../gbrowse/';
var Logged = false;
var OpenIDMenu = false;
var ImgLocation, AppName, AppNameLong; // General Information
var Source, CurrentUser, SessionID, LoginPage, EditDetails; // Dynamic Variables
var UsingOpenID, OpenIDCount, SelectedID; // OpenID Variables
////////////////////////////////////////////////////////////////////////////////////
// Logged = true if the user is logged in, false otherwise.
// OpenIDMenu = true if the user is viewing the openID login menu.
// OpenIDMenu = true if the user is viewing the openID login menu.
// CurrentUser = holds the value of the currently logged in username.
// SessionID = holds the value of the current session id.
// LoginPage = holds the value of the current login page name.
// EditDetails = holds the value of the current account details page name.
// UsingOpenID = true if the user is logged in with an openID only account.
// OpenIDCount = holds the number of openIDs associated with a given account.
// SelectedID = holds the value of the selected openID which is to be removed.
////////////////////////////////////////////////////////////////////////////////////
//Loads the global variables for the rest of the script
function load_login_globals(images,app,applong,source) {
ImgLocation = images; // eg. /gbrowse2/images/openid
AppName = app; // eg. GBrowse
AppNameLong = applong; // eg. The Generic Genome Browser
Source = source; // eg. "yeast"
}
//Formats the entire login popup
function load_login_balloon(event,session,username,openid) {
SessionID = session;
SelectedID = '';
LoginPage = 'main';
UsingOpenID = openid;
var html = '<form id=loginMain method=post onSubmit=\'return false;\'>' +
//Title at top of GBox
'<div style=border-bottom-style:solid;border-width:1px;padding-left:3px>' +
'<b id=loginTitle>' + Controller.translate('LOG_IN') + '</b></div>' +
'<font face=Arial size=2>' +
//Table containing login form
'<table border=0 id=loginTable cellspacing=0 cellpadding=3 align=center width=100% style=padding-top:3px>' +
//Warning message
'<tbody><tr><td id=loginWarning colspan=2 align=center style=display:none;' +
'color:red;padding-bottom:3px>' + Controller.translate('ALL_FIELDS_REQUIRED') +
'</td></tr></tbody>' +
//"Edit Details" selection buttons
'<tbody>' +
'<tr id=loginDSelect style=display:none;><td colspan=2 align=left>' +
'<ul style=\'margin:0px 0px 0px 18px\'>' +
'<li id=loginChgEmail><a href=#email onClick=edit_details(\'email\')>' +
Controller.translate('CHANGE_MY_EMAIL') + '</a></li>' +
'<li id=loginChgName><a href=#email onClick=edit_details(\'gecos\')>' +
Controller.translate('CHANGE_MY_NAME') + '</a></li>' +
'<li id=loginChgPass><a href=#pass onClick=edit_details(\'password\')>' +
Controller.translate('CHANGE_MY_PASSWORD') + '</a></li>' +
(Controller.can_openid?
'<li><a href=#add onClick=edit_details(\'openid-add\')>' +
Controller.translate('ADD_OPENID') + '</a></li>' +
'<li><a href=#remove onClick=edit_details(\'openid-remove\')>' +
Controller.translate('LIST_REMOVE_OPENIDS') + '</a></li>' : ""
) +
'<li><a href=#delete onClick=edit_details(\'delete\')>' +
Controller.translate('DELETE_MY_ACCOUNT') + '</a></li>' +
'</ul></td></tr>' +
'</tbody>' +
//Input text boxes
htdocs/js/login.js view on Meta::CPAN
'<tr><td id=loginSpacing colspan=2 style=display:none><br></td></tr>' +
//"Edit Details" submit and cancel buttons
'<tr><td id=loginDButtons colspan=2 align=center style=display:none;' +
'padding-bottom:3px;padding-top:3px>' +
'<input id=loginDSubmit2 style=font-size:90% type=button value=\'' + Controller.translate('REMOVE') + '\'' +
'onClick=edit_details(\'openid-remove-verify\'); />' +
'<input id=loginDSubmit style=font-size:90% type=button value=\'' + Controller.translate('SUBMIT') + '\'' +
'onClick=login_loading(true);$(\'loginWarning\').hide();edit_details_verify(); />' +
' ' +
'<input id=loginDCancel style=font-size:90% type=button value=\'' + Controller.translate('CANCEL') + '\'' +
'onClick=edit_details(\'home\') /></td></tr>' +
//Register, My Account and Forgotten Password selections
'<tr id=loginOpts align=center><td id=loginOptsContent1 colspan=2><font size=1>' +
(Controller.can_register?
'<a href=#register onClick=login_page_change(\'create\');>' + Controller.translate('REGISTER') + '</a> / ' : '') +
'<a href=#forgot onClick=login_page_change(\'forgot\');>' + Controller.translate('FORGOTTEN_PASSWORD') + '</a>' +
'</font></td>' +
'<td id=loginOptsContent2 colspan=2 style=display:none;><font size=1>' +
Controller.translate('REGISTER') + ' / ' + ' / ' + Controller.translate('FORGOTTEN_PASSWORD') + '</font></td>' +
'</tr>' +
'</tbody>' +
//Switch between regular and openid login pages
(Controller.can_openid?
'<tbody id=loginOpenID>' +
'<tr><td id=loginOpenIDY colspan=2 align=center style=padding-top:12px>' +
' <a href=#openid onClick=login_page_openid(true)><img border=0 src="'+ImgLocation+'/openid-logo.gif" />'+
Controller.translate('SIGN_IN') + '</a> ' +
Controller.translate('WITH_OPENID') + '</td></tr>' +
'<tr><td id=loginOpenIDN colspan=2 align=center style=display:none;padding-top:12px>' +
Controller.translate('DONT_HAVE_OPENID') + ' <a href=#noopenid onClick=login_page_openid(false)>' +
Controller.translate('GO_BACK') + '</a></td></tr>' +
'</tbody>' : ""
) +
'</table></font>'+
'<img id="loginBusy" src="'+Controller.button_url('spinner.gif')+'" style="display:none;float:left" />' +
' <a style="float:right;font-size:90%" href="javascript:void(0)" '+
'onClick="Balloon.prototype.hideTooltip(1);login_blackout(false)">'
+ Controller.translate('CLOSE') + '</a>' +
'</form>';
//GBox.showTooltip(event,html,1,320);
GBox.showTooltip(event,html,1,320);
if ($('loginMain'))
$('loginMain').style.width = '320';
//If the user is logged in, display only the "edit account details" page when login is called
if(username != false) {
Logged = true;
CurrentUser = username;
login_page_change('edit');
edit_details('home');
} else {
CurrentUser = '';
}
//Format the login popup accordingly if it is opened with the openid login screen
if(OpenIDMenu) {login_page_openid(true);}
return;
}
//Shows, hides, and changes the titles of elements for a given page in the login popup
function login_page_change(page) {
LoginPage = page;
login_loading(false);
$('loginPass').value = '';
$('loginPass2').value = '';
$('loginWarning').hide();
if (Controller.can_openid)
$('loginOpenID').hide();
switch(page) {
case 'main':
$('loginWarning').style.color = 'red';
$('loginTitle').innerHTML = Controller.translate('LOG_IN');
$('loginSubmit').value = Controller.translate('LOG_IN');
$('loginCancel').value = Controller.translate('CANCEL');
if (Controller.can_openid)
$('loginOpenID').blur();
$('loginOpts').blur();
if (Controller.can_openid)
$('loginOpenID').show();
login_show_rows('loginNorm',new Array('loginSubmit'));
// $('loginERow').hide(); $('loginSubmit').show();
// $('loginFRow').hide();
// $('loginP2Row').hide(); $('loginDSelect').hide();
break;
case 'create':
$('loginTitle').innerHTML = Controller.translate('REGISTER');
$('loginSubmit').value = Controller.translate('REGISTER');
login_show_rows('loginNorm',new Array('loginERow','loginFRow','loginP2Row'));
$('loginSubmit').show();
$('loginCancel').show();
// $('loginERow').show();
// $('loginFRow').show();
// $('loginP2Row').show();
break;
case 'forgot':
$('loginTitle').innerHTML = Controller.translate('FORGOT_MY_PASSWORD');
$('loginSubmit').value = Controller.translate('EMAIL_MY_PASSWORD');
login_show_rows('loginNorm',new Array('loginERow'));
// $('loginERow').show();
break;
case 'resend':
$('loginTitle').innerHTML = Controller.translate('RESEND_CONFIRM_EMAIL');
$('loginSubmit').value = Controller.translate('GO_BACK');
$('loginNorm').hide();
$('loginOptions').hide();
return;
// $('loginURow').hide(); $('loginERow').hide(); $('loginBreak').hide();
// $('loginPRow').hide(); $('loginP2Row').hide(); $('loginSubmit').hide();
//$('loginFRow').hide(); $('loginOpts').hide(); $('loginRemember').hide();
break;
case 'edit':
$('loginTitle').innerHTML = Controller.translate('EDIT_ACCOUNT_DETAILS',CurrentUser);
$('loginSubmit').value = Controller.translate('CONTINUE');
if (Controller.can_openid)
$('loginOpenID').show();
break;
default:
return;
}
if(page == 'main') {
$('loginOpts').show(); $('loginRemember').show();
$('loginCancel').hide(); $('loginRememberTxt').show();
} else {
$('loginOpts').hide(); $('loginRemember').hide();
$('loginCancel').show(); $('loginRememberTxt').hide();
}
if(page =='forgot') {
$('loginBreak').hide(); $('loginURow').hide(); $('loginPRow').hide();
} else {
$('loginBreak').show(); $('loginURow').show(); $('loginPRow').show();
}
if(page == 'forgot') {
$('loginTable').style.paddingTop = '18px';
$('loginButtons').style.paddingTop = '18px';
} else if(page == 'edit') {
$('loginTable').style.paddingTop = '12px';
$('loginButtons').style.paddingTop = '12px';
} else {
$('loginTable').style.paddingTop = '3px';
$('loginButtons').style.paddingTop = '3px';
}
if (Controller.can_openid) {
if(OpenIDMenu && ((page == 'main') || (page == 'edit'))) {
$('loginDOpenid').show(); $('loginNorm').hide(); $('loginDONew').focus();
} else {
$('loginDOpenid').hide(); $('loginNorm').show();
if(page == 'forgot') {$('loginEmail').focus();}
else {$('loginUser').focus();}
}
}
return;
}
function login_show_rows(tableid,rows) {
var table = $(tableid);
if (table == null) return;
var all = table.select('tr');
all.each(function(a){a.hide()});
rows.each(function(a){$(a).show()});
}
//Switches between a normal username/pass form and an openid form
function login_page_openid(openID) {
$('loginWarning').hide();
if(openID) {
OpenIDMenu = true;
$('loginOpenIDY').hide(); $('loginDOpenid').show();
$('loginOpenIDN').show(); $('loginNorm').hide();
$('loginDONew').focus();
login_openid_html('http://youropenidhere',7,14);
} else {
OpenIDMenu = false;
$('loginOpenIDY').show(); $('loginDOpenid').hide();
$('loginOpenIDN').hide(); $('loginNorm').show();
$('loginUser').focus();
}
}
//Used to disable everything while AJAX requests are being processed
function login_loading(toggle) {
if(toggle) {
$('loginSubmit').disabled = true; $('loginCancel').disabled = true;
$('loginDSubmit').disabled = true; $('loginDCancel').disabled = true;
$('loginOptsContent1').hide(); $('loginOptsContent2').show();
if (Controller.can_openid) {
$('loginOpenIDY').innerHTML = Controller.translate('SIGN_IN') + ' ' + Controller.translate('WITH_OPENID');
$('loginOpenIDN').innerHTML = Controller.translate('DONT_HAVE_OPENID') + ' ' + Controller.translate('GO_BACK');
}
} else {
$('loginSubmit').disabled = false; $('loginCancel').disabled = false;
$('loginDSubmit').disabled = false; $('loginDCancel').disabled = false;
$('loginOptsContent1').show(); $('loginOptsContent2').hide();
if (Controller.can_openid) {
$('loginOpenIDY').innerHTML = ' <a href=#openid onClick=' + 'login_page_openid(true)><img src="'+ImgLocation+'/openid-logo.gif" />' + Controller.translate('SIGN_IN') + '</a> ' +
Controller.translate('WITH_OPENID');
$('loginOpenIDN').innerHTML = Controller.translate('DONT_HAVE_OPENID') + ' <a href=#noopenid onClick=' +
'login_page_openid(false)>' + Controller.translate('GO_BACK') + '</a>.';
}
}
}
//Checks to make sure that all the information required by a given page is there when "Submit" is clicked
function validate_info() {
var user = $('loginUser').getValue().length;
var fullname = $('loginFullName').getValue().length;
var email = $('loginEmail').getValue().length;
var pass = $('loginPass').getValue();
var pass2 = $('loginPass2').getValue();
if (Controller.can_openid)
var openid = $('loginDONew').getValue();
var html = '<' + String($('loginWarning').innerHTML).split('<')[2] + '</font>';
switch(LoginPage) {
case 'create':
if(user==0 || email==0 || pass.length==0 || pass2.length==0) {
$('loginWarning').innerHTML = Controller.translate('ALL_FIELDS_REQUIRED');
} else if(pass != pass2) {
$('loginWarning').innerHTML = Controller.translate('PASSWORDS_DO_NOT_MATCH');
} else {
add_user();
return;
}
break;
case 'forgot':
if(email==0) {$('loginWarning').innerHTML = Controller.translate('ALL_FIELDS_REQUIRED');}
else {email_user_info();return;}
break;
case 'new-openid':
if(user==0) {
$('loginWarning').innerHTML = Controller.translate('ALL_FIELDS_REQUIRED') + '<br>' + html;
} else {
add_openid_user(CurrentUser,openid);
return;
}
break;
default:
if(OpenIDMenu) {
if(openid.length==0 || openid=='http://' || openid=='https://' || openid.indexOf('.')==-1) {
$('loginWarning').innerHTML = Controller.translate('TYPE_PROPER_OPENID');
} else {
check_openid(openid);
return;
}
} else {
if(user==0 || pass.length==0) {
$('loginWarning').innerHTML = Controller.translate('ALL_FIELDS_REQUIRED');
} else {
login_validation();
return;
}
}
break;
}
$('loginWarning').show();
login_loading(false);
return;
}
//******************************************************************
// Create New User Functions:
//******************************************************************
//Adds the user to the database (regular login)
function add_user() {
var username = $('loginUser').getValue();
var fullname = $('loginFullName').getValue();
var password = $('loginPass').getValue();
var email = $('loginEmail').getValue();
$('loginBusy').show();
new Ajax.Request(LoginScript+Source+'/',{
method: 'post',
parameters: {action: 'gbrowse_login',
login_action: ['add_user_check'],
user: username,
fullname: fullname,
email: email,
pass: password,
session: SessionID
},
onSuccess: function (transport) {
$('loginBusy').hide();
var results = transport.responseText;
if (results == 'Mail Error') {
$('loginWarning').innerHTML = Controller.translate('CANNOT_CONNECT_MAIL');
}
else if (results=='Session Error' || results == 'E-mail in use' || results=='Message Already Sent') {
login_loading(false);
$('loginCancel').value = Controller.translate('BACK');
if(results == 'Session Error') {
$('loginWarning').innerHTML = Controller.translate('USER_ALREADY_CREATED') +
'<a href=#reset onClick="$(\'balloon\').hide();$(\'closeButton\').hide();' +
htdocs/js/login.js view on Meta::CPAN
function fakeTarget() {
this.nodeType = 4;
}
//Work around which removes the openid return cookie, otherwise it keeps popping up
function remove_openid_cookie() {
var currentUrl = String(String(document.location).split('#')[0]).split('?')[0];
currentUrl = String(currentUrl).split('http://')[1];
currentUrl = currentUrl.slice(currentUrl.indexOf('/'));
document.cookie = 'gbrowse_sess=; max-age=0; path='+currentUrl;
}
//Retrieve the GET variables and pass them to the OpenID handler
function confirm_openid(session,page,logged_in,email,gecos) {
// remove_openid_cookie();
var callback = process_openid();
new Ajax.Request(LoginScript+Source+'/',{
method: 'post',
parameters: {
action: 'gbrowse_login',
login_action: ['confirm_openid'],
callback: callback,
id: session,
session: session,
option: page,
email: email,
fullname: gecos
},
onSuccess: function (transport) {
login_blackout(false,'');
var results = transport.responseJSON;
if(results[0].error != null && results[0].error != 'Success') {
if (results[0].error.indexOf('not unique') >= 0) {
alert(Controller.translate('OPENID_ADD_FAILED','OpenID already in use.'));
}
else if (results[0].error.indexOf('has not been used before')) {
confirm_openid_error(session,page,logged_in,results[0].error,results[0].openid,true,results[0].email,results[0].fullname);
return;
}
else {
alert(Controller.translate('OPENID_ADD_FAILED',results[0].error));
}
reload_login_script();
}
else if (page == 'edit' || page == 'openid-add') {
alert(Controller.translate('OPENID_ADD_SUCCESS'));
reload_login_script();
} else {
if(results[0].only == 0) {UsingOpenID = false;}
else {UsingOpenID = true;}
login_get_account(results[0].user,results[0].session,results[0].remember,true);
}
}
});
return;
}
//Handle the different cases and error messages associated with openid accounts
function confirm_openid_error(session,page,logged_in,error,openid,only,email,gecos) {
var event = new fakeEvent();
(only == 0 || logged_in) ? OpenIDMenu = false : OpenIDMenu = true;
load_login_balloon(event,session,false,false);
login_blackout(true,'');
if(only == 1) {UsingOpenID=true;}
if(page == 'openid-add') {login_page_change('edit');}
else {login_page_change(page);}
if(error.indexOf('has not been used before.')!=-1 && LoginPage=='main') {
LoginPage = 'new-openid';
CurrentUser = openid;
$('loginCancel').value = Controller.translate('BACK');
$('loginSubmit').value = Controller.translate('CREATE_ACCOUNT');
$('loginWarning').innerHTML = '<font /><font color=blue>' + Controller.translate('OPENID_NOT_ASSOC', AppName) + '</font>';
$('loginRemember').hide(); $('loginRememberTxt').hide();
$('loginWarning').show(); $('loginDOpenid').hide();
$('loginOpenID').hide(); $('loginNorm').show();
$('loginFRow').show();
$('loginERow').show();
$('loginCancel').show(); $('loginPRow').hide();
$('loginOpts').hide(); $('loginUser').focus();
setTimeout("$('loginUser').value='"+email+"';$('loginFullName').value='"+gecos+"';$('loginEmail').value='"+email+"'",100);
} else if(error == 'error') {
$('loginWarning').innerHTML = Controller.translate('ANOTHER_ACCOUNT_IN_USE');
$('loginWarning').show();
} else if(page == 'edit') {
$('loginWarning').innerHTML = error;
if($('loginWarning').innerHTML == 'undefined') {$('loginWarning').innerHTML = Controller.translate('SUCCESS');}
LoginPage = page;
login_user(openid);
} else if(page == 'openid-add') {
$('loginWarning').innerHTML = openid;
if($('loginWarning').innerHTML == 'undefined') {
$('loginWarning').innerHTML = error;
$('loginWarning').show();
} else {
$('loginWarning').innerHTML = error;
Logged = logged_in;
CurrentUser = openid;
edit_details('home');
edit_details('openid-add');
edit_details_confirm();
}
} else {
$('loginWarning').innerHTML = error;
$('loginWarning').show();
}
login_loading(false);
return;
}
//Adds or Removes an openid from an account
function change_openid(user,pass,openid,option) {
$('loginBusy').show();
new Ajax.Request(LoginScript+Source+'/',{
method: 'post',
parameters: {
action: 'gbrowse_login',
login_action: ['change_openid'],
( run in 1.222 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )