[TASK] Use external Core Project version as Git submodule
authorOliver Hader <oliver@typo3.org>
Tue, 10 May 2011 09:15:41 +0000 (11:15 +0200)
committerOliver Hader <oliver@typo3.org>
Tue, 10 May 2011 09:25:29 +0000 (11:25 +0200)
Part 1/2

Change-Id: I355e4d0f5599c6853305c2a2b6acfff53ac36c01
Resolves: #26725
Releases: 4.2, 4.3, 4.4
Reviewed-on: http://review.typo3.org/1974
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
typo3/sysext/version/class.tx_version_cm1.php [deleted file]
typo3/sysext/version/cm1/clear.gif [deleted file]
typo3/sysext/version/cm1/cm_icon.gif [deleted file]
typo3/sysext/version/cm1/conf.php [deleted file]
typo3/sysext/version/cm1/index.php [deleted file]
typo3/sysext/version/ext_emconf.php [deleted file]
typo3/sysext/version/ext_icon.gif [deleted file]
typo3/sysext/version/ext_tables.php [deleted file]
typo3/sysext/version/locallang.xml [deleted file]
typo3/sysext/version/tca.php [deleted file]

diff --git a/typo3/sysext/version/class.tx_version_cm1.php b/typo3/sysext/version/class.tx_version_cm1.php
deleted file mode 100755 (executable)
index b2cbb8d..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2004-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
-*  All rights reserved
-*
-*  This script is part of the TYPO3 project. The TYPO3 project is
-*  free software; you can redistribute it and/or modify
-*  it under the terms of the GNU General Public License as published by
-*  the Free Software Foundation; either version 2 of the License, or
-*  (at your option) any later version.
-*
-*  The GNU General Public License can be found at
-*  http://www.gnu.org/copyleft/gpl.html.
-*
-*  This script is distributed in the hope that it will be useful,
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-*  GNU General Public License for more details.
-*
-*  This copyright notice MUST APPEAR in all copies of the script!
-***************************************************************/
-/**
- * Addition of the versioning item to the clickmenu
- *
- * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
- */
-/**
- * [CLASS/FUNCTION INDEX of SCRIPT]
- *
- *
- *
- *   54: class tx_version_cm1
- *   65:     function main(&$backRef,$menuItems,$table,$uid)
- *  111:     function includeLL()
- *
- * TOTAL FUNCTIONS: 2
- * (This index is automatically created/updated by the extension "extdeveval")
- *
- */
-
-
-
-
-
-/**
- * "Versioning" item added to click menu of elements.
- *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
- * @package TYPO3
- * @subpackage core
- */
-class tx_version_cm1 {
-
-       /**
-        * Main function, adding the item to input menuItems array
-        *
-        * @param       object          References to parent clickmenu objects.
-        * @param       array           Array of existing menu items accumulated. New element added to this.
-        * @param       string          Table name of the element
-        * @param       integer         Record UID of the element
-        * @return      array           Modified menuItems array
-        */
-       function main(&$backRef,$menuItems,$table,$uid) {
-               global $BE_USER,$TCA,$LANG;
-
-               $localItems = Array();
-               if (!$backRef->cmLevel && $uid>0 && $BE_USER->check('modules','web_txversionM1'))       {
-
-                               // Returns directly, because the clicked item was not from the pages table
-                       if (in_array('versioning', $backRef->disabledItems) || !$TCA[$table] || !$TCA[$table]['ctrl']['versioningWS']) {
-                               return $menuItems;
-                       }
-
-                               // Adds the regular item
-                       $LL = $this->includeLL();
-
-                               // "Versioning" element added:
-                       $url = t3lib_extMgm::extRelPath('version').'cm1/index.php?table='.rawurlencode($table).'&uid='.$uid;
-                       $localItems[] = $backRef->linkItem(
-                               $GLOBALS['LANG']->getLLL('title',$LL),
-                               $backRef->excludeIcon('<img src="'.$backRef->backPath.t3lib_extMgm::extRelPath('version').'cm1/cm_icon.gif" width="15" height="12" border="0" align="top" alt="" />'),
-                               $backRef->urlRefForCM($url),
-                               1
-                       );
-
-                               // "Send to review" element added:
-                       $url = t3lib_extMgm::extRelPath('version').'cm1/index.php?id='.($table=='pages'?$uid:$backRef->rec['pid']).'&table='.rawurlencode($table).'&uid='.$uid.'&sendToReview=1';
-                       $localItems[] = $backRef->linkItem(
-                               $GLOBALS['LANG']->getLLL('title_review',$LL),
-                               $backRef->excludeIcon('<img src="'.$backRef->backPath.t3lib_extMgm::extRelPath('version').'cm1/cm_icon.gif" width="15" height="12" border="0" align="top" alt="" />'),
-                               $backRef->urlRefForCM($url),
-                               1
-                       );
-
-                               // Find position of "delete" element:
-                       reset($menuItems);
-                       $c=0;
-                       while(list($k)=each($menuItems))        {
-                               $c++;
-                               if (!strcmp($k,'delete'))       break;
-                       }
-                               // .. subtract two (delete item + divider line)
-                       $c-=2;
-                               // ... and insert the items just before the delete element.
-                       array_splice(
-                               $menuItems,
-                               $c,
-                               0,
-                               $localItems
-                       );
-               }
-               return $menuItems;
-       }
-
-       /**
-        * Includes the [extDir]/locallang.php and returns the $LOCAL_LANG array found in that file.
-        *
-        * @return      array           Local lang array
-        */
-       function includeLL()    {
-               global $LANG;
-
-               return $LANG->includeLLFile('EXT:version/locallang.xml',FALSE);
-       }
-}
-
-
-
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/version/class.tx_version_cm1.php'])   {
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/version/class.tx_version_cm1.php']);
-}
-?>
\ No newline at end of file
diff --git a/typo3/sysext/version/cm1/clear.gif b/typo3/sysext/version/cm1/clear.gif
deleted file mode 100755 (executable)
index 9ed1269..0000000
Binary files a/typo3/sysext/version/cm1/clear.gif and /dev/null differ
diff --git a/typo3/sysext/version/cm1/cm_icon.gif b/typo3/sysext/version/cm1/cm_icon.gif
deleted file mode 100755 (executable)
index b8d01de..0000000
Binary files a/typo3/sysext/version/cm1/cm_icon.gif and /dev/null differ
diff --git a/typo3/sysext/version/cm1/conf.php b/typo3/sysext/version/cm1/conf.php
deleted file mode 100755 (executable)
index 3795c19..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-       // DO NOT REMOVE OR CHANGE THESE 3 LINES:
-define('TYPO3_MOD_PATH', 'sysext/version/cm1/');
-$BACK_PATH = '../../../';
-$MCONF['name'] = 'web_txversionM1';
-
-$MLANG['default']['tabs_images']['tab'] = 'cm_icon.gif';
-$MLANG['default']['ll_ref'] = 'LLL:EXT:version/locallang.xml';
-
-$MCONF['script'] = 'index.php';
-$MCONF['access'] = 'user,group';
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/version/cm1/index.php b/typo3/sysext/version/cm1/index.php
deleted file mode 100755 (executable)
index de32adf..0000000
+++ /dev/null
@@ -1,1840 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2004-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
-*  All rights reserved
-*
-*  This script is part of the TYPO3 project. The TYPO3 project is
-*  free software; you can redistribute it and/or modify
-*  it under the terms of the GNU General Public License as published by
-*  the Free Software Foundation; either version 2 of the License, or
-*  (at your option) any later version.
-*
-*  The GNU General Public License can be found at
-*  http://www.gnu.org/copyleft/gpl.html.
-*
-*  This script is distributed in the hope that it will be useful,
-*  but WITHOUT ANY WARRANTY; without even the implied warranty of
-*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-*  GNU General Public License for more details.
-*
-*  This copyright notice MUST APPEAR in all copies of the script!
-***************************************************************/
-/**
- * Versioning module
- *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
- */
-/**
- * [CLASS/FUNCTION INDEX of SCRIPT]
- *
- *
- *
- *  102: class tx_version_cm1 extends t3lib_SCbase
- *
- *              SECTION: Standard module initialization
- *  138:     function menuConfig()
- *  175:     function main()
- *  236:     function jumpToUrl(URL)
- *  296:     function printContent()
- *
- *              SECTION: Versioning management
- *  322:     function versioningMgm()
- *  485:     function pageSubContent($pid,$c=0)
- *  539:     function lookForOwnVersions($table,$uid)
- *  556:     function adminLinks($table,$row)
- *
- *              SECTION: Workspace management
- *  628:     function workspaceMgm()
- *  688:     function displayWorkspaceOverview()
- *  758:     function displayWorkspaceOverview_list($pArray)
- *  923:     function displayWorkspaceOverview_setInPageArray(&$pArray,$table,$row)
- *  936:     function displayWorkspaceOverview_allStageCmd()
- *
- *              SECTION: Helper functions (REDUNDANT FROM user/ws/index.php - someone could refactor this...)
- *  986:     function formatVerId($verId)
- *  996:     function formatWorkspace($wsid)
- * 1023:     function formatCount($count)
- * 1050:     function versionsInOtherWS($table,$uid)
- * 1080:     function showStageChangeLog($table,$id,$stageCommands)
- * 1129:     function subElements($uid,$treeLevel,$origId=0)
- * 1232:     function subElements_getNonPageRecords($tN, $uid, &$recList)
- * 1262:     function subElements_renderItem(&$tCell,$tN,$uid,$rec,$origId,$iconMode,$HTMLdata)
- * 1331:     function markupNewOriginals()
- * 1353:     function createDiffView($table, $diff_1_record, $diff_2_record)
- * 1470:     function displayWorkspaceOverview_stageCmd($table,&$rec_off)
- * 1557:     function displayWorkspaceOverview_commandLinks($table,&$rec_on,&$rec_off,$vType)
- * 1627:     function displayWorkspaceOverview_commandLinksSub($table,$rec,$origId)
- *
- *              SECTION: Processing
- * 1683:     function publishAction()
- *
- * TOTAL FUNCTIONS: 27
- * (This index is automatically created/updated by the extension "extdeveval")
- *
- */
-
-
-       // DEFAULT initialization of a module [BEGIN]
-unset($MCONF);
-require ('conf.php');
-require ($BACK_PATH.'init.php');
-require ($BACK_PATH.'template.php');
-$LANG->includeLLFile('EXT:version/locallang.xml');
-       // DEFAULT initialization of a module [END]
-
-require_once(PATH_typo3.'mod/user/ws/class.wslib.php');
-
-
-
-/**
- * Versioning module, including workspace management
- *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
- * @package TYPO3
- * @subpackage core
- */
-class tx_version_cm1 extends t3lib_SCbase {
-
-               // Default variables for backend modules
-       var $MCONF = array();                           // Module configuration
-       var $MOD_MENU = array();                        // Module menu items
-       var $MOD_SETTINGS = array();            // Module session settings
-
-       /**
-        * document template object
-        *
-        * @var mediumDoc
-        */
-       var $doc;
-       var $content;                                           // Accumulated content
-
-
-               // Internal:
-       var $showWorkspaceCol = 0;
-       var $formatWorkspace_cache = array();
-       var $formatCount_cache = array();
-       var $targets = array();         // Accumulation of online targets.
-       var $pageModule = '';                   // Name of page module
-       var $publishAccess = FALSE;
-       var $be_user_Array = array();
-       var $stageIndex = array();
-       var $recIndex = array();
-
-
-
-
-
-
-       /*********************************
-        *
-        * Standard module initialization
-        *
-        *********************************/
-
-       /**
-        * Initialize menu configuration
-        *
-        * @return      void
-        */
-       function menuConfig()   {
-
-                       // Menu items:
-               $this->MOD_MENU = array(
-                       'filter' => array(
-                               1 => $GLOBALS['LANG']->getLL('filter_drafts'),
-                               2 => $GLOBALS['LANG']->getLL('filter_archive'),
-                               0 => $GLOBALS['LANG']->getLL('filter_all'),
-                       ),
-                       'display' => array(
-                               0 => $GLOBALS['LANG']->getLL('liveWorkspace'),
-                               -98 => $GLOBALS['LANG']->getLL('draftWorkspaces'),
-                               -99 => $GLOBALS['LANG']->getLL('filter_all'),
-                               -1 => $GLOBALS['LANG']->getLL('defaultDraft')
-                       ),
-                       'diff' => ''
-               );
-
-                       // Add workspaces:
-               if ($GLOBALS['BE_USER']->workspace===0) {       // Spend time on this only in online workspace because it might take time:
-                       $workspaces = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid,title,adminusers,members,reviewers','sys_workspace','pid=0'.t3lib_BEfunc::deleteClause('sys_workspace'),'','title');
-                       foreach($workspaces as $rec)    {
-                               if ($GLOBALS['BE_USER']->checkWorkspace($rec))  {
-                                       $this->MOD_MENU['display'][$rec['uid']] = '['.$rec['uid'].'] '.$rec['title'];
-                               }
-                       }
-               }
-
-                       // CLEANSE SETTINGS
-               $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, t3lib_div::_GP('SET'), $this->MCONF['name'], 'ses');
-       }
-
-       /**
-        * Main function of the module. Write the content to $this->content
-        *
-        * @return      void
-        */
-       function main() {
-               global $BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT,$TYPO3_CONF_VARS;
-
-                       // Template markers
-               $markers = array(
-                       'CSH' => '',
-                       'FUNC_MENU' => '',
-                       'WS_MENU' => '',
-                       'CONTENT' => ''
-               );
-
-                       // Setting module configuration:
-               $this->MCONF = $GLOBALS['MCONF'];
-
-               $this->REQUEST_URI = str_replace('&sendToReview=1','',t3lib_div::getIndpEnv('REQUEST_URI'));
-
-                       // Draw the header.
-               $this->doc = t3lib_div::makeInstance('template');
-               $this->doc->backPath = $BACK_PATH;
-               $this->doc->setModuleTemplate('templates/version.html');
-
-               // Add styles
-               $this->doc->inDocStylesArray[$GLOBALS['MCONF']['name']] = '
-.version-diff-1 { background-color: green; }
-.version-diff-2 { background-color: red; }
-';
-
-                       // Setting up the context sensitive menu:
-               $this->doc->getContextMenuCode();
-
-                       // Getting input data:
-               $this->id = intval(t3lib_div::_GP('id'));               // Page id. If set, indicates activation from Web>Versioning module
-               if (!$this->id) {
-                       $this->uid = intval(t3lib_div::_GP('uid'));             // Record uid. Goes with table name to indicate specific record
-                       $this->table = t3lib_div::_GP('table');                 // Record table. Goes with uid to indicate specific record
-               } else {
-                       $this->uid = $this->id;
-                       $this->table = 'pages';
-               }
-               $this->details = t3lib_div::_GP('details');             // Page id. If set, indicates activation from Web>Versioning module
-               $this->diffOnly = t3lib_div::_GP('diffOnly');           // Flag. If set, shows only the offline version and with diff-view
-
-                       // Force this setting:
-               $this->MOD_SETTINGS['expandSubElements'] = TRUE;
-               $this->MOD_SETTINGS['diff'] = $this->details || $this->MOD_SETTINGS['diff']?1:0;
-
-                       // Reading the record:
-               $record = t3lib_BEfunc::getRecord($this->table,$this->uid);
-               if ($record['pid']==-1) {
-                       $record = t3lib_BEfunc::getRecord($this->table,$record['t3ver_oid']);
-               }
-
-               $this->recordFound = is_array($record);
-
-               $pidValue = $this->table==='pages' ? $this->uid : $record['pid'];
-
-                       // Checking access etc.
-               if ($this->recordFound && $TCA[$this->table]['ctrl']['versioningWS'])   {
-                       $this->doc->form='<form action="" method="post">';
-                       $this->uid = $record['uid'];    // Might have changed if new live record was found!
-
-                               // Access check!
-                               // The page will show only if there is a valid page and if this page may be viewed by the user
-                       $this->pageinfo = t3lib_BEfunc::readPageAccess($pidValue,$this->perms_clause);
-                       $access = is_array($this->pageinfo) ? 1 : 0;
-
-                       if (($pidValue && $access) || ($BE_USER->user['admin'] && !$pidValue))  {
-
-                                       // JavaScript
-                               $this->doc->JScode.= '
-                                       <script language="javascript" type="text/javascript">
-                                               script_ended = 0;
-                                               function jumpToUrl(URL) {
-                                                       window.location.href = URL;
-                                               }
-
-                                               function hlSubelements(origId, verId, over, diffLayer)  {       //
-                                                       if (over)       {
-                                                               document.getElementById(\'orig_\'+origId).attributes.getNamedItem("class").nodeValue = \'typo3-ver-hl\';
-                                                               document.getElementById(\'ver_\'+verId).attributes.getNamedItem("class").nodeValue = \'typo3-ver-hl\';
-                                                               if (diffLayer)  {
-                                                                       document.getElementById(\'diff_\'+verId).style.visibility = \'visible\';
-                                                               }
-                                                       } else {
-                                                               document.getElementById(\'orig_\'+origId).attributes.getNamedItem("class").nodeValue = \'typo3-ver\';
-                                                               document.getElementById(\'ver_\'+verId).attributes.getNamedItem("class").nodeValue = \'typo3-ver\';
-                                                               if (diffLayer)  {
-                                                                       document.getElementById(\'diff_\'+verId).style.visibility = \'hidden\';
-                                                               }
-                                                       }
-                                               }
-                                       </script>
-                               ';
-
-                                       // If another page module was specified, replace the default Page module with the new one
-                               $newPageModule = trim($BE_USER->getTSConfigVal('options.overridePageModule'));
-                               $this->pageModule = t3lib_BEfunc::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout';
-
-                                       // Setting publish access permission for workspace:
-                               $this->publishAccess = $BE_USER->workspacePublishAccess($BE_USER->workspace);
-
-                                       // Render content:
-                               if ($this->id)  {
-                                       $this->workspaceMgm();
-                               } else {
-                                       $this->versioningMgm();
-                               }
-                       }
-
-                       $this->content.=$this->doc->spacer(10);
-
-                               // Setting up the buttons and markers for docheader
-                       $docHeaderButtons = $this->getButtons();
-                       $markers['CSH'] = $docHeaderButtons['csh'];
-                       $markers['FUNC_MENU'] = t3lib_BEfunc::getFuncMenu($this->id, 'SET[function]', $this->MOD_SETTINGS['function'], $this->MOD_MENU['function']);
-                       $markers['WS_MENU'] = $this->workspaceMenu();
-                       $markers['CONTENT'] = $this->content;
-               } else {
-                               // If no access or id value, create empty document
-                       $this->content = $this->doc->section($LANG->getLL('clickAPage_header'), $LANG->getLL('clickAPage_content'), 0, 1);
-
-                               // Setting up the buttons and markers for docheader
-                       $docHeaderButtons = $this->getButtons();
-                       $markers['CONTENT'] = $this->content;
-               }
-                       // Build the <body> for the module
-               $this->content = $this->doc->startPage($LANG->getLL('title'));
-               $this->content.= $this->doc->moduleBody($this->pageinfo, $docHeaderButtons, $markers);
-               $this->content.= $this->doc->endPage();
-               $this->content = $this->doc->insertStylesAndJS($this->content);
-       }
-
-       /**
-        * Outputs accumulated module content to browser.
-        *
-        * @return      void
-        */
-       function printContent() {
-               echo $this->content;
-       }
-
-       /**
-        * Create the panel of buttons for submitting the form or otherwise perform operations.
-        *
-        * @return      array   all available buttons as an assoc. array
-        */
-       protected function getButtons() {
-               global $TCA, $LANG, $BACK_PATH, $BE_USER;
-
-               $buttons = array(
-                       'csh' => '',
-                       'view' => '',
-                       'record_list' => '',
-                       'shortcut' => '',
-               );
-                       // CSH
-               //$buttons['csh'] = t3lib_BEfunc::cshItem('_MOD_web_txversionM1', '', $GLOBALS['BACK_PATH']);
-
-               if ($this->recordFound && $TCA[$this->table]['ctrl']['versioningWS']) {
-                               // View page
-                       $buttons['view'] = '<a href="#" onclick="' . htmlspecialchars(t3lib_BEfunc::viewOnClick($this->pageinfo['uid'], $BACK_PATH, t3lib_BEfunc::BEgetRootLine($this->pageinfo['uid']))) . '">' .
-                                       '<img' . t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/zoom.gif') . ' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.showPage', 1) . '" hspace="3" alt="" />' .
-                                       '</a>';
-
-                               // Shortcut
-                       if ($BE_USER->mayMakeShortcut())        {
-                               $buttons['shortcut'] = $this->doc->makeShortcutIcon('id, edit_record, pointer, new_unique_uid, search_field, search_levels, showLimit', implode(',', array_keys($this->MOD_MENU)), $this->MCONF['name']);
-                       }
-
-                               // If access to Web>List for user, then link to that module.
-                       if ($BE_USER->check('modules','web_list'))      {
-                               $href = $BACK_PATH . 'db_list.php?id=' . $this->pageinfo['uid'] . '&returnUrl=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI'));
-                               $buttons['record_list'] = '<a href="' . htmlspecialchars($href) . '">' .
-                                               '<img' . t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/list.gif') . ' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:labels.showList', 1) . '" alt="" />' .
-                                               '</a>';
-                       }
-               }
-               return $buttons;
-       }
-
-
-
-
-
-
-
-
-       /******************************
-        *
-        * Versioning management
-        *
-        ******************************/
-
-       /**
-        * Management of versions for record
-        *
-        * @return      void
-        */
-       function versioningMgm()        {
-               global $TCA;
-
-                       // Diffing:
-               $diff_1 = t3lib_div::_POST('diff_1');
-               $diff_2 = t3lib_div::_POST('diff_2');
-               if (t3lib_div::_POST('do_diff'))        {
-                       $content='';
-                       $content.='<h3>' . $GLOBALS['LANG']->getLL('diffing') . ':</h3>';
-                       if ($diff_1 && $diff_2) {
-                               $diff_1_record = t3lib_BEfunc::getRecord($this->table, $diff_1);
-                               $diff_2_record = t3lib_BEfunc::getRecord($this->table, $diff_2);
-
-                               if (is_array($diff_1_record) && is_array($diff_2_record))       {
-                                       t3lib_div::loadTCA($this->table);
-                                       $t3lib_diff_Obj = t3lib_div::makeInstance('t3lib_diff');
-
-                                       $tRows=array();
-                                                               $tRows[] = '
-                                                                       <tr class="bgColor5 tableheader">
-                                                                               <td>' . $GLOBALS['LANG']->getLL('fieldname') . '</td>
-                                                                               <td width="98%">' . $GLOBALS['LANG']->getLL('coloredDiffView') . ':</td>
-                                                                       </tr>
-                                                               ';
-                                       foreach($diff_1_record as $fN => $fV)   {
-                                               if ($TCA[$this->table]['columns'][$fN] && $TCA[$this->table]['columns'][$fN]['config']['type']!='passthrough' && !t3lib_div::inList('t3ver_label',$fN)) {
-                                                       if (strcmp($diff_1_record[$fN],$diff_2_record[$fN]))    {
-
-                                                               $diffres = $t3lib_diff_Obj->makeDiffDisplay(
-                                                                       t3lib_BEfunc::getProcessedValue($this->table,$fN,$diff_2_record[$fN],0,1),
-                                                                       t3lib_BEfunc::getProcessedValue($this->table,$fN,$diff_1_record[$fN],0,1)
-                                                               );
-
-                                                               $tRows[] = '
-                                                                       <tr class="bgColor4">
-                                                                               <td>'.$fN.'</td>
-                                                                               <td width="98%">'.$diffres.'</td>
-                                                                       </tr>
-                                                               ';
-                                                       }
-                                               }
-                                       }
-
-                                       if (count($tRows)>1)    {
-                                               $content .= '<table border="0" cellpadding="1" cellspacing="1" width="100%">' . implode('', $tRows) . '</table><br /><br />';
-                                       } else {
-                                               $content .= $GLOBALS['LANG']->getLL('recordsMatchesCompletely');
-                                       }
-                               } else $content .= $GLOBALS['LANG']->getLL('errorRecordsNotFound');
-                       } else {
-                               $content .= $GLOBALS['LANG']->getLL('errorDiffSources');
-                       }
-               }
-
-                       // Element:
-               $record = t3lib_BEfunc::getRecord($this->table,$this->uid);
-               $recordIcon = t3lib_iconWorks::getIconImage($this->table,$record,$this->doc->backPath,'class="absmiddle"');
-               $recTitle = t3lib_BEfunc::getRecordTitle($this->table,$record,TRUE);
-
-                       // Display versions:
-               $content.='
-                       '.$recordIcon.$recTitle.'
-                       <form name="theform" action="'.str_replace('&sendToReview=1','',$this->REQUEST_URI).'" method="post">
-                       <table border="0" cellspacing="1" cellpadding="1">';
-                       $content.='
-                               <tr class="bgColor5 tableheader">
-                                       <td>&nbsp;</td>
-                                       <td>&nbsp;</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_title') . '">' . $GLOBALS['LANG']->getLL('tblHeader_title') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_uid') . '">' . $GLOBALS['LANG']->getLL('tblHeader_uid') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_t3ver_oid') . '">' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_oid') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_t3ver_id') . '">' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_id') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_t3ver_wsid') . '">' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_wsid') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_t3ver_state') . '">' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_state') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_t3ver_stage') . '">' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_stage') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_t3ver_count') . '">' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_count') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_pid') . '">' . $GLOBALS['LANG']->getLL('tblHeader_pid') . '</td>
-                                       <td title="' . $GLOBALS['LANG']->getLL('tblHeaderDesc_t3ver_label') . '">' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_label') . '</td>
-                                       <td colspan="2"><input type="submit" name="do_diff" value="' . $GLOBALS['LANG']->getLL('diff') . '" /></td>
-                               </tr>';
-
-               $versions = t3lib_BEfunc::selectVersionsOfRecord($this->table, $this->uid, '*', $GLOBALS['BE_USER']->workspace);
-               foreach($versions as $row)      {
-                       $adminLinks = $this->adminLinks($this->table,$row);
-
-                       $content.='
-                               <tr class="'.($row['uid']!=$this->uid ? 'bgColor4' : 'bgColor2 tableheader').'">
-                                       <td>'.($row['uid']!=$this->uid ? '<a href="'.$this->doc->issueCommand('&cmd['.$this->table.']['.$this->uid.'][version][swapWith]='.$row['uid'].'&cmd['.$this->table.']['.$this->uid.'][version][action]=swap').'">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert1.gif','width="14" height="14"').' alt="" title="' . $GLOBALS['LANG']->getLL('swapWithCurrent') . '" />'.
-                                               '</a>' /* (
-                                                       $this->table == 'pages' ?
-                                                       '<a href="'.$this->doc->issueCommand('&cmd['.$this->table.']['.$this->uid.'][version][action]=swap&cmd['.$this->table.']['.$this->uid.'][version][swapWith]='.$row['uid'].'&cmd['.$this->table.']['.$this->uid.'][version][swapContent]=1').'">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert2.gif','width="14" height="14"').' alt="" title="Publish page AND content!" />'.
-                                               '</a>'.
-                                                       '<a href="'.$this->doc->issueCommand('&cmd['.$this->table.']['.$this->uid.'][version][action]=swap&cmd['.$this->table.']['.$this->uid.'][version][swapWith]='.$row['uid'].'&cmd['.$this->table.']['.$this->uid.'][version][swapContent]=ALL').'">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert4.gif','width="14" height="14"').' alt="" title="Publish page AND content! - AND ALL SUBPAGES!" />'.
-                                               '</a>' : '') */ : '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/blinkarrow_left.gif','width="5" height="9"').' alt="" title="' . $GLOBALS['LANG']->getLL('currentOnlineVersion') . '"/>').'</td>
-                                       <td nowrap="nowrap">'.$adminLinks.'</td>
-                                       <td nowrap="nowrap">'.t3lib_BEfunc::getRecordTitle($this->table,$row,TRUE).'</td>
-                                       <td>'.$row['uid'].'</td>
-                                       <td>'.$row['t3ver_oid'].'</td>
-                                       <td>'.$row['t3ver_id'].'</td>
-                                       <td>'.$row['t3ver_wsid'].'</td>
-                                       <td>'.$row['t3ver_state'].'</td>
-                                       <td>'.$row['t3ver_stage'].'</td>
-                                       <td>'.$row['t3ver_count'].'</td>
-                                       <td>'.$row['pid'].'</td>
-                                       <td nowrap="nowrap"><a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit['.$this->table.']['.$row['uid'].']=edit&columnsOnly=t3ver_label',$this->doc->backPath)).'"><img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' alt="" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:cm.edit'). '"/></a>' . htmlspecialchars($row['t3ver_label']).'</td>
-                                       <td class="version-diff-1"><input type="radio" name="diff_1" value="'.$row['uid'].'"'.($diff_1==$row['uid'] ? ' checked="checked"':'').'/></td>
-                                       <td class="version-diff-2"><input type="radio" name="diff_2" value="'.$row['uid'].'"'.($diff_2==$row['uid'] ? ' checked="checked"':'').'/></td>
-                               </tr>';
-
-                               // Show sub-content if the table is pages AND it is not the online branch (because that will mostly render the WHOLE tree below - not smart;)
-                       if ($this->table == 'pages' && $row['uid']!=$this->uid) {
-                               $sub = $this->pageSubContent($row['uid']);
-
-                               if ($sub)       {
-                                       $content.='
-                                               <tr>
-                                                       <td></td>
-                                                       <td></td>
-                                                       <td colspan="10">'.$sub.'</td>
-                                                       <td colspan="2"></td>
-                                               </tr>';
-                               }
-                       }
-               }
-               $content.='</table></form>';
-
-               $this->content.=$this->doc->section('',$content,0,1);
-
-
-                       // Create new:
-               $content='
-
-                       <form action="'.$this->doc->backPath.'tce_db.php" method="post">
-                       ' . $GLOBALS['LANG']->getLL('tblHeader_t3ver_label') . ': <input type="text" name="cmd[' . $this->table . '][' . $this->uid . '][version][label]" /><br />
-                       '.($this->table == 'pages' ? '<select name="cmd['.$this->table.']['.$this->uid.'][version][treeLevels]">
-                               '.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(0) ? '<option value="0">' . $GLOBALS['LANG']->getLL('cmdPid0') . '</option>' : '').'
-                               '.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(1) ? '<option value="100">' . $GLOBALS['LANG']->getLL('cmdPid100') . '</option>' : '').'
-                               '.($GLOBALS['BE_USER']->workspaceVersioningTypeAccess(-1) ? '<option value="-1">' . $GLOBALS['LANG']->getLL('cmdPid1') . '</option>' : '').'
-                       </select>' : '').'
-                       <br /><input type="hidden" name="cmd[' . $this->table . '][' . $this->uid . '][version][action]" value="new" />
-                       <input type="hidden" name="prErr" value="1" />
-                       <input type="hidden" name="redirect" value="'.htmlspecialchars($this->REQUEST_URI).'" />
-                       <input type="submit" name="_" value="' . $GLOBALS['LANG']->getLL('createNewVersion') . '" />
-
-                       </form>
-
-               ';
-
-               $this->content.=$this->doc->spacer(15);
-               $this->content.=$this->doc->section($GLOBALS['LANG']->getLL('createNewVersion'), $content,0,1);
-
-       }
-
-       /**
-        * Recursively look for children for page version with $pid
-        *
-        * @param       integer         UID of page record for which to look up sub-elements following that version
-        * @param       integer         Counter, do not set (limits to 100 levels)
-        * @return      string          Table with content if any
-        */
-       function pageSubContent($pid,$c=0)      {
-               global $TCA;
-
-               $tableNames = t3lib_div::removeArrayEntryByValue(array_keys($TCA),'pages');
-               $tableNames[] = 'pages';
-
-               foreach($tableNames as $tN)     {
-                               // Basically list ALL tables - not only those being copied might be found!
-                       #if ($TCA[$tN]['ctrl']['versioning_followPages'] || $tN=='pages')       {
-                               $mres = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $tN, 'pid='.intval($pid).t3lib_BEfunc::deleteClause($tN), '', ($TCA[$tN]['ctrl']['sortby'] ? $TCA[$tN]['ctrl']['sortby'] : ''));
-
-                               if ($GLOBALS['TYPO3_DB']->sql_num_rows($mres))  {
-                                       $content.='
-                                               <tr>
-                                                       <td colspan="4" class="'.($TCA[$tN]['ctrl']['versioning_followPages'] ? 'bgColor6' : ($tN=='pages' ? 'bgColor5' : 'bgColor-10')).'"'.(!$TCA[$tN]['ctrl']['versioning_followPages'] && $tN!='pages' ? ' style="color: #666666; font-style:italic;"':'').'>'.$tN.'</td>
-                                               </tr>';
-                                       while ($subrow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($mres))  {
-                                               $ownVer = $this->lookForOwnVersions($tN,$subrow['uid']);
-                                               $content.='
-                                                       <tr>
-                                                               <td>'.$this->adminLinks($tN,$subrow).'</td>
-                                                               <td>'.$subrow['uid'].'</td>
-                                                               '.($ownVer>1 ? '<td style="font-weight: bold; background-color: yellow;"><a href="index.php?table='.rawurlencode($tN).'&uid='.$subrow['uid'].'">'.($ownVer-1).'</a></td>' : '<td></td>').'
-                                                               <td width="98%">'.t3lib_BEfunc::getRecordTitle($tN,$subrow,TRUE).'</td>
-                                                       </tr>';
-
-                                               if ($tN == 'pages' && $c<100)   {
-                                                       $sub = $this->pageSubContent($subrow['uid'],$c+1);
-
-                                                       if ($sub)       {
-                                                               $content.='
-                                                                       <tr>
-                                                                               <td></td>
-                                                                               <td></td>
-                                                                               <td></td>
-                                                                               <td width="98%">'.$sub.'</td>
-                                                                       </tr>';
-                                                       }
-                                               }
-                                       }
-                               }
-                       #}
-               }
-
-               return $content ? '<table border="1" cellpadding="1" cellspacing="0" width="100%">'.$content.'</table>' : '';
-       }
-
-       /**
-        * Look for number of versions of a record
-        *
-        * @param       string          Table name
-        * @param       integer         Record uid
-        * @return      integer         Number of versions for record, false if none.
-        */
-       function lookForOwnVersions($table,$uid)        {
-               global $TCA;
-
-               $versions = t3lib_BEfunc::selectVersionsOfRecord($table, $uid, 'uid');
-               if (is_array($versions))        {
-                       return count($versions);
-               }
-               return FALSE;
-       }
-
-       /**
-        * Administrative links for a table / record
-        *
-        * @param       string          Table name
-        * @param       array           Record for which administrative links are generated.
-        * @return      string          HTML link tags.
-        */
-       function adminLinks($table,$row)        {
-               global $BE_USER;
-
-                       // Edit link:
-               $adminLink = '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick('&edit['.$table.']['.$row['uid'].']=edit',$this->doc->backPath)).'">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="11" height="12"').' alt="" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:cm.edit'). '"/>'.
-                                               '</a>';
-
-                       // Delete link:
-               $adminLink.= '<a href="'.htmlspecialchars($this->doc->issueCommand('&cmd['.$table.']['.$row['uid'].'][delete]=1')).'">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/garbage.gif','width="11" height="12"').' alt="" title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.php:cm.delete'). '"/>'.
-                                               '</a>';
-
-
-
-               if ($table == 'pages')  {
-
-                               // If another page module was specified, replace the default Page module with the new one
-                       $newPageModule = trim($BE_USER->getTSConfigVal('options.overridePageModule'));
-                       $pageModule = t3lib_BEfunc::isModuleSetInTBE_MODULES($newPageModule) ? $newPageModule : 'web_layout';
-
-                               // Perform some acccess checks:
-                       $a_wl = $BE_USER->check('modules','web_list');
-                       $a_wp = t3lib_extMgm::isLoaded('cms') && $BE_USER->check('modules',$pageModule);
-
-                       $adminLink.='<a href="#" onclick="top.loadEditId('.$row['uid'].');top.goToModule(\''.$pageModule.'\'); return false;">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,t3lib_extMgm::extRelPath('cms').'layout/layout.gif','width="14" height="12"').' title="" alt="" />'.
-                                               '</a>';
-                       $adminLink.='<a href="#" onclick="top.loadEditId('.$row['uid'].');top.goToModule(\'web_list\'); return false;">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'mod/web/list/list.gif','width="14" height="12"').' title="" alt="" />'.
-                                               '</a>';
-
-                               // "View page" icon is added:
-                       $adminLink.='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($row['uid'],$this->doc->backPath,t3lib_BEfunc::BEgetRootLine($row['uid']))).'">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/zoom.gif','width="12" height="12"').' title="" alt="" />'.
-                               '</a>';
-               } else {
-                       if ($row['pid']==-1)    {
-                               $getVars = '&ADMCMD_vPrev['.rawurlencode($table.':'.$row['t3ver_oid']).']='.$row['uid'];
-
-                                       // "View page" icon is added:
-                               $adminLink.='<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($row['_REAL_PID'],$this->doc->backPath,t3lib_BEfunc::BEgetRootLine($row['_REAL_PID']),'','',$getVars)).'">'.
-                                       '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/zoom.gif','width="12" height="12"').' title="" alt="" />'.
-                                       '</a>';
-                       }
-               }
-
-               return $adminLink;
-       }
-
-
-
-
-
-
-
-
-
-
-
-       /******************************
-        *
-        * Workspace management
-        *
-        ******************************/
-
-       /**
-        * Management of workspace for page ID
-        * Called when $this->id is set.
-        *
-        * @return      void
-        */
-       function workspaceMgm() {
-
-                       // Perform workspace publishing action if buttons are pressed:
-               $errors = $this->publishAction();
-
-                       // Generate workspace overview:
-               $WSoverview = $this->displayWorkspaceOverview();
-
-                       // Buttons for publish / swap:
-               $actionLinks = '<br />';
-               if ($GLOBALS['BE_USER']->workspace!==0) {
-                       if ($this->publishAccess)       {
-                               $actionLinks.= '<input type="submit" name="_publish" value="' . $GLOBALS['LANG']->getLL('publishPage') . '" onclick="return confirm(\'' . sprintf($GLOBALS['LANG']->getLL('publishPageQuestion'), $GLOBALS['BE_USER']->workspaceRec['publish_access'] & 1 ? $GLOBALS['LANG']->getLL('publishPageQuestionStage') : '') . '\');"/>';
-                               if ($GLOBALS['BE_USER']->workspaceSwapAccess()) {
-                                       $actionLinks.= '<input type="submit" name="_swap" value="' . $GLOBALS['LANG']->getLL('swapPage') . '" onclick="return confirm(\'' . sprintf($GLOBALS['LANG']->getLL('swapPageQuestion'), $GLOBALS['BE_USER']->workspaceRec['publish_access'] & 1 ? $GLOBALS['LANG']->getLL('publishPageQuestionStage') : '') . '\');" />';
-                               }
-                       } else {
-                               $actionLinks.= $this->doc->icons(1) . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:no_publish_permission');
-                       }
-               }
-
-               $actionLinks.= '<input type="submit" name="_" value="' . $GLOBALS['LANG']->getLL('refresh') . '" />';
-               $actionLinks.= '<input type="submit" name="_previewLink" value="' . $GLOBALS['LANG']->getLL('previewLink') . '" />';
-               $actionLinks.= '<input type="checkbox" class="checkbox" name="_previewLink_wholeWorkspace" id="_previewLink_wholeWorkspace" value="1" /><label for="_previewLink_wholeWorkspace">' . $GLOBALS['LANG']->getLL('allowPreviewOfWholeWorkspace') . '</label>';
-               $actionLinks.= $this->displayWorkspaceOverview_allStageCmd();
-
-               if ($actionLinks || count($errors))     {
-                       $this->content .= $this->doc->section('', $actionLinks . (count($errors) ? '<h3>' . $GLOABLS['LANG']->getLL('errors') . '</h3><br />' . implode('<br />', $errors) . '<hr />' : ''), 0, 1);
-               }
-
-               if (t3lib_div::_POST('_previewLink'))   {
-                       $ttlHours = intval($GLOBALS['BE_USER']->getTSConfigVal('options.workspaces.previewLinkTTLHours'));
-                       $ttlHours = ($ttlHours ? $ttlHours : 24*2);
-
-                       if (t3lib_div::_POST('_previewLink_wholeWorkspace'))    {
-                               $previewUrl = t3lib_div::getIndpEnv('TYPO3_SITE_URL').'index.php?ADMCMD_prev='.t3lib_BEfunc::compilePreviewKeyword('', $GLOBALS['BE_USER']->user['uid'],60*60*$ttlHours,$GLOBALS['BE_USER']->workspace).'&id='.intval($this->id);
-                       } else {
-                               $params = 'id='.$this->id.'&ADMCMD_previewWS='.$GLOBALS['BE_USER']->workspace;
-                               $previewUrl = t3lib_div::getIndpEnv('TYPO3_SITE_URL').'index.php?ADMCMD_prev='.t3lib_BEfunc::compilePreviewKeyword($params, $GLOBALS['BE_USER']->user['uid'],60*60*$ttlHours);
-                       }
-                       $this->content .= $this->doc->section($GLOBALS['LANG']->getLL('previewUrl'), sprintf($GLOBALS['LANG']->getLL('previewInstruction'), $ttlHours) . '<br /><br /><a target="_blank" href="' . htmlspecialchars($previewUrl) . '">' . $previewUrl . '</a>', 0, 1);
-               }
-
-                       // Output overview content:
-               $this->content.= $this->doc->spacer(15);
-               $this->content.= $this->doc->section($this->details ? $GLOBALS['LANG']->getLL('versionDetails') : $GLOBALS['LANG']->getLL('wsManagement'), $WSoverview,0,1);
-
-       }
-
-       function workspaceMenu() {
-               if($this->id) {
-                       $menu = '';
-                       if ($GLOBALS['BE_USER']->workspace===0) {
-                               $menu.= t3lib_BEfunc::getFuncMenu($this->id,'SET[filter]',$this->MOD_SETTINGS['filter'],$this->MOD_MENU['filter']);
-                               $menu.= t3lib_BEfunc::getFuncMenu($this->id,'SET[display]',$this->MOD_SETTINGS['display'],$this->MOD_MENU['display']);
-                       }
-                       if (!$this->details && $GLOBALS['BE_USER']->workspace && !$this->diffOnly)      {
-                               $menu.= t3lib_BEfunc::getFuncCheck($this->id,'SET[diff]',$this->MOD_SETTINGS['diff'],'','','id="checkDiff"').' <label for="checkDiff">' . $GLOBALS['LANG']->getLL('showDiffView') . '</label>';
-                       }
-
-                       if ($menu)      {
-                               return $menu;
-                       }
-               }
-       }
-
-       /**
-        * Rendering the overview of versions in the current workspace
-        *
-        * @return      string          HTML (table)
-        * @see typo3/mod/user/ws/index.php for sister function!
-        */
-       function displayWorkspaceOverview()     {
-
-                       // Initialize variables:
-               $this->showWorkspaceCol = $GLOBALS['BE_USER']->workspace===0 && $this->MOD_SETTINGS['display']<=-98;
-
-                       // Get usernames and groupnames
-               $be_group_Array = t3lib_BEfunc::getListGroupNames('title,uid');
-               $groupArray = array_keys($be_group_Array);
-               $this->be_user_Array = t3lib_BEfunc::getUserNames();
-               if (!$GLOBALS['BE_USER']->isAdmin())            $this->be_user_Array = t3lib_BEfunc::blindUserNames($this->be_user_Array,$groupArray,1);
-
-                       // Initialize Workspace ID and filter-value:
-               if ($GLOBALS['BE_USER']->workspace===0) {
-                       $wsid = $this->details ? -99 : $this->MOD_SETTINGS['display'];          // Set wsid to the value from the menu (displaying content of other workspaces)
-                       $filter = $this->details ? 0 : $this->MOD_SETTINGS['filter'];
-               } else {
-                       $wsid = $GLOBALS['BE_USER']->workspace;
-                       $filter = 0;
-               }
-
-                       // Initialize workspace object and request all pending versions:
-               $wslibObj = t3lib_div::makeInstance('wslib');
-
-                       // Selecting ALL versions belonging to the workspace:
-               $versions = $wslibObj->selectVersionsInWorkspace($wsid, $filter, -99, $this->uid);      // $this->uid is the page id of LIVE record.
-
-                       // Traverse versions and build page-display array:
-               $pArray = array();
-               foreach($versions as $table => $records)        {
-                       foreach($records as $rec)       {
-                               $pageIdField = $table==='pages' ? 't3ver_oid' : 'realpid';
-                               $this->displayWorkspaceOverview_setInPageArray(
-                                       $pArray,
-                                       $table,
-                                       $rec
-                               );
-                       }
-               }
-
-                       // Make header of overview:
-               $tableRows = array();
-               if (count($pArray))     {
-                       $tableRows[] = '
-                               <tr class="bgColor5 tableheader">
-                                       '.($this->diffOnly?'':'<td nowrap="nowrap" colspan="2">' . $GLOBALS['LANG']->getLL('liveVersion') . '</td>').'
-                                       <td nowrap="nowrap" colspan="2">' . $GLOBALS['LANG']->getLL('wsVersions') . '</td>
-                                       <td nowrap="nowrap"'.($this->diffOnly?' colspan="2"':' colspan="4"').'>' . $GLOBALS['LANG']->getLL('controls') . '</td>
-                               </tr>';
-
-                               // Add lines from overview:
-                       $tableRows = array_merge($tableRows, $this->displayWorkspaceOverview_list($pArray));
-
-                       $table = '<table border="0" cellpadding="0" cellspacing="1" class="lrPadding workspace-overview">'.implode('',$tableRows).'</table>';
-               } else $table = '';
-
-               $returnUrl = t3lib_div::sanitizeLocalUrl(t3lib_div::_GP('returnUrl'));
-               $linkBack = $returnUrl ? '<a href="' . htmlspecialchars($returnUrl) . '" class="typo3-goBack"><img' . t3lib_iconWorks::skinImg($this->doc->backPath, 'gfx/goback.gif', 'width="14" height="14"') . ' alt="" />' . $GLOBALS['LANG']->getLL('goBack') . '</a><br /><br />' : '';
-               $resetDiffOnly = $this->diffOnly ? '<a href="index.php?id=' . intval($this->id) . '" class="typo3-goBack">' . $GLOBALS['LANG']->getLL('showAllInformation') . '</a><br /><br />' : '';
-
-               $versionSelector = $GLOBALS['BE_USER']->workspace ? $this->doc->getVersionSelector($this->id) : '';
-
-               return $versionSelector.$linkBack.$resetDiffOnly.$table.$this->markupNewOriginals();
-       }
-
-       /**
-        * Rendering the content for the publish / review overview:
-        * (Made for internal recursive calling)
-        *
-        * @param       array           Storage of the elements to display (see displayWorkspaceOverview() / displayWorkspaceOverview_setInPageArray())
-        * @return      array           Table rows, see displayWorkspaceOverview()
-        */
-       function displayWorkspaceOverview_list($pArray) {
-               global $TCA;
-
-                       // If there ARE elements on this level, print them:
-               $warnAboutVersions_nonPages = FALSE;
-               $warnAboutVersions_page = FALSE;
-               if (is_array($pArray))  {
-                       foreach($pArray as $table => $oidArray) {
-                               foreach($oidArray as $oid => $recs)     {
-
-                                               // Get CURRENT online record and icon based on "t3ver_oid":
-                                       $rec_on = t3lib_BEfunc::getRecord($table,$oid);
-                                       $icon = t3lib_iconWorks::getIconImage($table, $rec_on, $this->doc->backPath,' align="top" title="'.t3lib_BEfunc::getRecordIconAltText($rec_on,$table).'"');
-                                       if ($GLOBALS['BE_USER']->workspace===0) {       // Only edit online records if in ONLINE workspace:
-                                               $icon = $this->doc->wrapClickMenuOnIcon($icon, $table, $rec_on['uid'], 1, '', '+edit,view,info,delete');
-                                       }
-
-                                               // Online version display:
-                                               // Create the main cells which will span over the number of versions there is.
-                                       $verLinkUrl = $TCA[$table]['ctrl']['versioningWS'];
-                                       $origElement = $icon.
-                                               ($verLinkUrl ? '<a href="'.htmlspecialchars('index.php?table='.$table.'&uid='.$rec_on['uid']).'">' : '').
-                                               t3lib_BEfunc::getRecordTitle($table,$rec_on,TRUE).
-                                               ($verLinkUrl ? '</a>' : '');
-                                       $mainCell_rowSpan = count($recs)>1 ? ' rowspan="'.count($recs).'"' : '';
-                                       $mainCell = '
-                                                               <td align="center"'.$mainCell_rowSpan.'>'.$this->formatVerId($rec_on['t3ver_id']).'</td>
-                                                               <td nowrap="nowrap"'.$mainCell_rowSpan.'>'.
-                                                                       $origElement.
-                                                                       '###SUB_ELEMENTS###'.   // For substitution with sub-elements, if any.
-                                                               '</td>';
-
-                                               // Offline versions display:
-                                               // Traverse the versions of the element
-                                       foreach($recs as $rec)  {
-
-                                                       // Get the offline version record and icon:
-                                               $rec_off = t3lib_BEfunc::getRecord($table,$rec['uid']);
-
-                                               // Prepare swap-mode values:
-                                               if ($table==='pages' && $rec_off['t3ver_swapmode']!=-1) {
-                                                       if ($rec_off['t3ver_swapmode']>0)       {
-                                                               $vType = 'branch';
-                                                       } else {
-                                                               $vType = 'page';
-                                                       }
-                                               } else {
-                                                       $vType = 'element';
-                                               }
-
-                                               // Get icon
-                                               $icon = t3lib_iconWorks::getIconImage($table, $rec_off, $this->doc->backPath, ' align="top" title="'.t3lib_BEfunc::getRecordIconAltText($rec_off,$table).'"');
-                                               $tempUid = ($table != 'pages' || $vType==='branch' || $GLOBALS['BE_USER']->workspace===0 ? $rec_off['uid'] : $rec_on['uid']);
-                                               $icon = $this->doc->wrapClickMenuOnIcon($icon, $table, $tempUid, 1, '', '+edit,' . ($table == 'pages' ? 'view,info,' : '') . 'delete');
-
-                                                       // Prepare diff-code:
-                                               if ($this->MOD_SETTINGS['diff'] || $this->diffOnly)     {
-                                                       $diffCode = '';
-                                                       list($diffHTML,$diffPct) = $this->createDiffView($table, $rec_off, $rec_on);
-                                                       if ($rec_on['t3ver_state']==1)  {       // New record:
-                                                               $diffCode.= $this->doc->icons(1) . $GLOBALS['LANG']->getLL('newElement') . '<br />';
-                                                               $diffCode.= $diffHTML;
-                                                       } elseif ($rec_off['t3ver_state']==2)   {
-                                                               $diffCode.= $this->doc->icons(2) . $GLOBALS['LANG']->getLL('deletedElement') . '<br />';
-                                                       } elseif ($rec_on['t3ver_state']==3)    {
-                                                               $diffCode.= $this->doc->icons(1) . $GLOBALS['LANG']->getLL('moveToPlaceholder') . '<br />';
-                                                       } elseif ($rec_off['t3ver_state']==4)   {
-                                                               $diffCode.= $this->doc->icons(1) . $GLOBALS['LANG']->getLL('moveToPointer') . '<br />';
-                                                       } else {
-                                                               $diffCode.= ($diffPct<0 ? $GLOBALS['LANG']->getLL('notAvailable') : ($diffPct ? $diffPct . '% ' . $GLOBALS['LANG']->getLL('change') : ''));
-                                                               $diffCode.= $diffHTML;
-                                                       }
-                                               } else $diffCode = '';
-
-                                               switch($vType) {
-                                                       case 'element':
-                                                               $swapLabel = $GLOBALS['LANG']->getLL('element');
-                                                               $swapClass = 'ver-element';
-                                                               $warnAboutVersions_nonPages = $warnAboutVersions_page;  // Setting this if sub elements are found with a page+content (must be rendered prior to this of course!)
-                                                       break;
-                                                       case 'page':
-                                                               $swapLabel = $GLOBALS['LANG']->getLL('page');
-                                                               $swapClass = 'ver-page';
-                                                               $warnAboutVersions_page = !$this->showWorkspaceCol;             // This value is true only if multiple workspaces are shown and we need the opposite here.
-                                                       break;
-                                                       case 'branch':
-                                                               $swapLabel = $GLOBALS['LANG']->getLL('branch');
-                                                               $swapClass = 'ver-branch';
-                                                       break;
-                                               }
-
-                                                       // Modify main cell based on first version shown:
-                                               $subElements = array();
-                                               if ($table==='pages' && $rec_off['t3ver_swapmode']!=-1 && $mainCell)    {       // For "Page" and "Branch" swap modes where $mainCell is still carrying content (only first version)
-                                                       $subElements['on'] = $this->subElements($rec_on['uid'], $rec_off['t3ver_swapmode']);
-                                                       $subElements['off'] = $this->subElements($rec_off['uid'],$rec_off['t3ver_swapmode'],$rec_on['uid']);
-                                               }
-                                               $mainCell = str_replace('###SUB_ELEMENTS###', $subElements['on'], $mainCell);
-
-                                                       // Create version element:
-                                               $versionsInOtherWS = $this->versionsInOtherWS($table, $rec_on['uid']);
-                                               $versionsInOtherWSWarning = $versionsInOtherWS && $GLOBALS['BE_USER']->workspace !== 0 ? '<br />' . $this->doc->icons(2) . $GLOBALS['LANG']->getLL('otherVersions') . $versionsInOtherWS : '';
-                                               $multipleWarning = (!$mainCell && $GLOBALS['BE_USER']->workspace !== 0 ? '<br />' . $this->doc->icons(3) . '<b>' . $GLOBALS['LANG']->getLL('multipleVersions') . '</b>' : '');
-                                               $verWarning = $warnAboutVersions || ($warnAboutVersions_nonPages && $GLOBALS['TCA'][$table]['ctrl']['versioning_followPages']) ? '<br />' . $this->doc->icons(3) . '<b>' . $GLOBALS['LANG']->getLL('versionInVersion') . '</b>' : '';
-                                               $verElement = $icon.
-                                                       (!$this->details ? '<a href="'.htmlspecialchars($this->doc->backPath.t3lib_extMgm::extRelPath('version').'cm1/index.php?id='.($table==='pages'?$rec_on['uid']:$rec_on['pid']).'&details='.rawurlencode($table.':'.$rec_off['uid']).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">' : '').
-                                                       t3lib_BEfunc::getRecordTitle($table,$rec_off,TRUE).
-                                                       (!$this->details ? '</a>' : '').
-                                                       $versionsInOtherWSWarning.
-                                                       $multipleWarning.
-                                                       $verWarning;
-
-                                               $ctrlTable = '
-                                                               <td nowrap="nowrap">'.$this->showStageChangeLog($table,$rec_off['uid'],$this->displayWorkspaceOverview_stageCmd($table,$rec_off)).'</td>
-                                                               <td nowrap="nowrap" class="'.$swapClass.'">'.
-                                                                       $this->displayWorkspaceOverview_commandLinks($table,$rec_on,$rec_off,$vType).
-                                                                       htmlspecialchars($swapLabel).
-                                                                       '&nbsp;&nbsp;</td>
-                                                               '.(!$this->diffOnly?'<td nowrap="nowrap"><b>' . $GLOBALS['LANG']->getLL('lifecycle')  . ':</b> '.htmlspecialchars($this->formatCount($rec_off['t3ver_count'])).'</td>'.         // Lifecycle
-                                                                       ($this->showWorkspaceCol ? '
-                                                               <td nowrap="nowrap">&nbsp;&nbsp;<b>' . $GLOBALS['LANG']->getLL('workspace')  . ':</b> '.htmlspecialchars($this->formatWorkspace($rec_off['t3ver_wsid'])).'</td>' : ''):'');
-
-                                               if ($diffCode)  {
-                                                       $verElement = $verElement.'
-                                                       <br /><b>' . $GLOBALS['LANG']->getLL('diffToLiveElement') . '</b>
-                                                       <table border="0" cellpadding="0" cellspacing="0" class="ver-verElement">
-                                                               <tr>
-                                                                       <td class="c-diffCell">'.$diffCode.'</td>
-                                                               </tr>
-                                                       </table>';
-                                               }
-
-
-                                                       // Create version cell:
-                                               $verCell = '
-                                                               <td align="center">'.$this->formatVerId($rec_off['t3ver_id']).'</td>
-                                                               <td nowrap="nowrap">'.
-                                                                       $verElement.
-                                                                       $subElements['off'].
-                                                                       '</td>
-                                                               ';
-
-                                                       // Compile table row:
-                                               $tableRows[] = '
-                                                       <tr class="bgColor4">
-                                                               '.
-                                                               ($this->diffOnly?'':$mainCell).
-                                                               $verCell.
-                                                               $ctrlTable.
-                                                               '
-                                                       </tr>';
-
-                                                       // Reset the main cell:
-                                               $mainCell = '';
-
-                                       }
-                               }
-                       }
-               }
-
-               return $tableRows;
-       }
-
-       /**
-        * Building up of the $pArray
-        * (Internal)
-        *
-        * @param       array           Array that is built up with the page tree structure
-        * @param       string          Table name
-        * @param       array           Table row
-        * @return      void            $pArray is passed by reference and modified internally
-        */
-       function displayWorkspaceOverview_setInPageArray(&$pArray,$table,$row)  {
-               if (!$this->details || $this->details==$table.':'.$row['uid'])  {
-                       $pArray[$table][$row['t3ver_oid']][] = $row;
-               }
-       }
-
-       /**
-        * Links to stage change of a version
-        *
-        * @param       string          Table name
-        * @param       array           Offline record (version)
-        * @return      string          HTML content, mainly link tags and images.
-        */
-       function displayWorkspaceOverview_allStageCmd() {
-
-               $table = t3lib_div::_GP('table');
-               if ($table && $table!='pages')  {
-                       $uid = t3lib_div::_GP('uid');
-                       if ($rec_off = t3lib_BEfunc::getRecordWSOL($table,$uid)) {
-                               $uid = $rec_off['_ORIG_uid'];
-                       }
-               } else $table = '';
-
-               if ($table)     {
-                       if ($uid && $this->recIndex[$table][$uid])      {
-                               $sId = $this->recIndex[$table][$uid];
-                               switch($sId)    {
-                                       case 1:
-                                               $label = $GLOBALS['LANG']->getLL('commentForReviewer');
-                                       break;
-                                       case 10:
-                                               $label = $GLOBALS['LANG']->getLL('commentForPublisher');
-                                       break;
-                               }
-                       } else $sId = 0;
-               } else {
-                       if (count($this->stageIndex[1]))        {       // Review:
-                               $sId = 1;
-                               $color = '#666666';
-                               $label = $GLOBALS['LANG']->getLL('sendItemsToReview') . $GLOBALS['LANG']->getLL('commentForReviewer');
-                               $titleAttrib = $GLOBALS['LANG']->getLL('sendAllToReview');
-                       } elseif(count($this->stageIndex[10]))  {       // Publish:
-                               $sId = 10;
-                               $color = '#6666cc';
-                               $label = $GLOBALS['LANG']->getLL('approveToPublish') . $GLOBALS['LANG']->getLL('commentForPublisher');
-                               $titleAttrib = $GLOBALS['LANG']->getLL('approveAllToPublish');
-                       } else {
-                               $sId = 0;
-                       }
-               }
-
-               if ($sId>0)     {
-                       $issueCmd = '';
-                       $itemCount = 0;
-
-                       if ($table && $uid && $this->recIndex[$table][$uid])    {
-                               $issueCmd.='&cmd['.$table.']['.$uid.'][version][action]=setStage';
-                               $issueCmd.='&cmd['.$table.']['.$uid.'][version][stageId]='.$this->recIndex[$table][$uid];
-                       } else {
-                               foreach($this->stageIndex[$sId] as $table => $uidArray) {
-                                       $issueCmd.='&cmd['.$table.']['.implode(',',$uidArray).'][version][action]=setStage';
-                                       $issueCmd.='&cmd['.$table.']['.implode(',',$uidArray).'][version][stageId]='.$sId;
-                                       $itemCount+=count($uidArray);
-                               }
-                       }
-
-                       $onClick = 'var commentTxt=window.prompt("'.sprintf($label,$itemCount).'","");
-                                                       if (commentTxt!=null) {window.location.href="'.$this->doc->issueCommand($issueCmd,$this->REQUEST_URI).'&generalComment="+escape(commentTxt);}';
-
-                       if (t3lib_div::_GP('sendToReview'))     {
-                               $onClick.= ' else {window.location.href = "'.$this->REQUEST_URI.'"}';
-                               $actionLinks.=
-                                       $this->doc->wrapScriptTags($onClick);
-                       } else {
-                               $onClick.= ' return false;';
-                               $actionLinks.=
-                                       '<input type="submit" name="_" value="'.htmlspecialchars($titleAttrib).'" onclick="'.htmlspecialchars($onClick).'" />';
-                       }
-               } elseif (t3lib_div::_GP('sendToReview'))       {
-                       $onClick = 'window.location.href = "'.$this->REQUEST_URI.'";';
-                       $actionLinks.=
-                               $this->doc->wrapScriptTags($onClick);
-               } else $actionLinks = '';
-
-               return $actionLinks;
-       }
-
-
-
-
-
-
-       /**************************************
-        *
-        * Helper functions (REDUNDANT FROM user/ws/index.php - someone could refactor this...)
-        *
-        *************************************/
-
-       /**
-        * Formatting the version number for HTML output
-        *
-        * @param       integer         Version number
-        * @return      string          Version number for output
-        */
-       function formatVerId($verId)    {
-               return '1.'.$verId;
-       }
-
-       /**
-        * Formatting workspace ID into a visual label
-        *
-        * @param       integer         Workspace ID
-        * @return      string          Workspace title
-        */
-       function formatWorkspace($wsid) {
-
-                       // Render, if not cached:
-               if (!isset($this->formatWorkspace_cache[$wsid]))        {
-                       switch($wsid)   {
-                               case -1:
-                                       $this->formatWorkspace_cache[$wsid] = $GLOBALS['LANG']->getLL('offline');
-                               break;
-                               case 0:
-                                       $this->formatWorkspace_cache[$wsid] = '';       // Does not output anything for ONLINE because it might confuse people to think that the elemnet IS online which is not the case - only that it exists as an offline version in the online workspace...
-                               break;
-                               default:
-                                       list($titleRec) = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('title','sys_workspace','uid='.intval($wsid).t3lib_BEfunc::deleteClause('sys_workspace'));
-                                       $this->formatWorkspace_cache[$wsid] = '['.$wsid.'] '.$titleRec['title'];
-                               break;
-                       }
-               }
-
-               return $this->formatWorkspace_cache[$wsid];
-       }
-
-       /**
-        * Format publishing count for version (lifecycle state)
-        *
-        * @param       integer         t3ver_count value (number of times it has been online)
-        * @return      string          String translation of count.
-        */
-       function formatCount($count)    {
-
-                       // Render, if not cached:
-               if (!isset($this->formatCount_cache[$count]))   {
-                       switch($count)  {
-                               case 0:
-                                       $this->formatCount_cache[$count] = $GLOBALS['LANG']->getLL('draft');
-                               break;
-                               case 1:
-                                       $this->formatCount_cache[$count] = $GLOBALS['LANG']->getLL('archive');
-                               break;
-                               default:
-                                       $this->formatCount_cache[$count] = sprintf($GLOBALS['LANG']->getLL('publishedXTimes'), $count);
-                               break;
-                       }
-               }
-
-               return $this->formatCount_cache[$count];
-       }
-
-       /**
-        * Looking for versions of a record in other workspaces than the current
-        *
-        * @param       string          Table name
-        * @param       integer         Record uid
-        * @return      string          List of other workspace IDs
-        */
-       function versionsInOtherWS($table,$uid) {
-
-                       // Check for duplicates:
-                       // Select all versions of record NOT in this workspace:
-               $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
-                       't3ver_wsid',
-                       $table,
-                       'pid=-1
-                               AND t3ver_oid='.intval($uid).'
-                               AND t3ver_wsid!='.intval($GLOBALS['BE_USER']->workspace).'
-                               AND (t3ver_wsid=-1 OR t3ver_wsid>0)'.
-                               t3lib_BEfunc::deleteClause($table),
-                       '',
-                       't3ver_wsid',
-                       '',
-                       't3ver_wsid'
-               );
-               if (count($rows))       {
-                       return implode(',',array_keys($rows));
-               }
-       }
-
-       /**
-        * Looks up stage changes for version and displays a formatted view on mouseover.
-        *
-        * @param       string          Table name
-        * @param       integer         Record ID
-        * @param       string          HTML string to wrap the mouseover around (should be stage change links)
-        * @return      string          HTML code.
-        */
-       function showStageChangeLog($table,$id,$stageCommands)  {
-               $rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
-                       'log_data,tstamp,userid',
-                       'sys_log',
-                       'action=6 and details_nr=30
-                               AND tablename='.$GLOBALS['TYPO3_DB']->fullQuoteStr($table,'sys_log').'
-                               AND recuid='.intval($id)
-               );
-
-               $entry = array();
-               foreach($rows as $dat)  {
-                       $data = unserialize($dat['log_data']);
-                       $username = $this->be_user_Array[$dat['userid']] ? $this->be_user_Array[$dat['userid']]['username'] : '['.$dat['userid'].']';
-
-                       switch($data['stage'])  {
-                               case 1:
-                                       $text = $GLOBALS['LANG']->getLL('stage.sentToReview');
-                               break;
-                               case 10:
-                                       $text = $GLOBALS['LANG']->getLL('stage.approvedForPublish');
-                               break;
-                               case -1:
-                                       $text = $GLOBALS['LANG']->getLL('stage.rejectedElement');
-                               break;
-                               case 0:
-                                       $text = $GLOBALS['LANG']->getLL('stage.resetToEdit');
-                               break;
-                               default:
-                                       $text = $GLOBALS['LANG']->getLL('stage.undefined');
-                               break;
-                       }
-                       $text = t3lib_BEfunc::dateTime($dat['tstamp']).': "'.$username.'" '.$text;
-                       $text.= ($data['comment'] ? '<br />' . $GLOBALS['LANG']->getLL('userComment') . ': <em>' . htmlspecialchars($data['comment']) . '</em>' : '');
-
-                       $entry[] = $text;
-               }
-
-               return count($entry) ? '<span onmouseover="document.getElementById(\'log_'.$table.$id.'\').style.visibility = \'visible\';" onmouseout="document.getElementById(\'log_'.$table.$id.'\').style.visibility = \'hidden\';">'.$stageCommands.' ('.count($entry).')</span>'.
-                               '<div class="logLayer" style="visibility: hidden; position: absolute;" id="log_'.$table.$id.'">'.implode('<hr/>',array_reverse($entry)).'</div>' : $stageCommands;
-       }
-
-       /**
-        * Creates display of sub elements of a page when the swap mode is either "Page" or "Branch" (0 / ALL)
-        *
-        * @param       integer         Page uid (for either online or offline version, but it MUST have swapmode/treeLevel set to >0 (not -1 indicating element versioning)
-        * @param       integer         The treeLevel value, >0 indicates "branch" while 0 means page+content. (-1 would have meant element versioning, but that should never happen for a call to this function!)
-        * @param       integer         For offline versions; This is t3ver_oid, the original ID of the online page.
-        * @return      string          HTML content.
-        */
-       function subElements($uid,$treeLevel,$origId=0) {
-               global $TCA;
-
-               if (!$this->details && ($GLOBALS['BE_USER']->workspace===0 || !$this->MOD_SETTINGS['expandSubElements']))       {       // In online workspace we have a reduced view because otherwise it will bloat the listing:
-                       return '<br />
-                                       <img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/joinbottom.gif','width="18" height="16"').' align="top" alt="" title="" />'.
-                                       ($origId ?
-                                               '<a href="'.htmlspecialchars($this->doc->backPath.t3lib_extMgm::extRelPath('version').'cm1/index.php?id='.$uid.'&details='.rawurlencode('pages:'.$uid).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">'.
-                                               '<span class="typo3-dimmed"><em>' . $GLOBALS['LANG']->getLL('subElementsClick')  . '</em><span></a>' :
-                                               '<span class="typo3-dimmed"><em>' . $GLOBALS['LANG']->getLL('subElements') . '</em><span>');
-               } else {        // For an offline workspace, show sub elements:
-
-                       $tCell = array();
-
-                               // Find records that follow pages when swapping versions:
-                       $recList = array();
-                       foreach($TCA as $tN => $tCfg)   {
-                               if ($tN!='pages' && ($treeLevel>0 || $TCA[$tN]['ctrl']['versioning_followPages']))      {
-                                       $this->subElements_getNonPageRecords($tN, $uid, $recList);
-                               }
-                       }
-
-                               // Render records collected above:
-                       $elCount = count($recList)-1;
-                       foreach($recList as $c => $comb)        {
-                               list($tN,$rec) = $comb;
-
-                               $this->subElements_renderItem(
-                                       $tCell,
-                                       $tN,
-                                       $uid,
-                                       $rec,
-                                       $origId,
-                                       $c==$elCount && $treeLevel==0 ? 1 : 0,          // If true, will show bottom-join icon.
-                                       ''
-                               );
-                       }
-
-                               // For branch, dive into the subtree:
-                       if ($treeLevel>0) {
-
-                                       // Drawing tree:
-                               $tree = t3lib_div::makeInstance('t3lib_pageTree');
-                               $tree->init('AND '.$GLOBALS['BE_USER']->getPagePermsClause(1));
-                               $tree->makeHTML = 2;            // 2=Also rendering depth-data into the result array
-                               $tree->getTree($uid, 99, '');
-
-                                       // Traverse page tree:
-                               foreach($tree->tree as $data)   {
-
-                                               // Render page in table cell:
-                                       $this->subElements_renderItem(
-                                               $tCell,
-                                               'pages',
-                                               $uid,
-                                               t3lib_BEfunc::getRecord('pages',$data['row']['uid']),   // Needs all fields, at least more than what is given in $data['row']...
-                                               $origId,
-                                               2,              // 2=the join icon and icon for the record is not rendered for pages (where all is in $data['HTML']
-                                               $data['HTML']
-                                       );
-
-                                               // Find all records from page and collect in $recList:
-                                       $recList = array();
-                                       foreach($TCA as $tN => $tCfg)   {
-                                               if ($tN!=='pages')      {
-                                                       $this->subElements_getNonPageRecords($tN, $data['row']['uid'], $recList);
-                                               }
-                                       }
-
-                                               // Render records collected above:
-                                       $elCount = count($recList)-1;
-                                       foreach($recList as $c => $comb)        {
-                                               list($tN,$rec) = $comb;
-
-                                               $this->subElements_renderItem(
-                                                       $tCell,
-                                                       $tN,
-                                                       $uid,
-                                                       $rec,
-                                                       $origId,
-                                                       $c==$elCount?1:0,       // If true, will show bottom-join icon.
-                                                       $data['HTML_depthData']
-                                               );
-                                       }
-                               }
-                       }
-
-                       return '
-                                       <!-- Sub-element tree for versions -->
-                                       <table border="0" cellpadding="0" cellspacing="1" class="ver-subtree">
-                                               '.implode('',$tCell).'
-                                       </table>';
-               }
-       }
-
-       /**
-        * Select records from a table and add them to recList
-        *
-        * @param       string          Table name (from TCA)
-        * @param       integer         PID to select records from
-        * @param       array           Array where records are accumulated, passed by reference
-        * @return      void
-        */
-       function subElements_getNonPageRecords($tN, $uid, &$recList)    {
-               global $TCA;
-
-               $records = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
-                       '*',
-                       $tN,
-                       'pid='.intval($uid).
-                               ($TCA[$tN]['ctrl']['versioningWS'] ? ' AND t3ver_state=0' : '').
-                               t3lib_BEfunc::deleteClause($tN),
-                       '',
-                       $TCA[$tN]['ctrl']['sortby'] ? $TCA[$tN]['ctrl']['sortby'] : $GLOBALS['TYPO3_DB']->stripOrderBy($TCA[$tN]['ctrl']['default_sortby'])
-               );
-
-               foreach($records as $rec)       {
-                       $recList[] = array($tN,$rec);
-               }
-       }
-
-       /**
-        * Render a single item in a subelement list into a table row:
-        *
-        * @param       array           Table rows, passed by reference
-        * @param       string          Table name
-        * @param       integer         Page uid for which the subelements are selected/shown
-        * @param       array           Row of element in list
-        * @param       integer         The uid of the online version of $uid. If zero it means we are drawing a row for the online version itself while a value means we are drawing display for an offline version.
-        * @param       integer         Mode of icon display: 0=not the last, 1= is the last in list (make joinbottom icon then), 2=do not shown icons are all (for pages from the page tree already rendered)
-        * @param       string          Prefix HTML data (icons for tree rendering)
-        * @return      void            (Content accumulated in $tCell!)
-        */
-       function subElements_renderItem(&$tCell,$tN,$uid,$rec,$origId,$iconMode,$HTMLdata)      {
-               global $TCA;
-
-                       // Initialize:
-               $origUidFields = $TCA[$tN]['ctrl']['origUid'];
-               $diffCode = '';
-
-               if ($origUidFields)     {       // If there is a field for this table with original uids we will use that to connect records:
-                       if (!$origId)   {       // In case we are displaying the online originals:
-                               $this->targets['orig_'.$uid.'_'.$tN.'_'.$rec['uid']] = $rec;    // Build up target array (important that
-                               $tdParams =  ' id="orig_'.$uid.'_'.$tN.'_'.$rec['uid'].'" class="typo3-ver"';           // Setting ID of the table row
-                       } else {        // Version branch:
-                               if ($this->targets['orig_'.$origId.'_'.$tN.'_'.$rec[$origUidFields]])   {       // If there IS a corresponding original record...:
-
-                                               // Prepare Table row parameters:
-                                       $tdParams =  ' onmouseover="hlSubelements(\''.$origId.'_'.$tN.'_'.$rec[$origUidFields].'\', \''.$uid.'_'.$tN.'_'.$rec[$origUidFields].'\', 1, '.($this->MOD_SETTINGS['diff']==2?1:0).');"'.
-                                                               ' onmouseout="hlSubelements(\''.$origId.'_'.$tN.'_'.$rec[$origUidFields].'\', \''.$uid.'_'.$tN.'_'.$rec[$origUidFields].'\', 0, '.($this->MOD_SETTINGS['diff']==2?1:0).');"'.
-                                                               ' id="ver_'.$uid.'_'.$tN.'_'.$rec[$origUidFields].'" class="typo3-ver"';
-
-                                               // Create diff view:
-                                       if ($this->MOD_SETTINGS['diff'])        {
-                                               list($diffHTML,$diffPct) = $this->createDiffView($tN, $rec, $this->targets['orig_'.$origId.'_'.$tN.'_'.$rec[$origUidFields]]);
-
-                                               if ($this->MOD_SETTINGS['diff']==2)     {
-                                                       $diffCode =
-                                                               ($diffPct ? '<span class="nobr">'.$diffPct.'% change</span>' : '-').
-                                                               '<div style="visibility: hidden; position: absolute;" id="diff_'.$uid.'_'.$tN.'_'.$rec[$origUidFields].'" class="diffLayer">'.
-                                                               $diffHTML.
-                                                               '</div>';
-                                               } else {
-                                                       $diffCode =
-                                                               ($diffPct<0 ? $GLOBALS['LANG']->getLL('notAvailable') : ($diffPct ? $diffPct . '% ' . $GLOBALS['LANG']->getLL('change') : '')).
-                                                               $diffHTML;
-                                               }
-                                       }
-
-                                               // Unsetting the target fields allows us to mark all originals without a version in the subtree (see ->markupNewOriginals())
-                                       unset($this->targets['orig_'.$origId.'_'.$tN.'_'.$rec[$origUidFields]]);
-                               } else {        // No original record, so must be new:
-                                       $tdParams =  ' class="typo3-ver-new"';
-                               }
-                       }
-               } else {        // If no original uid column is supported for this table we are forced NOT to display any diff or highlighting.
-                       $tdParams = ' class="typo3-ver-noComp"';
-               }
-
-                       // Compile the cell:
-               $tCell[] = '
-                                               <tr'.$tdParams.'>
-                                                       <td class="iconTitle">'.
-                                                               $HTMLdata.
-                                                               ($iconMode < 2 ?
-                                                                       '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/ol/join'.($iconMode ? 'bottom' : '').'.gif','width="18" height="16"').' alt="" />'.
-                                                                       t3lib_iconWorks::getIconImage($tN, $rec, $this->doc->backPath,'') : '').
-                                                               t3lib_BEfunc::getRecordTitle($tN, $rec, TRUE).
-                                                       '</td>
-                                                       <td class="cmdCell">'.
-                                                               $this->displayWorkspaceOverview_commandLinksSub($tN,$rec,$origId).
-                                                       '</td>'.($origId ? '<td class="diffCell">'.
-                                                               $diffCode.
-                                                       '</td>':'').'
-                                               </tr>';
-       }
-
-       /**
-        * JavaScript code to mark up new records that are online (in sub element lists)
-        *
-        * @return      string          HTML javascript section
-        */
-       function markupNewOriginals()   {
-
-               if (count($this->targets))      {
-                       $scriptCode = '';
-                       foreach($this->targets as $key => $rec) {
-                               $scriptCode.='
-                                       document.getElementById(\''.$key.'\').attributes.getNamedItem("class").nodeValue = \'typo3-ver-new\';
-                               ';
-                       }
-
-                       return $this->doc->wrapScriptTags($scriptCode);
-               }
-       }
-
-       /**
-        * Create visual difference view of two records. Using t3lib_diff library
-        *
-        * @param       string          Table name
-        * @param       array           New version record (green)
-        * @param       array           Old version record (red)
-        * @return      array           Array with two keys (0/1) with HTML content / percentage integer (if -1, then it means N/A) indicating amount of change
-        */
-       function createDiffView($table, $diff_1_record, $diff_2_record) {
-               global $TCA;
-
-                       // Initialize:
-               $pctChange = 'N/A';
-
-                       // Check that records are arrays:
-               if (is_array($diff_1_record) && is_array($diff_2_record))       {
-
-                               // Load full table description and initialize diff-object:
-                       t3lib_div::loadTCA($table);
-                       $t3lib_diff_Obj = t3lib_div::makeInstance('t3lib_diff');
-
-                               // Add header row:
-                       $tRows = array();
-                       $tRows[] = '
-                               <tr class="bgColor5 tableheader">
-                                       <td>' . $GLOBALS['LANG']->getLL('fieldname')  . ':</td>
-                                       <td width="98%" nowrap="nowrap">' . $GLOBALS['LANG']->getLL('coloredDiffView') . ':</td>
-                               </tr>
-                       ';
-
-                               // Initialize variables to pick up string lengths in:
-                       $allStrLen = 0;
-                       $diffStrLen = 0;
-
-                               // Traversing the first record and process all fields which are editable:
-                       foreach($diff_1_record as $fN => $fV)   {
-                               if ($TCA[$table]['columns'][$fN] && $TCA[$table]['columns'][$fN]['config']['type']!='passthrough' && !t3lib_div::inList('t3ver_label',$fN))     {
-
-                                               // Check if it is files:
-                                       $isFiles = FALSE;
-                                       if (strcmp(trim($diff_1_record[$fN]),trim($diff_2_record[$fN])) &&
-                                                       $TCA[$table]['columns'][$fN]['config']['type']=='group' &&
-                                                       $TCA[$table]['columns'][$fN]['config']['internal_type']=='file')        {
-
-                                                       // Initialize:
-                                               $uploadFolder = $TCA[$table]['columns'][$fN]['config']['uploadfolder'];
-                                               $files1 = array_flip(t3lib_div::trimExplode(',', $diff_1_record[$fN],1));
-                                               $files2 = array_flip(t3lib_div::trimExplode(',', $diff_2_record[$fN],1));
-
-                                                       // Traverse filenames and read their md5 sum:
-                                               foreach($files1 as $filename => $tmp)   {
-                                                       $files1[$filename] = @is_file(PATH_site.$uploadFolder.'/'.$filename) ? md5(t3lib_div::getUrl(PATH_site.$uploadFolder.'/'.$filename)) : $filename;
-                                               }
-                                               foreach($files2 as $filename => $tmp)   {
-                                                       $files2[$filename] = @is_file(PATH_site.$uploadFolder.'/'.$filename) ? md5(t3lib_div::getUrl(PATH_site.$uploadFolder.'/'.$filename)) : $filename;
-                                               }
-
-                                                       // Implode MD5 sums and set flag:
-                                               $diff_1_record[$fN] = implode(' ',$files1);
-                                               $diff_2_record[$fN] = implode(' ',$files2);
-                                               $isFiles = TRUE;
-                                       }
-
-                                               // If there is a change of value:
-                                       if (strcmp(trim($diff_1_record[$fN]),trim($diff_2_record[$fN])))        {
-
-
-                                                       // Get the best visual presentation of the value and present that:
-                                               $val1 = t3lib_BEfunc::getProcessedValue($table,$fN,$diff_2_record[$fN],0,1);
-                                               $val2 = t3lib_BEfunc::getProcessedValue($table,$fN,$diff_1_record[$fN],0,1);
-
-                                                       // Make diff result and record string lenghts:
-                                               $diffres = $t3lib_diff_Obj->makeDiffDisplay($val1,$val2,$isFiles?'div':'span');
-                                               $diffStrLen+= $t3lib_diff_Obj->differenceLgd;
-                                               $allStrLen+= strlen($val1.$val2);
-
-                                                       // If the compared values were files, substituted MD5 hashes:
-                                               if ($isFiles)   {
-                                                       $allFiles = array_merge($files1,$files2);
-                                                       foreach($allFiles as $filename => $token)       {
-                                                               if (strlen($token)==32 && strstr($diffres,$token))      {
-                                                                       $filename =
-                                                                               t3lib_BEfunc::thumbCode(array($fN=>$filename),$table,$fN,$this->doc->backPath).
-                                                                               $filename;
-                                                                       $diffres = str_replace($token,$filename,$diffres);
-                                                               }
-                                                       }
-                                               }
-
-                                                       // Add table row with result:
-                                               $tRows[] = '
-                                                       <tr class="bgColor4">
-                                                               <td>'.htmlspecialchars($GLOBALS['LANG']->sL(t3lib_BEfunc::getItemLabel($table,$fN))).'</td>
-                                                               <td width="98%">'.$diffres.'</td>
-                                                       </tr>
-                                               ';
-                                       } else {
-                                                       // Add string lengths even if value matched - in this was the change percentage is not high if only a single field is changed:
-                                               $allStrLen+=strlen($diff_1_record[$fN].$diff_2_record[$fN]);
-                                       }
-                               }
-                       }
-
-                               // Calculate final change percentage:
-                       $pctChange = $allStrLen ? ceil($diffStrLen*100/$allStrLen) : -1;
-
-                               // Create visual representation of result:
-                       if (count($tRows)>1)    {
-                               $content.= '<table border="0" cellpadding="1" cellspacing="1" class="diffTable">'.implode('',$tRows).'</table>';
-                       } else {
-                               $content.= '<span class="nobr">'.$this->doc->icons(1) . $GLOBALS['LANG']->getLL('completeMatch') . '</span>';
-                       }
-               } else $content.= $this->doc->icons(3) . $GLOBALS['LANG']->getLL('errorRecordsNotFound');
-
-                       // Return value:
-               return array($content,$pctChange);
-       }
-
-       /**
-        * Links to stage change of a version
-        *
-        * @param       string          Table name
-        * @param       array           Offline record (version)
-        * @return      string          HTML content, mainly link tags and images.
-        */
-       function displayWorkspaceOverview_stageCmd($table,&$rec_off)    {
-#debug($rec_off['t3ver_stage']);
-               switch((int)$rec_off['t3ver_stage'])    {
-                       case 0:
-                               $sId = 1;
-                               $sLabel = $GLOBALS['LANG']->getLL('editing');
-                               $color = '#666666';
-                               $label = $GLOBALS['LANG']->getLL('commentForReviewer');
-                               $titleAttrib = $GLOBALS['LANG']->getLL('sendToReview');
-                       break;
-                       case 1:
-                               $sId = 10;
-                               $sLabel = $GLOBALS['LANG']->getLL('review');
-                               $color = '#6666cc';
-                               $label = $GLOBALS['LANG']->getLL('commentForPublisher');
-                               $titleAttrib = $GLOBALS['LANG']->getLL('approveForPublishing');
-                       break;
-                       case 10:
-                               $sLabel = $GLOBALS['LANG']->getLL('publish');
-                               $color = '#66cc66';
-                       break;
-                       case -1:
-                               $sLabel = $this->doc->icons(2) . $GLOBALS['LANG']->getLL('rejected');
-                               $sId = 0;
-                               $color = '#ff0000';
-                               $label = $GLOBALS['LANG']->getLL('comment');
-                               $titleAttrib = $GLOBALS['LANG']->getLL('resetStage');
-                       break;
-                       default:
-                               $sLabel = $GLOBALS['LANG']->getLL('undefined');
-                               $sId = 0;
-                               $color = '';
-                       break;
-               }
-#debug($sId);
-
-               $raiseOk = !$GLOBALS['BE_USER']->workspaceCannotEditOfflineVersion($table,$rec_off);
-
-               if ($raiseOk && $rec_off['t3ver_stage']!=-1)    {
-                       $onClick = 'var commentTxt=window.prompt("' . $GLOBALS['LANG']->getLL('rejectExplain') . '","");
-                                                       if (commentTxt!=null) {window.location.href="'.$this->doc->issueCommand(
-                                                       '&cmd['.$table.']['.$rec_off['uid'].'][version][action]=setStage'.
-                                                       '&cmd['.$table.']['.$rec_off['uid'].'][version][stageId]=-1'
-                                                       ).'&cmd['.$table.']['.$rec_off['uid'].'][version][comment]="+escape(commentTxt);}'.
-                                                       ' return false;';
-                               // Reject:
-                       $actionLinks.=
-                               '<a href="#" onclick="'.htmlspecialchars($onClick).'">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/down.gif','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('reject') . '" />'.
-                               '</a>';
-               } else {
-                               // Reject:
-                       $actionLinks.=
-                               '<img src="'.$this->doc->backPath.'gfx/clear.gif" width="14" height="14" alt="" align="top" title="" />';
-               }
-
-               $actionLinks.= '<span style="background-color: '.$color.'; color: white;">'.$sLabel.'</span>';
-
-                       // Raise
-               if ($raiseOk)   {
-                       $onClick = 'var commentTxt=window.prompt("'.$label.'","");
-                                                       if (commentTxt!=null) {window.location.href="'.$this->doc->issueCommand(
-                                                       '&cmd['.$table.']['.$rec_off['uid'].'][version][action]=setStage'.
-                                                       '&cmd['.$table.']['.$rec_off['uid'].'][version][stageId]='.$sId
-                                                       ).'&cmd['.$table.']['.$rec_off['uid'].'][version][comment]="+escape(commentTxt);}'.
-                                                       ' return false;';
-                       if ($rec_off['t3ver_stage']!=10)        {
-                               $actionLinks.=
-                                       '<a href="#" onclick="'.htmlspecialchars($onClick).'">'.
-                                       '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/up.gif','width="14" height="14"').' alt="" align="top" title="'.htmlspecialchars($titleAttrib).'" />'.
-                                       '</a>';
-
-                               $this->stageIndex[$sId][$table][] = $rec_off['uid'];
-                               $this->recIndex[$table][$rec_off['uid']] = $sId;
-                       }
-               }
-               return $actionLinks;
-       }
-
-       /**
-        * Links to publishing etc of a version
-        *
-        * @param       string          Table name
-        * @param       array           Online record
-        * @param       array           Offline record (version)
-        * @param       string          Swap type, "branch", "page" or "element"
-        * @return      string          HTML content, mainly link tags and images.
-        */
-       function displayWorkspaceOverview_commandLinks($table,&$rec_on,&$rec_off,$vType)        {
-               if ($this->publishAccess && (!($GLOBALS['BE_USER']->workspaceRec['publish_access']&1) || (int)$rec_off['t3ver_stage']===10))    {
-                       $actionLinks =
-                               '<a href="'.htmlspecialchars($this->doc->issueCommand(
-                                               '&cmd['.$table.']['.$rec_on['uid'].'][version][action]=swap'.
-                                               '&cmd['.$table.']['.$rec_on['uid'].'][version][swapWith]='.$rec_off['uid']
-                                               )).'">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/insert1.gif','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('publish') . '" />'.
-                               '</a>';
-                       if ($GLOBALS['BE_USER']->workspaceSwapAccess()) {
-                               $actionLinks.=
-                                       '<a href="'.htmlspecialchars($this->doc->issueCommand(
-                                                       '&cmd['.$table.']['.$rec_on['uid'].'][version][action]=swap'.
-                                                       '&cmd['.$table.']['.$rec_on['uid'].'][version][swapWith]='.$rec_off['uid'].
-                                                       '&cmd['.$table.']['.$rec_on['uid'].'][version][swapIntoWS]=1'
-                                                       )).'">'.
-                                       '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/swap.png','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('swap') . '" />'.
-                                       '</a>';
-                       }
-               }
-
-               if (!$GLOBALS['BE_USER']->workspaceCannotEditOfflineVersion($table,$rec_off))   {
-                               // Release
-                       $actionLinks.=
-                               '<a href="'.htmlspecialchars($this->doc->issueCommand('&cmd['.$table.']['.$rec_off['uid'].'][version][action]=clearWSID')).'" onclick="return confirm(\'' . $GLOBALS['LANG']->getLL('removeFromWorkspace') . '?\');">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/group_clear.gif','width="14" height="14"').' alt="" align="top" title="' . $GLOBALS['LANG']->getLL('removeFromWorkspace') . '" />'.
-                               '</a>';
-
-                               // Edit
-                       if ($table==='pages' && $vType!=='element')     {
-                               $tempUid = ($vType==='branch' || $GLOBALS['BE_USER']->workspace===0 ? $rec_off['uid'] : $rec_on['uid']);
-                               $actionLinks.=
-                                       '<a href="#" onclick="top.loadEditId('.$tempUid.');top.goToModule(\''.$this->pageModule.'\'); return false;">'.
-                                       '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,t3lib_extMgm::extRelPath('cms').'layout/layout.gif','width="14" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_page'). '" alt="" />'.
-                                       '</a>';
-                       } else {
-                               $params = '&edit['.$table.']['.$rec_off['uid'].']=edit';
-                               $actionLinks.=
-                                       '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,$this->doc->backPath)).'">'.
-                                       '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="12" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_element'). '" alt="" />'.
-                                       '</a>';
-                       }
-               }
-
-                       // History/Log
-               $actionLinks.=
-                       '<a href="'.htmlspecialchars($this->doc->backPath.'show_rechis.php?element='.rawurlencode($table.':'.$rec_off['uid']).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">'.
-                       '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/history2.gif','width="13" height="12"').' title="' . $GLOBALS['LANG']->getLL('showLog') . '" alt="" />'.
-                       '</a>';
-
-                       // View
-               if ($table==='pages')   {
-                       $tempUid = ($vType==='branch' || $GLOBALS['BE_USER']->workspace===0 ? $rec_off['uid'] : $rec_on['uid']);
-                       $actionLinks.=
-                               '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($tempUid,$this->doc->backPath,t3lib_BEfunc::BEgetRootLine($tempUid))).'">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/zoom.gif','width="12" height="12"').' title="" alt="" />'.
-                               '</a>';
-               }
-
-               return $actionLinks;
-       }
-
-       /**
-        * Links to publishing etc of a version
-        *
-        * @param       string          Table name
-        * @param       array           Record
-        * @param       integer         The uid of the online version of $uid. If zero it means we are drawing a row for the online version itself while a value means we are drawing display for an offline version.
-        * @return      string          HTML content, mainly link tags and images.
-        */
-       function displayWorkspaceOverview_commandLinksSub($table,$rec,$origId)  {
-               $uid = $rec['uid'];
-               if ($origId || $GLOBALS['BE_USER']->workspace===0)      {
-                       if (!$GLOBALS['BE_USER']->workspaceCannotEditRecord($table,$rec))       {
-                                       // Edit
-                               if ($table==='pages')   {
-                                       $actionLinks.=
-                                               '<a href="#" onclick="top.loadEditId('.$uid.');top.goToModule(\''.$this->pageModule.'\'); return false;">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,t3lib_extMgm::extRelPath('cms').'layout/layout.gif','width="14" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_page'). '" alt="" />'.
-                                               '</a>';
-                               } else {
-                                       $params = '&edit['.$table.']['.$uid.']=edit';
-                                       $actionLinks.=
-                                               '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::editOnClick($params,$this->doc->backPath)).'">'.
-                                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/edit2.gif','width="12" height="12"').' title="' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_user_ws.xml:img_title_edit_element'). '" alt="" />'.
-                                               '</a>';
-                               }
-                       }
-
-                               // History/Log
-                       $actionLinks.=
-                               '<a href="'.htmlspecialchars($this->doc->backPath.'show_rechis.php?element='.rawurlencode($table.':'.$uid).'&returnUrl='.rawurlencode($this->REQUEST_URI)).'">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/history2.gif','width="13" height="12"').' title="' . $GLOBALS['LANG']->getLL('showLog') . '" alt="" />'.
-                               '</a>';
-               }
-
-                       // View
-               if ($table==='pages')   {
-                       $actionLinks.=
-                               '<a href="#" onclick="'.htmlspecialchars(t3lib_BEfunc::viewOnClick($uid,$this->doc->backPath,t3lib_BEfunc::BEgetRootLine($uid))).'">'.
-                               '<img'.t3lib_iconWorks::skinImg($this->doc->backPath,'gfx/zoom.gif','width="12" height="12"').' title="" alt="" />'.
-                               '</a>';
-               }
-
-               return $actionLinks;
-       }
-
-
-
-
-
-
-
-
-
-       /**********************************
-        *
-        * Processing
-        *
-        **********************************/
-
-       /**
-        * Will publish workspace if buttons are pressed
-        *
-        * @return      void
-        */
-       function publishAction()        {
-
-                       // If "Publish" or "Swap" buttons are pressed:
-               if (t3lib_div::_POST('_publish') || t3lib_div::_POST('_swap'))  {
-
-                       if ($this->table==='pages')     {       // Making sure ->uid is a page ID!
-                                       // Initialize workspace object and request all pending versions:
-                               $wslibObj = t3lib_div::makeInstance('wslib');
-                               $cmd = $wslibObj->getCmdArrayForPublishWS($GLOBALS['BE_USER']->workspace, t3lib_div::_POST('_swap'),$this->uid);
-
-                                       // Execute the commands:
-                               $tce = t3lib_div::makeInstance('t3lib_TCEmain');
-                               $tce->stripslashes_values = 0;
-                               $tce->start(array(), $cmd);
-                               $tce->process_cmdmap();
-
-                               t3lib_BEfunc::setUpdateSignal('updatePageTree');
-
-                               return $tce->errorLog;
-                       }
-               }
-       }
-}
-
-
-
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/version/cm1/index.php'])      {
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/version/cm1/index.php']);
-}
-
-
-
-
-// Make instance:
-$SOBE = t3lib_div::makeInstance('tx_version_cm1');
-$SOBE->init();
-
-
-$SOBE->main();
-$SOBE->printContent();
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/version/ext_emconf.php b/typo3/sysext/version/ext_emconf.php
deleted file mode 100755 (executable)
index b86259d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-
-########################################################################
-# Extension Manager/Repository config file for ext "version".
-#
-# Auto generated 21-10-2009 11:27
-#
-# Manual updates:
-# Only the data in the array - everything else is removed by next
-# writing. "version" and "dependencies" must not be touched!
-########################################################################
-
-$EM_CONF[$_EXTKEY] = array(
-       'title' => 'Versioning Management',
-       'description' => 'Backend Interface for management of the versioning API.',
-       'category' => 'be',
-       'author' => 'Kasper Skaarhoj',
-       'author_email' => 'kasperYYYY@typo3.com',
-       'shy' => '',
-       'dependencies' => '',
-       'conflicts' => '',
-       'priority' => '',
-       'module' => 'cm1',
-       'doNotLoadInFE' => 0,
-       'state' => 'beta',
-       'internal' => '',
-       'uploadfolder' => 0,
-       'createDirs' => '',
-       'modify_tables' => '',
-       'clearCacheOnLoad' => 0,
-       'lockType' => '',
-       'author_company' => '',
-       'version' => '1.2.0',
-       '_md5_values_when_last_written' => 'a:9:{s:24:"class.tx_version_cm1.php";s:4:"0bc1";s:12:"ext_icon.gif";s:4:"3ca2";s:14:"ext_tables.php";s:4:"46e8";s:13:"locallang.xml";s:4:"cc5e";s:7:"tca.php";s:4:"fbe7";s:13:"cm1/clear.gif";s:4:"cc11";s:15:"cm1/cm_icon.gif";s:4:"f35b";s:12:"cm1/conf.php";s:4:"6ed8";s:13:"cm1/index.php";s:4:"8921";}',
-       'constraints' => array(
-               'depends' => array(
-               ),
-               'conflicts' => array(
-               ),
-               'suggests' => array(
-               ),
-       ),
-       'suggests' => array(
-       ),
-);
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/version/ext_icon.gif b/typo3/sysext/version/ext_icon.gif
deleted file mode 100755 (executable)
index f253bca..0000000
Binary files a/typo3/sysext/version/ext_icon.gif and /dev/null differ
diff --git a/typo3/sysext/version/ext_tables.php b/typo3/sysext/version/ext_tables.php
deleted file mode 100755 (executable)
index 6c30d27..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-if (!defined ('TYPO3_MODE'))   die ('Access denied.');
-
-if (TYPO3_MODE=='BE')  {
-       $GLOBALS['TBE_MODULES_EXT']['xMOD_alt_clickmenu']['extendCMclasses'][]=array(
-               'name' => 'tx_version_cm1',
-               'path' => t3lib_extMgm::extPath($_EXTKEY).'class.tx_version_cm1.php'
-       );
-
-       t3lib_extMgm::addModule('web','txversionM1','',t3lib_extMgm::extPath($_EXTKEY).'cm1/');
-}
-
-
-
-
-/**
- * Table "sys_workspace":
- */
-$TCA['sys_workspace'] = array(
-       'ctrl' => array(
-               'label' => 'title',
-               'tstamp' => 'tstamp',
-               'title' => 'LLL:EXT:lang/locallang_tca.php:sys_workspace',
-               'adminOnly' => 1,
-               'rootLevel' => 1,
-               'delete' => 'deleted',
-               'iconfile' => 'sys_workspace.png',
-               'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY) . 'tca.php',
-               'versioningWS_alwaysAllowLiveEdit' => true,
-               'dividers2tabs' => true
-       )
-);
-
-
-?>
\ No newline at end of file
diff --git a/typo3/sysext/version/locallang.xml b/typo3/sysext/version/locallang.xml
deleted file mode 100755 (executable)
index c071600..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<T3locallang>
-       <meta type="array">
-               <description>Module labels</description>
-               <type>module</type>
-       </meta>
-       <data type="array">
-               <languageKey index="default" type="array">
-                       <label index="title">Versioning</label>
-                       <label index="title_review">Send to review/pub</label>
-                       <label index="mlang_labels_tablabel">Page and content versioning and workspace management for pages.</label>
-                       <label index="mlang_labels_tabdescr">The Web&gt;Versioning module provides access to versioning features for the page tree.</label>
-                       <label index="mlang_tabs_tab">Versioning</label>
-                       <label index="clickAPage_header">Web&gt;Versioning module</label>
-                       <label index="clickAPage_content">Please click a page in the pagetree frame to see the versioning module.</label>
-                       <label index="filter_drafts">Drafts</label>
-                       <label index="filter_archive">Archive</label>
-                       <label index="filter_all">All</label>
-                       <label index="diffing">DIFFING</label>
-                       <label index="fieldname">Fieldname</label>
-                       <label index="coloredDiffView">Colored diff-view</label>
-                       <label index="recordsMatchesCompletely">Records matches completely on all editable fields!</label>
-                       <label index="errorRecordsNotFound">ERROR: Records could strangely not be found!</label>
-                       <label index="errorDiffSources">ERROR: You didn't select two sources for diffing!</label>
-                       <label index="tblHeader_title">Title</label>
-                       <label index="tblHeader_uid">UID</label>
-                       <label index="tblHeader_t3ver_oid">oid</label>
-                       <label index="tblHeader_t3ver_id">id</label>
-                       <label index="tblHeader_t3ver_wsid">wsid</label>
-                       <label index="tblHeader_t3ver_state">state</label>
-                       <label index="tblHeader_t3ver_stage">stage</label>
-                       <label index="tblHeader_t3ver_count">count</label>
-                       <label index="tblHeader_pid">pid</label>
-                       <label index="tblHeader_t3ver_label">Label</label>
-                       <label index="tblHeaderDesc_title">Header of element</label>
-                       <label index="tblHeaderDesc_uid">Unique ID of element</label>
-                       <label index="tblHeaderDesc_t3ver_oid">t3ver_oid - Reference to live version UID</label>
-                       <label index="tblHeaderDesc_t3ver_id">t3ver_id - Version number, incremental integer</label>
-                       <label index="tblHeaderDesc_t3ver_wsid">t3ver_wsid - Workspace ID. There can be only one version of an element per ID (except ID zero).</label>
-                       <label index="tblHeaderDesc_t3ver_state">t3ver_state - Special states of a version: 1=Placeholder for &quot;New&quot;. 2=Marked deleted.</label>
-                       <label index="tblHeaderDesc_t3ver_stage">t3ver_stage - Publishing stage: Editing (0), review (1), publish (10), rejected (-1).</label>
-                       <label index="tblHeaderDesc_t3ver_count">t3ver_count - Life cycle counter. Incremented each time element is unpublished.</label>
-                       <label index="tblHeaderDesc_pid">Page ID</label>
-                       <label index="tblHeaderDesc_t3ver_label">Label</label>
-                       <label index="diff">Diff</label>
-                       <label index="swapWithCurrent">SWAP with current</label>
-                       <label index="currentOnlineVersion">CURRENT ONLINE VERSION!</label>
-                       <label index="cmdPid0">Page: Page + content</label>
-                       <label index="cmdPid100">Branch: All subpages</label>
-                       <label index="cmdPid1">Element: Just record</label>
-                       <label index="createNewVersion">Create new version</label>
-                       <label index="previewLink">Preview Link</label>
-                       <label index="publishPage">Publish Page</label>
-                       <label index="swapPage">Swap page</label>
-                       <label index="publishPageQuestion">Are you sure you want to publish all content %sfrom this page?</label>
-                       <label index="swapPageQuestion">Are you sure you want to publish (swap) all content %sfrom this page?</label>
-                       <label index="publishPageQuestionStage">in &quot;Publish&quot; stage </label>
-                       <label index="previewUrl">Preview Url:</label>
-                       <label index="previewInstruction">You can preview this page from the workspace using this link for the next %s hours (does not require backend login):</label>
-                       <label index="versionDetails">Details for version</label>
-                       <label index="wsManagement">Workspace management</label>
-                       <label index="showDiffView">Show difference view</label>
-                       <label index="liveVersion">Live Version:</label>
-                       <label index="wsVersions">Workspace Versions:</label>
-                       <label index="controls">Controls:</label>
-                       <label index="goBack">Click here to go back</label>
-                       <label index="showAllInformation">Show all information</label>
-                       <label index="newElement">New element</label>
-                       <label index="deletedElement">Deleted element</label>
-                       <label index="moveToPlaceholder">Move-to placeholder (destination)</label>
-                       <label index="moveToPointer">Move-to pointer (source)</label>
-                       <label index="notAvailable">N/A</label>
-                       <label index="change">change:</label>
-                       <label index="element"> [Element]</label>
-                       <label index="page"> [Page]</label>
-                       <label index="branch"> [Branch]</label>
-                       <label index="otherVersions">Other version(s) in workspace </label>
-                       <label index="multipleVersions">Multiple versions in same workspace!</label>
-                       <label index="versionInVersion">Version inside version!</label>
-                       <label index="lifecycle">Lifecycle</label>
-                       <label index="workspace">Workspace</label>
-                       <label index="diffToLiveElement">Difference to live element:</label>
-                       <label index="commentForReviewer">Comment for Reviewer:</label>
-                       <label index="commentForPublisher">Comment for Publisher:</label>
-                       <label index="sendItemsToReview">Sending %s item(s) to review. </label>
-                       <label index="sendAllToReview">Send all to Review</label>
-                       <label index="approveToPublish">Approving %s item(s) to publishing. </label>
-                       <label index="approveAllToPublish">Approve all for Publishing</label>
-                       <label index="offline">[Offline]</label>
-                       <label index="draft">Draft</label>
-                       <label index="archive">Archive</label>
-                       <label index="publishedXTimes">Published %s times</label>
-                       <label index="stage.sentToReview">sent element to &quot;Review&quot;</label>
-                       <label index="stage.approvedForPublish">approved for &quot;Publish&quot;</label>
-                       <label index="stage.rejectedElement">rejected element!</label>
-                       <label index="stage.resetToEdit">reset to &quot;Editing&quot;</label>
-                       <label index="stage.undefined">[undefined]</label>
-                       <label index="userComment">User Comment</label>
-                       <label index="subElementsClick">[Sub elements, click for details]</label>
-                       <label index="subElements">[Sub elements]</label>
-                       <label index="completeMatch">Complete match on editable fields.</label>
-                       <label index="editing">Editing</label>
-                       <label index="sendToReview">Send to Review</label>
-                       <label index="review">Review</label>
-                       <label index="swap">Swap</label>
-                       <label index="approveForPublishing">Approve for Publishing</label>
-                       <label index="publish">Publish</label>
-                       <label index="rejected">Rejected</label>
-                       <label index="comment">Comment:</label>
-                       <label index="resetStage">Reset stage</label>
-                       <label index="undefined">Undefined</label>
-                       <label index="rejectExplain">Please explain why you reject:</label>
-                       <label index="removeFromWorkspace">Remove from workspace</label>
-                       <label index="showLog">Show Log</label>
-                       <label index="liveWorkspace">[Live workspace]</label>
-                       <label index="draftWorkspaces">Draft Workspaces</label>
-                       <label index="defaultDraft">[Default Draft]</label>
-                       <label index="errors">Errors:</label>
-                       <label index="refresh">Refresh</label>
-                       <label index="allowPreviewOfWholeWorkspace">Allow preview of whole workspace</label>
-               </languageKey>
-       </data>
-</T3locallang>
\ No newline at end of file
diff --git a/typo3/sysext/version/tca.php b/typo3/sysext/version/tca.php
deleted file mode 100644 (file)
index bc10aec..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-<?php
-/**
- * System workspaces - Defines the offline workspaces available to users in TYPO3.
- */
-$TCA['sys_workspace'] = array(
-       'ctrl' => $TCA['sys_workspace']['ctrl'],
-       'columns' => array(
-               'title' => array(
-                       'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.title',
-                       'config' => array(
-                               'type' => 'input',
-                               'size' => '20',
-                               'max' => '30',
-                               'eval' => 'required,trim,unique'
-                       )
-               ),
-               'description' => array(
-                       'label' => 'LLL:EXT:lang/locallang_general.xml:LGL.description',
-                       'config' => array(
-                               'type' => 'text',
-                               'rows' => 5,
-                               'cols' => 30
-                       )
-               ),
-               'adminusers' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.adminusers',
-                       'config' => array(
-                               'type' => 'group',
-                               'internal_type' => 'db',
-                               'allowed' => 'be_users',
-                               'size' => '3',
-                               'maxitems' => '10',
-                               'autoSizeMax' => 10,
-                               'show_thumbs' => '1',
-                               'wizards' => array(
-                                       'suggest' => array(
-                                               'type' => 'suggest',
-                                       )
-                               )
-                       )
-               ),
-               'members' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.members',
-                       'config' => array(
-                               'type' => 'group',
-                               'internal_type' => 'db',
-                               'allowed' => 'be_users,be_groups',
-                               'prepend_tname' => 1,
-                               'size' => '3',
-                               'maxitems' => '100',
-                               'autoSizeMax' => 10,
-                               'show_thumbs' => '1',
-                               'wizards' => array(
-                                       'suggest' => array(
-                                               'type' => 'suggest',
-                                       )
-                               )
-                       )
-               ),
-               'reviewers' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.reviewers',
-                       'config' => array(
-                               'type' => 'group',
-                               'internal_type' => 'db',
-                               'allowed' => 'be_users,be_groups',
-                               'prepend_tname' => 1,
-                               'size' => '3',
-                               'maxitems' => '100',
-                               'autoSizeMax' => 10,
-                               'show_thumbs' => '1',
-                               'wizards' => array(
-                                       'suggest' => array(
-                                               'type' => 'suggest',
-                                       )
-                               )
-                       )
-               ),
-               'db_mountpoints' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:db_mountpoints',
-                       'config' => array(
-                               'type' => 'group',
-                               'internal_type' => 'db',
-                                       'allowed' => 'pages',
-                               'size' => '3',
-                               'maxitems' => '10',
-                               'autoSizeMax' => 10,
-                               'show_thumbs' => '1',
-                               'wizards' => array(
-                                       'suggest' => array(
-                                               'type' => 'suggest',
-                                       )
-                               )
-                       )
-               ),
-               'file_mountpoints' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:file_mountpoints',
-                       'config' => array(
-                               'type' => 'select',
-                               'foreign_table' => 'sys_filemounts',
-                               'foreign_table_where' => ' AND sys_filemounts.pid=0 ORDER BY sys_filemounts.title',
-                               'size' => '3',
-                               'maxitems' => '10',
-                               'autoSizeMax' => 10,
-                               'renderMode' => $GLOBALS['TYPO3_CONF_VARS']['BE']['accessListRenderMode'],
-                               'iconsInOptionTags' => 1,
-                       )
-               ),
-               'publish_time' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.publish_time',
-                       'config' => array(
-                               'type' => 'input',
-                               'size' => '8',
-                               'max' => '20',
-                               'eval' => 'datetime',
-                               'default' => '0',
-                               'checkbox' => '0'
-                       )
-               ),
-               'unpublish_time' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.unpublish_time',
-                       'config' => array(
-                               'type' => 'input',
-                               'size' => '8',
-                               'max' => '20',
-                               'eval' => 'datetime',
-                               'checkbox' => '0',
-                               'default' => '0',
-                               'range' => array(
-                                       'upper' => mktime(0,0,0,12,31,2020),
-                               )
-                       )
-               ),
-               'freeze' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.freeze',
-                       'config' => array(
-                               'type' => 'check',
-                               'default' => '0'
-                       )
-               ),
-               'live_edit' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.live_edit',
-                       'config' => array(
-                               'type' => 'check',
-                               'default' => '0'
-                       )
-               ),
-               'review_stage_edit' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.review_stage_edit',
-                       'config' => array(
-                               'type' => 'check',
-                               'default' => '0'
-                       )
-               ),
-               'disable_autocreate' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.disable_autocreate',
-                       'config' => array(
-                               'type' => 'check',
-                               'default' => '0'
-                       )
-               ),
-               'swap_modes' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.swap_modes',
-                       'config' => array(
-                               'type' => 'select',
-                               'items' => array(
-                                       array('', 0),
-                                       array('Swap-Into-Workspace on Auto-publish', 1),
-                                       array('Disable Swap-Into-Workspace', 2)
-                               ),
-                       )
-               ),
-               'vtypes' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.vtypes',
-                       'config' => array(
-                               'type' => 'check',
-                               'items' => array(
-                                       array('Element', 0),
-                                       array('Page', 0),
-                                       array('Branch', 0)
-                               ),
-                       )
-               ),
-               'publish_access' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.publish_access',
-                       'config' => array(
-                               'type' => 'check',
-                               'items' => array(
-                                       array('Publish only content in publish stage', 0),
-                                       array('Only workspace owner can publish', 0),
-                               ),
-                       )
-               ),
-               'stagechg_notification' => array(
-                       'label' => 'LLL:EXT:lang/locallang_tca.xml:sys_workspace.stagechg_notification',
-                       'config' => array(
-                               'type' => 'select',
-                               'items' => array(
-                                       array('', 0),
-                                       array('Notify users on next stage only', 1),
-                                       array('Notify all users on any change', 10)
-                               ),
-                       )
-               ),
-       ),
-       'types' => array(
-               '0' => array('showitem' => 'title,description,
-                       --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.users,adminusers,members,reviewers,stagechg_notification,
-                       --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.mountpoints,db_mountpoints,file_mountpoints,
-                       --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.publishing,publish_time,unpublish_time,
-                       --div--;LLL:EXT:lang/locallang_tca.xml:sys_filemounts.tabs.other,freeze,live_edit,review_stage_edit,disable_autocreate,swap_modes,vtypes,publish_access'
-               )
-       )
-);
-
-?>
\ No newline at end of file