Index: typo3/sysext/em/res/js/em_app.js =================================================================== --- typo3/sysext/em/res/js/em_app.js (revision 10267) +++ typo3/sysext/em/res/js/em_app.js (revision ) @@ -48,6 +48,7 @@ var EM = new TYPO3.EM.App.init(); }); +TYPO3.EM.AdditionalApplicationItems = []; TYPO3.EM.App = { refreshLocalList: false, @@ -79,6 +80,10 @@ items.push(TYPO3.EM.UserTab) } + if (TYPO3.EM.AdditionalApplicationItems.length) { + items.push(TYPO3.EM.AdditionalApplicationItems); + } + this.appPanel = new Ext.TabPanel( { renderTo : 'em-app', id: 'em-main', Index: typo3/sysext/em/res/js/em_files.js =================================================================== --- typo3/sysext/em/res/js/em_files.js (revision 10293) +++ typo3/sysext/em/res/js/em_files.js (revision ) @@ -13,6 +13,10 @@ TYPO3.EM.ExtFilelist = Ext.extend(Ext.Panel, { recordData: null, isWindow: false, + loaderUrl: null, + rootIcon: 'sysext/t3skin/icons/module_tools_em.png', + rootText: TYPO3.lang.ext_details_ext_files, + baseParams: null, initComponent:function() { @@ -33,14 +37,14 @@ cmargins: '0 0 0 0', root: { - text: TYPO3.lang.ext_details_ext_files, + text: this.rootText, itemId: 'fileroot', expanded: true, - icon: 'sysext/t3skin/icons/module_tools_em.png' + icon: this.rootIcon }, loader: { - directFn: TYPO3.EM.ExtDirect.getExtFileTree, - baseParams: { + directFn: this.loaderUrl || TYPO3.EM.ExtDirect.getExtFileTree, + baseParams: this.baseParams ? this.baseParams : { extkey: this.recordData.extkey, typeShort: this.recordData.typeShort, baseNode: this.recordData.nodePath @@ -133,7 +137,7 @@ tooltip: TYPO3.lang.cmd_openInNewWindow, ref: '../openWindowButton', scope: this, - hidden: this.isWindow, + hidden: this.isWindow || this.noWindowOpen, handler: function() { var newEditor = new Ext.Window({ Index: typo3/sysext/em/ChangeLog =================================================================== --- typo3/sysext/em/ChangeLog (revision ) +++ typo3/sysext/em/ChangeLog (revision ) @@ -0,0 +1,11 @@ +2011-02-04 Steffen Kamper + + * CSS for filetree folder icons removed (use standard), filter with typo3 icons + * Render settings and labels after the hook for easy additions + * Implemented Hook to allow extensions to plug in the gui + +2011-02-03 Steffen Kamper + + * Fixed bug #17450 path to Documentation for sysextensions is wrong (Thanks to Simon Schaufelberger) + * Fixed double form tag in configuration forms (Thanks to Helmut Hummel) + Index: typo3/sysext/em/res/js/ux/searchfield.js =================================================================== --- typo3/sysext/em/res/js/ux/searchfield.js (revision 10337) +++ typo3/sysext/em/res/js/ux/searchfield.js (revision ) @@ -9,10 +9,28 @@ Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, { enableKeyEvents: true, specialKeyOnly: false, + validationEvent:false, + validateOnBlur:false, + trigger1Class:'x-form-trigger t3-icon t3-icon-actions t3-icon-actions-input t3-icon-input-clear ux-searchfield-trigger1', + trigger2Class:'x-btn-text t3-icon t3-icon-actions t3-icon-actions-system t3-icon-system-tree-search-open ux-searchfield-trigger2', + hideTrigger1:true, + width:180, + hasSearch : false, + paramName : 'query', + filterFunction: null, initComponent : function(){ - Ext.ux.form.SearchField.superclass.initComponent.call(this); + this.triggerConfig = { + tag:'span', cls:'x-form-twin-triggers', + cn:[ + {tag: "span", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.trigger1Class}, + {tag: "span", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.trigger2Class} + ] + }; + + + //Ext.ux.form.SearchField.superclass.initComponent.call(this); this.on('specialkey', function(f, e){ if(e.getKey() == e.ENTER){ this.onTrigger2Click(); @@ -25,11 +43,11 @@ }, this); } }, + onRender : function(ct, position){ this.doc = Ext.isIE ? Ext.getBody() : Ext.getDoc(); Ext.form.TriggerField.superclass.onRender.call(this, ct, position); - - this.wrap = this.el.wrap({cls: 'x-form-field-wrap x-form-field-trigger-wrap'}); + this.wrap = this.el.wrap({cls: 'x-form-field-wrap x-form-field-trigger-wrap ux-searchfield'}); this.trigger = this.wrap.createChild(this.triggerConfig || {tag: "img", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.triggerClass}); this.initTrigger(); @@ -39,16 +57,8 @@ this.resizeEl = this.positionEl = this.wrap; }, - validationEvent:false, - validateOnBlur:false, - trigger1Class:'x-form-clear-trigger', - trigger2Class:'x-form-search-trigger', - hideTrigger1:true, - width:180, - hasSearch : false, - paramName : 'query', - filterFunction: null, + onTrigger1Click : function(){ if(this.hasSearch){ this.el.dom.value = ''; Index: typo3/sysext/em/res/css/t3_em.css =================================================================== --- typo3/sysext/em/res/css/t3_em.css (revision 10293) +++ typo3/sysext/em/res/css/t3_em.css (revision ) @@ -212,4 +212,22 @@ .filteringList-highlight { background-color: #f48e0c; color: #fff; -} \ No newline at end of file +} + + +#localSearchField, #rsearchField { + height: 21px !important; + padding: 0 20px; +} + +.ux-searchfield-trigger1 { + right: 0 !important; + position: absolute !important; + top: 3px !important; +} + +.ux-searchfield-trigger2 { + left: 4px !important; + position: absolute !important; + top: 3px !important; +} \ No newline at end of file Index: typo3/sysext/em/classes/install/class.tx_em_install.php =================================================================== --- typo3/sysext/em/classes/install/class.tx_em_install.php (revision 10316) +++ typo3/sysext/em/classes/install/class.tx_em_install.php (revision ) @@ -663,6 +663,7 @@ * @return string Returns message string about the status of the operation */ function extDelete($extKey, $extInfo, $command) { + $content = ''; $absPath = tx_em_Tools::getExtPath($extKey, $extInfo['type']); if (t3lib_extMgm::isLoaded($extKey)) { return $GLOBALS['LANG']->getLL('extDelete_ext_active'); @@ -1323,7 +1324,14 @@ $form .= ' - +
' . $tsStyleConfig->ext_getForm($MOD_SETTINGS['constant_editor_cat'], $theConstants, $script, $addFields, $extKey, !$this->silentMode) . '' . $tsStyleConfig->ext_getForm( + $MOD_SETTINGS['constant_editor_cat'], + $theConstants, + $script, + $addFields, + $extKey, + !$this->silentMode + ) . ($this->silentMode ? '' : '') .'
'; } else { @@ -1440,6 +1448,7 @@ * @return string HTML output (if form is shown) */ function checkClearCache($extInfo) { + $content = ''; if ($extInfo['EM_CONF']['clearCacheOnLoad']) { if (t3lib_div::_POST('_clear_all_cache')) { // Action: Clearing the cache $tce = t3lib_div::makeInstance('t3lib_TCEmain'); Index: typo3/sysext/em/classes/class.tx_em_extensionmanager.php =================================================================== --- typo3/sysext/em/classes/class.tx_em_extensionmanager.php (revision 10316) +++ typo3/sysext/em/classes/class.tx_em_extensionmanager.php (revision ) @@ -143,8 +143,8 @@ $labels = tx_em_Tools::getArrayFromLocallang(t3lib_extMgm::extPath('em', 'language/locallang.xml')); $labels['yes'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:yes'); $labels['no'] = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:no'); - $this->pageRenderer->addInlineLanguageLabelArray($labels); + $globalSettings = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['em']); if (!isset($globalSettings)) { $globalSettings = array( @@ -185,9 +185,6 @@ ); $settings = array_merge($settings, $additionalSettings); - $this->pageRenderer->addInlineSettingArray('EM', $settings); - - // Add JS $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . '../t3lib/js/extjs/ux/flashmessages.js'); $this->pageRenderer->addJsFile($this->parentObject->doc->backPath . 'js/extjs/iframepanel.js'); @@ -236,6 +233,23 @@
'; + + //hook for the extension manager gui + if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['em/classes/class.tx_em_extensionamager.php']['renderHook'])) { + foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['em/classes/class.tx_em_extensionamager.php']['renderHook'] as $classRef) { + $hookObj = t3lib_div::getUserObj($classRef); + if (method_exists($hookObj, 'render')) { + $hookObj->render( + $this->pageRenderer, $settings, $labels, $content + ); + } + } + } + + // render settings and labels + $this->pageRenderer->addInlineSettingArray('EM', $settings); + $this->pageRenderer->addInlineLanguageLabelArray($labels); + return $content; } Index: typo3/sysext/em/classes/extensions/class.tx_em_extensions_list.php =================================================================== --- typo3/sysext/em/classes/extensions/class.tx_em_extensions_list.php (revision 10316) +++ typo3/sysext/em/classes/extensions/class.tx_em_extensions_list.php (revision ) @@ -634,7 +634,7 @@ $fileP = tx_em_Tools::typePath($extInfo['type']) . $extKey . '/doc/manual.sxw'; $cells[] = '' . (tx_em_Tools::typePath($extInfo['type']) && @is_file($fileP) ? - 'parentObject->doc->backPath . tx_em_Tools::typeRelPath($extInfo['type']) . $extKey . '/doc/manual.sxw')) . '" target="_blank" title="' . $GLOBALS['LANG']->getLL('listRow_local_manual') . '">' . t3lib_iconWorks::getSpriteIcon('actions-system-extension-documentation') . '' : '') . ''; Index: typo3/sysext/em/classes/connection/class.tx_em_connection_extdirectserver.php =================================================================== --- typo3/sysext/em/classes/connection/class.tx_em_connection_extdirectserver.php (revision 10337) +++ typo3/sysext/em/classes/connection/class.tx_em_connection_extdirectserver.php (revision ) @@ -240,6 +240,8 @@ list($list,) = $extensionList->getInstalledExtensions(); /** @var $install tx_em_Install */ $install = t3lib_div::makeInstance('tx_em_Install'); + $install->setSilentMode(TRUE); + $form = $install->updatesForm($extKey, $list[$extKey], 1, '', '', FALSE, TRUE); if (!$form) { return '

' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:msg_extNoConfiguration') . '

'; @@ -290,6 +292,7 @@ /** @var $install tx_em_Install */ $install = t3lib_div::makeInstance('tx_em_Install'); + $install->setSilentMode(TRUE); $install->INSTALL = $parameter['TYPO3_INSTALL']; $install->checkDBupdates($extKey, $list[$extKey]); @@ -396,8 +399,7 @@ 'id' => $node . '/' . $dir, 'text' => htmlspecialchars($dir), 'leaf' => false, - 'qtip' => '', - 'iconCls' => 't3-icon t3-icon-apps t3-icon-apps-filetree t3-icon-filetree-folder-temp' + 'qtip' => '' ); } }