Index: typo3/sysext/about/interfaces/interface.tx_about_customsections.php =================================================================== --- typo3/sysext/about/interfaces/interface.tx_about_customsections.php (revision ) +++ typo3/sysext/about/interfaces/interface.tx_about_customsections.php (revision ) @@ -0,0 +1,39 @@ + + * 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! + ***************************************************************/ + + +interface tx_about_customSections { + + /** + * @abstract + * @param array $sections + * @return void + */ + public function addSection(&$sections); +} + +?> \ No newline at end of file Index: typo3/sysext/t3skin/stylesheets/structure/module_help_about.css =================================================================== --- typo3/sysext/t3skin/stylesheets/structure/module_help_about.css (revision 7974) +++ typo3/sysext/t3skin/stylesheets/structure/module_help_about.css (revision ) @@ -9,6 +9,15 @@ width: 500px; } +#typo3-mod-help-about-index-php-outer #donation-description { + padding-left: 60px; + margin: 10px 0; +} + +#typo3-mod-help-about-index-php-outer .donation-button input { + padding-left: 20px; +} + #typo3-mod-help-about-index-php-outer .typo3-mod-help-about-index-php-inner { margin: 10px auto 20px; padding: 10px; Index: typo3/sysext/lang/locallang_mod_help_about.xml =================================================================== --- typo3/sysext/lang/locallang_mod_help_about.xml (revision 5376) +++ typo3/sysext/lang/locallang_mod_help_about.xml (revision ) @@ -6,6 +6,7 @@ + @@ -21,6 +22,9 @@ + + + Index: typo3/sysext/t3skin/extjs/xtheme-t3skin.css =================================================================== --- typo3/sysext/t3skin/extjs/xtheme-t3skin.css (revision 10400) +++ typo3/sysext/t3skin/extjs/xtheme-t3skin.css (revision ) @@ -2357,10 +2357,6 @@ padding-right: 3px; } -#donateWindow.t3-window .x-window-body.x-window-body-noborder { - padding-left: 100px; - background: url(../images/general/donate_teaser.png) no-repeat 25px 10px !important; -} .icon-collapse-all { background-image: url("images/tree/collapse-all.gif") !important; Index: typo3/sysext/about/mod/index.php =================================================================== --- typo3/sysext/about/mod/index.php (revision 10120) +++ typo3/sysext/about/mod/index.php (revision ) @@ -1,29 +1,29 @@ + * @author Kasper Skårhøj */ /** * [CLASS/FUNCTION INDEX of SCRIPT] @@ -51,143 +51,220 @@ unset($MCONF); require ('conf.php'); -require ($BACK_PATH.'init.php'); +require ($BACK_PATH . 'init.php'); -require ($BACK_PATH.'template.php'); +require ($BACK_PATH . 'template.php'); $LANG->includeLLFile('EXT:lang/locallang_mod_help_about.xml'); -$BE_USER->modAccess($MCONF,1); +$BE_USER->modAccess($MCONF, 1); - - - - - - /** * Script Class for the Help > About module * - * @author Kasper Skårhøj + * @author Kasper Skårhøj * @package TYPO3 * @subpackage core */ class SC_mod_help_about_index { - // Internal, dynamic: + // Internal, dynamic: - var $MCONF=array(); - var $MOD_MENU=array(); - var $MOD_SETTINGS=array(); - var $content; + public $MCONF = array(); + public $MOD_MENU = array(); + public $MOD_SETTINGS = array(); + protected $content = ''; + protected $sections = array(); - - /** - * Main function, producing the module output. - * In this case, the module output is a very simple screen telling the version of TYPO3 and that's basically it... - * The content is set in the internal variable $this->content - * + /** + * Main function, producing the module output. + * In this case, the module output is a very simple screen telling the version of TYPO3 and that's basically it... + * The content is set in the internal variable $this->content + * - * @return void + * @return void - */ + */ - function main() { + public function main() { - global $TBE_TEMPLATE,$LANG,$BACK_PATH; + global $TBE_TEMPLATE, $LANG, $BACK_PATH; - $this->MCONF = $GLOBALS['MCONF']; + $this->MCONF = $GLOBALS['MCONF']; - // ************************** - // Main - // ************************** + // ************************** + // Main + // ************************** - #$TBE_TEMPLATE->bgColor = '#cccccc'; + - $TBE_TEMPLATE->backPath = $GLOBALS['BACK_PATH']; + $TBE_TEMPLATE->backPath = $GLOBALS['BACK_PATH']; - $minorText = sprintf($LANG->getLL('minor'), 'TYPO3 Ver. '.htmlspecialchars(TYPO3_version).', Copyright © '.htmlspecialchars(TYPO3_copyright_year), 'Kasper Skårhøj'); + $content = $this->renderSections(); + // Renders the module page + $this->content = $TBE_TEMPLATE->render( + $GLOBALS['LANG']->getLL('title', TRUE), + $content + ); + } + + /** + * Render main sections + * @return string $content + */ + public function renderSections() { + $this->sections = array(); + + $this->renderAboutTypo3(); + $this->renderDonation(); + $this->renderCommunityCredits(); + $this->renderCoreteamCredits(); + $this->renderExtensionAuthors(); + $this->renderCustomSections(); + + // compile content + $content = '
+ ' . implode('', $this->sections) . ' +
'; + + return $content; + } + + /** + * Outputting the accumulated content to screen + * + * @return void + */ + public function printContent() { + echo $this->content; + } + + /** + * Renders TYPO3 logo and TYPO3 description + * + * @return void + */ + protected function renderAboutTypo3() { + $minorText = sprintf($GLOBALS['LANG']->getLL('minor'), 'TYPO3 Ver. ' . htmlspecialchars(TYPO3_version) . ', Copyright © ' . htmlspecialchars(TYPO3_copyright_year), 'Kasper Skårhøj'); - $content=' + $content = ' -
- + -
+
-

' . $LANG->getLL('welcome', TRUE) . '

+

' . $GLOBALS['LANG']->getLL('welcome', TRUE) . '

-

'.$minorText.'

+

' . $minorText . '

+
'; + + $this->sections['about'] = $content; + } + + /** + * Renders TYPO3 donation + * + * @return void + */ + protected function renderDonation() { + $content = '
+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:donation_header', TRUE) . '

+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:donation_message') . '

+
+ -
+
+
'; -
-

'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:community_credits', true).'

+ $this->sections['donation'] = $content; + } + + /** + * Renders community credits + * + * @return void + */ + protected function renderCommunityCredits() { + $content = '
+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:community_credits', TRUE) . '

-

'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:information_detail').'

+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:information_detail') . '

-
+
'; -
-

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:coredevs', true) . '

+ $this->sections['community'] = $content; + } + + /** + * Renders core team credits + * + * @return void + */ + protected function renderCoreteamCredits() { + $content = '
+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:coredevs', TRUE) . '

-

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:coredevs_detail') . '

+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:coredevs_detail') . '

-
+
'; -
-

'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension_authors', true).'

-

'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension_list_info', true).'

+ $this->sections['coreteam'] = $content; + } + + /** + * Renders extension authors credits + * + * @return void + */ + protected function renderExtensionAuthors() { + $content = '
+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension_authors', TRUE) . '

+

' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension_list_info', TRUE) . '

-
'.$this->getExtensionAuthors().' +
' . $this->getExtensionAuthors() . ' -
-
- '; +
'; - // Renders the module page - $this->content = $TBE_TEMPLATE->render( - 'About', - $content - ); + $this->sections['authors'] = $content; - } + } - /** + /** - * Outputting the accumulated content to screen + * Renders custom sections - * + * - * @return void + * @return void - */ + */ - function printContent() { - echo $this->content; + protected function renderCustomSections() { + //hook for custom sections + if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['about/index.php']['addSection'])) { + foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['about/index.php']['addSection'] as $classRef) { + $hookObject = t3lib_div::getUserObj($classRef); + if(!($hookObject instanceof tx_about_customSections)) { + throw new UnexpectedValueException('$hookObject must implement interface tx_about_customSections', 1298121573); - } + } + $hookObject->addSection($this->sections); + } + } + } + - /** + /** - * gets the author names from the installed extensions + * Gets the author names from the installed extensions - * + * - * @return string list of extensions authors and their e-mail + * @return string list of extensions authors and their e-mail - */ + */ - function getExtensionAuthors() { + protected function getExtensionAuthors() { - $content = ''; + $content = '
'.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension', true).''.$GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension_author', true).'
'; - $loadedExtensions = $GLOBALS['TYPO3_LOADED_EXT']; - foreach ($loadedExtensions as $extensionKey => $extension) { - if (is_array($extension) && $extension['type'] != 'S') { + $loadedExtensions = $GLOBALS['TYPO3_LOADED_EXT']; + foreach ($loadedExtensions as $extensionKey => $extension) { + if (is_array($extension) && $extension['type'] != 'S') { - $emconfPath = PATH_site.$extension['siteRelPath'].'ext_emconf.php'; + $emconfPath = PATH_site . $extension['siteRelPath'] . 'ext_emconf.php'; - include($emconfPath); + include($emconfPath); - $emconf = $EM_CONF['']; // ext key is not set when loading the ext_emconf.php directly + $emconf = $EM_CONF['']; // ext key is not set when loading the ext_emconf.php directly - $content.= ''. + $content .= '' . - ''; + ''; - } - } + } + } - $content.= '
' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension', true) . '' . $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_mod_help_about.xml:extension_author', true) . '
'.$emconf['title'].' ('.$extensionKey.')
' . $emconf['title'] . ' (' . $extensionKey . ')'.$emconf['author'].'
' . $emconf['author'] . '
'; + $content .= ''; - return $content; - } + return $content; + } } // Include extension? if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/mod/help/about/index.php'])) { - include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/mod/help/about/index.php']); + include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/mod/help/about/index.php']); } - - - - - - - - - - // Make instance: $SOBE = t3lib_div::makeInstance('SC_mod_help_about_index'); $SOBE->main(); $SOBE->printContent(); -?> +?> \ No newline at end of file Index: typo3/backend.php =================================================================== --- typo3/backend.php (revision 10511) +++ typo3/backend.php (revision ) @@ -31,7 +31,6 @@ require('classes/class.typo3logo.php'); require('classes/class.modulemenu.php'); -require_once('classes/class.donatewindow.php'); // core toolbar items require('classes/class.clearcachemenu.php'); @@ -192,10 +191,6 @@ public function render() { $this->executeHook('renderPreProcess'); - if (t3lib_div::makeInstance('DonateWindow')->isDonateWindowAllowed()) { - $this->pageRenderer->addJsFile('js/donate.js'); - } - // prepare the scaffolding, at this point extension may still add javascript and css $logo = t3lib_div::makeInstance('TYPO3Logo'); $logo->setLogo('gfx/typo3logo_mini.png'); @@ -445,11 +440,6 @@ 'tabs_closeOther' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:tabs.closeOther'), 'tabs_close' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:tabs.close'), 'tabs_openInBrowserWindow' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:tabs.openInBrowserWindow'), - 'donateWindow_title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:donateWindow.title'), - 'donateWindow_message' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:donateWindow.message'), - 'donateWindow_button_donate' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:donateWindow.button_donate'), - 'donateWindow_button_disable' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:donateWindow.button_disable'), - 'donateWindow_button_postpone' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:donateWindow.button_postpone'), 'csh_tooltip_loading' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:csh_tooltip_loading'), ); Index: typo3/sysext/t3skin/stylesheets/visual/module_help_about.css =================================================================== --- typo3/sysext/t3skin/stylesheets/visual/module_help_about.css (revision 7974) +++ typo3/sysext/t3skin/stylesheets/visual/module_help_about.css (revision ) @@ -8,6 +8,21 @@ text-align: center; } +#typo3-mod-help-about-index-php-outer #donation-description { + background-image: url("../../images/general/donate_teaser.png"); + background-repeat: no-repeat; +} + +#typo3-mod-help-about-index-php-outer .donation-button { + overflow: auto; +} +#typo3-mod-help-about-index-php-outer .donation-button input { + float: right; + background-image: url("../../images/icons/status/dialog-ok.png"); + background-repeat: no-repeat; + background-position: 2px; +} + #typo3-mod-help-about-index-php-outer .typo3-mod-help-about-index-php-inner { background: #ffffff; border: 1px solid #adadad; Index: t3lib/config_default.php =================================================================== --- t3lib/config_default.php (revision 10520) +++ t3lib/config_default.php (revision ) @@ -487,7 +487,6 @@ 'elementVersioningOnly' => TRUE, // If true, only element versioning is allowed in the backend (see option newPagesVersioningType). Setting this flag is recommended for new installations of TYPO3 4.2+ since "page" and "branch" versioning types are known for the drawbacks of loosing ids and "element" type versions supports moving now. Please note that "page" and "branch" types are deprecated since TYPO3 4.2 and will be unsupported in TYPO3 4.6. Thus, this option will be removed in TYPO3 4.6. 'versionNumberInFilename' => FALSE, //

Boolean: If true, included CSS and JS files will have the timestamp embedded in the filename, ie. filename.1269312081.js. This will make browsers and proxies reload the files if they change (thus avoiding caching issues). IMPORTANT: this feature requires extra .htaccess rules to work (please refer to _.htaccess or the _.htaccess file from the dummy package)

If false the filemtime will be appended as a query-string.

'spriteIconGenerator_handler' => '', // String: Used to register own/other spriteGenerating Handler, they have to implement the interface t3lib_spritemanager_SpriteIconGenerator. If set to "t3lib_spritemanager_SpriteBuildingHandler" icons from extensions will automatically merged into sprites. - 'allowDonateWindow' => TRUE, // Boolean: Defines whether to display a TYPO3 donate window to admin users that have been working with the system for more than three months. 'debug' => FALSE, // Boolean: If set, the loginrefresh is disabled and pageRenderer is set to debug mode. Use this to debug the backend only! 'AJAX' => array( // array of key-value pairs for a unified use of AJAX calls in the TYPO3 backend. Keys are the unique ajaxIDs where the value will be resolved to call a method in an object. See ajax.php and the classes/class.typo3ajax.php for more information. 'SC_alt_db_navframe::expandCollapse' => 'typo3/alt_db_navframe.php:SC_alt_db_navframe->ajaxExpandCollapse', @@ -511,8 +510,6 @@ 'BackendLogin::isTimedOut' => 'typo3/classes/class.ajaxlogin.php:AjaxLogin->isTimedOut', 'BackendLogin::getChallenge' => 'typo3/classes/class.ajaxlogin.php:AjaxLogin->getChallenge', 'BackendLogin::refreshTokens' => 'typo3/classes/class.ajaxlogin.php:AjaxLogin->refreshTokens', - 'DonateWindow::disable' => 'typo3/classes/class.donatewindow.php:DonateWindow->disable', - 'DonateWindow::postpone' => 'typo3/classes/class.donatewindow.php:DonateWindow->postpone', 'ExtDirect::getAPI' => 't3lib/extjs/class.t3lib_extjs_extdirectapi.php:t3lib_extjs_ExtDirectApi->getAPI', 'ExtDirect::route' => 't3lib/extjs/class.t3lib_extjs_extdirectrouter.php:t3lib_extjs_ExtDirectRouter->route', ), @@ -664,6 +661,7 @@ define('TYPO3_URL_SECURITY', 'http://typo3.org/teams/security/'); define('TYPO3_URL_DOWNLOAD', 'http://typo3.org/download/packages/'); define('TYPO3_URL_SYSTEMREQUIREMENTS', 'http://typo3.org/1275.0.html'); +define('TYPO3_URL_DONATE', 'http://typo3.org/donate/'); // Include localconf.php. Use this file to configure TYPO3 for your needs and database if (!@is_file(PATH_typo3conf . 'localconf.php')) { Index: typo3/sysext/about/ext_autoload.php =================================================================== --- typo3/sysext/about/ext_autoload.php (revision ) +++ typo3/sysext/about/ext_autoload.php (revision ) @@ -0,0 +1,13 @@ + $extensionPath . '/interfaces/interface.tx_about_customsections.php', +); + +?> \ No newline at end of file