Index: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_notinmenu.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_notinmenu.php (revision 8742) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_notinmenu.php (revision ) @@ -32,18 +32,10 @@ * @author Steffen Kamper * @version $Id: class.tx_coreupdates_notinmenu.php 8742 2010-08-30 18:55:32Z baschny $ */ -class tx_coreupdates_notinmenu { - var $versionNumber; // version number coming from t3lib_div::int_from_ver() +class tx_coreupdates_notinmenu extends Tx_Install_Updates_Base { + protected $title = 'Update Pages with Doktype "Not in menu"'; - /** - * parent object - * - * @var tx_install - */ - var $pObj; - var $userInput; // user input - /** * Checks if an update is needed * Index: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_migrateworkspaces.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_migrateworkspaces.php (revision 9674) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_migrateworkspaces.php (revision ) @@ -33,15 +33,8 @@ * @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: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_mergeadvanced.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_mergeadvanced.php (revision 7905) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_mergeadvanced.php (revision ) @@ -31,19 +31,10 @@ * @author Steffen Kamper * @version $Id: class.tx_coreupdates_mergeadvanced.php 7905 2010-06-13 14:42:33Z ohader $ */ -class tx_coreupdates_mergeadvanced { - var $versionNumber; // version number coming from t3lib_div::int_from_ver() +class tx_coreupdates_mergeadvanced extends Tx_Install_Updates_Base { + protected $title = 'Update Pages with Pagetype "Advanced"'; /** - * parent object - * - * @var tx_install - */ - var $pObj; - var $userInput; // user input - - - /** * Checks if an update is needed * * @param string &$description: The description for the update Index: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_statictemplates.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_statictemplates.php (revision 8145) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_statictemplates.php (revision ) @@ -31,10 +31,8 @@ * @author Steffen Ritter * @author Benjamin Mack */ -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: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installnewsysexts.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installnewsysexts.php (revision 7905) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installnewsysexts.php (revision ) @@ -34,20 +34,11 @@ * @author Benjamin Mack * @author Steffen Kamper */ -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: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_imagescols.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_imagescols.php (revision 8156) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_imagescols.php (revision ) @@ -31,18 +31,10 @@ * @author Steffen Kamper * @version */ -class tx_coreupdates_imagecols { - var $versionNumber; // version number coming from t3lib_div::int_from_ver() +class tx_coreupdates_imagecols extends Tx_Install_Updates_Base { + protected $title = 'Update Existing Text with Image Content Elements'; - /** - * parent object - * - * @var tx_install - */ - var $pObj; - var $userInput; // user input - /** * Checks if an update is needed * Index: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_compressionlevel.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_compressionlevel.php (revision 9674) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_compressionlevel.php (revision ) @@ -29,10 +29,8 @@ * * @author Steffen Ritter */ -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: typo3_src/typo3/sysext/install/Resources/Private/Templates/WriteToLocalConfControl.html =================================================================== --- typo3_src/typo3/sysext/install/Resources/Private/Templates/WriteToLocalConfControl.html (revision 7906) +++ typo3_src/typo3/sysext/install/Resources/Private/Templates/WriteToLocalConfControl.html (revision ) @@ -10,6 +10,7 @@ +

About configuration:

###HEADER###

    @@ -25,6 +26,7 @@

    +

    About configuration:

    ###HEADER###

    ###MESSAGE###

    Index: typo3_src/typo3/sysext/install/mod/class.tx_install.php =================================================================== --- typo3_src/typo3/sysext/install/mod/class.tx_install.php (revision 9891) +++ typo3_src/typo3/sysext/install/mod/class.tx_install.php (revision ) @@ -6488,39 +6488,34 @@ $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) { + $tmpObj->checkForUpdate($explanation); + - $updateMarkers = array( - 'next' => '', + $updateMarkers = array( + 'next' => '', - 'identifier' => $identifier, + 'identifier' => $identifier, + 'title' => $tmpObj->getTitle(), - 'explanation' => $explanation, - ); + 'explanation' => $explanation, + ); - // only display the message, no button + // only display the message, no button - if ($showUpdate === 2) { + if (!$tmpObj->shouldRenderNextButton()) { - $updateMarkers['next'] = ''; - } + $updateMarkers['next'] = ''; + } - $singleUpdate[] = t3lib_parsehtml::substituteMarkerArray( - $singleUpdateWizardBoxSubpart, - $updateMarkers, - '###|###', - TRUE, - FALSE - ); - } - } + $singleUpdate[] = t3lib_parsehtml::substituteMarkerArray( + $singleUpdateWizardBoxSubpart, + $updateMarkers, + '###|###', + TRUE, + FALSE + ); + } + } - } if (!empty($singleUpdate)) { $updateWizardBoxesSubpart = t3lib_parsehtml::substituteSubpart( @@ -6620,6 +6615,7 @@ $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 @@ $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 @@ 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 @@ */ 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 @@ } /** + * 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: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_cscsplit.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_cscsplit.php (revision 9279) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_cscsplit.php (revision ) @@ -31,7 +31,8 @@ * @author Susanne Moog * @version $Id: class.tx_coreupdates_cscsplit.php 9279 2010-11-04 20:03:01Z psychomieze $ */ -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: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_charsetdefaults.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_charsetdefaults.php (revision 9674) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_charsetdefaults.php (revision ) @@ -30,20 +30,10 @@ * * @version $Id$ */ -class tx_coreupdates_charsetDefaults { - var $versionNumber; // version number coming from t3lib_div::int_from_ver() - var $needsExternalHelp = FALSE; +class tx_coreupdates_charsetDefaults extends Tx_Install_Updates_Base { + protected $title = 'Database Character Set'; /** - * parent object - * - * @var tx_install - */ - var $pObj; - var $userInput; // user input - - - /** * Checks if the configuration is relying on old default values or not. * If needed, this updater will fix the configuration appropriately. * Index: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installsysexts.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installsysexts.php (revision 8242) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installsysexts.php (revision ) @@ -34,20 +34,11 @@ * @author Benjamin Mack * @author Steffen Kamper */ -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: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_compatversion.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_compatversion.php (revision 9771) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_compatversion.php (revision ) @@ -31,18 +31,10 @@ * @author Sebastian KurfŸrst * @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: typo3_src/typo3/sysext/install/Resources/Private/Templates/UpdateWizardParts.html =================================================================== --- typo3_src/typo3/sysext/install/Resources/Private/Templates/UpdateWizardParts.html (revision 9481) +++ typo3_src/typo3/sysext/install/Resources/Private/Templates/UpdateWizardParts.html (revision ) @@ -10,6 +10,8 @@ +

    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.

    +
    @@ -21,7 +23,7 @@ -

    ###IDENTIFIER###

    +

    ###TITLE###

    ###EXPLANATION###
      @@ -30,6 +32,7 @@
    +
    @@ -68,11 +71,7 @@ -

    -

    - ###IDENTIFIER### -

    -

    +

    ###TITLE###

    ###IDENTIFIERMETHOD###
    @@ -100,7 +99,7 @@

    - ###IDENTIFIER### + ###TITLE###

    @@ -132,6 +131,27 @@ + +



    +
    +
    +
      +
    1. + +
    2. +
    +
    +
    +
      +
    1. + +
    2. +
    +
    +
    + \ No newline at end of file Index: typo3_src/typo3/sysext/install/ext_autoload.php =================================================================== --- typo3_src/typo3/sysext/install/ext_autoload.php (revision 8156) +++ typo3_src/typo3/sysext/install/ext_autoload.php (revision ) @@ -4,7 +4,11 @@ * * $Id: ext_autoload.php 8156 2010-07-11 12:42:05Z psychomieze $ */ + +$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: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_t3skin.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_t3skin.php (revision 9674) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_t3skin.php (revision ) @@ -29,10 +29,8 @@ * * @author Steffen Ritter */ -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"'; /** Index: typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installversioning.php =================================================================== --- typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installversioning.php (revision 7905) +++ typo3_src/typo3/sysext/install/updates/class.tx_coreupdates_installversioning.php (revision ) @@ -33,20 +33,11 @@ * * @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