Fixed bug #16845: Better API for Update Wizards in the Install Tool (Thanks to Benjam...
authorSteffen Gebert <steffen.gebert@typo3.org>
Mon, 27 Dec 2010 11:54:35 +0000 (11:54 +0000)
committerSteffen Gebert <steffen.gebert@typo3.org>
Mon, 27 Dec 2010 11:54:35 +0000 (11:54 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@9906 709f56b5-9817-0410-a4d7-c38de5d9e867

20 files changed:
ChangeLog
typo3/sysext/install/Classes/Updates/Base.php [new file with mode: 0644]
typo3/sysext/install/Resources/Private/Templates/UpdateWizardParts.html
typo3/sysext/install/Resources/Private/Templates/WriteToLocalConfControl.html
typo3/sysext/install/ext_autoload.php
typo3/sysext/install/mod/class.tx_install.php
typo3/sysext/install/updates/class.tx_coreupdates_charsetdefaults.php
typo3/sysext/install/updates/class.tx_coreupdates_compatversion.php
typo3/sysext/install/updates/class.tx_coreupdates_compressionlevel.php
typo3/sysext/install/updates/class.tx_coreupdates_cscsplit.php
typo3/sysext/install/updates/class.tx_coreupdates_flagsfromsprite.php
typo3/sysext/install/updates/class.tx_coreupdates_imagescols.php
typo3/sysext/install/updates/class.tx_coreupdates_installnewsysexts.php
typo3/sysext/install/updates/class.tx_coreupdates_installsysexts.php
typo3/sysext/install/updates/class.tx_coreupdates_installversioning.php
typo3/sysext/install/updates/class.tx_coreupdates_mergeadvanced.php
typo3/sysext/install/updates/class.tx_coreupdates_migrateworkspaces.php
typo3/sysext/install/updates/class.tx_coreupdates_notinmenu.php
typo3/sysext/install/updates/class.tx_coreupdates_statictemplates.php
typo3/sysext/install/updates/class.tx_coreupdates_t3skin.php

index 12257ed..5baa513 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-27  Steffen Gebert  <steffen@steffen-gebert.de>
+
+       * Fixed bug #16845: Better API for Update Wizards in the Install Tool (Thanks to Benjamin Mack)
+
 2010-12-27  Xavier Perseguers  <typo3@perseguers.ch>
 
        * Raised DBAL to version 1.2.0beta3
diff --git a/typo3/sysext/install/Classes/Updates/Base.php b/typo3/sysext/install/Classes/Updates/Base.php
new file mode 100644 (file)
index 0000000..0827e0a
--- /dev/null
@@ -0,0 +1,194 @@
+<?php
+/***************************************************************
+*  Copyright notice
+*
+*  (c) 2010 Benjamin Mack <benni@typo3.org>
+*  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.
+*  A copy is found in the textfile GPL.txt and important notices to the license
+*  from the author is found in LICENSE.txt distributed with these scripts.
+*
+*
+*  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!
+***************************************************************/
+
+
+/**
+ * Generic class that every update wizard class inherits from.
+ * Used by the update wizard in the install tool.
+ *
+ * @author     Benjamin Mack <benni@typo3.org>
+ * @version $Id: 
+ */
+abstract class Tx_Install_Updates_Base {
+
+       /**
+        * the human-readable title of the upgrade wizard
+        */
+       protected $title;
+
+       /**
+        * parent object
+        * @var tx_install
+        */
+       public $pObj;
+
+       /**
+        * user input, set from outside
+        */
+       public $userInput;
+
+       /**
+        * current TYPO3 version number, set from outside
+        * version number coming from t3lib_div::int_from_ver()
+        */
+       public $versionNumber;
+
+
+
+       /**
+        *
+        * API functions
+        *
+        **/
+
+       /**
+        * The first function in the update wizard steps
+        *
+        * it works like this:
+        * @param       $explanation    string  HTML that is outputted on the first
+        * @param       $showUpdate             int     that informs you whether to show this update wizard or not. Possible values that checkForUpdate() should set:
+        *                      0 = don't show this update wizard at all (because it's not needed)
+        *                      1 = show the update wizard (explanation + next step button)
+        *                      2 = show the update wizard (explanation but not the "next step" button), useful for showing a status of a wizard
+        * @return      deprecated since TYPO3 4.5, in previous versions it was used to determine whether the update wizards should be shown, now, the $showUpdate parameter is used for that
+        */
+       // public abstract function checkForUpdate(&$explanation, &$showUpdate);
+
+
+       /**
+        * second step: get user input if needed
+        *
+        * @param       string  input prefix, all names of form fields have to start with this. Append custom name in [ ... ]
+        * @return      string  HTML output
+        */
+       // public abstract function getUserInput($inputPrefix);
+
+
+       /**
+        * third step: do the updates
+        *
+        * @param       array           &$dbQueries: queries done in this update
+        * @param       mixed           &$customMessages: custom messages
+        * @return      boolean         whether it worked (true) or not (false)
+        */
+       // public abstract function performUpdate(&$dbQueries, &$customMessages);
+
+       /**
+        * Checks if user input is valid
+        *
+        * @param       string          pointer to output custom messages
+        * @return      boolean         true if user input is correct, then the update is performed. When false, return to getUserInput
+        */
+       // public abstract function checkUserInput(&$customMessages);
+
+
+
+
+
+       /**
+        *
+        * Helper functions, getters and setters
+        *
+        **/
+
+       /**
+        * returns the title attribute
+        * 
+        * @return      the title of this update wizard
+        **/
+       public function getTitle() {
+               if ($this->title) {
+                       return $this->title;
+               } else {
+                       return $this->identifier;
+               }
+       }
+
+       /**
+        * sets the title attribute
+        * 
+        * @param       $title  the title of this update wizard
+        * @return      void
+        **/
+       public function setTitle($title) {
+               $this->title = $title;
+       }
+
+
+       /**
+        * returns the identifier of this class
+        * 
+        * @return      the identifier of this update wizard
+        **/
+       public function getIdentifier() {
+               return $this->identifier;
+       }
+
+       /**
+        * sets the identifier attribute
+        * 
+        * @param       $identifier     the identifier of this update wizard
+        * @return      void
+        **/
+       public function setIdentifier($identifier) {
+               $this->identifier = $identifier;
+       }
+
+       /**
+        * simple wrapper function that helps dealing with the compatibility
+        * layer that some update wizards don't have a second parameter
+        * thus, it evaluates everything already
+        *
+        * @return      boolean if the wizard should be shown at all on the overview page
+        * @see checkForUpdate()
+        */
+       public function shouldRenderWizard() {
+               $showUpdate = 0;
+               $explanation = '';
+               $res = $this->checkForUpdate($explanation, $showUpdate);
+               return ($showUpdate > 0 || $res == TRUE);
+       }
+
+       /**
+        * simple wrapper function that helps to check whether (if)
+        * this feature is cool if you want to tell the user that the update wizard
+        * is working fine, just as output (useful for the character set / utf8 wizard)
+        *
+        * @return      boolean if the wizard should render the Next() button on the overview page
+        * @see checkForUpdate()
+        */
+       public function shouldRenderNextButton() {
+               $showUpdate = 0;
+               $explanation = '';
+               $res = $this->checkForUpdate($explanation, $showUpdate);
+               return ($showUpdate != 2 || $res == TRUE);
+       }
+       
+
+}
+
+?>
index 6ed93e9..06e38d4 100644 (file)
@@ -10,6 +10,8 @@
        </head>
        <body>
                <!-- ###CHECKFORUPDATE### begin -->
+               <p>If you upgrade your TYPO3 installation from one major version to another (e.g. 4.4 to 4.5), then the upgrade wizards guide you through the necessary steps to upgrade your database records or explicitly install extensions that ship with the latest TYPO3 version.</p> 
+               <hr />
                <!-- ###UPDATESAVAILABLE### begin -->
                <!-- ###UPDATEWIZARDBOXES### begin -->
                <form action="###ACTION####t3-install-bottom" method="post">
@@ -21,7 +23,7 @@
                                </ol>
                        </fieldset>
                        <!-- ###SINGLEUPDATEWIZARDBOX### begin -->
-                       <h4>###IDENTIFIER###</h4>
+                       <h4>###TITLE###</h4>
                        ###EXPLANATION###
                        <fieldset class="t3-install-form-submit">
                                <ol>
@@ -30,6 +32,7 @@
                                        </li>
                                </ol>
                        </fieldset>
+                       <hr />
                        <!-- ###SINGLEUPDATEWIZARDBOX### end -->
                </form>
                <!-- ###UPDATEWIZARDBOXES### end -->
                                        </li>
                                </ol>
                        </fieldset>
-                       <p>
-                               <h4>
-                                       ###IDENTIFIER###
-                               </h4>
-                       </p>
+                       <h4>###TITLE###</h4>
                        ###IDENTIFIERMETHOD###
                        <!-- ###UPDATESAVAILABLE### end -->
                        <fieldset>
                        <!-- ###UPDATEITEMS### begin -->
                        <p class="innerWidth">
                                <strong>
-                                       ###IDENTIFIER###
+                                       ###TITLE###
                                </strong>
                        </p>
                                <!-- ###CHECKUSERINPUT### begin -->
                                </strong>
                                <!-- ###NOPERFORMUPDATE### end -->
                        <!-- ###UPDATEITEMS### end -->
+                       <!-- ###NEXTUPDATEWIZARD### begin -->
+                       <br /><br /><br /><hr />
+                       <form action="index.php?TYPO3_INSTALL[type]=update" method="post">
+                               <fieldset class="t3-install-hidden">
+                                       <ol>
+                                               <li>
+                                                       <input name="TYPO3_INSTALL[database_type]" value="getUserInput" type="hidden">
+                                               </li>
+                                       </ol>
+                               </fieldset>
+                               <fieldset class="t3-install-form-submit">
+                                       <ol>
+                                               <li>
+                                                       <button type="submit" name="TYPO3_INSTALL[update][###NEXTIDENTIFIER###]">
+                                                               Go to the next update wizard.
+                                                       </button>
+                                               </li>
+                                       </ol>
+                               </fieldset>
+                       </form>
+                       <!-- ###NEXTUPDATEWIZARD### end -->
                <!-- ###PERFORMUPDATE### end -->
        </body>
 </html>
\ No newline at end of file
index e181a56..f2bf401 100644 (file)
@@ -10,6 +10,7 @@
        </head>
        <body>
                <!-- ###CONTINUE### begin -->
+               <h3>About configuration:</h3>
                <h4 class="typo3-message message-ok">###HEADER###</h4>
                <ul>
                        <!-- ###MESSAGES### begin -->
@@ -25,6 +26,7 @@
                </p>
                <!-- ###CONTINUE### end -->
                <!-- ###NOCHANGE### begin -->
+               <h3>About configuration:</h3>
                <h4 class="typo3-message message-warning">###HEADER###</h4>
                <p>###MESSAGE###</p>
                <p>
index 9254a0f..9d80975 100644 (file)
@@ -4,7 +4,11 @@
  *
  * $Id$
  */
+
+$extPath = t3lib_extMgm::extPath('install');
 return array(
-       'tx_install_report_installstatus' => t3lib_extMgm::extPath('install', 'report/class.tx_install_report_installstatus.php'),
+       'tx_install_report_installstatus' => $extPath . 'report/class.tx_install_report_installstatus.php',
+       'tx_install_updates_base' => $extPath . 'Classes/Updates/Base.php'
 );
+
 ?>
\ No newline at end of file
index 6b503fd..76e7a80 100755 (executable)
@@ -6488,37 +6488,32 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
                                        $singleUpdate = array();
                                        foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'] as $identifier => $className) {
                                                $tmpObj = $this->getUpgradeObjInstance($className, $identifier);
-                                               if (method_exists($tmpObj,'checkForUpdate')) {
+                                               if ($tmpObj->shouldRenderWizard()) {
                                                        $explanation = '';
-                                                       $showUpdate = NULL;
-                                                               // return value kept for backwards compatibility
-                                                       $returnVal = $tmpObj->checkForUpdate($explanation, $showUpdate);
-                                                       if ($showUpdate == NULL) {
-                                                               $showUpdate = $returnVal;
-                                                       }
-                                                       if ($showUpdate > 0) {
-                                                               $updateMarkers = array(
-                                                                       'next' => '<button type="submit" name="TYPO3_INSTALL[update][###IDENTIFIER###]">
-                                                       Next
-                                                       <span class="t3-install-form-button-icon-positive">&nbsp;</span>
-                                               </button>',
-                                                                       'identifier' => $identifier,
-                                                                       'explanation' => $explanation,
-                                                               );
-
-                                                                       // only display the message, no button
-                                                               if ($showUpdate === 2) {
-                                                                       $updateMarkers['next'] = '';
-                                                               }
+                                                       $tmpObj->checkForUpdate($explanation);
+
+                                                       $updateMarkers = array(
+                                                               'next' => '<button type="submit" name="TYPO3_INSTALL[update][###IDENTIFIER###]">
+                                               Next
+                                               <span class="t3-install-form-button-icon-positive">&nbsp;</span>
+                                       </button>',
+                                                               'identifier'  => $identifier,
+                                                               'title'       => $tmpObj->getTitle(),
+                                                               'explanation' => $explanation,
+                                                       );
 
-                                                               $singleUpdate[] = t3lib_parsehtml::substituteMarkerArray(
-                                                                       $singleUpdateWizardBoxSubpart,
-                                                                       $updateMarkers,
-                                                                       '###|###',
-                                                                       TRUE,
-                                                                       FALSE
-                                                               );
+                                                               // only display the message, no button
+                                                       if (!$tmpObj->shouldRenderNextButton()) {
+                                                               $updateMarkers['next'] = '';
                                                        }
+
+                                                       $singleUpdate[] = t3lib_parsehtml::substituteMarkerArray(
+                                                               $singleUpdateWizardBoxSubpart,
+                                                               $updateMarkers,
+                                                               '###|###',
+                                                               TRUE,
+                                                               FALSE
+                                                       );
                                                }
                                        }
 
@@ -6620,6 +6615,7 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
                                                $tmpObj = $this->getUpgradeObjInstance($className, $identifier);
 
                                                $updateMarkers['identifier'] = $identifier;
+                                               $updateMarkers['title'] = $tmpObj->getTitle();
 
                                                if (method_exists($tmpObj,'getUserInput')) {
                                                        $updateMarkers['identifierMethod'] = $tmpObj->getUserInput('TYPO3_INSTALL[update][' . $identifier . ']');
@@ -6671,6 +6667,7 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
 
                                        $tmpObj = $this->getUpgradeObjInstance($className, $identifier);
                                        $updateItemsMarkers['identifier'] = $identifier;
+                                       $updateItemsMarkers['title'] = $tmpObj->getTitle();
                                                // check user input if testing method is available
                                        if (method_exists($tmpObj,'checkUserInput') && !$tmpObj->checkUserInput($customOutput)) {
                                                $customOutput = '';
@@ -6783,6 +6780,26 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
                                        implode(chr(10), $updateItems)
                                );
                                $GLOBALS['TYPO3_DB']->store_lastBuiltQuery = FALSE;
+                               
+                               // also render the link to the next update wizard, if available
+                               $nextUpdateWizard = $this->getNextUpdadeWizardInstance($tmpObj);
+                               if ($nextUpdateWizard) {
+                                       $content = t3lib_parsehtml::substituteMarkerArray(
+                                               $content,
+                                               array('NEXTIDENTIFIER' => $nextUpdateWizard->getIdentifier()),
+                                               '###|###',
+                                               TRUE,
+                                               FALSE
+                                       );
+                               } else {
+                                       // no next wizard, also hide the button to the next update wizard
+                                       $content = t3lib_parsehtml::substituteSubpart(
+                                               $content,
+                                               '###NEXTUPDATEWIZARD###',
+                                               ''
+                                       );
+                               }
+                               
                        break;
                }
                $this->message('Update Wizard', $title, $content);
@@ -6797,6 +6814,7 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
         */
        function getUpgradeObjInstance($className, $identifier) {
                $tmpObj = t3lib_div::getUserObj($className);
+               $tmpObj->setIdentifier($identifier);
                $tmpObj->versionNumber = t3lib_div::int_from_ver(TYPO3_version);
                $tmpObj->pObj = $this;
                $tmpObj->userInput = $this->INSTALL['update'][$identifier];
@@ -6804,6 +6822,32 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
        }
 
        /**
+        * Returns the next upgrade wizard object.
+        *
+        * Used to show the link/button to the next upgrade wizard
+        * @param       object  $currentObj             current Upgrade Wizard Object
+        * @return      mixed   Upgrade Wizard instance or FALSE
+        */
+       protected function getNextUpdadeWizardInstance($currentObj) {
+               $isPreviousRecord = TRUE;
+               foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install']['update'] as $identifier => $className) {
+                               // first, find the current update wizard, and then start validating the next ones
+                       if ($currentObj->getIdentifier() == $identifier) {
+                               $isPreviousRecord = FALSE;
+                               continue;
+                       }
+
+                       if (!$isPreviousRecord) {
+                               $nextUpdateWizard = $this->getUpgradeObjInstance($className, $identifier);
+                               if ($nextUpdateWizard->shouldRenderWizard()) {
+                                       return $nextUpdateWizard;
+                               }
+                       }
+               }
+               return FALSE;
+       }
+
+       /**
         * Check if at lease one backend admin user has been created
         *
         * @return integer Amount of backend users in the database
index 8b20f79..a524a16 100644 (file)
  *
  * @version $Id$
  */
-class tx_coreupdates_charsetDefaults {
-       var $versionNumber;     // version number coming from t3lib_div::int_from_ver()
-       var $needsExternalHelp = FALSE;
-
-       /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       var $pObj;
-       var $userInput; // user input
-
+class tx_coreupdates_charsetDefaults extends Tx_Install_Updates_Base {
+       protected $title = 'Database Character Set';
 
        /**
         * Checks if the configuration is relying on old default values or not.
index 414457c..4c4daf8 100644 (file)
  * @author Sebastian Kurf├╝rst <sebastian@garbage-group.de
  * @version $Id$
  */
-class tx_coreupdates_compatversion {
-       var $versionNumber;     // version number coming from t3lib_div::int_from_ver()
-
-       /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       var $pObj;
-       var $userInput; // user input
+class tx_coreupdates_compatversion extends Tx_Install_Updates_Base {
+       protected $title = 'Version Compatibility';
 
        /**
         * Function which checks if update is needed. Called in the beginning of an update process.
index d8a8f32..866850f 100644 (file)
  *
  * @author     Steffen Ritter <info@rs-websystems.de>
  */
-class tx_coreupdates_compressionlevel {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
-       public $pObj;   // parent object (tx_install)
-       public $userInput;      // user input
+class tx_coreupdates_compressionlevel extends Tx_Install_Updates_Base {
+       protected $title = 'Check Compression Level';
 
 
        /**
index add2dc2..6ed8169 100644 (file)
@@ -31,7 +31,8 @@
  * @author Susanne Moog <typo3@susanne-moog.de>
  * @version $Id$
  */
-class tx_coreupdates_cscsplit {
+class tx_coreupdates_cscsplit extends Tx_Install_Updates_Base {
+       protected $title = 'Split TypoScript Templates from CSS Styled Content';
 
        /**
         * Function which checks if update is needed. Called in the beginning of an update process.
index 59317fb..bb441af 100644 (file)
@@ -31,8 +31,8 @@
  * @author Ernesto Baschny <ernst@cron-it.de>
  * @version $Id$
  */
-class tx_coreupdates_flagsfromsprite {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
+class tx_coreupdates_flagsfromsprite extends Tx_Install_Updates_Base {
+       protected $title = 'Update Graphics, Using Sprites for sys_language Records';
 
        /**
         * Checks if an update is needed
index 16d48ff..6174b03 100644 (file)
  * @author Steffen Kamper <info@sk-typo3.de>
  * @version
  */
-class tx_coreupdates_imagecols {
-       var $versionNumber;     // version number coming from t3lib_div::int_from_ver()
-
-       /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       var $pObj;
-       var $userInput; // user input
+class tx_coreupdates_imagecols extends Tx_Install_Updates_Base {
+       protected $title = 'Update Existing Text with Image Content Elements';
 
 
        /**
index f3278f4..7b46e84 100644 (file)
  * @author  Benjamin Mack <benni@typo3.org>
  * @author  Steffen Kamper <info@sk-typo3.de>
  */
-class tx_coreupdates_installnewsysexts {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
+class tx_coreupdates_installnewsysexts extends Tx_Install_Updates_Base {
+       protected $title = 'Install New System Extensions';
        protected $newSystemExtensions = array('recycler', 't3editor', 'reports', 'scheduler');
 
        /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       public $pObj;
-       public $userInput;      // user input
-
-
-       /**
         * Checks if an update is needed
         *
         * @param       string          &$description: The description for the update
index a4212c2..7b564b8 100644 (file)
  * @author  Benjamin Mack <benni@typo3.org>
  * @author  Steffen Kamper <info@sk-typo3.de>
  */
-class tx_coreupdates_installsysexts {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
+class tx_coreupdates_installsysexts extends Tx_Install_Updates_Base {
+       protected $title = 'Install Outsourced System Extensions';
        protected $newSystemExtensions = array('info', 'perm', 'func', 'filelist', 'about', 'cshmanual', 'feedit', 'opendocs', 'simulatestatic');
 
        /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       public $pObj;
-       public $userInput;      // user input
-
-
-       /**
         * Checks if an update is needed
         *
         * @param       string          &$description: The description for the update
index b620e02..c8f4e2b 100644 (file)
  *
  * @author  Rupert Germann
  */
-class tx_coreupdates_installversioning {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
+class tx_coreupdates_installversioning extends Tx_Install_Updates_Base {
+       protected $title = 'Versioning and Workspaces: Install System Extension';
        protected $newSystemExtensions = array('version');
 
        /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       public $pObj;
-       public $userInput;      // user input
-
-
-       /**
         * Checks if an update is needed
         *
         * @param       string          &$description: The description for the update
index 70abb3e..469483a 100644 (file)
  * @author Steffen Kamper <info@sk-typo3.de>
  * @version $Id$
  */
-class tx_coreupdates_mergeadvanced {
-       var $versionNumber;     // version number coming from t3lib_div::int_from_ver()
-
-       /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       var $pObj;
-       var $userInput; // user input
-
+class tx_coreupdates_mergeadvanced extends Tx_Install_Updates_Base {
+       protected $title = 'Update Pages with Pagetype "Advanced"';
 
        /**
         * Checks if an update is needed
index 42febb0..a6630ba 100644 (file)
  * @version $Id$
  */
 class tx_coreupdates_migrateworkspaces extends tx_coreupdates_installsysexts {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
+       protected $title = 'Versioning and Workspaces: Migrate "draft" workspace';
 
-       /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       public $pObj;
-       public $userInput;      // user input
        public $sqlQueries;
 
        /**
index 8895900..0995b80 100644 (file)
  * @author Steffen Kamper <info@sk-typo3.de>
  * @version $Id$
  */
-class tx_coreupdates_notinmenu {
-       var $versionNumber;     // version number coming from t3lib_div::int_from_ver()
-
-       /**
-        * parent object
-        *
-        * @var tx_install
-        */
-       var $pObj;
-       var $userInput; // user input
+class tx_coreupdates_notinmenu extends Tx_Install_Updates_Base {
+       protected $title = 'Update Pages with Doktype "Not in menu"';
 
 
        /**
index 6b7ca3f..e85db85 100644 (file)
  * @author     Steffen Ritter <info@rs-websystems.de>
  * @author      Benjamin Mack <benni@typo3.org>
  */
-class tx_coreupdates_statictemplates {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
-       public $pObj;   // parent object (tx_install)
-       public $userInput;      // user input
+class tx_coreupdates_statictemplates extends Tx_Install_Updates_Base {
+       protected $title = 'Install Outsourced Static Templates (now in System Extension)';
 
 
        /**
index 44babc8..ac3d677 100644 (file)
  *
  * @author     Steffen Ritter <info@rs-websystems.de>
  */
-class tx_coreupdates_t3skin {
-       public $versionNumber;  // version number coming from t3lib_div::int_from_ver()
-       public $pObj;   // parent object (tx_install)
-       public $userInput;      // user input
+class tx_coreupdates_t3skin extends Tx_Install_Updates_Base {
+       protected $title = 'Install the new TYPO3 Skin "t3skin"';
 
 
        /**