Fixed bug #10467: AJAX relogin does not work
authorSteffen Kamper <info@sk-typo3.de>
Tue, 20 Oct 2009 13:23:03 +0000 (13:23 +0000)
committerSteffen Kamper <info@sk-typo3.de>
Tue, 20 Oct 2009 13:23:03 +0000 (13:23 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@6185 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/backend.php
typo3/classes/class.ajaxlogin.php
typo3/index.php
typo3/js/loginrefresh.js
typo3/sysext/lang/locallang_core.xml
typo3/sysext/openid/ext_localconf.php
typo3/sysext/rsaauth/ext_localconf.php

index 0c706aa..5a08c10 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2009-10-20  Steffen Kamper  <info@sk-typo3.de>
 
+       * Fixed bug #10467: AJAX relogin does not work
        * Added test #12286: Add unit tests for RemoveXSS
 
 2009-10-20  Oliver Hader  <oliver@typo3.org>
index 6256817..9bd647f 100644 (file)
@@ -375,16 +375,18 @@ class TYPO3backend {
                'workspaceFrontendPreviewEnabled' => (($GLOBALS['BE_USER']->workspace != 0 && !$GLOBALS['BE_USER']->user['workspace_preview']) ? 'false' : 'true'),
                'veriCode' => $GLOBALS['BE_USER']->veriCode(),
                'denyFileTypes' => PHP_EXTENSIONS_DEFAULT,
+               'showRefreshLoginPopup' => isset($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) ? intval($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) : FALSE,
        )) . ';
        TYPO3.LLL = {
                        core : ' . json_encode(array(
                'waitTitle' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_logging_in') ,
                'refresh_login_failed' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_failed'),
                'refresh_login_failed_message' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_failed_message'),
-               'refresh_login_title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_title'),
+               'refresh_login_title' => sprintf($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_title'), htmlspecialchars($GLOBALS['BE_USER']->user['username'])),
                'login_expired' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.login_expired'),
                'refresh_login_username' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_username'),
                'refresh_login_password' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_password'),
+               'refresh_login_emptyPassword' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_emptyPassword'),
                'refresh_login_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_button'),
                'refresh_logout_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_logout_button'),
                'please_wait' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.please_wait'),
index bbf9f21..680230d 100644 (file)
@@ -44,11 +44,12 @@ class AjaxLogin {
         */
        public function login($params = array(), TYPO3AJAX &$ajaxObj = null) {
                if ($GLOBALS['BE_USER']->user['uid']) {
-                       $json = '{success: true}';
+                       $json = array('success' => TRUE);
                } else {
-                       $json = '{success: false}';
+                       $json = array('success' => FALSE);
                }
                $ajaxObj->addContent('login', $json);
+               $ajaxObj->setContentFormat('json');
        }
 
        /**
@@ -61,10 +62,11 @@ class AjaxLogin {
        public function logout($params = array(), TYPO3AJAX &$ajaxObj = null) {
                $GLOBALS['BE_USER']->logoff();
                if($GLOBALS['BE_USER']->user['uid']) {
-                       $ajaxObj->addContent('logout', '{sucess: false}');
+                       $ajaxObj->addContent('logout', array('success' => FALSE));
                } else {
-                       $ajaxObj->addContent('logout', '{sucess: true}');
+                       $ajaxObj->addContent('logout', array('success' => TRUE));
                }
+               $ajaxObj->setContentFormat('json');
        }
 
        /**
@@ -77,7 +79,8 @@ class AjaxLogin {
         */
        public function refreshLogin($params = array(), TYPO3AJAX &$ajaxObj = null) {
                $GLOBALS['BE_USER']->checkAuthentication();
-               $ajaxObj->addContent('refresh', '{sucess: true}');
+               $ajaxObj->addContent('refresh', array('success' => TRUE));
+               $ajaxObj->setContentFormat('json');
        }
 
 
@@ -90,27 +93,25 @@ class AjaxLogin {
         */
        function isTimedOut($params = array(), TYPO3AJAX &$ajaxObj = null) {
                if(is_object($GLOBALS['BE_USER'])) {
-
+                       $ajaxObj->setContentFormat('json');
                        if (@is_file(PATH_typo3conf.'LOCK_BACKEND')) {
-                               $ajaxObj->addContent('login', '{timed_out: false,locked:true}');
+                               $ajaxObj->addContent('login', array('timed_out' => FALSE, 'locked' => TRUE));
                                $ajaxObj->setContentFormat('json');
                        } else {
-                               $GLOBALS['BE_USER']->fetchUserSession(true);
+                               $GLOBALS['BE_USER']->fetchUserSession(TRUE);
                                $ses_tstamp = $GLOBALS['BE_USER']->user['ses_tstamp'];
                                $timeout = $GLOBALS['BE_USER']->auth_timeout_field;
 
                                // if 120 seconds from now is later than the session timeout, we need to show the refresh dialog.
                                // 120 is somewhat arbitrary to allow for a little room during the countdown and load times, etc.
-                               if($GLOBALS['EXEC_TIME'] >= $ses_tstamp+$timeout-120) {
-                                       $ajaxObj->addContent('login', '{timed_out: true}');
-                                       $ajaxObj->setContentFormat('json');
+                               if ($GLOBALS['EXEC_TIME'] >= $ses_tstamp + $timeout - 120) {
+                                       $ajaxObj->addContent('login', array('timed_out' => TRUE));
                                } else {
-                                       $ajaxObj->addContent('login', '{timed_out: false}');
-                                       $ajaxObj->setContentFormat('json');
+                                       $ajaxObj->addContent('login', array('timed_out' => FALSE));
                                }
                        }
                } else {
-                       $ajaxObj->addContent('login', '{success: false, error: "No BE_USER object"}');
+                       $ajaxObj->addContent('login', array('success' => FALSE, 'error' => 'No BE_USER object'));
                }
        }
 }
index b361b24..c921ff7 100644 (file)
@@ -387,13 +387,16 @@ class SC_index {
                                t3lib_div::redirect($this->redirectToURL);
                        } else {
                                $TBE_TEMPLATE->JScode.=$TBE_TEMPLATE->wrapScriptTags('
-                                       if (parent.opener && parent.opener.busy)        {
-                                               parent.opener.busy.loginRefreshed();
+                                       if (parent.opener && (parent.opener.busy || parent.opener.TYPO3.loginRefresh)) {
+                                               if (parent.opener.TYPO3.loginRefresh) {
+                                                       parent.opener.TYPO3.loginRefresh.startTimer();
+                                               } else {
+                                                       parent.opener.busy.loginRefreshed();
+                                               }
                                                parent.close();
                                        }
                                ');
                        }
-
                } elseif (!$BE_USER->user['uid'] && $this->commandLI) {
                        sleep(5);       // Wrong password, wait for 5 seconds
                }
index 6e4e404..ef56ebf 100644 (file)
 /**
  * AJAX login refresh box
  */
+Ext.namespace('Ext.ux.TYPO3');  
 
-/**
- * Functions for session-expiry detection:
- */
-function busy()        {       //
-       this.loginRefreshed = busy_loginRefreshed;
-       this.openRefreshWindow = busy_OpenRefreshWindow;
-       this.openLockedWaitWindow = busy_openLockedWaitWindow;
-       this.busyloadTime=0;
-       this.openRefreshW=0;
-       this.reloginCancelled=0;
-       this.earlyRelogin=0;
-       this.locked=0;
-
-       // starts the timer and resets the earlyRelogin variable so that
-       // the countdown works properly.
-       this.startTimer = function() {
-               this.earlyRelogin = 0;
-               this.timer.start();
-       }
+Ext.ux.TYPO3.loginRefresh = Ext.extend(Ext.util.Observable, {
+       locked: 0,
+       interval: 60,
+       
+       constructor: function(config) {
+               config = config || {};
+               Ext.apply(this, config);
+               this.initComponents();
+               this.loadingTask = {
+                       run: function(){
+                               // interval run
+                               Ext.Ajax.request({
+                                       url: "ajax.php",
+                                       params: {
+                                               "ajaxID": "BackendLogin::isTimedOut",
+                                               "skipSessionUpdate": 1
+                                       },
+                                       method: "GET",
+                                       success: function(response, options) {
+                                               var result = Ext.util.JSON.decode(response.responseText);
+                                               if(result.login.locked) {
+                                                       this.locked = 1;
+                                                       Ext.MessageBox.show({
+                                                               title: TYPO3.LLL.core.please_wait,
+                                                               msg: TYPO3.LLL.core.be_locked,
+                                                               width: 500,
+                                                               icon: Ext.MessageBox.INFO,
+                                                               closable: false
+                                                       });
+                                               } else {
+                                                       if (this.locked === 1) {
+                                                               this.locked = 0;
+                                                               Ext.MessageBox.hide();
+                                                       }
+                                               }
+                                               if (result.login.timed_out && Ext.getCmp("loginformWindow")) {
+                                                       Ext.getCmp("login_username").value = TYPO3.configuration.username;
+                                                       this.stopTimer();
+                                                       this.progressWindow.show();
+                                               }
+                                       },
+                                       failure: function() {
 
-       this.stopTimer = function() {
-               this.timer.stop();
-       }
-
-       // simple timer that polls the server to determine imminent timeout.
-       this.timer = new Ajax.PeriodicalUpdater("","ajax.php", {
-               method: "get",
-               frequency: 60,
-               decay: 1,
-               parameters: "ajaxID=BackendLogin::isTimedOut&skipSessionUpdate=1",
-               onSuccess: function(e) {
-                       var login = e.responseJSON.login.evalJSON();
-                       if(login.locked) {
-                               busy.locked = 1;
-                               busy.openLockedWaitWindow();
-                       } else if(login.timed_out) {
-                               busy.openRefreshWindow();
-                       }
-                       if (busy.locked && !login.locked && !login.timed_out) {
-                               busy.locked = 0;
-                               Ext.MessageBox.hide();
-                       }
-               }
-       });
-
-       // this function runs the countdown and opens the login window
-       // as soon as the countdown expires.
-       this.countDown = function(progressControl, progressTextFormatPlural, progressTextFormatSingular, secondsRemaining, totalSeconds) {
-
-               if(busy.earlyRelogin == 0) {
-                       if(secondsRemaining > 1) {
-                               progressControl.updateText(String.format(progressTextFormatPlural, secondsRemaining));
-                               progressControl.updateProgress(secondsRemaining/(1.0*totalSeconds));
-                               setTimeout(function () {
-                                               busy.countDown(progressControl, progressTextFormatPlural, progressTextFormatSingular,secondsRemaining - 1, totalSeconds);
-                                       }, 1000);
-                       } else if(secondsRemaining > 0) {
-                               progressControl.updateText(String.format(progressTextFormatSingular, secondsRemaining));
-                               progressControl.updateProgress(secondsRemaining/(1.0*totalSeconds));
-                               setTimeout(function () {
-                                               busy.countDown(progressControl, progressTextFormatPlural, progressTextFormatSingular,secondsRemaining - 1, totalSeconds);
-                                       }, 1000);
-                       } else {
-                               busy.openRefreshW = 1;
-                               busy.openLogin();
-                       }
-               }
-       };
+                                       },
+                                       scope: this
+                               });
+                       },
+                       interval: this.interval * 1000,
+                       scope: this
+               };
+               this.startTimer();
+               Ext.ux.TYPO3.loginRefresh.superclass.constructor.call(this, config);
+       },
+       
+       
+       initComponents: function() {
+               var loginPanel = new Ext.FormPanel({
+                       url: "ajax.php",
+                       id: "loginform",
+                       title: TYPO3.LLL.core.refresh_login_title,
+                       defaultType: 'textfield',
+                       scope: this,
+                       width: "100%",
+                       bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
 
-       // Closes the countdown window and opens a new one with a login form.
-       this.openLogin = function() {
-               var login;
-               doChallengeResponse = function(superchallenged) {
-                       password = $$("#loginform form")[0].p_field.value;
+                       items: [{
+                                       xtype: "panel",
+                                       bodyStyle: "margin-bottom: 7px; border: none;",
+                                       html: TYPO3.LLL.core.login_expired
+                               },{
+                                       fieldLabel: TYPO3.LLL.core.refresh_login_password,
+                                       name: "p_field",
+                                       width: 250,
+                                       id: "password",
+                                       inputType: "password"
+                               },{
+                                       inputType: "hidden",
+                                       name: "username",
+                                       id: "login_username",
+                                       value: ""
+                               },{
+                                       inputType: "hidden",
+                                       name: "userident",
+                                       id: "userident",
+                                       value: ""
+                               }, {
+                                       inputType: "hidden",
+                                       name: "challenge",
+                                       id: "challenge",
+                                       value: TYPO3.configuration.challenge
+                               }
+                       ],
+                       keys:({
+                               key: Ext.EventObject.ENTER,
+                               fn: this.submitForm,
+                               scope: this
+                       }),
+                       buttons: [{
+                               text: TYPO3.LLL.core.refresh_login_button,
+                               formBind: true,
+                               handler: this.submitForm
+                       }, {
+                               text: TYPO3.LLL.core.refresh_logout_button,
+                               formBind: true,
+                               handler: function() {
+                                       top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir + "logout.php";
+                               }
+                       }]
+               });
+               this.loginRefreshWindow = new Ext.Window({
+                       id: "loginformWindow",
+                       width: 450,
+                       autoHeight: true,
+                       closable: true,
+                       resizable: false,
+                       plain: true,
+                       border: false,
+                       modal: true,
+                       draggable: false,
+                       items: [loginPanel]
+               });
+               
+               var progressControl = new Ext.ProgressBar({
+                       autoWidth: true,
+                       autoHeight: true,
+                       value: 30,
+               });
+               
+               this.progressWindow = new Ext.Window({
+                       closable: false,
+                       resizable: false,
+                       draggable: false,
+                       modal: true,
+                       id: "loginRefreshWindow",
+                       items: [{
+                                       xtype: "panel",
+                                       bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
+                                       bodyBorder: false,
+                                       autoHeight: true,
+                                       autoWidth: true,
+                                       html: TYPO3.LLL.core.login_about_to_expire
+                               },
+                               progressControl
+                       ],
+                       title: TYPO3.LLL.core.login_about_to_expire_title,
+                       width: 450,
 
-                       if (password)   {
-                               if (superchallenged)    {
-                                       password = MD5(password);       // this makes it superchallenged!!
+                       buttons: [{
+                               text: TYPO3.LLL.core.refresh_login_refresh_button,
+                               handler: function() {
+                                       refresh = Ext.Ajax.request({
+                                               url: "ajax.php",
+                                               params: {
+                                                       "ajaxID": "BackendLogin::isTimedOut"
+                                               },
+                                               method: "GET",
+                                               scope: this
+                                       });
+                                       TYPO3.loginRefresh.progressWindow.hide();
+                                       progressControl.reset();
+                                       TYPO3.loginRefresh.startTimer();                                        
+                               }
+                       }, {
+                               text: TYPO3.LLL.core.refresh_direct_logout_button,
+                               handler: function() {
+                                       top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir + "logout.php";
                                }
-                               str = $("login_username").value+":"+password+":"+$("challenge").value;
-                               $("userident").value = MD5(str);
-                               $("password").value = "";
+                       }]
+               });
+               this.progressWindow.on('show', function(){
+                       progressControl.wait({
+                               interval: 1000,
+                               duration: 30000,
+                               increment: 32,
+                               text: String.format(TYPO3.LLL.core.refresh_login_countdown, '30'),
+                               fn: function(win){
+                                       if (TYPO3.configuration.showRefreshLoginPopup) {
+                                               //log off for sure
+                                               Ext.Ajax.request({
+                                                       url: "ajax.php",
+                                                       params: {
+                                                               "ajaxID": "BackendLogin::logout"
+                                                       },
+                                                       method: "GET",
+                                                       scope: this,
+                                                       success: function(response, opts) {
+                                                               TYPO3.loginRefresh.showLoginPopup();
+                                                       },
+                                                       failure: function(response, opts) {
+                                                               alert("something went wrong");
+                                                       }
+                                               });
+                                       } else {
+                                               Ext.getCmp("loginRefreshWindow").hide();
+                                               Ext.getCmp("loginformWindow").show();
+                                       }
+                               }
+                       });
 
-                               return true;
+               });
+               progressControl.on('update', function(control, value, text) {
+                       var rest = 30-(parseInt(value*30));
+                       if (rest === 1) {
+                               control.updateText(String.format(TYPO3.LLL.core.refresh_login_countdown_singular, rest));
+                       } else {
+                               control.updateText(String.format(TYPO3.LLL.core.refresh_login_countdown, rest));        
                        }
-               }
-
-               submitForm = function() {
-                       if(TS.securityLevel == "superchallenged") {
-                               doChallengeResponse(1);
-                       } else if (TS.securityLevel == "challenged") {
-                               doChallengeResponse(0);
+               });
+               
+               this.loginRefreshWindow.on('close', function(){
+                       TYPO3.loginRefresh.startTimer();
+               });
+       },
+       
+       showLoginPopup: function() {
+               Ext.getCmp("loginRefreshWindow").hide();
+               vHWin=window.open("login_frameset.php","relogin_"+TS.uniqueID,"height=450,width=700,status=0,menubar=0,location=1");
+               vHWin.focus();
+       },
+       
+       startTimer: function() {
+               Ext.TaskMgr.start(this.loadingTask);
+       },
+       
+       stopTimer: function() {
+               Ext.TaskMgr.stop(this.loadingTask);
+       },
+       
+       submitForm: function() {
+               var form = Ext.getCmp("loginform").getForm();
+               var fields = form.getValues();
+               if (fields.p_field === "") {
+                       Ext.Msg.alert(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_emptyPassword);
+               } else {
+                       if (TS.securityLevel == "superchallenged") {
+                               fields.p_field = MD5(fields.p_field);
+                       } 
+                       if (TS.securityLevel == "superchallenged" || TS.securityLevel == "challenged") {
+                               fields.userident = MD5(fields.username + ":" + fields.p_field + ":" + fields.challenge);
                        } else {
-                               $("userident").value = $$("#loginform form")[0].p_field.value;
-                               $("password").value= "";
+                               fields.userident = fields.p_field;
                        }
+                       fields.p_field =  "";
+                       form.setValues(fields);
 
-                       login.getForm().submit({
-                               method: "post",
+                       form.submit({
+                               method: "POST",
                                waitTitle: TYPO3.LLL.core.waitTitle,
                                waitMsg: " ",
-                               params: "ajaxID=BackendLogin::login&login_status=login",
-                               success: function() {
-                                       win.close();
-                                       setTimeout("busy.startTimer()", 2000);
-
+                               params: {
+                                       "ajaxID": "BackendLogin::login",
+                                       "login_status": "login"
                                },
-
-                               failure: function() {
-                                       // TODO: add failure to notification system instead of alert
-                                       // Ext.tip.msg("Login failed", "Username or Password incorrect!");
-                                       Ext.Msg.alert(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_failed_message);
+                               success: function(form, action) {
+                                       // response object is "login" so real result will be available in failure handler
+                                       Ext.getCmp("loginformWindow").hide();
+                                       TYPO3.loginRefresh.startTimer();
+                               },
+                               failure: function(form, action) {
+                                       var result = Ext.util.JSON.decode(action.response.responseText).login;
+                                       if (result.success) {
+                                               // User is logged in
+                                               Ext.getCmp("loginformWindow").hide();
+                                               TYPO3.loginRefresh.startTimer();
+                                       } else {
+                                               // TODO: add failure to notification system instead of alert
+                                               Ext.Msg.alert(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_failed_message);
+                                       }
                                }
                        });
                }
-
-               logout = new Ajax.Request("ajax.php", {
-                       method: "get",
-                       parameters: "ajaxID=BackendLogin::logout"
-               });
-
-               Ext.onReady(function(){
-                       login = new Ext.FormPanel({
-                               url: "ajax.php",
-                               id: "loginform",
-                               title: TYPO3.LLL.core.refresh_login_title,
-                               defaultType: "textfield",
-                               width: "100%",
-                               bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
-
-                               items: [{
-                                               xtype: "panel",
-                                               bodyStyle: "margin-bottom: 7px; border: none;",
-                                               html: TYPO3.LLL.core.login_expired
-                                       },{
-                                               fieldLabel: TYPO3.LLL.core.refresh_login_username,
-                                               name: "username",
-                                               id: "login_username",
-                                               allowBlank: false,
-                                               width: 250
-                                       },{
-                                               fieldLabel: TYPO3.LLL.core.refresh_login_password,
-                                               name: "p_field",
-                                               width: 250,
-                                               id: "password",
-                                               inputType: "password"
-                                       },{
-                                               xtype: "hidden",
-                                               name: "userident",
-                                               id: "userident",
-                                               value: ""
-                                       }, {
-                                               xtype: "hidden",
-                                               name: "challenge",
-                                               id: "challenge",
-                                               value: TYPO3.configuration.challenge
-                                       }
-                               ],
-                               keys:({
-                                       key: Ext.EventObject.ENTER,
-                                       fn: submitForm,
-                                       scope: this
-                               }),
-                               buttons: [{
-                                       text: TYPO3.LLL.core.refresh_login_button,
-                                       formBind: true,
-                                       handler: submitForm
-                               }, {
-                                       text: TYPO3.LLL.core.refresh_logout_button,
-                                       formBind: true,
-                                       handler: function() {
-                                               top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir;
-                                       }
-                               }]
-                       });
-                       win.close();
-                       win = new Ext.Window({
-                               width: 450,
-                               autoHeight: true,
-                               closable: false,
-                               resizable: false,
-                               plain: true,
-                               border: false,
-                               modal: true,
-                               draggable: false,
-                               items: [login]
-                       });
-                       win.show();
-               });
        }
-}
-
-function busy_loginRefreshed() {       //
-       this.openRefreshW=0;
-       this.earlyRelogin=0;
-}
-
-function busy_openLockedWaitWindow() {
-       Ext.MessageBox.show({
-               title: TYPO3.LLL.core.please_wait,
-               msg: TYPO3.LLL.core.be_locked,
-               width: 500,
-               icon: Ext.MessageBox.INFO,
-               closable: false
-       });
-}
+       
+});
 
-function busy_OpenRefreshWindow() {
-       this.openRefreshW = 1;
 
-       busy.stopTimer();
-
-       var seconds = 30;
-       var progressTextFormatSingular = TYPO3.LLL.core.refresh_login_countdown_singular;
-       var progressTextFormatPlural = TYPO3.LLL.core.refresh_login_countdown;
-       var progressText = String.format(progressTextFormatPlural, seconds);
-       var progressControl = new Ext.ProgressBar({
-               autoWidth: true,
-               autoHeight: true,
-               value: 1,
-               text: progressText
-       });
-
-       win = new Ext.Window({
-               closable: false,
-               resizable: false,
-               draggable: false,
-               modal: true,
-               items: [{
-                               xtype: "panel",
-                               bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
-                               bodyBorder: false,
-                               autoHeight: true,
-                               autoWidth: true,
-                               html: TYPO3.LLL.core.login_about_to_expire
-                       },
-                       progressControl
-               ],
-               title: TYPO3.LLL.core.login_about_to_expire_title,
-               width: 450,
-
-               buttons: [{
-                       text: TYPO3.LLL.core.refresh_login_refresh_button,
-                       handler: function() {
-                               refresh = new Ajax.Request("ajax.php", {
-                                       method: "get",
-                                       parameters: "ajaxID=BackendLogin::refreshLogin"
-                               });
-                               win.close();
-                               busy.earlyRelogin = 1;
-                               setTimeout("busy.startTimer()", 2000);
-                       }
-               }, {
-                       text: TYPO3.LLL.core.refresh_direct_logout_button,
-                       handler: function() {
-                               top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir + "logout.php";
-                       }
-               }]
-       });
-       win.show();
-       busy.countDown(progressControl, progressTextFormatPlural, progressTextFormatSingular, seconds, seconds);
-}
 
 /**
  * Initialize login expiration warning object
  */
-var busy = new busy();
-busy.loginRefreshed();
+Ext.onReady(function() {
+       TYPO3.loginRefresh = new Ext.ux.TYPO3.loginRefresh();
+});
index a622277..292b24e 100755 (executable)
@@ -164,11 +164,12 @@ Do you want to refresh it now?</label>
                        <label index="mess.refresh_login_countdown_singular">{0} second</label>
                        <label index="mess.refresh_login_logging_in">Logging in...</label>
                        <label index="mess.refresh_login_failed">Login failed</label>
-                       <label index="mess.refresh_login_failed_message">Username or password not correct.</label>
-                       <label index="mess.refresh_login_title">Login to TYPO3</label>
+                       <label index="mess.refresh_login_failed_message">Password not correct.</label>
+                       <label index="mess.refresh_login_title">Refresh Login to TYPO3 (User: %s)</label>
                        <label index="mess.refresh_login_username">Username</label>
                        <label index="mess.refresh_login_password">Password</label>
                        <label index="mess.refresh_login_button">Login</label>
+                       <label index="mess.refresh_login_emptyPassword">Empty password is not allowed!</label>
                        <label index="mess.please_wait">Please wait ...</label>
                        <label index="mess.be_locked">The TYPO3 backend is currently locked for maintenance. Leave this browser window open and the backend will automatically become available again once maintenance is complete.</label>
                        <label index="mess.login_about_to_expire">Your TYPO3 login is about to expire. Please confirm that you want to stay logged in.</label>
index 84f67ee..2121d74 100644 (file)
@@ -25,4 +25,6 @@ $GLOBALS['TYPO3_CONF_VARS']['FE']['eID_include']['tx_openid'] = 'EXT:openid/clas
 
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['setup']['accessLevelCheck']['tx_openid_mod_setup'] = 'EXT:openid/class.tx_openid_mod_setup.php';
 
+// Use Popup for refresh login
+$TYPO3_CONF_VARS['BE']['showRefreshLoginPopup'] = 1;
 ?>
\ No newline at end of file
index a8e6909..45c541a 100644 (file)
@@ -33,4 +33,6 @@ $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['felogin']['loginFormOnSubmitFuncs'][$_EX
 // Add a hook to show Backend warnings
 $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['displayWarningMessages'][$_EXTKEY] = 'EXT:' . $_EXTKEY . '/hooks/class.tx_rsaauth_backendwarnings.php:tx_rsaauth_backendwarnings';
 
+// Use Popup for refresh login
+$TYPO3_CONF_VARS['BE']['showRefreshLoginPopup'] = 1;
 ?>
\ No newline at end of file