Fixed bug #14097: Preview in BE opens Workspace-preview
[Packages/TYPO3.CMS.git] / t3lib / class.t3lib_tsfebeuserauth.php
old mode 100755 (executable)
new mode 100644 (file)
index 3473645..30e6329
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
+*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -31,7 +31,7 @@
  * Revised for TYPO3 3.6 July/2003 by Kasper Skaarhoj
  * XHTML compliant
  *
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
  */
 /**
  * [CLASS/FUNCTION INDEX of SCRIPT]
  *  154:     function extPrintFeAdminDialog()
  *
  *              SECTION: Creating sections of the Admin Panel
- *  249:     function extGetCategory_preview($out='')
- *  282:     function extGetCategory_cache($out='')
- *  320:     function extGetCategory_publish($out='')
- *  355:     function extGetCategory_edit($out='')
- *  399:     function extGetCategory_tsdebug($out='')
- *  429:     function extGetCategory_info($out='')
+ *  250:     function extGetCategory_preview($out='')
+ *  283:     function extGetCategory_cache($out='')
+ *  321:     function extGetCategory_publish($out='')
+ *  356:     function extGetCategory_edit($out='')
+ *  400:     function extGetCategory_tsdebug($out='')
+ *  433:     function extGetCategory_info($out='')
  *
  *              SECTION: Admin Panel Layout Helper functions
- *  502:     function extGetHead($pre)
- *  522:     function extItemLink($pre,$str)
- *  538:     function extGetItem($pre,$element)
- *  555:     function extFw($str)
- *  564:     function ext_makeToolBar()
+ *  506:     function extGetHead($pre)
+ *  526:     function extItemLink($pre,$str)
+ *  542:     function extGetItem($pre,$element)
+ *  559:     function extFw($str)
+ *  568:     function ext_makeToolBar()
  *
  *              SECTION: TSFE BE user Access Functions
- *  622:     function checkBackendAccessSettingsFromInitPhp()
- *  667:     function extPageReadAccess($pageRec)
- *  678:     function extAdmModuleEnabled($key)
- *  694:     function extSaveFeAdminConfig()
- *  726:     function extGetFeAdminValue($pre,$val='')
- *  759:     function extIsAdmMenuOpen($pre)
+ *  637:     function checkBackendAccessSettingsFromInitPhp()
+ *  682:     function extPageReadAccess($pageRec)
+ *  693:     function extAdmModuleEnabled($key)
+ *  709:     function extSaveFeAdminConfig()
+ *  741:     function extGetFeAdminValue($pre,$val='')
+ *  783:     function extIsAdmMenuOpen($pre)
  *
  *              SECTION: TSFE BE user Access Functions
- *  794:     function extGetTreeList($id,$depth,$begin=0,$perms_clause)
- *  825:     function extGetNumberOfCachedPages($page_id)
+ *  818:     function extGetTreeList($id,$depth,$begin=0,$perms_clause)
+ *  849:     function extGetNumberOfCachedPages($page_id)
  *
  *              SECTION: Localization handling
- *  864:     function extGetLL($key)
+ *  888:     function extGetLL($key)
  *
  *              SECTION: Frontend Editing
- *  907:     function extIsEditAction()
- *  925:     function extIsFormShown()
- *  941:     function extEditAction()
+ *  932:     function extIsEditAction()
+ *  954:     function extIsFormShown()
+ *  970:     function extEditAction()
  *
  * TOTAL FUNCTIONS: 25
  * (This index is automatically created/updated by the extension "extdeveval")
  * TYPO3 backend user authentication in the TSFE frontend.
  * This includes mainly functions related to the Admin Panel
  *
- * @author     Kasper Skaarhoj <kasper@typo3.com>
+ * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage t3lib
  */
 class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
-       var $formfield_uname = '';                      // formfield with login-name
-       var $formfield_uident = '';             // formfield with password
-       var $formfield_chalvalue = '';          // formfield with a unique value which is used to encrypt the password and username
-       var $security_level = '';                               // sets the level of security. *'normal' = clear-text. 'challenged' = hashed password/username from form in $formfield_uident. 'superchallenged' = hashed password hashed again with username.
-       var $writeStdLog = 0;                                   // Decides if the writelog() function is called at login and logout
-       var $writeAttemptLog = 0;                               // If the writelog() functions is called if a login-attempt has be tried without success
-       var $auth_include = '';                                         // this is the name of the include-file containing the login form. If not set, login CAN be anonymous. If set login IS needed.
-
-       var $extNeedUpdate=0;
-       var $extPublishList='';
-       var $extPageInTreeInfo=array();
-       var $ext_forcePreview=0;
-       var $langSplitIndex=0;
-       var $extAdmEnabled = 0; // General flag which is set if the adminpanel should be displayed at all..
-
-
-
-
        /**
-        * Initialize the usage of Admin Panel.
-        * Called from index_ts.php if a backend users is correctly logged in.
-        * Sets $this->extAdminConfig to the "admPanel" config for the user and $this->extAdmEnabled = 1 IF access is enabled.
+        * Form field with login name.
         *
-        * @return      void
+        * @var string
         */
-       function extInitFeAdmin()       {
-               $this->extAdminConfig = $this->getTSConfigProp('admPanel');
-               if (is_array($this->extAdminConfig['enable.'])) {
-                       reset($this->extAdminConfig['enable.']);
-                       while(list($k,$v)=each($this->extAdminConfig['enable.']))       {
-                               if ($v) {
-                                               // Enable panel
-                                       $this->extAdmEnabled=1;
-
-                                               // Init TSFE_EDIT variables:
-                                       $this->TSFE_EDIT = t3lib_div::_POST('TSFE_EDIT');
-
-                                       break;
-                               }
-                       }
-               }
-       }
+       public $formfield_uname = '';
 
        /**
-        * Creates and returns the HTML code for the Admin Panel in the TSFE frontend.
-        * Called from index_ts.php - in the end of the script
+        * Form field with password.
         *
-        * @return      string          HTML for the Admin Panel
-        * @see index_ts.php
+        * @var string
         */
-       function extPrintFeAdminDialog()        {
-
-               if ($this->uc['TSFE_adminConfig']['display_top'])       {
-                       if ($this->extAdmModuleEnabled('preview'))      $out.= $this->extGetCategory_preview();
-                       if ($this->extAdmModuleEnabled('cache'))        $out.= $this->extGetCategory_cache();
-                       if ($this->extAdmModuleEnabled('publish'))      $out.= $this->extGetCategory_publish();
-                       if ($this->extAdmModuleEnabled('edit')) $out.= $this->extGetCategory_edit();
-                       if ($this->extAdmModuleEnabled('tsdebug'))      $out.= $this->extGetCategory_tsdebug();
-                       if ($this->extAdmModuleEnabled('info')) $out.= $this->extGetCategory_info();
-               }
-
-               $header.='
-                       <tr class="typo3-adminPanel-hRow" bgcolor="#9BA1A8">
-                               <td colspan="2" nowrap="nowrap">'.
-                                       $this->extItemLink('top','<img src="t3lib/gfx/ol/'.($this->uc['TSFE_adminConfig']['display_top']?'minus':'plus').'bullet.gif" width="18" height="16" align="absmiddle" border="0" alt="" /><strong>'.$this->extFw($this->extGetLL('adminOptions')).'</strong>').
-                                       $this->extFw(': '.$this->user['username']).
-                                       '</td>
-                               <td><img src="clear.gif" width="10" height="1" alt="" /></td>
-                               <td><input type="hidden" name="TSFE_ADMIN_PANEL[display_top]" value="'.$this->uc['TSFE_adminConfig']['display_top'].'" />'.($this->extNeedUpdate?'<input type="submit" value="'.$this->extGetLL('update').'" />':'').'</td>
-                       </tr>';
-
-               $out='
-<!--
-       ADMIN PANEL
--->
-<a name="TSFE_ADMIN"></a>
-<form name="TSFE_ADMIN_PANEL_FORM" action="'.htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI')).'#TSFE_ADMIN" method="post" style="margin: 0 0 0 0;">
-       <table border="0" cellpadding="0" cellspacing="0" class="typo3-adminPanel" bgcolor="#F6F2E6" style="border: 1px solid black; z-index:0; position:absolute;">'.
-               $header.$out.'
-       </table>
-</form>';
-
-               if ($this->uc['TSFE_adminConfig']['display_top'])       {
-                       $out.='<script type="text/javascript" src="t3lib/jsfunc.evalfield.js"></script>';
-                       $out.='
-                       <script type="text/javascript">
-                                       /*<![CDATA[*/
-                               var evalFunc = new evalFunc();
-                                       // TSFEtypo3FormFieldSet()
-                               function TSFEtypo3FormFieldSet(theField, evallist, is_in, checkbox, checkboxValue)      {       //
-                                       var theFObj = new evalFunc_dummy (evallist,is_in, checkbox, checkboxValue);
-                                       var theValue = document.TSFE_ADMIN_PANEL_FORM[theField].value;
-                                       if (checkbox && theValue==checkboxValue)        {
-                                               document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value="";
-                                               document.TSFE_ADMIN_PANEL_FORM[theField+"_cb"].checked = "";
-                                       } else {
-                                               document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value = evalFunc.outputObjValue(theFObj, theValue);
-                                               document.TSFE_ADMIN_PANEL_FORM[theField+"_cb"].checked = "on";
-                                       }
-                               }
-                                       // TSFEtypo3FormFieldGet()
-                               function TSFEtypo3FormFieldGet(theField, evallist, is_in, checkbox, checkboxValue, checkbox_off)        {       //
-                                       var theFObj = new evalFunc_dummy (evallist,is_in, checkbox, checkboxValue);
-                                       if (checkbox_off)       {
-                                               document.TSFE_ADMIN_PANEL_FORM[theField].value=checkboxValue;
-                                       }else{
-                                               document.TSFE_ADMIN_PANEL_FORM[theField].value = evalFunc.evalObjValue(theFObj, document.TSFE_ADMIN_PANEL_FORM[theField+"_hr"].value);
-                                       }
-                                       TSFEtypo3FormFieldSet(theField, evallist, is_in, checkbox, checkboxValue);
-                               }
-                                       /*]]>*/
-                       </script>
-                       <script language="javascript" type="text/javascript">'.$this->extJSCODE.'</script>';
-               }
-               return "\n\n\n\n".$out.'<br />';
-       }
-
-
-
-
-
-
+       public $formfield_uident = '';
 
-
-
-
-
-
-
-
-
-
-       /*****************************************************
-        *
-        * Creating sections of the Admin Panel
+       /**
+        * Form field with a unique value which is used to encrypt the password and username.
         *
-        ****************************************************/
+        * @var string
+        */
+       public $formfield_chalvalue = '';
 
        /**
-        * Creates the content for the "preview" section ("module") of the Admin Panel
+        * Sets the level of security. *'normal' = clear-text. 'challenged' = hashed password/username.
+        * from form in $formfield_uident. 'superchallenged' = hashed password hashed again with username.
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
-        * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
-        * @see extPrintFeAdminDialog()
+        * @var string
         */
-       function extGetCategory_preview($out='')        {
-               $out.=$this->extGetHead('preview');
-               if ($this->uc['TSFE_adminConfig']['display_preview'])   {
-                       $this->extNeedUpdate = 1;
-                       $out.= $this->extGetItem('preview_showHiddenPages', '<input type="hidden" name="TSFE_ADMIN_PANEL[preview_showHiddenPages]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[preview_showHiddenPages]" value="1"'.($this->uc['TSFE_adminConfig']['preview_showHiddenPages']?' checked="checked"':'').' />');
-                       $out.= $this->extGetItem('preview_showHiddenRecords', '<input type="hidden" name="TSFE_ADMIN_PANEL[preview_showHiddenRecords]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[preview_showHiddenRecords]" value="1"'.($this->uc['TSFE_adminConfig']['preview_showHiddenRecords']?' checked="checked"':'').' />');
-
-                               // Simulate data
-                       $out.= $this->extGetItem('preview_simulateDate', '<input type="checkbox" name="TSFE_ADMIN_PANEL[preview_simulateDate]_cb" onclick="TSFEtypo3FormFieldGet(\'TSFE_ADMIN_PANEL[preview_simulateDate]\', \'datetime\', \'\',1,0,1);" /><input type="text" name="TSFE_ADMIN_PANEL[preview_simulateDate]_hr" onchange="TSFEtypo3FormFieldGet(\'TSFE_ADMIN_PANEL[preview_simulateDate]\', \'datetime\', \'\', 1,0);" /><input type="hidden" name="TSFE_ADMIN_PANEL[preview_simulateDate]" value="'.$this->uc['TSFE_adminConfig']['preview_simulateDate'].'" />');
-                       $this->extJSCODE.= 'TSFEtypo3FormFieldSet("TSFE_ADMIN_PANEL[preview_simulateDate]", "datetime", "", 1,0);';
-
-                               // Simulate fe_user:
-                       $options = '<option value="0"></option>';
-                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                                               'fe_groups.uid, fe_groups.title',
-                                               'fe_groups,pages',
-                                               'pages.uid=fe_groups.pid AND NOT pages.deleted '.t3lib_BEfunc::deleteClause('fe_groups').' AND '.$this->getPagePermsClause(1)
-                                       );
-                       while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))       {
-                               $options.= '<option value="'.$row['uid'].'"'.($this->uc['TSFE_adminConfig']['preview_simulateUserGroup']==$row['uid']?' selected="selected"':'').'>'.htmlspecialchars('['.$row['uid'].'] '.$row['title']).'</option>';
-                       }
-                       $out.= $this->extGetItem('preview_simulateUserGroup', '<select name="TSFE_ADMIN_PANEL[preview_simulateUserGroup]">'.$options.'</select>');
-               }
-               return $out;
-       }
+       public $security_level = '';
 
        /**
-        * Creates the content for the "cache" section ("module") of the Admin Panel
+        * Decides if the writelog() function is called at login and logout.
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
-        * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
-        * @see extPrintFeAdminDialog()
+        * @var boolean
         */
-       function extGetCategory_cache($out='')  {
-               $out.=$this->extGetHead('cache');
-               if ($this->uc['TSFE_adminConfig']['display_cache'])     {
-                       $this->extNeedUpdate=1;
-                       $out.=$this->extGetItem('cache_noCache', '<input type="hidden" name="TSFE_ADMIN_PANEL[cache_noCache]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[cache_noCache]" value="1"'.($this->uc['TSFE_adminConfig']['cache_noCache']?' checked="checked"':'').' />');
-
-                       $options='';
-                       $options.='<option value="0"'.($this->uc['TSFE_adminConfig']['cache_clearCacheLevels']==0?' selected="selected"':'').'>'.$this->extGetLL('div_Levels_0').'</option>';
-                       $options.='<option value="1"'.($this->uc['TSFE_adminConfig']['cache_clearCacheLevels']==1?' selected="selected"':'').'>'.$this->extGetLL('div_Levels_1').'</option>';
-                       $options.='<option value="2"'.($this->uc['TSFE_adminConfig']['cache_clearCacheLevels']==2?' selected="selected"':'').'>'.$this->extGetLL('div_Levels_2').'</option>';
-                       $out.=$this->extGetItem('cache_clearLevels', '<select name="TSFE_ADMIN_PANEL[cache_clearCacheLevels]">'.$options.'</select>'.
-                                       '<input type="hidden" name="TSFE_ADMIN_PANEL[cache_clearCacheId]" value="'.$GLOBALS['TSFE']->id.'" /><input type="submit" value="'.$this->extGetLL('update').'" />');
-
-                               // Generating tree:
-                       $depth=$this->extGetFeAdminValue('cache','clearCacheLevels');
-                       $outTable='';
-                       $this->extPageInTreeInfo=array();
-                       $this->extPageInTreeInfo[]=array($GLOBALS['TSFE']->page['uid'],$GLOBALS['TSFE']->page['title'],$depth+1);
-                       $this->extGetTreeList($GLOBALS['TSFE']->id, $depth,0,$this->getPagePermsClause(1));
-                       reset($this->extPageInTreeInfo);
-                       while(list(,$row)=each($this->extPageInTreeInfo))       {
-                               $outTable.='<tr><td nowrap="nowrap"><img src="clear.gif" width="'.(($depth+1-$row[2])*18).'" height="1" alt="" /><img src="t3lib/gfx/i/pages.gif" width="18" height="16" align="absmiddle" border="0" alt="" />'.$this->extFw($row[1]).'</td><td><img src="clear.gif" width="10" height="1" alt="" /></td><td>'.$this->extFw($this->extGetNumberOfCachedPages($row[0])).'</td></tr>';
-                       }
-                       $outTable='<br /><table border="0" cellpadding="0" cellspacing="0">'.$outTable.'</table>';
-                       $outTable.='<input type="submit" name="TSFE_ADMIN_PANEL[action][clearCache]" value="'.$this->extGetLL('cache_doit').'" />';
-                       $out.=$this->extGetItem('cache_cacheEntries', $outTable);
-
-               }
-               return $out;
-       }
+       public $writeStdLog = false;
 
        /**
-        * Creates the content for the "publish" section ("module") of the Admin Panel
+        * If the writelog() functions is called if a login-attempt has be tried without success.
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
-        * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
-        * @see extPrintFeAdminDialog()
+        * @var boolean
         */
-       function extGetCategory_publish($out='')        {
-               $out.=$this->extGetHead('publish');
-               if ($this->uc['TSFE_adminConfig']['display_publish'])   {
-                       $this->extNeedUpdate=1;
-                       $options='';
-                       $options.='<option value="0"'.($this->uc['TSFE_adminConfig']['publish_levels']==0?' selected="selected"':'').'>'.$this->extGetLL('div_Levels_0').'</option>';
-                       $options.='<option value="1"'.($this->uc['TSFE_adminConfig']['publish_levels']==1?' selected="selected"':'').'>'.$this->extGetLL('div_Levels_1').'</option>';
-                       $options.='<option value="2"'.($this->uc['TSFE_adminConfig']['publish_levels']==2?' selected="selected"':'').'>'.$this->extGetLL('div_Levels_2').'</option>';
-                       $out.=$this->extGetItem('publish_levels', '<select name="TSFE_ADMIN_PANEL[publish_levels]">'.$options.'</select>'.
-                                       '<input type="hidden" name="TSFE_ADMIN_PANEL[publish_id]" value="'.$GLOBALS['TSFE']->id.'" /><input type="submit" value="'.$this->extGetLL('update').'" />');
-
-                               // Generating tree:
-                       $depth=$this->extGetFeAdminValue('publish','levels');
-                       $outTable='';
-                       $this->extPageInTreeInfo=array();
-                       $this->extPageInTreeInfo[]=array($GLOBALS['TSFE']->page['uid'],$GLOBALS['TSFE']->page['title'],$depth+1);
-                       $this->extGetTreeList($GLOBALS['TSFE']->id, $depth,0,$this->getPagePermsClause(1));
-                       reset($this->extPageInTreeInfo);
-                       while(list(,$row)=each($this->extPageInTreeInfo))       {
-                               $outTable.='<tr><td nowrap="nowrap"><img src="clear.gif" width="'.(($depth+1-$row[2])*18).'" height="1" alt="" /><img src="t3lib/gfx/i/pages.gif" width="18" height="16" align="absmiddle" border="0" alt="" />'.$this->extFw($row[1]).'</td><td><img src="clear.gif" width="10" height="1" alt="" /></td><td>'.$this->extFw('...').'</td></tr>';
-                       }
-                       $outTable='<br /><table border="0" cellpadding="0" cellspacing="0">'.$outTable.'</table>';
-                       $outTable.='<input type="submit" name="TSFE_ADMIN_PANEL[action][publish]" value="'.$this->extGetLL('publish_doit').'" />';
-                       $out.=$this->extGetItem('publish_tree', $outTable);
-               }
-               return $out;
-       }
+       public $writeAttemptLog = false;
 
        /**
-        * Creates the content for the "edit" section ("module") of the Admin Panel
+        * This is the name of the include-file containing the login form. If not set, login CAN be anonymous. If set login IS needed.
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
-        * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
-        * @see extPrintFeAdminDialog()
+        * @var string
         */
-       function extGetCategory_edit($out='')   {
-               $out.=$this->extGetHead('edit');
-               if ($this->uc['TSFE_adminConfig']['display_edit'])      {
-
-                               // If another page module was specified, replace the default Page module with the new one
-                       $newPageModule = trim($GLOBALS['BE_USER']->getTSConfigVal('options.overridePageModule'));
-                       $pageModule = t3lib_BEfunc::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout';
-
-                       $this->extNeedUpdate=1;
-                       $out.=$this->extGetItem('edit_displayFieldIcons', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayFieldIcons]" value="1"'.($this->uc['TSFE_adminConfig']['edit_displayFieldIcons']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('edit_displayIcons', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_displayIcons]" value="1"'.($this->uc['TSFE_adminConfig']['edit_displayIcons']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('edit_editFormsOnPage', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editFormsOnPage]" value="1"'.($this->uc['TSFE_adminConfig']['edit_editFormsOnPage']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('edit_editNoPopup', '<input type="hidden" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[edit_editNoPopup]" value="1"'.($this->uc['TSFE_adminConfig']['edit_editNoPopup']?' checked="checked"':'').' />');
-
-                       $out.=$this->extGetItem('', $this->ext_makeToolBar());
-                       if (!t3lib_div::_GP('ADMCMD_view'))     {
-                               $out.=$this->extGetItem('', '<a href="#" onclick="'.
-                                       htmlspecialchars('
-                                               if (parent.opener && parent.opener.top && parent.opener.top.TS) {
-                                                       parent.opener.top.fsMod.recentIds["web"]='.intval($GLOBALS['TSFE']->page['uid']).';
-                                                       if (parent.opener.top.content && parent.opener.top.content.nav_frame && parent.opener.top.content.nav_frame.refresh_nav)        {
-                                                               parent.opener.top.content.nav_frame.refresh_nav();
-                                                       }
-                                                       parent.opener.top.goToModule("'.$pageModule.'");
-                                                       parent.opener.top.focus();
-                                               } else {
-                                                       vHWin=window.open(\''.TYPO3_mainDir.'alt_main.php\',\''.md5('Typo3Backend-'.$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']).'\',\'status=1,menubar=1,scrollbars=1,resizable=1\');
-                                                       vHWin.focus();
-                                               }
-                                               return false;
-                                               ').
-                                       '">'.$this->extFw($this->extGetLL('edit_openAB')).'</a>');
-                       }
-               }
-               return $out;
-       }
+       public $auth_include = '';
 
        /**
-        * Creates the content for the "tsdebug" section ("module") of the Admin Panel
+        * Array of page related information (uid, title, depth).
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
-        * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
-        * @see extPrintFeAdminDialog()
+        * @var array
         */
-       function extGetCategory_tsdebug($out='')        {
-               $out.=$this->extGetHead('tsdebug');
-               if ($this->uc['TSFE_adminConfig']['display_tsdebug'])   {
-                       $this->extNeedUpdate=1;
-                       $out.=$this->extGetItem('tsdebug_tree', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_tree]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_tree]" value="1"'.($this->uc['TSFE_adminConfig']['tsdebug_tree']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('tsdebug_displayTimes', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayTimes]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayTimes]" value="1"'.($this->uc['TSFE_adminConfig']['tsdebug_displayTimes']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('tsdebug_displayMessages', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayMessages]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayMessages]" value="1"'.($this->uc['TSFE_adminConfig']['tsdebug_displayMessages']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('tsdebug_LR', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_LR]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_LR]" value="1"'.($this->uc['TSFE_adminConfig']['tsdebug_LR']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('tsdebug_displayContent', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayContent]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayContent]" value="1"'.($this->uc['TSFE_adminConfig']['tsdebug_displayContent']?' checked="checked"':'').' />');
-                       $out.=$this->extGetItem('tsdebug_displayQueries', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_displayQueries]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_displayQueries]" value="1"'.($this->uc['TSFE_adminConfig']['tsdebug_displayQueries']?' checked="checked"':'').' />');
-
-                       $out.=$this->extGetItem('tsdebug_forceTemplateParsing', '<input type="hidden" name="TSFE_ADMIN_PANEL[tsdebug_forceTemplateParsing]" value="0" /><input type="checkbox" name="TSFE_ADMIN_PANEL[tsdebug_forceTemplateParsing]" value="1"'.($this->uc['TSFE_adminConfig']['tsdebug_forceTemplateParsing']?' checked="checked"':'').' />');
-
-                       $GLOBALS['TT']->printConf['flag_tree'] = $this->extGetFeAdminValue('tsdebug','tree');
-                       $GLOBALS['TT']->printConf['allTime'] = $this->extGetFeAdminValue('tsdebug','displayTimes');
-                       $GLOBALS['TT']->printConf['flag_messages'] = $this->extGetFeAdminValue('tsdebug','displayMessages');
-                       $GLOBALS['TT']->printConf['flag_content'] = $this->extGetFeAdminValue('tsdebug','displayContent');
-                       $GLOBALS['TT']->printConf['flag_queries'] = $this->extGetFeAdminValue('tsdebug','displayQueries');
-                       $out.='<tr><td><img src="clear.gif" width="50" height="1" alt="" /></td><td colspan="3">'.$GLOBALS['TT']->printTSlog().'</td></tr>';
-               }
-               return $out;
-       }
+       public $extPageInTreeInfo = array();
 
        /**
-        * Creates the content for the "info" section ("module") of the Admin Panel
+        * General flag which is set if the adminpanel should be displayed at all.
         *
-        * @param       string          Optional start-value; The generated content is added to this variable.
-        * @return      string          HTML content for the section. Consists of a string with table-rows with four columns.
-        * @see extPrintFeAdminDialog()
+        * @var boolean
         */
-       function extGetCategory_info($out='')   {
-               $out.=$this->extGetHead('info');
-               if ($this->uc['TSFE_adminConfig']['display_info'])      {
-
-                       if (is_array($GLOBALS['TSFE']->imagesOnPage) && $this->extGetFeAdminValue('cache','noCache'))   {
-                               reset($GLOBALS['TSFE']->imagesOnPage);
-                               $theBytes=0;
-                               $count=0;
-                               $fileTable='';
-                               while(list(,$file)=each($GLOBALS['TSFE']->imagesOnPage))        {
-                                       $fs=@filesize($file);
-                                       $fileTable.='<tr><td>'.$this->extFw($file).'</td><td align="right">'.$this->extFw(t3lib_div::formatSize($fs)).'</td></tr>';
-                                       $theBytes+=$fs;
-                                       $count++;
-                               }
-                               $fileTable.='<tr><td><strong>'.$this->extFw('Total number of images:').'</strong></td><td>'.$this->extFw($count).'</td></tr>';
-                               $fileTable.='<tr><td><strong>'.$this->extFw('Total image file sizes:').'</strong></td><td align="right">'.$this->extFw(t3lib_div::formatSize($theBytes)).'</td></tr>';
-                               $fileTable.='<tr><td><strong>'.$this->extFw('Document size:').'</strong></td><td align="right">'.$this->extFw(t3lib_div::formatSize(strlen($GLOBALS['TSFE']->content))).'</td></tr>';
-                               $fileTable.='<tr><td><strong>'.$this->extFw('Total page load:').'</strong></td><td align="right">'.$this->extFw(t3lib_div::formatSize(strlen($GLOBALS['TSFE']->content)+$theBytes)).'</td></tr>';
-                               $fileTable.='<tr><td>&nbsp;</td></tr>';
-                       }
-
-                       $fileTable.='<tr><td>'.$this->extFw('id:').'</td><td>'.$this->extFw($GLOBALS['TSFE']->id).'</td></tr>';
-                       $fileTable.='<tr><td>'.$this->extFw('type:').'</td><td>'.$this->extFw($GLOBALS['TSFE']->type).'</td></tr>';
-                       $fileTable.='<tr><td>'.$this->extFw('gr_list:').'</td><td>'.$this->extFw($GLOBALS['TSFE']->gr_list).'</td></tr>';
-                       $fileTable.='<tr><td>'.$this->extFw('no_cache:').'</td><td>'.$this->extFw($GLOBALS['TSFE']->no_cache).'</td></tr>';
-                       $fileTable.='<tr><td>'.$this->extFw('fe_user, name:').'</td><td>'.$this->extFw($GLOBALS['TSFE']->fe_user->user['username']).'</td></tr>';
-                       $fileTable.='<tr><td>'.$this->extFw('fe_user, uid:').'</td><td>'.$this->extFw($GLOBALS['TSFE']->fe_user->user['uid']).'</td></tr>';
-                       $fileTable.='<tr><td>&nbsp;</td></tr>';
-
-                               // parsetime:
-                       $fileTable.='<tr><td>'.$this->extFw('Total parsetime:').'</td><td>'.$this->extFw($GLOBALS['TSFE']->scriptParseTime.' ms').'</td></tr>';
-
-                       $fileTable='<table border="0" cellpadding="0" cellspacing="0">'.$fileTable.'</table>';
-
-                       $out.='<tr><td><img src="clear.gif" width="50" height="1" alt="" /></td><td colspan="3">'.$fileTable.'</td></tr>';
-               }
-               return $out;
-       }
-
-
-
-
-
+       public $extAdmEnabled = false;
 
-
-
-
-
-
-
-
-
-
-
-
-
-       /*****************************************************
-        *
-        * Admin Panel Layout Helper functions
+       /**
+        * Instance of the admin panel
         *
-        ****************************************************/
+        * @var tslib_AdminPanel
+        */
+       public $adminPanel = null;
 
        /**
-        * Returns a row (with colspan=4) which is a header for a section in the Admin Panel.
-        * It will have a plus/minus icon and a label which is linked so that it submits the form which surrounds the whole Admin Panel when clicked, alterting the TSFE_ADMIN_PANEL[display_'.$pre.'] value
-        * See the functions extGetCategory_*
+        * Class for frontend editing.
         *
-        * @param       string          The suffix to the display_ label. Also selects the label from the LOCAL_LANG array.
-        * @return      string          HTML table row.
-        * @access private
-        * @see extGetItem()
+        * @var t3lib_frontendedit
         */
-       function extGetHead($pre)       {
-               $out.='<img src="t3lib/gfx/ol/blank.gif" width="18" height="16" align="absmiddle" border="0" alt="" />';
-               $out.='<img src="t3lib/gfx/ol/'.($this->uc['TSFE_adminConfig']['display_'.$pre]?'minus':'plus').'bullet.gif" width="18" height="16" align="absmiddle" border="0" alt="" />';
-               $out.=$this->extFw($this->extGetLL($pre));
-               $out=$this->extItemLink($pre,$out);
-               return '
-                               <tr class="typo3-adminPanel-itemHRow" bgcolor="#ABBBB4">
-                                       <td colspan="4" nowrap="nowrap">'.$out.'<input type="hidden" name="TSFE_ADMIN_PANEL[display_'.$pre.']" value="'.$this->uc['TSFE_adminConfig']['display_'.$pre].'" /></td>
-                               </tr>';
-       }
+       public $frontendEdit = null;
 
        /**
-        * Wraps a string in a link which will open/close a certain part of the Admin Panel
+        * Initializes the admin panel.
         *
-        * @param       string          The code for the display_ label/key
-        * @param       string          Input string
-        * @return      string          Linked input string
-        * @access private
-        * @see extGetHead()
+        * @return      void
         */
-       function extItemLink($pre,$str) {
-               return '<a href="#" onclick="'.
-                       htmlspecialchars('document.TSFE_ADMIN_PANEL_FORM[\'TSFE_ADMIN_PANEL[display_'.$pre.']\'].value='.($this->uc['TSFE_adminConfig']['display_'.$pre]?'0':'1').'; document.TSFE_ADMIN_PANEL_FORM.submit(); return false;').
-                       '">'.$str.'</a>';
+       public function initializeAdminPanel() {
+               $this->extAdminConfig = $this->getTSConfigProp('admPanel');
+
+               if (isset($this->extAdminConfig['enable.'])) {
+                       foreach($this->extAdminConfig['enable.'] as $key => $value) {
+                               if ($value) {
+                                       $this->adminPanel = t3lib_div::makeInstance('tslib_AdminPanel');
+                                       $this->extAdmEnabled = true;
+
+                                       break;
+                               }
+                       }
+               }
        }
 
        /**
-        * Returns a row (with 4 columns) for content in a section of the Admin Panel.
-        * It will take $pre as a key to a label to display and $element as the content to put into the forth cell.
+        * Initializes frontend editing.
         *
-        * @param       string          Key to label
-        * @param       string          The HTML content for the forth table cell.
-        * @return      string          HTML table row.
-        * @access private
-        * @see extGetHead()
+        * @return      void
         */
-       function extGetItem($pre,$element)      {
-               return '
-                                       <tr class="typo3-adminPanel-itemRow">
-                                               <td><img src="clear.gif" width="50" height="1" alt="" /></td>
-                                               <td nowrap="nowrap">'.($pre ? $this->extFw($this->extGetLL($pre)) : '&nbsp;').'</td>
-                                               <td><img src="clear.gif" width="10" height="1" alt="" /></td>
-                                               <td>'.$element.'</td>
-                                       </tr>';
+       public function initializeFrontendEdit() {
+               if (isset($this->extAdminConfig['enable.']) && $this->isFrontendEditingActive()) {
+                       foreach($this->extAdminConfig['enable.'] as $key => $value) {
+                               if ($value) {
+                                       if ($GLOBALS['TSFE'] instanceof tslib_fe) {
+                                                       // Grab the Page TSConfig property that determines which controller to use.
+                                               $pageTSConfig = $GLOBALS['TSFE']->getPagesTSconfig();
+                                               $controllerKey = isset($pageTSConfig['TSFE.']['frontendEditingController']) ? $pageTSConfig['TSFE.']['frontendEditingController'] : 'default';
+                                       } else {
+                                               $controllerKey = 'default';
+                                       }
+
+                                       $controllerClass = $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tsfebeuserauth.php']['frontendEditingController'][$controllerKey];
+                                       if ($controllerClass) {
+                                               $this->frontendEdit = t3lib_div::getUserObj($controllerClass, false);
+                                       }
 
+                                       break;
+                               }
+                       }
+               }
        }
 
        /**
-        * Wraps a string in a font-tag with verdana, size 1 and black
+        * Determines whether frontend editing is currently active.
         *
-        * @param       string          The string to wrap
-        * @return      string
+        * @return      boolean         Wheter frontend editing is active
         */
-       function extFw($str)    {
-               return '<font face="verdana,arial" size="1" color="black">'.$str.'</font>';
+       public function isFrontendEditingActive() {
+               return ($this->extAdmEnabled
+                       && ($this->adminPanel->isAdminModuleEnabled('edit') && $this->adminPanel->isAdminModuleOpen('edit')
+                       || $GLOBALS['TSFE']->displayEditIcons == 1)
+               );
        }
 
        /**
-        * Creates the tool bar links for the "edit" section of the Admin Panel.
+        * Delegates to the appropriate view and renders the admin panel content.
         *
-        * @return      string          A string containing images wrapped in <a>-tags linking them to proper functions.
+        * @return      string.
         */
-       function ext_makeToolBar()      {
-                       //  If mod.web_list.newContentWiz.overrideWithExtension is set, use that extension's create new content wizard instead:
-               $tmpTSc = t3lib_BEfunc::getModTSconfig($this->pageinfo['uid'],'mod.web_list');
-               $tmpTSc = $tmpTSc ['properties']['newContentWiz.']['overrideWithExtension'];
-               $newContentWizScriptPath = t3lib_extMgm::isLoaded($tmpTSc) ? (t3lib_extMgm::extRelPath($tmpTSc).'mod1/db_new_content_el.php') : (TYPO3_mainDir.'sysext/cms/layout/db_new_content_el.php');
-
-               $toolBar='';
-               $id = $GLOBALS['TSFE']->id;
-               $toolBar.='<a href="'.htmlspecialchars(TYPO3_mainDir.'show_rechis.php?element='.rawurlencode('pages:'.$id).'&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'#latest">'.
-                                       '<img src="t3lib/gfx/history2.gif" width="13" height="12" hspace="2" border="0" align="top" title="'.$this->extGetLL('edit_recordHistory').'" alt="" /></a>';
-               $toolBar.='<a href="'.htmlspecialchars($newContentWizScriptPath.'?id='.$id.'&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'">'.
-                                       '<img src="t3lib/gfx/new_record.gif" width="16" height="12" hspace="1" border="0" align="top" title="'.$this->extGetLL('edit_newContentElement').'" alt="" /></a>';
-               $toolBar.='<a href="'.htmlspecialchars(TYPO3_mainDir.'move_el.php?table=pages&uid='.$id.'&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'">'.
-                                       '<img src="t3lib/gfx/move_page.gif" width="11" height="12" hspace="2" border="0" align="top" title="'.$this->extGetLL('edit_move_page').'" alt="" /></a>';
-               $toolBar.='<a href="'.htmlspecialchars(TYPO3_mainDir.'db_new.php?id='.$id.'&pagesOnly=1&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'">'.
-                                       '<img src="t3lib/gfx/new_page.gif" width="13" height="12" hspace="0" border="0" align="top" title="'.$this->extGetLL('edit_newPage').'" alt="" /></a>';
-
-               $params='&edit[pages]['.$id.']=edit';
-               $toolBar.='<a href="'.htmlspecialchars(TYPO3_mainDir.'alt_doc.php?'.$params.'&noView=1&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'">'.
-                                       '<img src="t3lib/gfx/edit2.gif" width="11" height="12" hspace="2" border="0" align="top" title="'.$this->extGetLL('edit_editPageHeader').'" alt="" /></a>';
-               if ($this->check('modules','web_list')) {
-                       $toolBar.='<a href="'.htmlspecialchars(TYPO3_mainDir.'db_list.php?id='.$id.'&returnUrl='.rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'))).'">'.
-                                       '<img src="t3lib/gfx/list.gif" width="11" height="11" hspace="2" border="0" align="top" title="'.$this->extGetLL('edit_db_list').'" alt="" /></a>';
-               }
-               return $toolBar;
-       }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+       public function displayAdminPanel() {
+               $content = $this->adminPanel->display();
 
+               return $content;
+       }
 
+       /**
+        * Determines whether the admin panel is enabled and visible.
+        *
+        * @return      boolean         Whether the admin panel is enabled and visible
+        */
+       public function isAdminPanelVisible() {
+               return ($this->extAdmEnabled && !$this->extAdminConfig['hide'] && $GLOBALS['TSFE']->config['config']['admPanel']);
+       }
 
        /*****************************************************
         *
@@ -617,24 +270,24 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
         * Used in the frontend.
         *
         * @return      boolean         Returns true if access is OK
-        * @see typo3/init.php, t3lib_beuserauth::backendCheckLogin()
+        * @see typo3/init.php, t3lib_beuserauth::backendCheckLogin()
         */
-       function checkBackendAccessSettingsFromInitPhp()        {
+       public function checkBackendAccessSettingsFromInitPhp() {
                global $TYPO3_CONF_VARS;
 
                // **********************
                // Check Hardcoded lock on BE:
                // **********************
-               if ($TYPO3_CONF_VARS['BE']['adminOnly'] < 0)    {
-                       return FALSE;
+               if ($TYPO3_CONF_VARS['BE']['adminOnly'] < 0) {
+                       return false;
                }
 
                // **********************
                // Check IP
                // **********************
-               if (trim($TYPO3_CONF_VARS['BE']['IPmaskList'])) {
-                       if (!t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['BE']['IPmaskList']))      {
-                               return FALSE;
+               if (trim($TYPO3_CONF_VARS['BE']['IPmaskList'])) {
+                       if (!t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['BE']['IPmaskList'])) {
+                               return false;
                        }
                }
 
@@ -642,16 +295,18 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
                // **********************
                // Check SSL (https)
                // **********************
-               if (intval($TYPO3_CONF_VARS['BE']['lockSSL']) {
-                       if (!t3lib_div::getIndpEnv('TYPO3_SSL'))        {
-                               return FALSE;
+               if (intval($TYPO3_CONF_VARS['BE']['lockSSL']) && $TYPO3_CONF_VARS['BE']['lockSSL'] != 3) {
+                       if (!t3lib_div::getIndpEnv('TYPO3_SSL')) {
+                               return false;
                        }
                }
 
                        // Finally a check from t3lib_beuserauth::backendCheckLogin()
-               if (!$TYPO3_CONF_VARS['BE']['adminOnly'] || $this->isAdmin())   {
-                       return TRUE;
-               } else return FALSE;
+               if ($this->isUserAllowedToLogin()) {
+                       return true;
+               } else {
+                       return false;
+               }
         }
 
 
@@ -664,117 +319,10 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
         * @param       array           The page record to evaluate for
         * @return      boolean         True if read access
         */
-       function extPageReadAccess($pageRec)    {
-               return $this->isInWebMount($pageRec['uid']) && $this->doesUserHaveAccess($pageRec,1);
-       }
-
-       /**
-        * Checks if a Admin Panel section ("module") is available for the user. If so, true is returned.
-        *
-        * @param       string          The module key, eg. "edit", "preview", "info" etc.
-        * @return      boolean
-        * @see extPrintFeAdminDialog()
-        */
-       function extAdmModuleEnabled($key)      {
-                       // Returns true if the module checked is "preview" and the forcePreview flag is set.
-               if ($key=="preview" && $this->ext_forcePreview) return true;
-                       // If key is not set, only "all" is checked
-               if ($this->extAdminConfig['enable.']['all'])    return true;
-               if ($this->extAdminConfig['enable.'][$key])     {
-                       return true;
-               }
+       public function extPageReadAccess($pageRec) {
+               return $this->isInWebMount($pageRec['uid']) && $this->doesUserHaveAccess($pageRec, 1);
        }
 
-       /**
-        * Saves any change in settings made in the Admin Panel.
-        * Called from index_ts.php right after access check for the Admin Panel
-        *
-        * @return      void
-        */
-       function extSaveFeAdminConfig() {
-               $input = t3lib_div::_POST('TSFE_ADMIN_PANEL');
-               if (is_array($input))   {
-                               // Setting
-                       $this->uc['TSFE_adminConfig'] = array_merge(!is_array($this->uc['TSFE_adminConfig'])?array():$this->uc['TSFE_adminConfig'], $input);                    // Candidate for t3lib_div::array_merge() if integer-keys will some day make trouble...
-                       unset($this->uc['TSFE_adminConfig']['action']);
-
-                               // Actions:
-                       if ($input['action']['clearCache'] && $this->extAdmModuleEnabled('cache'))      {
-                               $this->extPageInTreeInfo=array();
-                               $theStartId = intval($input['cache_clearCacheId']);
-                               $GLOBALS['TSFE']->clearPageCacheContent_pidList($this->extGetTreeList($theStartId, $this->extGetFeAdminValue('cache','clearCacheLevels'),0,$this->getPagePermsClause(1)).$theStartId);
-                       }
-                       if ($input['action']['publish'] && $this->extAdmModuleEnabled('publish'))       {
-                               $theStartId = intval($input['publish_id']);
-                               $this->extPublishList = $this->extGetTreeList($theStartId, $this->extGetFeAdminValue('publish','levels'),0,$this->getPagePermsClause(1)).$theStartId;
-                       }
-
-                               // Saving
-                       $this->writeUC();
-               }
-               $GLOBALS['TT']->LR = $this->extGetFeAdminValue('tsdebug','LR');
-               if ($this->extGetFeAdminValue('cache','noCache'))       {$GLOBALS['TSFE']->set_no_cache();}
-       }
-
-       /**
-        * Returns the value for a Admin Panel setting. You must specify both the module-key and the internal setting key.
-        *
-        * @param       string          Module key
-        * @param       string          Setting key
-        * @return      string          The setting value
-        */
-       function extGetFeAdminValue($pre,$val='')       {
-               if ($this->extAdmModuleEnabled($pre))   {       // Check if module is enabled.
-                               // Exceptions where the values can be overridden from backend:
-                       if ($pre.'_'.$val == 'edit_displayIcons' && $this->extAdminConfig['module.']['edit.']['forceDisplayIcons'])     {
-                               return true;
-                       }
-                       if ($pre.'_'.$val == 'edit_displayFieldIcons' && $this->extAdminConfig['module.']['edit.']['forceDisplayFieldIcons'])   {
-                               return true;
-                       }
-
-                       $retVal = $val ? $this->uc['TSFE_adminConfig'][$pre.'_'.$val] : 1;
-
-                       if ($pre=='preview' && $this->ext_forcePreview) {
-                               if (!$val)      {
-                                       return true;
-                               } else {
-                                       return $retVal;
-                               }
-                       }
-
-                               // regular check:
-                       if ($this->extIsAdmMenuOpen($pre))      {       // See if the menu is expanded!
-                               return $retVal;
-                       }
-               }
-       }
-
-       /**
-        * Returns true if admin panel module is open
-        *
-        * @param       string          Module key
-        * @return      boolean         True, if the admin panel is open for the specified admin panel module key.
-        */
-       function extIsAdmMenuOpen($pre) {
-               return $this->uc['TSFE_adminConfig']['display_top'] && $this->uc['TSFE_adminConfig']['display_'.$pre];
-       }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
        /*****************************************************
         *
         * TSFE BE user Access Functions
@@ -791,25 +339,25 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
         * @param       string          Perms clause
         * @return      string          Returns the list with a comma in the end (if any pages selected!)
         */
-       function extGetTreeList($id,$depth,$begin=0,$perms_clause)      {
+       public function extGetTreeList($id, $depth, $begin=0, $perms_clause) {
                $depth=intval($depth);
                $begin=intval($begin);
                $id=intval($id);
                $theList='';
 
-               if ($id && $depth>0)    {
+               if ($id && $depth > 0) {
                        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
                                                'uid,title',
                                                'pages',
-                                               'pid='.$id.' AND doktype IN ('.$GLOBALS['TYPO3_CONF_VARS']['FE']['content_doktypes'].') AND NOT deleted AND '.$perms_clause
+                                               'pid=' . $id . ' AND doktype IN (' . $GLOBALS['TYPO3_CONF_VARS']['FE']['content_doktypes'] . ') AND deleted=0 AND ' . $perms_clause
                                        );
-                       while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))      {
-                               if ($begin<=0)  {
-                                       $theList.=$row['uid'].',';
-                                       $this->extPageInTreeInfo[]=array($row['uid'],$row['title'],$depth);
+                       while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
+                               if ($begin <= 0) {
+                                       $theList .= $row['uid'].',';
+                                       $this->extPageInTreeInfo[] = array($row['uid'], htmlspecialchars($row['title'],$depth));
                                }
-                               if ($depth>1)   {
-                                       $theList.=$this->extGetTreeList($row['uid'], $depth-1,$begin-1,$perms_clause);
+                               if ($depth > 1) {
+                                       $theList .= $this->extGetTreeList($row['uid'], $depth-1, $begin-1, $perms_clause);
                                }
                        }
                }
@@ -822,10 +370,16 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
         * @param       integer         The page id.
         * @return      integer         The number of pages for this page in the table "cache_pages"
         */
-       function extGetNumberOfCachedPages($page_id)    {
-               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'cache_pages', 'page_id='.intval($page_id));
-               list($num) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
-               return $num;
+       public function extGetNumberOfCachedPages($pageId) {
+               if (TYPO3_UseCachingFramework) {
+                       $pageCache = $GLOBALS['typo3CacheManager']->getCache('cache_pages');
+                       $pageCacheEntries = $pageCache->getByTag('pageId_' . (int) $pageId);
+                       $count = count($pageCacheEntries);
+               } else {
+                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*)', 'cache_pages', 'page_id='.intval($pageId));
+                       list($count) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
+               }
+               return $count;
        }
 
 
@@ -861,19 +415,21 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
         * @param       string          Key for a label in the $LOCAL_LANG array of "sysext/lang/locallang_tsfe.php"
         * @return      string          The value for the $key
         */
-       function extGetLL($key) {
+       public function extGetLL($key) {
                global $LOCAL_LANG;
-               if (!is_array($LOCAL_LANG))     {
+               if (!is_array($LOCAL_LANG)) {
                        $GLOBALS['LANG']->includeLLFile('EXT:lang/locallang_tsfe.php');
                        #include('./'.TYPO3_mainDir.'sysext/lang/locallang_tsfe.php');
-                       if (!is_array($LOCAL_LANG))             $LOCAL_LANG=array();
+                       if (!is_array($LOCAL_LANG)) {
+                               $LOCAL_LANG = array();
+                       }
                }
 
                $labelStr = htmlspecialchars($GLOBALS['LANG']->getLL($key));    // Label string in the default backend output charset.
 
                        // Convert to utf-8, then to entities:
-               if ($GLOBALS['LANG']->charSet!='utf-8') {
-                       $labelStr = $GLOBALS['LANG']->csConvObj->utf8_encode($labelStr,$GLOBALS['LANG']->charSet);
+               if ($GLOBALS['LANG']->charSet != 'utf-8') {
+                       $labelStr = $GLOBALS['LANG']->csConvObj->utf8_encode($labelStr, $GLOBALS['LANG']->charSet);
                }
                $labelStr = $GLOBALS['LANG']->csConvObj->utf8_to_entities($labelStr);
 
@@ -881,161 +437,11 @@ class t3lib_tsfeBeUserAuth extends t3lib_beUserAuth {
                return $labelStr;
        }
 
-
-
-
-
-
-
-
-
-
-
-
-
-       /*****************************************************
-        *
-        * Frontend Editing
-        *
-        ****************************************************/
-
-       /**
-        * Returns true in an edit-action is sent from the Admin Panel
-        *
-        * @return      boolean
-        * @see index_ts.php
-        */
-       function extIsEditAction()      {
-               if (is_array($this->TSFE_EDIT)) {
-                       if ($this->TSFE_EDIT['cancel']) {
-                               unset($this->TSFE_EDIT['cmd']);
-                       } elseif (($cmd!='edit' || (is_array($this->TSFE_EDIT['data']) && ($this->TSFE_EDIT['update'] || $this->TSFE_EDIT['update_close']))) && $cmd!='new')    {
-                                       // $cmd can be a command like "hide" or "move". If $cmd is "edit" or "new" it's an indication to show the formfields. But if data is sent with update-flag then $cmd = edit is accepted because edit may be sendt because of .keepGoing flag.
-                               return true;
-                       }
-               }
-       }
-
-       /**
-        * Returns true if an edit form is shown on the page.
-        * Used from index_ts.php where a true return-value will result in classes etc. being included.
-        *
-        * @return      boolean
-        * @see index_ts.php
-        */
-       function extIsFormShown()       {
-               if (is_array($this->TSFE_EDIT)) {
-                       $cmd=(string)$this->TSFE_EDIT['cmd'];
-                       if ($cmd=='edit' || $cmd=='new')        {
-                               return true;
-                       }
-               }
-       }
-
-       /**
-        * Management of the on-page frontend editing forms and edit panels.
-        * Basically taking in the data and commands and passes them on to the proper classes as they should be.
-        *
-        * @return      void
-        * @see index_ts.php
-        */
-       function extEditAction()        {
-               global $TCA;
-                       // Commands:
-               list($table,$uid) = explode(':',$this->TSFE_EDIT['record']);
-               if ($this->TSFE_EDIT['cmd'] && $table && $uid && isset($TCA[$table]))   {
-                       $tce = t3lib_div::makeInstance('t3lib_TCEmain');
-                       $tce->stripslashes_values=0;
-                       $recData=array();
-                       $cmdData=array();
-                       $cmd=$this->TSFE_EDIT['cmd'];
-                       switch($cmd)    {
-                               case 'hide':
-                               case 'unhide':
-                                       $hideField = $TCA[$table]['ctrl']['enablecolumns']['disabled'];
-                                       if ($hideField) {
-                                               $recData[$table][$uid][$hideField]=($cmd=='hide'?1:0);
-                                               $tce->start($recData,Array());
-                                               $tce->process_datamap();
-                                       }
-                               break;
-                               case 'up':
-                               case 'down':
-                                       $sortField = $TCA[$table]['ctrl']['sortby'];
-                                       if ($sortField) {
-                                               if ($cmd=='up') {
-                                                       $op= '<';
-                                                       $desc=' DESC';
-                                               } else {
-                                                       $op= '>';
-                                                       $desc='';
-                                               }
-                                                       // Get self:
-                                               $fields = array_unique(t3lib_div::trimExplode(',',$TCA[$table]['ctrl']['copyAfterDuplFields'].',uid,pid,'.$sortField,1));
-                                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(implode(',',$fields), $table, 'uid='.$uid);
-                                               if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
-                                                               // record before or after
-                                                       $preview = $this->extGetFeAdminValue('preview');
-                                                       $copyAfterFieldsQuery = '';
-                                                       if ($preview)   {$ignore = array('starttime'=>1, 'endtime'=>1, 'disabled'=>1, 'fe_group'=>1);}
-                                                       if ($TCA[$table]['ctrl']['copyAfterDuplFields'])        {
-                                                               $cAFields = t3lib_div::trimExplode(',',$TCA[$table]['ctrl']['copyAfterDuplFields'],1);
-                                                               while(list(,$fN)=each($cAFields))       {
-                                                                       $copyAfterFieldsQuery.=' AND '.$fN.'="'.$row[$fN].'"';
-                                                               }
-                                                       }
-
-                                                       $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                                                                               'uid,pid',
-                                                                               $table,
-                                                                               'pid='.intval($row['pid']).
-                                                                                       ' AND '.$sortField.$op.intval($row[$sortField]).
-                                                                                       $copyAfterFieldsQuery.
-                                                                                       t3lib_pageSelect::enableFields($table,'',$ignore),
-                                                                               '',
-                                                                               $sortField.$desc,
-                                                                               '2'
-                                                                       );
-                                                       if ($row2 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))        {
-                                                               if($cmd=='down')        {
-                                                                       $cmdData[$table][$uid]['move']= -$row2['uid'];
-                                                               } elseif ($row3 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {        // Must take the second record above...
-                                                                       $cmdData[$table][$uid]['move']= -$row3['uid'];
-                                                               } else {        // ... and if that does not exist, use pid
-                                                                       $cmdData[$table][$uid]['move']= $row['pid'];
-                                                               }
-                                                       } elseif ($cmd=='up') {
-                                                               $cmdData[$table][$uid]['move']= $row['pid'];
-                                                       }
-                                               }
-                                               if (count($cmdData))    {
-                                                       $tce->start(Array(),$cmdData);
-                                                       $tce->process_cmdmap();
-                                               }
-                                       }
-                               break;
-                               case 'delete':
-                                       $cmdData[$table][$uid]['delete']= 1;
-                                       if (count($cmdData))    {
-                                               $tce->start(Array(),$cmdData);
-                                               $tce->process_cmdmap();
-                                       }
-                               break;
-                       }
-               }
-                       // Data:
-               if (($this->TSFE_EDIT['doSave'] || $this->TSFE_EDIT['update'] || $this->TSFE_EDIT['update_close']) && is_array($this->TSFE_EDIT['data']))       {
-                       $tce = t3lib_div::makeInstance('t3lib_TCEmain');
-                       $tce->stripslashes_values=0;
-                       $tce->start($this->TSFE_EDIT['data'],Array());
-                       $tce->process_uploads($GLOBALS['HTTP_POST_FILES']);
-                       $tce->process_datamap();
-               }
-       }
 }
 
 
 if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_tsfebeuserauth.php'])   {
        include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_tsfebeuserauth.php']);
 }
-?>
+
+?>
\ No newline at end of file