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(); />' +
                     '&nbsp; &nbsp;' +
                     '<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" />' +
	       '&nbsp;<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 )