Merge of extension manager for RC1
authorSteffen Kamper <info@sk-typo3.de>
Sat, 22 Jan 2011 20:47:01 +0000 (20:47 +0000)
committerSteffen Kamper <info@sk-typo3.de>
Sat, 22 Jan 2011 20:47:01 +0000 (20:47 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@10267 709f56b5-9817-0410-a4d7-c38de5d9e867

54 files changed:
ChangeLog
typo3/sysext/em/classes/class.tx_em_api.php
typo3/sysext/em/classes/class.tx_em_develop.php [deleted file]
typo3/sysext/em/classes/class.tx_em_extensionmanager.php
typo3/sysext/em/classes/connection/class.tx_em_connection_extdirectserver.php
typo3/sysext/em/classes/connection/class.tx_em_connection_extdirectsoap.php
typo3/sysext/em/classes/connection/class.tx_em_connection_soap.php
typo3/sysext/em/classes/connection/class.tx_em_connection_ter.php
typo3/sysext/em/classes/database/class.tx_em_database.php
typo3/sysext/em/classes/exception/class.tx_em_connection_exception.php
typo3/sysext/em/classes/exception/class.tx_em_extensionimport_exception.php
typo3/sysext/em/classes/exception/class.tx_em_extensionxml_exception.php
typo3/sysext/em/classes/exception/class.tx_em_mirrorxml_exception.php
typo3/sysext/em/classes/exception/class.tx_em_xml_exception.php
typo3/sysext/em/classes/extensions/class.tx_em_extensions_details.php
typo3/sysext/em/classes/extensions/class.tx_em_extensions_list.php
typo3/sysext/em/classes/import/class.tx_em_import_extensionlistimporter.php
typo3/sysext/em/classes/import/class.tx_em_import_mirrorlistimporter.php
typo3/sysext/em/classes/index.php
typo3/sysext/em/classes/install/class.tx_em_install.php
typo3/sysext/em/classes/parser/class.tx_em_parser_extensionxmlabstractparser.php
typo3/sysext/em/classes/parser/class.tx_em_parser_extensionxmlpullparser.php
typo3/sysext/em/classes/parser/class.tx_em_parser_extensionxmlpushparser.php
typo3/sysext/em/classes/parser/class.tx_em_parser_mirrorxmlabstractparser.php
typo3/sysext/em/classes/parser/class.tx_em_parser_mirrorxmlpullparser.php
typo3/sysext/em/classes/parser/class.tx_em_parser_mirrorxmlpushparser.php
typo3/sysext/em/classes/parser/class.tx_em_parser_xmlabstractparser.php
typo3/sysext/em/classes/parser/class.tx_em_parser_xmlparserfactory.php
typo3/sysext/em/classes/reports/class.tx_em_reports_extensionstatus.php
typo3/sysext/em/classes/repository/class.tx_em_repository.php
typo3/sysext/em/classes/repository/class.tx_em_repository_mirrors.php
typo3/sysext/em/classes/repository/class.tx_em_repository_utility.php
typo3/sysext/em/classes/settings/class.tx_em_settings.php
typo3/sysext/em/classes/tasks/class.tx_em_tasks_updateextensionlist.php
typo3/sysext/em/classes/tools/class.tx_em_tools.php
typo3/sysext/em/classes/tools/class.tx_em_tools_unzip.php
typo3/sysext/em/classes/tools/class.tx_em_tools_xmlhandler.php
typo3/sysext/em/classes/translations/class.tx_em_translations.php
typo3/sysext/em/ext_conf_template.txt
typo3/sysext/em/ext_emconf.php
typo3/sysext/em/ext_tables.php
typo3/sysext/em/interfaces/interface.tx_em_index_checkdatabaseupdateshook.php
typo3/sysext/em/language/locallang.xml
typo3/sysext/em/res/css/t3_em.css
typo3/sysext/em/res/js/em_app.js
typo3/sysext/em/res/js/em_components.js
typo3/sysext/em/res/js/em_files.js
typo3/sysext/em/res/js/em_languages.js
typo3/sysext/em/res/js/em_layouts.js
typo3/sysext/em/res/js/em_locallist.js
typo3/sysext/em/res/js/em_repositorylist.js
typo3/sysext/em/res/js/em_tools.js
typo3/sysext/em/res/js/em_usertools.js
typo3/sysext/em/res/js/ux/searchfield.js

index da27126..59b85ce 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2011-01-22  Ernesto Baschny  <ernst@cron-it.de>
 
+       * Merge of extension manager for RC1
+
+2011-01-22  Ernesto Baschny  <ernst@cron-it.de>
+
        * Cleanup: Updated ext_emconf.php files in system extensions
 
 2011-01-22  Oliver Hader  <oliver.hader@typo3.org>
index 5fc1033..886a1c8 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Steffen Kamper <steffen@typo3.org>
+ *  (c) 2010 Steffen Kamper <steffen@typo3.org>
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
diff --git a/typo3/sysext/em/classes/class.tx_em_develop.php b/typo3/sysext/em/classes/class.tx_em_develop.php
deleted file mode 100644 (file)
index d135bcb..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2010-2011 Steffen Kamper (info@sk-typo3.de)
-*  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!
-***************************************************************/
-/**
- * Module: Extension manager, developer module
- *
- * $Id: class.em_develop.php 2082 2010-03-21 17:19:42Z steffenk $
- *
- * @author     Steffen Kamper <info@sk-typo3.de>
- */
-
-
-class tx_em_Develop {
-
-       /**
-        * Parent module object
-        *
-        * @var SC_mod_tools_em_index
-        */
-       protected $parentObject;
-
-       /**
-        * Develop commands
-        *
-        * @var string
-        */
-       protected $command;
-       /**
-        * Develop sub commands
-        *
-        * @var string
-        */
-       protected $sub;
-       /**
-        * Extension key
-        *
-        * @var string
-        */
-       protected $extKey;
-
-       /**
-        * Internal Timer
-        *
-        * @var float
-        */
-       private $timer;
-
-       /**
-        * Constructor
-        *
-        * @param SC_mod_tools_em_index $parentObject
-        */
-       public function __construct(SC_mod_tools_em_index $parentObject) {
-               $this->parentObject = $parentObject;
-
-               $this->command = t3lib_div::_GP('devCmd');
-               $this->sub = t3lib_div::_GP('sub');
-               $this->extKey = t3lib_div::_GP('extkey');
-       }
-
-       /**
-        * Menu
-        *
-        * @return string $menu
-        */
-       protected function devMenu() {
-               $menu = '<input type="button" value="parse extension XML file" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'parseextensions'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="parse mirror XML file" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'parsemirrors'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="repository utility" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'repoutility'))) . '\';" />';
-               $menu .= '<hr /><input type="button" value="get Extlist" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'extList'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="Single Ext" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'single','sub'=>'conf'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="Single Ext Update" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'single','sub'=>'update'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="Single Ext Config" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'single','sub'=>'config'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="Single Ext Files" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'single','sub'=>'files'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="Single Ext DevInfo" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'single','sub'=>'devinfo'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="get Settings" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'settings'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="get Labels" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'labels'))) . '\';" />';
-               $menu .= '<hr />';
-               $menu .= '<input type="button" value="get remote extlist" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'remoteext'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="get installed extkeys" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'instextkeys'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="search for \'temp\'" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'searchremote'))) . '\';" />';
-               $menu .= '&nbsp;<input type="button" value="temp. test" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'temp'))) . '\';" />';
-               $menu .= '<hr />';
-               $menu .= '<input type="button" value="install extension" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'installext'))) . '\';" />';
-               $menu .= '<input type="button" value="enable extension" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'enableext'))) . '\';" />';
-               $menu .= '<input type="button" value="disable extension" onclick="document.location.href=\'' . htmlspecialchars(t3lib_div::linkThisScript(array('devCmd'=>'disableext'))) . '\';" />';
-               $menu .= '<hr />';
-               return $menu;
-       }
-       /**
-        * Render module content
-        *
-        * @return string $content
-        */
-       public function renderModule() {
-
-                       // Override content output - we now do that ourselves:
-                       //prepare docheader
-               $docHeaderButtons = $this->parentObject->getButtons();
-               $markers = array(
-                       'CSH' => $docHeaderButtons['csh'],
-                       'FUNC_MENU' => $this->parentObject->getFuncMenu(),
-               );
-
-               $content = '';
-               $this->parentObject->content .= $this->parentObject->doc->section('Welcome Dev\'s', $content, 0, 1);
-
-                       // Setting up the buttons and markers for docheader
-               $content = $this->parentObject->doc->startPage('Extension Manager');
-               $content .= $this->parentObject->doc->moduleBody($this->parentObject->pageinfo, $docHeaderButtons, $markers);
-               $contentParts = explode('###CONTENT###', $content);
-
-               echo $contentParts[0] . $this->parentObject->content;
-               echo $this->devMenu();
-
-               #
-
-
-               switch ($this->command) {
-                       case 'parseextensions':
-                               $this->timerStart();
-
-                               echo("<h1>Extensions</h1><pre>");
-                               $objRepository = t3lib_div::makeInstance('tx_em_Repository');
-                               $objRepositoryUtility = t3lib_div::makeInstance('tx_em_Repository_Utility', $objRepository);
-                               $mirrors = $objRepositoryUtility->updateExtList();
-
-                               echo("</pre><p>Will start import database only if required!</p>\r\n");
-
-                               $time = $this->timerStop();
-                               echo '<hr />Processing time: ' . $time . ' sec<br>';
-                                       // backend memory overhead usually 4 MB in comparison to eID invocation
-                               if(function_exists('memory_get_peak_usage')) {
-                                       $memSize = memory_get_peak_usage();
-                                       echo 'Maximum memory usage for this PHP process: ' . t3lib_div::formatSize($memSize) . ' (' . $memSize . ')';
-                               }
-                       break;
-                       case 'parsemirrors':
-                               $this->timerStart();
-
-                               $objRepository = t3lib_div::makeInstance('tx_em_Repository');
-                               $objRepositoryUtility = t3lib_div::makeInstance('tx_em_Repository_Utility', $objRepository);
-                               $mirrors = $objRepositoryUtility->getMirrors(TRUE)->getMirror();
-                               echo("<h1>Mirrors</h1>");
-                               echo("<p>Mirror file fetched from repository</p>\r\n");
-                               echo("<h2>Currently selected mirror (non persisted)</h2>\r\n");
-                               echo("<p>");
-                               echo("<b>Title:</b> " . $mirrors['title'] . "<br>\r\n");
-                               echo("<b>Host:</b> " . $mirrors['host'] . "<br>\r\n");
-                               echo("</p>");
-
-                               $time = $this->timerStop();
-                               echo '<hr />Processing time: ' . $time . ' sec<br>';
-                                       // backend memory overhead usually 4 MB in comparison to eID invocation
-                               if(function_exists('memory_get_peak_usage')) {
-                                       $memSize = memory_get_peak_usage();
-                                       echo 'Maximum memory usage for this PHP process: ' . t3lib_div::formatSize($memSize) . ' (' . $memSize . ')';
-                               }
-                               break;
-                       case 'repoutility':
-                               $objRepository = t3lib_div::makeInstance('tx_em_Repository');
-                               $objRepositoryUtility = t3lib_div::makeInstance('tx_em_Repository_Utility', $objRepository);
-
-                               echo("<h1>Files</h1>");
-                               echo("<h2>Extension list</h2>");
-                               echo("<p>");
-                               echo("<b>Lokale Datei (Extension list):</b> " . $objRepositoryUtility->getLocalExtListFile() . "<br>\r\n");
-                               echo("<b>Enfernte Datei (Extension list):</b> " . $objRepositoryUtility->getRemoteExtListFile() . "<br>\r\n");
-                               echo("<b>Entfernte Hash-Datei:</b> " . $objRepositoryUtility->getRemoteExtHashFile() . "<br>\r\n");
-                               echo("</p>");
-
-                               echo("<h2>Mirrors</h2>");
-                               echo("<p>");
-                               echo("<b>Lokale Datei (Mirrors):</b> " . $objRepositoryUtility->getLocalMirrorListFile() . "<br>\r\n");
-                               echo("<b>Enfernte Datei (Mirrors):</b> " . $objRepositoryUtility->getRemoteMirrorListFile() . "<br>\r\n");
-                               echo("</p>");
-                               break;
-                       case 'extList':
-                               $extList = $this->parentObject->extensionList->getInstalledExtensions(TRUE);
-                               echo t3lib_utility_Debug::viewArray($extList);
-                               break;
-                       case 'settings':
-                               /* @var $settings em_settings */
-                               $settings = t3lib_div::makeInstance('tx_em_Settings');
-                               $s = $settings->getSettings();
-                               echo '<h2>Settings</h2>';
-                               echo t3lib_utility_Debug::viewArray($s);
-                               echo '<h2>Repositories</h2>';
-
-                               $selected = $settings->getSelectedRepository();
-                               echo print_r($selected, TRUE);
-
-                               $repos = $settings->getRegisteredRepositories();
-                               echo t3lib_utility_Debug::viewArray($repos);
-                               $repo = $settings->getSelectedRepository();
-                               print_r($repo);
-                               echo '<h2>Mirrors</h2>';
-                               echo t3lib_utility_Debug::viewArray(unserialize($s['extMirrors']));
-                               echo '<h2>Selected Languages</h2>';
-                               echo t3lib_utility_Debug::viewArray(unserialize($s['selectedLanguages']));
-                               break;
-                       case 'single':
-                               echo $this->singleInfo();
-                               break;
-                       case 'labels':
-                               $labels = tx_em_Tools::getArrayFromLocallang(t3lib_extMgm::extPath('em', 'language/locallang.xml'));
-                               echo t3lib_utility_Debug::viewArray($labels);
-                               break;
-                       default:
-                       case 'remoteext':
-                               $this->timerStart();
-                               $list = tx_em_Database::getExtensionListFromRepository(0);
-                               echo '<h1>Read Extensionlist from cache_extensions, Repository=1</h1>';
-                               echo count($list) . ' Extensions read in ' . $this->timerStop() . ' sec.';
-                               echo '<pre>' . print_r($list, TRUE) . '</pre>';
-                               break;
-                       case 'instextkeys':
-                               $list = t3lib_div::makeInstance('tx_em_Connection_ExtDirectServer');
-                               $keys = $list->getInstalledExtkeys();
-                               echo t3lib_utility_Debug::viewArray(tx_em_Database::getExtensionListFromRepository(1));
-                               echo t3lib_utility_Debug::viewArray($keys);
-                               break;
-                       case 'searchremote':
-                               $quotedSearch = $GLOBALS['TYPO3_DB']->escapeStrForLike(
-                                       $GLOBALS['TYPO3_DB']->quoteStr('temp', 'cache_extensions'),
-                                       'cache_extensions'
-                               );
-                               $where = ' AND (extkey LIKE \'%' . $quotedSearch . '%\' OR title LIKE \'%' . $quotedSearch . '%\')';
-                               $orderBy = '';
-                               $orderDir = '';
-                               $limit = '';
-                               $list = tx_em_Database::getExtensionListFromRepository(
-                                       0,
-                                       $where,
-                                       $orderBy,
-                                       $orderDir,
-                                       $limit
-                               );
-                               echo t3lib_utility_Debug::viewArray($list);
-
-                               break;
-                       case 'temp':
-                               $list = t3lib_div::makeInstance('tx_em_Connection_ExtDirectServer');
-                               $tmp = $list->fetchTranslations('cms', 0, array('de','fr','ru'));
-                               echo t3lib_utility_Debug::viewArray($tmp);
-                               break;
-                       case 'installext':
-
-
-                               $em = t3lib_div::makeinstance('tx_em_Connection_ExtDirectServer');
-                               $param['loc'] = 'L'; //local
-                           $param['extfile'] = PATH_site . 'fileadmin/test.t3x';
-                               $param['uploadOverwrite'] = TRUE;
-                               echo t3lib_utility_Debug::viewArray($em->uploadExtension($param));
-                               break;
-                       case 'enableext':
-                               $em = t3lib_div::makeinstance('tx_em_Connection_ExtDirectServer');
-                               $em->enableExtension('sktertest');
-                               echo 'sktertest was enabled';
-                       default:
-                               echo 'select a command';
-               }
-
-
-               return;
-       }
-
-
-       /**
-        *
-        */
-       protected function singleInfo() {
-               $content = '<form action="' . $this->script . '" method="post">
-               Extkey: <input type="text" name="extkey" value="' . htmlspecialchars($this->extKey) . '" />
-               <input type="submit" value="get" /></form><br />';
-
-               if ($this->extKey && t3lib_extMgm::extPath($this->extKey)) {
-                       $info = array();
-                       $extpath = t3lib_extMgm::extPath($this->extKey);
-                       $path = substr($extpath, 0, -1 * (strlen($this->extKey) + 1));
-                       $extlist = t3lib_div::makeInstance('tx_em_Extensions_List');
-                       $extlist->singleExtInfo($this->extKey, $path, $info);
-                       $info = $info[0];
-                       $content .= 'Path: ' . $extpath . ' (' . $path . ')<br />';
-                       $content .= t3lib_utility_Debug::viewArray($info);
-
-                       $files = $info['files'];
-                       $fileArray = array();
-                       foreach ($files as $file) {
-                               $fileExt = strtolower(substr($file, strrpos($file, '.') + 1));
-                               $fileArray[] = array(
-                                       'id' => $file,
-                                       'text' => htmlspecialchars($file),
-                                       'leaf' => true
-                               );
-                       }
-                       $content .= t3lib_utility_Debug::viewArray($fileArray);
-
-                       switch ($this->sub) {
-                               case 'conf':
-                               case 'update':
-
-                                       $install = t3lib_div::makeInstance('tx_em_Install');
-                                       $content .= $install->checkDBupdates($this->extKey, $info);
-                                       break;
-                               case 'config':
-                                       break;
-                               case 'files':
-                                       $path = $path . $this->extKey . '/';
-                                       $files = t3lib_div::getAllFilesAndFoldersInPath(array(), $path, '', 1, 20, '.svn');
-                                       $content = '<h2>Files from ' . $this->extKey . ' (' . $path . ')</h2>' . t3lib_utility_Debug::viewArray($files);
-                                       break;
-                               case 'devinfo':
-                                       $extensionDetails = t3lib_div::makeInstance('tx_em_Extensions_Details');
-                                       $content = '<h2>DevInfo from ' . $this->extKey . ' (' . $path . ')</h2>' . $extensionDetails->extInformationarray($this->extKey, $info);
-                       }
-               }
-
-               return $content;
-       }
-
-       /**
-        * Start internal timer, used for time measure
-        */
-       protected function timerStart() {
-               $this->timer = microtime(true);
-       }
-
-       /**
-        * Stop internal timer and return difference, used for time measure
-        *
-        * @return float timer difference
-        */
-       protected function timerStop() {
-               return microtime(true) - $this->timer;
-       }
-}
-//NO XCLASS
-?>
index 978ce4c..5a0e65c 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2010-2011 Steffen Kamper (info@sk-typo3.de)
+*  (c) 2010 Steffen Kamper (info@sk-typo3.de)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -99,15 +99,9 @@ class tx_em_ExtensionManager {
        public function render() {
 
                /* Add CSS */
-               if ($this->debug == 2 || 1) {
-                       $this->pageRenderer->addCssFile($this->resPath . 'js/ux/css/GridFilters.css');
-                       $this->pageRenderer->addCssFile($this->resPath . 'js/ux/css/RangeMenu.css');
-                       $this->pageRenderer->addCssFile($this->resPath . 'css/t3_em.css');
-               } elseif($this->debug == 1) {
-
-               } else {
-
-               }
+               $this->pageRenderer->addCssFile($this->resPath . 'js/ux/css/GridFilters.css');
+               $this->pageRenderer->addCssFile($this->resPath . 'js/ux/css/RangeMenu.css');
+               $this->pageRenderer->addCssFile($this->resPath . 'css/t3_em.css');
 
 
                $iconsGfxPath = $GLOBALS['TBE_STYLES']['skinImgAutoCfg']['relDir'] . 'gfx/';
@@ -128,16 +122,16 @@ class tx_em_ExtensionManager {
 
                /* load ExtJS */
                $this->pageRenderer->loadExtJS();
-               $this->pageRenderer->enableExtJsDebug();
+               $this->pageRenderer->enableExtJSQuickTips();
 
                        // Load  JavaScript:
                $this->pageRenderer->addJsFile($this->parentObject->doc->backPath .
-                       'ajax.php?ajaxID=ExtDirect::getAPI&namespace=TYPO3.EM&' . TYPO3_version,
+                       'ajax.php?ajaxID=ExtDirect::getAPI&namespace=TYPO3.EM',
                        NULL,
                        FALSE
                );
                $this->pageRenderer->addJsFile($this->parentObject->doc->backPath .
-                       'ajax.php?ajaxID=ExtDirect::getAPI&namespace=TYPO3.EMSOAP&' . TYPO3_version,
+                       'ajax.php?ajaxID=ExtDirect::getAPI&namespace=TYPO3.EMSOAP',
                        NULL,
                        FALSE
                );
@@ -150,7 +144,12 @@ class tx_em_ExtensionManager {
                $this->pageRenderer->addInlineLanguageLabelArray($labels);
 
                $globalSettings = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['em']);
-
+               if (!isset($globalSettings)) {
+                       $globalSettings = array(
+                               'displayMyExtensions' => 0,
+                               'selectedLanguages' => array()
+                       );
+               }
                $settings = $this->parentObject->MOD_SETTINGS;
                $mirrors = unserialize($settings['extMirrors']);
                $settings['extMirrors'] = array(array('Random (recommended)', '', '', '', '', '', ''));
@@ -174,10 +173,12 @@ class tx_em_ExtensionManager {
                        'editorCss' => $this->resPath . 'css/editor.css',
                        'codemirrorCssPath' => $this->parentObject->doc->backPath . 'contrib/codemirror/css/',
                        'codemirrorJsPath' => $this->parentObject->doc->backPath . 'contrib/codemirror/js/',
+                       'codemirrorContribPath' => $this->parentObject->doc->backPath . 'contrib/codemirror/contrib/',
                        'selectedLanguages' => t3lib_div::trimExplode(',', $globalSettings['selectedLanguages'], TRUE),
                        'state' => $GLOBALS['BE_USER']->uc['moduleData']['tools_em']['States'],
                        'inlineToWindow' => $globalSettings['inlineToWindow'],
-                       'allowRepositoryUpdate' => $allowRepositoryUpdate
+                       'allowRepositoryUpdate' => $allowRepositoryUpdate,
+                       'displayMyExtensions' => $globalSettings['displayMyExtensions'],
                );
                $settings = array_merge($settings, $additionalSettings);
 
@@ -227,11 +228,7 @@ class tx_em_ExtensionManager {
                // clear flashmessages from php
                t3lib_FlashMessageQueue::getAllMessagesAndFlush();
 
-               //Update from repository - box
-               //$content = $this->parentObject->showRepositoryUpdateForm(0);
-
-               $content .= '
-
+               $content =  '
                        <div id="em-message-area"></div><div id="em-app"></div>
                        <!-- dummy form to make configuration js happy -->
                        <form name="tsStyleConfigForm" action="" method="post"></form>
@@ -262,4 +259,4 @@ if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLA
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/em/classes/class.tx_em_extensionsmanager.php']);
 }
 
-?>
+?>
\ No newline at end of file
index 7ab957a..357c260 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Steffen Kamper (info@sk-typo3.de)
+ *  (c) 2010 Steffen Kamper (info@sk-typo3.de)
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -146,7 +146,7 @@ class tx_em_Connection_ExtDirectServer {
                $extList = $list['data'];
 
                $temp = $this->getSettings();
-               $selectedLanguage = unserialize($temp['selectedLanguages']);
+               $selectedLanguages = unserialize($temp['selectedLanguages']);
 
 
                $keys = array();
@@ -158,8 +158,11 @@ class tx_em_Connection_ExtDirectServer {
                                        'icon' => $ext['icon'],
                                        'stype' => $ext['typeShort'],
                                );
-                               foreach ($selectedLanguage as $language) {
-                                       $keys[$i]['lang'][] = $GLOBALS['LANG']->sL('LLL:EXT:setup/mod/locallang.xml:lang_' . $language);
+                               $keys[$i]['lang'] = array();
+                               if (count($selectedLanguages)) {
+                                       foreach ($selectedLanguages as $language) {
+                                               $keys[$i]['lang'][] = $GLOBALS['LANG']->sL('LLL:EXT:setup/mod/locallang.xml:lang_' . $language);
+                                       }
                                }
                                $i++;
                        }
@@ -197,17 +200,28 @@ class tx_em_Connection_ExtDirectServer {
         */
        public function getExtensionUpdate($extKey) {
                if (isset($GLOBALS['TYPO3_LOADED_EXT'][$extKey])) {
-                       $path = t3lib_extMgm::extPath($extKey);
-                       $ext = array();
-
                        /** @var $install tx_em_Install */
                        $install = t3lib_div::makeInstance('tx_em_Install');
                        /** @var $extension tx_em_Extensions_List */
                        $extension = t3lib_div::makeInstance('tx_em_Extensions_List');
-                       $extension->singleExtInfo($extKey, $path, $ext);
-                       $ext = $ext[0];
-                       $update = $install->checkDBupdates($extKey, $ext);
-                       return $update ? $update : $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:msg_extUpToDate');
+
+
+                       $extPath = t3lib_extMgm::extPath($extKey);
+                       $type = tx_em_Tools::getExtTypeFromPath($extPath);
+                       $typePath = tx_em_Tools::typePath($type);
+                       $extInfo = array();
+
+                       $extension->singleExtInfo($extKey, $typePath, $extInfo);
+                       $extInfo = $extInfo[0];
+                       $extInfo['type'] = $extInfo['typeShort'];
+                       $update = $install->checkDBupdates($extKey, $extInfo);
+                       if ($update) {
+                               $update = $GLOBALS['LANG']->getLL('ext_details_new_tables_fields_select') .
+                                       $update .
+                                       '<br /><input type="submit" name="write" id="update-submit-' . htmlspecialchars($extKey) . '" value="' .
+                                               htmlspecialchars($GLOBALS['LANG']->getLL('updatesForm_make_updates')) . '" />';
+                       }
+                       return $update ? $update : $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:ext_details_dbUpToDate');
                } else {
                        return sprintf($GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:msg_extNotInstalled') ,htmlspecialchars($extKey));
                }
@@ -221,13 +235,17 @@ class tx_em_Connection_ExtDirectServer {
         * @return string $content
         */
        public function getExtensionConfiguration($extKey) {
+               /** @var $extensionList tx_em_Extensions_List */
                $extensionList = t3lib_div::makeInstance('tx_em_Extensions_List', $this);
                list($list,) = $extensionList->getInstalledExtensions();
+               /** @var $install tx_em_Install */
                $install = t3lib_div::makeInstance('tx_em_Install');
-               $form = $install->updatesForm($extKey, $list[$extKey], 1);
+               $form = $install->updatesForm($extKey, $list[$extKey], 1, '', '', FALSE, TRUE);
                if (!$form) {
                        return '<p>' . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:msg_extNoConfiguration') . '</p>';
                } else {
+                       //$form = preg_replace('/<form([^>]+)>/', '', $form);
+                       //$form = str_replace('</form>', '', $form);
                        return $form;
                }
        }
@@ -243,6 +261,8 @@ class tx_em_Connection_ExtDirectServer {
 
                $extKey = $parameter['extkey'];
                $extType = $parameter['exttype'];
+               $noSave = $parameter['noSave'];
+
                $absPath = tx_em_Tools::getExtPath($extKey, $extType);
                $relPath = tx_em_Tools::typeRelPath($extType) . $extKey . '/';
 
@@ -272,12 +292,41 @@ class tx_em_Connection_ExtDirectServer {
                $install = t3lib_div::makeInstance('tx_em_Install');
                $install->INSTALL = $parameter['TYPO3_INSTALL'];
                $install->checkDBupdates($extKey, $list[$extKey]);
-               $install->writeTsStyleConfig($extKey, $arr);
 
 
+               if ($noSave) {
+                       $html = $install->updatesForm($extKey, $list[$extKey], 1);
+               } else {
+                       $install->writeTsStyleConfig($extKey, $arr);
+               }
+
                return array(
                        'success' => true,
-                       'data' => $parameter['data']
+                       'data' => $parameter['data'],
+                       'html' => $html,
+               );
+       }
+
+       /**
+        * Cleans EMConf of extension
+        *
+        * @param  string  $extKey
+        * @return array
+        */
+       public function cleanEmConf($extKey) {
+
+               /** @var $extensionList tx_em_Extensions_List */
+               $extensionList = t3lib_div::makeInstance('tx_em_Extensions_List', $this);
+               list($list,) = $extensionList->getInstalledExtensions();
+               /** @var $extensionDetails tx_em_Extensions_Details */
+               $this->extensionDetails = t3lib_div::makeInstance('tx_em_Extensions_Details', $this);
+
+               $result = $this->extensionDetails->updateLocalEM_CONF($extKey, $list[$extKey]);
+
+               return array(
+                       'success' => TRUE,
+                       'extkey' => $extKey,
+                       'result' => $result
                );
        }
 
@@ -335,7 +384,8 @@ class tx_em_Connection_ExtDirectServer {
                                'leaf' => true,
                                'qtip' => $fileExt . ' - file',
                                'iconCls' => $cls,
-                               'fileType' => $type
+                               'fileType' => $type,
+                               'ext' => $fileExt
                        );
                }
 
@@ -483,12 +533,13 @@ class tx_em_Connection_ExtDirectServer {
                /** @var $extensionDetails tx_em_Extensions_Details */
                $extensionDetails = t3lib_div::makeInstance('tx_em_Extensions_Details');
                /** @var $extensionDetails tx_em_Connection_Ter */
-               $terConnection = t3lib_div::makeInstance('tx_em_Connection_Ter');
+               $terConnection = t3lib_div::makeInstance('tx_em_Connection_Ter', $this);
                /** @var $extensionDetails tx_em_Install */
                $install = t3lib_div::makeInstance('tx_em_Install');
                /** @var $api tx_em_API */
                $api = t3lib_div::makeInstance('tx_em_API');
 
+
                list($list,) = $extensionList->getInstalledExtensions();
                $uploadArray = $extensionDetails->makeUploadarray($extKey, $list[$extKey]);
 
@@ -562,6 +613,19 @@ class tx_em_Connection_ExtDirectServer {
                                        . '</td></tr>';
 
 
+                       // mod menu for singleDetails
+                       $modMenu = $GLOBALS['TBE_MODULES_EXT']['tools_em']['MOD_MENU']['singleDetails'];
+                       if (isset($modMenu) && is_array($modMenu)) {
+                               $lines[] = '<tr class="t3-row-header"><td colspan="2">' .
+                                       $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:ext_details_externActions') . '</td></tr>';
+                               $menuLinks = '';
+                               foreach ($modMenu as $menuEntry) {
+                                       $onClick = htmlspecialchars('jumpToUrl(\'mod.php?&id=0&M=tools_em&SET[singleDetails]=' . $menuEntry['name'] . '&CMD[showExt]=' . $extKey . '\');');
+                                       $menuLinks .= '<a class="t3-link" href="#" onclick="' . $onClick . '" >' .
+                                                       $GLOBALS['LANG']->sL($menuEntry['title'], TRUE) . '</a><br />';
+                               }
+                               $lines[] = '<tr class="bgColor4"><td colspan="2"><p>' . $menuLinks . '</p></td></tr>';
+                       }
 
                        $content = '<table border="0" cellpadding="2" cellspacing="2">' . implode('', $lines) . '</table>';
 
@@ -571,6 +635,26 @@ class tx_em_Connection_ExtDirectServer {
                }
        }
 
+       /**
+        * Execute update script
+        *
+        * @param  $extkey
+        * @return array
+        */
+       public function getExtensionUpdateScript($extkey) {
+               $updateScript = t3lib_extMgm::extPath($extkey) . 'class.ext_update.php';
+               require_once($updateScript);
+               $updateObj = new ext_update;
+               $access = FALSE;
+               if ($updateObj->access()) {
+                       $access = TRUE;
+               }
+
+               return array(
+                       'success' => $access,
+               );
+
+       }
        /*********************************************************************/
        /* Remote Extension List                                             */
        /*********************************************************************/
@@ -589,25 +673,33 @@ class tx_em_Connection_ExtDirectServer {
                $list = $this->getFlatExtensionList();
                $localList = $list['data'];
 
-               $search = $parameters->query;
-               $limit = $parameters->start . ', ' . $parameters->limit;
-               $orderBy = $parameters->sort;
-               $orderDir = $parameters->dir;
+               $search = htmlspecialchars($parameters->query);
+               $limit = htmlspecialchars($parameters->start . ', ' . $parameters->limit);
+               $orderBy = htmlspecialchars($parameters->sort);
+               $orderDir = htmlspecialchars($parameters->dir);
                if ($orderBy === 'statevalue') {
-                       $orderBy = 'state';
+                       $orderBy = 'state ' . $orderDir;
+               } elseif ($orderBy === 'relevance') {
+                       $orderBy = 'relevance ' . $orderDir . ', title ' . $orderDir;
+               } else {
+                       $orderBy .= ' ' . $orderDir;
                }
                $installedOnly = $parameters->installedOnly;
 
-               $where = '';
-               if ($search == '*') {
-                       // show all
-               } else {
-                       $quotedSearch = $GLOBALS['TYPO3_DB']->escapeStrForLike(
-                               $GLOBALS['TYPO3_DB']->quoteStr($search, 'cache_extensions'),
-                               'cache_extensions'
-                       );
-                       $where = ' AND (extkey LIKE \'%' . $quotedSearch . '%\' OR title LIKE \'%' . $quotedSearch . '%\')';
-               }
+               $where = $addFields = '';
+
+               $quotedSearch = $GLOBALS['TYPO3_DB']->escapeStrForLike(
+                       $GLOBALS['TYPO3_DB']->quoteStr($search, 'cache_extensions'),
+                       'cache_extensions'
+               );
+               $addFields = '(
+                       (CASE WHEN cache_extensions.extkey =  "' . $search . '" THEN 100 ELSE 0 END) +
+                       (CASE WHEN cache_extensions.title = "' . $search . '" THEN 60 ELSE 0 END) +
+                       (CASE WHEN cache_extensions.extkey LIKE \'%' . $quotedSearch . '%\' THEN 30 ELSE 0 END) +
+                       (CASE WHEN cache_extensions.title LIKE \'%' . $quotedSearch . '%\' THEN 10 ELSE 0 END)
+               ) AS relevance';
+               $where = ' AND (cache_extensions.extkey LIKE \'%' . $quotedSearch . '%\' OR cache_extensions.title LIKE \'%' . $quotedSearch . '%\')';
+
                // check for filter
                $where .= $this->makeFilterQuery(get_object_vars($parameters));
 
@@ -618,16 +710,16 @@ class tx_em_Connection_ExtDirectServer {
                                        $temp[] = '"' . $key . '"';
                                }
                        }
-                       $where .= ' AND extkey IN(' . implode(',', $temp) . ')';
+                       $where .= ' AND cache_extensions.extkey IN(' . implode(',', $temp) . ')';
                        $limit = '';
                }
 
 
                $list = tx_em_Database::getExtensionListFromRepository(
                        $repositoryId,
+                       $addFields,
                        $where,
                        $orderBy,
-                       $orderDir,
                        $limit
                );
 
@@ -653,15 +745,15 @@ class tx_em_Connection_ExtDirectServer {
                                if ($isUpdatable) {
                                        $updateKeys[] = $key;
                                }
-                       } else {
-                               $updateKeys[] = $key;
                        }
                }
-
-               if ($installedOnly == 2 && count($updateKeys)) {
+                       // updatable only
+               if ($installedOnly == 2) {
                        $temp = array();
-                       foreach ($updateKeys as $key) {
-                               $temp[]= $list['results'][$key];
+                       if (count($updateKeys)) {
+                               foreach ($updateKeys as $key) {
+                                       $temp[]= $list['results'][$key];
+                               }
                        }
                        $list['results'] = $temp;
                        $list['count'] -= count($updateKeys);
@@ -869,25 +961,23 @@ class tx_em_Connection_ExtDirectServer {
 
 
        /**
-        * Enter description here...
+        * Gets the system languages
         *
-        * @return unknown
+        * @return array
         */
        public function getLanguages() {
                $this->globalSettings = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['em']);
                $selected = t3lib_div::trimExplode(',', $this->globalSettings['selectedLanguages'], TRUE);
 
                $theLanguages = t3lib_div::trimExplode('|', TYPO3_languages);
-               //drop default
+                       //drop default
                array_shift($theLanguages);
                $lang = $meta = array();
                foreach ($theLanguages as $language) {
                        $label = htmlspecialchars($GLOBALS['LANG']->sL('LLL:EXT:setup/mod/locallang.xml:lang_' . $language));
-                       $cls =  t3lib_iconWorks::getSpriteIconClasses('flags-' . $language);
                        $lang[] = array(
                                'label' => $label,
                                'lang' => $language,
-                               'cls' => $cls,
                                'selected' => is_array($selected) && in_array($language, $selected) ? 1 : 0
                        );
                        $meta[] = array(
@@ -956,7 +1046,7 @@ class tx_em_Connection_ExtDirectServer {
                        $this->xmlHandler->emObj = $this;
                        $mirrorURL = $this->getSettingsObject()->getMirrorURL();
 
-                       $missingIcon = '<span class="t3-icon t3-icon-status t3-icon-status-status t3-icon-status-icon-missing">&nbsp;</span>';
+                       $infoIcon = '<span class="t3-icon t3-icon-actions t3-icon-actions-document t3-icon-document-info">&nbsp;</span>';
                        $updateIcon = '<span class="t3-icon t3-icon-actions t3-icon-actions-system t3-icon-system-extension-update">&nbsp;</span>';
                        $newIcon = '<span class="t3-icon t3-icon-actions t3-icon-actions-system t3-icon-system-extension-import">&nbsp;</span>';
                        $okIcon = '<span class="t3-icon t3-icon-status t3-icon-status-status t3-icon-status-checked">&nbsp;</span>';
@@ -968,7 +1058,7 @@ class tx_em_Connection_ExtDirectServer {
                                $localmd5 = '';
                                if (!isset($fetch[$lang])) {
                                                //no translation available
-                                       $result[$lang] = $missingIcon . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:translation_n_a');
+                                       $result[$lang] = $infoIcon . $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:translation_n_a');
                                } else {
                                        $zip = PATH_site . 'typo3temp/' . $extkey . '-l10n-' . $lang . '.zip';
                                        if (is_file($zip)) {
@@ -1187,7 +1277,7 @@ class tx_em_Connection_ExtDirectServer {
                                eval('$' . $key . ' = \'' . $value . '\';');
                        }
                }
-               //debug(array($parameter,$filter));
+
 
                if (count($filter)) {
                        foreach ($filter as $value) {
@@ -1260,5 +1350,4 @@ if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLA
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['typo3/sysext/em/classes/connection/class.tx_em_connection_extdirectserver.php']);
 }
 
-?>
-
+?>
\ No newline at end of file
index b1522f2..c318700 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Steffen Kamper <steffen@typo3.org>
+ *  (c) 2010 Steffen Kamper <steffen@typo3.org>
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -183,7 +183,7 @@ class tx_em_Connection_ExtDirectSoap {
         *
         * @return array
         */
-       public function getExtensions() {
+       public function getExtensions($parameter) {
                $params = array(
                        'extensionKeyFilterOptions' => array(
                                'username' => $this->settings['fe_u']
@@ -363,6 +363,13 @@ class tx_em_Connection_ExtDirectSoap {
         * @return string $response
         */
        protected function soapCall($name, $params) {
+               if (!is_object($this->soap)) {
+                       return array(
+                               'success' => FALSE,
+                               'error' => $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:msg_noUserLoginData')
+                       );
+               }
+
                try {
                        $response = $this->soap->call(
                                $name,
index 2d7077e..a2b6c79 100644 (file)
@@ -3,7 +3,7 @@
 *  Copyright notice
 *
 *  (c) webservices.nl
-*  (c) 2006-2011 Karsten Dambekalns <karsten@typo3.org>
+*  (c) 2006-2010 Karsten Dambekalns <karsten@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
index 83f367f..c39ee0f 100644 (file)
@@ -2,8 +2,8 @@
 /* **************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
-*  (c) 2006-2011 Karsten Dambekalns <karsten@typo3.org>
+*  (c) 1999-2010 Kasper Skårhøj (kasperYYYY@typo3.com)
+*  (c) 2006-2010 Karsten Dambekalns <karsten@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
index 3f7c76c..774755f 100644 (file)
@@ -2,8 +2,8 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
- *  (c) 2010-2011 Steffen Kamper <info@sk-typo3.de>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -83,14 +83,13 @@ final class tx_em_Database {
         * Get extension list from cache_extensions
         *
         * @param int $repository
+        * @param string $addFields
         * @param string $andWhere
-        * @param string $orderBy
-        * @param string $orderDir
+        * @param string $order
         * @param string $limit
         * @return array
         */
-       public function getExtensionListFromRepository($repository, $andWhere = '', $orderBy = '', $orderDir = 'ASC', $limit = '') {
-               $order = $orderBy ? $orderBy . ' ' . $orderDir : '';
+       public function getExtensionListFromRepository($repository, $addFields = '', $andWhere = '', $order = '', $limit = '') {
                $ret = array();
                $temp = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
                        'count(*) count',
@@ -99,15 +98,21 @@ final class tx_em_Database {
                        'extkey'
                );
                $ret['count'] = count($temp);
-               $ret['results'] = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
-                       '*, count(*) AS versions, max(intversion) AS maxintversion',
+               $subQuery =  $GLOBALS['TYPO3_DB']->SELECTsubquery(
+                       '*, MAX(intversion) AS maxintversion',
                        'cache_extensions',
-                       'repository=' . intval($repository) . $andWhere,
-                       'extkey',
+                       ''
+               ) . ' GROUP BY extkey';
+               $ret['results'] = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
+                       'cache_extensions2.*, count(*) AS versions, cache_extensions2.maxintversion AS maxintversion' .
+                       ($addFields === '' ? '' : ',' . $addFields),
+                       'cache_extensions INNER JOIN (' . $subQuery . ') AS cache_extensions2 ON cache_extensions.extkey = cache_extensions2.extkey',
+                       'cache_extensions.repository=' . intval($repository) . $andWhere,
+                       'cache_extensions.extkey',
                        $order,
                        $limit
                );
-
+               //debug($GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
                return $ret;
        }
 
index 77288e2..75e17db 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+*  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
 *           Steffen Kamper <info@sk-typo3.de>
 *  All rights reserved
 *
index 4536c55..2703110 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+*  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
 *           Steffen Kamper <info@sk-typo3.de>
 *  All rights reserved
 *
index 6321f05..3b9094e 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+*  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
 *           Steffen Kamper <info@sk-typo3.de>
 *  All rights reserved
 *
index b0d6dc2..4ee1726 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+*  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
 *           Steffen Kamper <info@sk-typo3.de>
 *  All rights reserved
 *
index 3c98cff..28475f0 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+*  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
 *           Steffen Kamper <info@sk-typo3.de>
 *  All rights reserved
 *
index 12b77bc..7127b32 100644 (file)
@@ -3,8 +3,8 @@
 *  Copyright notice
 *
 *  (c) webservices.nl
-*  (c) 2006-2011 Karsten Dambekalns <karsten@typo3.org>
-*  (c) 2010-2011 Steffen Kamper <steffen@typo3.org>
+*  (c) 2006-2010 Karsten Dambekalns <karsten@typo3.org>
+*  (c) 2010 Steffen Kamper <steffen@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
index 8f7485f..54cc53e 100644 (file)
@@ -3,7 +3,7 @@
 *  Copyright notice
 *
 *  (c) webservices.nl
-*  (c) 2006-2011 Karsten Dambekalns <karsten@typo3.org>
+*  (c) 2006-2010 Karsten Dambekalns <karsten@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -190,6 +190,7 @@ class tx_em_Extensions_List {
                        if ($type === '') {
                                $type = tx_em_Tools::getExtTypeFromPath($path);
                        }
+
                        if (is_array($emConf)) {
                                $key = count($list);
                                $loaded = t3lib_extMgm::isLoaded($extKey);
@@ -209,6 +210,11 @@ class tx_em_Extensions_List {
                                $list[$key]['doubleInstall'] = $list[$key]['doubleInstall'] ? $list[$key]['doubleInstall'] . '/' . $this->types[$type] : $this->types[$type];
                                $list[$key]['doubleInstallShort'] .= $type;
 
+                               if (@is_file($path . $extKey . '/class.ext_update.php')) {
+                                       $list[$key]['updateModule'] = TRUE;
+                               } else {
+                                       $list[$key]['updateModule'] = FALSE;
+                               }
                                $list[$key]['type'] = $this->types[$type];
                                $list[$key]['typeShort'] = $type;
                                $list[$key]['installed'] = $loaded ? 1 : 0;
@@ -217,6 +223,8 @@ class tx_em_Extensions_List {
                                $list[$key] = t3lib_div::array_merge_recursive_overrule($list[$key], $emConf);
                                $list[$key]['title'] = htmlspecialchars($list[$key]['title']);
                                $list[$key]['description'] = htmlspecialchars($list[$key]['description']);
+                               $list[$key]['author'] = htmlspecialchars($list[$key]['author']);
+                               $list[$key]['author_email'] = htmlspecialchars($list[$key]['author_email']);
                                $list[$key]['files'] = t3lib_div::getFilesInDir($path . $extKey, '', 0, '', $this->excludeForPackaging);
                                $list[$key]['reviewstate'] = $this->xmlHandler->getReviewState($extKey, $list[$key]['version']);
 
@@ -234,7 +242,7 @@ class tx_em_Extensions_List {
 
                                $list[$key]['categoryShort'] = $list[$key]['category'];
                                $list[$key]['category'] = isset($this->categories[$list[$key]['category']]) ? $this->categories[$list[$key]['category']] : $list[$key]['category'];
-                               $list[$key]['required'] = t3lib_div::inList($GLOBALS['EXT']['requiredExt'], $extKey);
+                               $list[$key]['required'] = t3lib_div::inList($GLOBALS['TYPO3_CONF_VARS']['EXT']['requiredExt'], $extKey);
                                unset($list[$key]['_md5_values_when_last_written']);
                        }
                }
index 5129f20..840d0c8 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index eda00ab..eaac47f 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index 052431c..a5492d5 100644 (file)
@@ -2,8 +2,8 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 1999-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
- *  (c) 2005-2011 Karsten Dambekalns <karsten@typo3.org>
+ *  (c) 1999-2010 Kasper Skårhøj (kasperYYYY@typo3.com)
+ *  (c) 2005-2010 Karsten Dambekalns <karsten@typo3.org>
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -125,13 +125,6 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
         */
        public $terConnection;
 
-       /**
-        * Develop Module
-        *
-        * @var tx_em_Develop
-        */
-       public $developModule;
-
 
        /**
         * XML handling class for the TYPO3 Extension Manager
@@ -259,6 +252,10 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
 
                if (t3lib_div::_GP('silentMode')) {
                        $this->CMD['silentMode'] = 1;
+                       $this->noDocHeader = 1;
+               }
+
+               if ($this->CMD['silentMode']) {
                        $this->install->setSilentMode(TRUE);
                }
 
@@ -292,14 +289,6 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
                        $this->extensionmanager = &$this;
                }
 
-               // Initialize develop module
-               if (isset($this->MOD_MENU['function']['develop'])) {
-                       $this->developModule = t3lib_div::makeInstance('tx_em_Develop', $this);
-               } else {
-                       $this->developModule = &$this;
-               }
-
-
 
                // Output classes
                $this->extensionList = t3lib_div::makeInstance('tx_em_Extensions_List', $this);
@@ -375,8 +364,11 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
                $this->MOD_MENU = $this->settings->MOD_MENU;
                $globalSettings = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['em']);
 
-               if (!intval($GLOBALS['TYPO3_CONF_VARS']['BE']['debug'])) {
-                       unset ($this->MOD_MENU['function']['develop']);
+               if (!isset($globalSettings['showOldModules'])) {
+                               // no settings saved yet, set default values
+                       $globalSettings['showOldModules'] = 1;
+                       $globalSettings['inlineToWindow'] = 1;
+                       $globalSettings['displayMyExtensions'] = 0;
                }
 
                if ($globalSettings['showOldModules'] == 0) {
@@ -385,11 +377,11 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
                                $this->MOD_MENU['function']['installed_list'],
                                $this->MOD_MENU['function']['import'],
                                $this->MOD_MENU['function']['translations'],
-                               $this->MOD_MENU['function']['settings'],
-                               $this->MOD_MENU['function']['updates']
+                               $this->MOD_MENU['function']['settings']
                        );
                }
                $this->MOD_MENU['singleDetails'] = $this->mergeExternalItems($this->MCONF['name'], 'singleDetails', $this->MOD_MENU['singleDetails']);
+               $this->MOD_MENU['extensionInfo'] = $this->mergeExternalItems($this->MCONF['name'], 'singleDetails', array());
 
 
                        // page/be_user TSconfig settings and blinding of menu-items
@@ -426,6 +418,8 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
         */
        function main() {
 
+               $menu = '';
+
                if (empty($this->MOD_SETTINGS['mirrorListURL'])) {
                        $this->MOD_SETTINGS['mirrorListURL'] = $GLOBALS['TYPO3_CONF_VARS']['EXT']['em_mirrorListURL'];
                }
@@ -509,10 +503,6 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
                                        // Shows a list of extensions with updates in TER
                                        $this->checkForUpdates();
                                        break;
-                               case 'develop':
-                                       $this->content .= $this->developModule->renderModule();
-                                       break;
-                               default:
                                case 'extensionmanager':
                                        $this->content .= $this->extensionmanager->render();
                                        break;
@@ -1782,6 +1772,7 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
 
                                                if (t3lib_extMgm::isLoaded($extKey)) {
                                                        $updates = $this->install->updatesForm($extKey, $list[$extKey]);
+                                                       debug(array($extKey, $list[$extKey]));
                                                        if ($updates) {
                                                                $this->content .= $this->doc->spacer(10);
                                                                $this->content .= $this->doc->section(
@@ -2518,6 +2509,21 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
                        return '<a id="closewindow" href="javascript:parent.TYPO3.EM.Tools.closeImportWindow();">' . $GLOBALS['LANG']->getLL('ext_import_close') . '</a>';
                }
        }
+
+
+       /* Compatibility wrappers */
+
+
+/**
+        * Returns the absolute path where the extension $extKey is installed (based on 'type' (SGL))
+        *
+        * @param       string          Extension key
+        * @param       string          Install scope type: L, G, S
+        * @return      string          Returns the absolute path to the install scope given by input $type variable. It is checked if the path is a directory. Slash is appended.
+        */
+       public function getExtPath($extKey, $type, $returnWithoutExtKey = FALSE) {
+               return tx_em_Tools::getExtPath($extKey, $type, $returnWithoutExtKey);
+       }
 }
 
 // Make instance:
index 6101888..4689e17 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Steffen Kamper (info@sk-typo3.de)
+ *  (c) 2010 Steffen Kamper (info@sk-typo3.de)
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -77,9 +77,16 @@ class tx_em_Install {
                $this->systemInstall = isset($GLOBALS['TYPO3_CONF_VARS']['EXT']['allowSystemInstall']) && $GLOBALS['TYPO3_CONF_VARS']['EXT']['allowSystemInstall'];
        }
 
-       public function setSilentMode(boolean $silentMode) {
-               $this->silentMode = $silentMode;
+       /**
+        * Set silent mode to prevent flashmessages
+        *
+        * @param  boolean $silentMode
+        * @return void
+        */
+       public function setSilentMode($silentMode) {
+               $this->silentMode = $silentMode ? TRUE : FALSE;
        }
+
        /**
         * Imports the data of an extension  from upload
         *
@@ -268,8 +275,14 @@ class tx_em_Install {
                                                                                                                                tx_em_Tools::installButton() . ' ' . $GLOBALS['LANG']->getLL('ext_import_install') . '</a>';
                                                                                        } else {
                                                                                                $content = $GLOBALS['LANG']->getLL('ext_import_imported') .
-                                                                                                               '<br /><br /><a href="javascript:opener.top.list.iframe.document.forms[0].submit();window.close();">' .
+                                                                                                               '<br /><br />';
+                                                                                               if ($this->silentMode) {
+                                                                                                       $content .= '<a id="closewindow" href="javascript:parent.TYPO3.EM.Tools.closeImportWindow();">' . $GLOBALS['LANG']->getLL('ext_import_close') . '</a>';
+                                                                                               } else {
+                                                                                                       $content .= '<a href="javascript:opener.top.list.iframe.document.forms[0].submit();window.close();">' .
                                                                                                                $GLOBALS['LANG']->getLL('ext_import_close_check') . '</a>';
+                                                                                               }
+
                                                                                        }
                                                                                }
                                                                        } else {
@@ -703,10 +716,12 @@ class tx_em_Install {
 
 
                $dbStatus = array();
+               $content = '';
 
                // Updating tables and fields?
                if (is_array($extInfo['files']) && in_array('ext_tables.sql', $extInfo['files'])) {
-                       $fileContent = t3lib_div::getUrl(tx_em_Tools::getExtPath($extKey, $extInfo['type']) . 'ext_tables.sql');
+                       $path = tx_em_Tools::getExtPath($extKey, $extInfo['type']);
+                       $fileContent = t3lib_div::getUrl($path . 'ext_tables.sql');
 
                        $FDfile = $this->install->getFieldDefinitions_fileContent($fileContent);
                        if (count($FDfile)) {
@@ -1142,14 +1157,16 @@ class tx_em_Install {
        function tsStyleConfigForm($extKey, $extInfo, $output = 0, $script = '', $addFields = '') {
                global $TYPO3_CONF_VARS;
 
-               // Initialize:
+                       // Initialize:
                $absPath = tx_em_Tools::getExtPath($extKey, $extInfo['type']);
                $relPath = tx_em_Tools::typeRelPath($extInfo['type']) . $extKey . '/';
 
-               // Look for template file for form:
+               $form = '';
+
+                       // Look for template file for form:
                if (t3lib_extMgm::isLoaded($extKey) && @is_file($absPath . 'ext_conf_template.txt')) {
 
-                       // Load tsStyleConfig class and parse configuration template:
+                               // Load tsStyleConfig class and parse configuration template:
                        $tsStyleConfig = t3lib_div::makeInstance('t3lib_tsStyleConfig');
                        $tsStyleConfig->doNotSortCategoriesBeforeMakingForm = TRUE;
                        $theConstants = $tsStyleConfig->ext_initTSstyleConfig(
@@ -1159,14 +1176,14 @@ class tx_em_Install {
                                $GLOBALS['BACK_PATH']
                        );
 
-                       // Load the list of resources.
+                               // Load the list of resources.
                        $tsStyleConfig->ext_loadResources($absPath . 'res/');
 
-                       // Load current value:
+                               // Load current value:
                        $arr = unserialize($TYPO3_CONF_VARS['EXT']['extConf'][$extKey]);
                        $arr = is_array($arr) ? $arr : array();
 
-                       // Call processing function for constants config and data before write and form rendering:
+                               // Call processing function for constants config and data before write and form rendering:
                        if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['typo3/mod/tools/em/index.php']['tsStyleConfigForm'])) {
                                $_params = array('fields' => &$theConstants, 'data' => &$arr, 'extKey' => $extKey);
                                foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['typo3/mod/tools/em/index.php']['tsStyleConfigForm'] as $_funcRef) {
@@ -1175,34 +1192,42 @@ class tx_em_Install {
                                unset($_params);
                        }
 
-                       // If saving operation is done:
+                               // If saving operation is done:
                        if (t3lib_div::_POST('submit')) {
                                $tsStyleConfig->ext_procesInput(t3lib_div::_POST(), array(), $theConstants, array());
                                $arr = $tsStyleConfig->ext_mergeIncomingWithExisting($arr);
                                $this->writeTsStyleConfig($extKey, $arr);
                        }
 
-                       // Setting value array
+                               // Setting value array
                        $tsStyleConfig->ext_setValuearray($theConstants, $arr);
 
-                       // Getting session data:
+                               // Getting session data:
                        $MOD_MENU = array();
                        $MOD_MENU['constant_editor_cat'] = $tsStyleConfig->ext_getCategoriesForModMenu();
                        $MOD_SETTINGS = t3lib_BEfunc::getModuleData($MOD_MENU, t3lib_div::_GP('SET'), 'xMod_test');
 
-                       // Resetting the menu (stop)
+                               // Resetting the menu (stop)
                        if (count($MOD_MENU['constant_editor_cat']) > 1) {
                                $menu = $GLOBALS['LANG']->getLL('extInfoArray_category') . ' ' .
                                                t3lib_BEfunc::getFuncMenu(0, 'SET[constant_editor_cat]', $MOD_SETTINGS['constant_editor_cat'], $MOD_MENU['constant_editor_cat'], '', '&CMD[showExt]=' . $extKey);
-                               $this->parentObject->content .= $this->parentObject->doc->section('', '<span class="nobr">' . $menu . '</span>');
-                               $this->parentObject->content .= $this->parentObject->doc->spacer(10);
+                                       // add class to select
+                               $menu = str_replace('<select', '<select class="mod-menu-template-select"', $menu);
+                               $menu = str_replace('jumpToUrl', 'abc', $menu);
+
+                               if ($this->parentObject instanceof SC_mod_tools_em_index) {
+                                       $this->parentObject->content .= $this->parentObject->doc->section('', '<span class="nobr">' . $menu . '</span>');
+                                       $this->parentObject->content .= $this->parentObject->doc->spacer(10);
+                               } else {
+                                       $form .= '<h3>' . '<span class="nobr">' . $menu . '</span></h3>';
+                               }
                        }
 
-                       // Category and constant editor config:
-                       $form = '
+                               // Category and constant editor config:
+                       $form .= '
                                <table border="0" cellpadding="0" cellspacing="0" width="600">
                                        <tr>
-                                               <td>' . $tsStyleConfig->ext_getForm($MOD_SETTINGS['constant_editor_cat'], $theConstants, $script, $addFields) . '</form></td>
+                                               <td>' . $tsStyleConfig->ext_getForm($MOD_SETTINGS['constant_editor_cat'], $theConstants, $script, $addFields, $extKey) . '</form></td>
                                        </tr>
                                </table>';
                } else {
@@ -1220,8 +1245,8 @@ class tx_em_Install {
                                                <td>
                                                        <form action="' . htmlspecialchars($script) . '" method="post">' .
                                        $addFields .
-                                       (!$this->silentMode ? '' : $flashMessage->render()) .
-                                       '<br /><input type="submit" name="write" value="' . $GLOBALS['LANG']->getLL('updatesForm_make_updates') . '" />
+                                       ($this->silentMode ? '' : $flashMessage->render()) .
+                                       '<br /><input type="submit" id="configuration-submit-' . $extKey . '" name="write" value="' . $GLOBALS['LANG']->getLL('updatesForm_make_updates') . '" />
                                                        </form>
                                                </td>
                                        </tr>
@@ -1263,25 +1288,30 @@ class tx_em_Install {
 
        /**
         * Creates a form for an extension which contains all options for configuration, updates of database, clearing of cache etc.
-        * This form is shown when
         *
-        * @param       string          Extension key
-        * @param       array           Extension information array
-        * @param       boolean         If set, the form will ONLY show if fields/tables should be updated (suppressing forms like general configuration and cache clearing).
-        * @param       string          Alternative action=""-script
-        * @param       string          HTML: Additional form fields
-        * @return      string          HTML
+        * @param  string  $extKey  Extension key
+        * @param  array  $extInfo  Extension information array
+        * @param  boolean  $notSilent  If set, the form will ONLY show if fields/tables should be updated (suppressing forms like general configuration and cache clearing).
+        * @param  string  $script  Alternative action=""-script
+        * @param  string  $addFields  Additional form fields
+        * @param  boolean  $addFormTags  TRUE if it shopuld be wrapped with form tag
+        * @param  boolean  $excludeDatabaseCheck  TRUE if no database check should be done
+        * @return  string
         */
-       function updatesForm($extKey, $extInfo, $notSilent = 0, $script = '', $addFields = '', $addForm = TRUE) {
+       function updatesForm($extKey, $extInfo, $notSilent = FALSE, $script = '', $addFields = '', $addFormTag = TRUE, $excludeDatabaseCheck = FALSE) {
                $script = $script ? $script : t3lib_div::linkThisScript();
-               if ($addForm) {
+               if ($addFormTag) {
                        $formWrap = array('<form action="' . htmlspecialchars($script) . '" method="POST">', '</form>');
                } else {
                        $formWrap = array('', '');
                }
                $extensionDetails = t3lib_div::makeInstance('tx_em_Extensions_Details', $this);
+               $updates = '';
+
+               if (!$excludeDatabaseCheck) {
+                       $updates .= $this->checkDBupdates($extKey, $extInfo);
+               }
 
-               $updates .= $this->checkDBupdates($extKey, $extInfo);
                $uCache = $this->checkClearCache($extInfo);
                if ($notSilent) {
                        $updates .= $uCache;
index 38760f4..92780f4 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index 5da15ed..87de0ae 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index 5926c78..dafd5dd 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index b3d943c..a69bcd4 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index 241a941..fa23623 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index ff9f490..d3497fe 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index f7cc725..1975117 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index d0fb00e..b7bd607 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index fa855bb..d8c2cd3 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Steffen Kamper <steffen@typo3.org>
+ *  (c) 2010 Steffen Kamper <steffen@typo3.org>
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -35,6 +35,11 @@ class tx_em_reports_ExtensionStatus  implements tx_reports_StatusProvider {
        /**
         * @var string
         */
+       protected $upToDate = '';
+
+       /**
+        * @var string
+        */
        protected $error = '';
 
        /**
@@ -44,7 +49,8 @@ class tx_em_reports_ExtensionStatus  implements tx_reports_StatusProvider {
         * @see typo3/sysext/reports/interfaces/tx_reports_StatusProvider::getStatus()
         */
        public function getStatus() {
-               $this->ok = $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:translation_status_ok');
+               $this->ok = $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:msg_ok');
+               $this->upToDate = $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:translation_status_uptodate');
                $this->error = t3lib_div::strtoupper($GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:msg_error'));
                $status = $this->getInsecuredExtensionsInSystem();
 
@@ -90,6 +96,8 @@ class tx_em_reports_ExtensionStatus  implements tx_reports_StatusProvider {
                                                $value = $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:reports_ExtensionsNotUpToDate');
                                                $severity = tx_reports_reports_status_Status::NOTICE;
                                                $message = $GLOBALS['LANG']->sL('LLL:EXT:em/language/locallang.xml:reports_MainRepositoryOldList');
+                                       } else {
+                                               $value = $this->upToDate;
                                        }
                                }
                        }
index 4c3d487..93e0d65 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index 1cf09e9..1c0a7aa 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index 582f029..7060944 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Marcus Krause <marcus#exp2010@t3sec.info>
+ *  (c) 2010 Marcus Krause <marcus#exp2010@t3sec.info>
  *                Steffen Kamper <info@sk-typo3.de>
  *  All rights reserved
  *
index 64e7205..66616a8 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Steffen Kamper (info@sk-typo3.de)
+ *  (c) 2010 Steffen Kamper (info@sk-typo3.de)
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -99,14 +99,13 @@ class tx_em_Settings implements t3lib_Singleton {
        protected function readSettings() {
                $this->MOD_MENU = array(
                        'function' => array(
-                               'extensionmanager' => 'New Extension manager (beta4)', //$GLOBALS['LANG']->getLL('header'),
                                'loaded_list' => $GLOBALS['LANG']->getLL('menu_loaded_extensions'),
                                'installed_list' => $GLOBALS['LANG']->getLL('menu_install_extensions'),
                                'import' => $GLOBALS['LANG']->getLL('menu_import_extensions'),
                                'translations' => $GLOBALS['LANG']->getLL('menu_translation_handling'),
                                'settings' => $GLOBALS['LANG']->getLL('menu_settings'),
+                               'extensionmanager' => $GLOBALS['LANG']->getLL('header'),
                                'updates' => $GLOBALS['LANG']->getLL('menu_extension_updates'),
-                               'develop' => $GLOBALS['LANG']->getLL('menu_extension_develop'),
                        ),
                        'listOrder' => array(
                                'cat' => $GLOBALS['LANG']->getLL('list_order_category'),
index ad9b9b0..803fe4b 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
  *  Copyright notice
  *
- *  (c) 2010-2011 Christian Kuhn <lolli@schwarzbu.ch>
+ *  (c) 2010 Christian Kuhn <lolli@schwarzbu.ch>
  *  All rights reserved
  *
  *  This script is part of the TYPO3 project. The TYPO3 project is
index 1c13e2a..0feed8e 100644 (file)
@@ -3,7 +3,7 @@
 *  Copyright notice
 *
 *  (c) webservices.nl
-*  (c) 2006-2011 Karsten Dambekalns <karsten@typo3.org>
+*  (c) 2006-2010 Karsten Dambekalns <karsten@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
index 07fa71a..29eb971 100644 (file)
@@ -3,7 +3,7 @@
  *  Copyright notice
  *
  *  (c) Vincent Blavet <vincent@phpconcept.net>
- *  (c) 2005-2011 Karsten Dambekalns <karsten@typo3.org>
+ *  (c) 2005-2010 Karsten Dambekalns <karsten@typo3.org>
  *  All rights reserved
  *
  *  This library is free software; you can redistribute it and/or
index 7c4b2a3..a63061f 100644 (file)
@@ -2,7 +2,7 @@
 /* **************************************************************
 *  Copyright notice
 *
-*  (c) 2006-2011 Karsten Dambekalns <karsten@typo3.org>
+*  (c) 2006-2010 Karsten Dambekalns <karsten@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
index 57375ed..9d7070b 100644 (file)
@@ -3,7 +3,7 @@
 *  Copyright notice
 *
 *  (c) webservices.nl
-*  (c) 2006-2011 Karsten Dambekalns <karsten@typo3.org>
+*  (c) 2006-2010 Karsten Dambekalns <karsten@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
index 26bb1a5..cd6872f 100644 (file)
@@ -2,7 +2,12 @@
 showOldModules = 1
 
   # cat=basic; type=boolean; label=LLL:EXT:em/language/locallang.xml:extTemplate_inlineToWindow
-inlineToWindow = 0
+inlineToWindow = 1
+
+  # cat=basic; type=boolean; label=LLL:EXT:em/language/locallang.xml:extTemplate_displayMyExtensions
+displayMyExtensions =
 
   # cat=basic; type=string; label=LLL:EXT:em/language/locallang.xml:extTemplate_selectedLanguages
 selectedLanguages =
+
+
index 945c247..2088b5c 100644 (file)
@@ -3,7 +3,7 @@
 ########################################################################
 # Extension Manager/Repository config file for ext "em".
 #
-# Auto generated 12-01-2011 22:50
+# Auto generated 22-01-2011 21:44
 #
 # Manual updates:
 # Only the data in the array - everything else is removed by next
@@ -28,13 +28,13 @@ $EM_CONF[$_EXTKEY] = array(
        'modify_tables' => '',
        'clearCacheOnLoad' => 0,
        'lockType' => '',
-       'author' => 'Kasper Skaarhoj',
-       'author_email' => 'kasperYYYY@typo3.com',
+       'author' => 'Steffen Kamper',
+       'author_email' => 'steffen@typo3.org',
        'author_company' => '',
        'CGLcompliance' => '',
        'CGLcompliance_note' => '',
        'version' => '4.5.0',
-       '_md5_values_when_last_written' => 'a:101:{s:16:"ext_autoload.php";s:4:"5d4e";s:21:"ext_conf_template.txt";s:4:"5e54";s:12:"ext_icon.gif";s:4:"2cc2";s:17:"ext_localconf.php";s:4:"fd30";s:14:"ext_tables.php";s:4:"93ea";s:14:"ext_tables.sql";s:4:"5a42";s:25:"ext_tables_static+adt.sql";s:4:"3c1b";s:27:"classes/class.tx_em_api.php";s:4:"c09b";s:31:"classes/class.tx_em_develop.php";s:4:"7b6e";s:40:"classes/class.tx_em_extensionmanager.php";s:4:"5a63";s:16:"classes/conf.php";s:4:"d842";s:17:"classes/index.php";s:4:"c5af";s:61:"classes/connection/class.tx_em_connection_extdirectserver.php";s:4:"6b7a";s:59:"classes/connection/class.tx_em_connection_extdirectsoap.php";s:4:"e0e8";s:50:"classes/connection/class.tx_em_connection_soap.php";s:4:"decd";s:49:"classes/connection/class.tx_em_connection_ter.php";s:4:"1f3c";s:41:"classes/database/class.tx_em_database.php";s:4:"0ed7";s:54:"classes/exception/class.tx_em_connection_exception.php";s:4:"8b14";s:59:"classes/exception/class.tx_em_extensionimport_exception.php";s:4:"62e2";s:56:"classes/exception/class.tx_em_extensionxml_exception.php";s:4:"fcfe";s:53:"classes/exception/class.tx_em_mirrorxml_exception.php";s:4:"ad05";s:47:"classes/exception/class.tx_em_xml_exception.php";s:4:"3679";s:53:"classes/extensions/class.tx_em_extensions_details.php";s:4:"7b5a";s:50:"classes/extensions/class.tx_em_extensions_list.php";s:4:"7dc0";s:59:"classes/import/class.tx_em_import_extensionlistimporter.php";s:4:"25e8";s:56:"classes/import/class.tx_em_import_mirrorlistimporter.php";s:4:"6c5e";s:39:"classes/install/class.tx_em_install.php";s:4:"8dbb";s:64:"classes/parser/class.tx_em_parser_extensionxmlabstractparser.php";s:4:"469f";s:60:"classes/parser/class.tx_em_parser_extensionxmlpullparser.php";s:4:"6d57";s:60:"classes/parser/class.tx_em_parser_extensionxmlpushparser.php";s:4:"eb30";s:61:"classes/parser/class.tx_em_parser_mirrorxmlabstractparser.php";s:4:"8f3c";s:57:"classes/parser/class.tx_em_parser_mirrorxmlpullparser.php";s:4:"8092";s:57:"classes/parser/class.tx_em_parser_mirrorxmlpushparser.php";s:4:"7267";s:55:"classes/parser/class.tx_em_parser_xmlabstractparser.php";s:4:"6d00";s:54:"classes/parser/class.tx_em_parser_xmlparserfactory.php";s:4:"471c";s:55:"classes/reports/class.tx_em_reports_extensionstatus.php";s:4:"f631";s:45:"classes/repository/class.tx_em_repository.php";s:4:"a953";s:53:"classes/repository/class.tx_em_repository_mirrors.php";s:4:"987c";s:53:"classes/repository/class.tx_em_repository_utility.php";s:4:"33ed";s:41:"classes/settings/class.tx_em_settings.php";s:4:"3938";s:55:"classes/tasks/class.tx_em_tasks_updateextensionlist.php";s:4:"b634";s:35:"classes/tools/class.tx_em_tools.php";s:4:"aacf";s:41:"classes/tools/class.tx_em_tools_unzip.php";s:4:"d183";s:46:"classes/tools/class.tx_em_tools_xmlhandler.php";s:4:"1bbd";s:49:"classes/translations/class.tx_em_translations.php";s:4:"935d";s:61:"interfaces/interface.tx_em_index_checkdatabaseupdateshook.php";s:4:"7178";s:22:"language/locallang.xml";s:4:"33cd";s:18:"res/css/editor.css";s:4:"d4a2";s:17:"res/css/t3_em.css";s:4:"fbbf";s:24:"res/icons/arrow_redo.png";s:4:"343b";s:24:"res/icons/arrow_undo.png";s:4:"9a4f";s:20:"res/icons/cancel.png";s:4:"757a";s:22:"res/icons/download.png";s:4:"c5b2";s:19:"res/icons/drive.png";s:4:"9520";s:19:"res/icons/email.png";s:4:"af58";s:25:"res/icons/filebrowser.png";s:4:"25b9";s:18:"res/icons/flag.png";s:4:"8798";s:19:"res/icons/image.png";s:4:"82ab";s:21:"res/icons/install.gif";s:4:"8d57";s:20:"res/icons/jslint.gif";s:4:"2e24";s:19:"res/icons/oodoc.gif";s:4:"744b";s:23:"res/icons/repupdate.png";s:4:"eaa5";s:20:"res/icons/server.png";s:4:"92ce";s:22:"res/icons/settings.png";s:4:"30a1";s:25:"res/icons/text_indent.png";s:4:"47f0";s:19:"res/icons/tools.png";s:4:"16d9";s:23:"res/icons/uninstall.gif";s:4:"a77f";s:16:"res/js/em_app.js";s:4:"1596";s:23:"res/js/em_components.js";s:4:"d243";s:18:"res/js/em_files.js";s:4:"d34c";s:22:"res/js/em_languages.js";s:4:"78c6";s:20:"res/js/em_layouts.js";s:4:"9dca";s:22:"res/js/em_locallist.js";s:4:"8d39";s:27:"res/js/em_repositorylist.js";s:4:"2888";s:21:"res/js/em_settings.js";s:4:"0264";s:16:"res/js/em_ter.js";s:4:"b7bf";s:18:"res/js/em_tools.js";s:4:"5c6e";s:22:"res/js/em_usertools.js";s:4:"385b";s:33:"res/js/overrides/ext_overrides.js";s:4:"2a8d";s:24:"res/js/ux/GridFilters.js";s:4:"95db";s:29:"res/js/ux/RowPanelExpander.js";s:4:"d4dd";s:27:"res/js/ux/custom_plugins.js";s:4:"d761";s:28:"res/js/ux/fileuploadfield.js";s:4:"06a5";s:19:"res/js/ux/jslint.js";s:4:"8c75";s:24:"res/js/ux/searchfield.js";s:4:"1aeb";s:29:"res/js/ux/css/GridFilters.css";s:4:"78fa";s:27:"res/js/ux/css/RangeMenu.css";s:4:"c5f6";s:33:"res/js/ux/filter/BooleanFilter.js";s:4:"d67f";s:30:"res/js/ux/filter/DateFilter.js";s:4:"1d6d";s:26:"res/js/ux/filter/Filter.js";s:4:"5e35";s:30:"res/js/ux/filter/ListFilter.js";s:4:"a9ab";s:33:"res/js/ux/filter/NumericFilter.js";s:4:"abb4";s:32:"res/js/ux/filter/StringFilter.js";s:4:"0923";s:27:"res/js/ux/images/equals.png";s:4:"87b7";s:25:"res/js/ux/images/find.png";s:4:"9f1c";s:33:"res/js/ux/images/greater_than.png";s:4:"746c";s:30:"res/js/ux/images/less_than.png";s:4:"2fb7";s:38:"res/js/ux/images/sort_filtered_asc.gif";s:4:"9e7a";s:39:"res/js/ux/images/sort_filtered_desc.gif";s:4:"6d59";s:26:"res/js/ux/menu/ListMenu.js";s:4:"d6c1";s:27:"res/js/ux/menu/RangeMenu.js";s:4:"cc46";}',
+       '_md5_values_when_last_written' => 'a:101:{s:16:"ext_autoload.php";s:4:"5d4e";s:21:"ext_conf_template.txt";s:4:"582d";s:12:"ext_icon.gif";s:4:"2cc2";s:17:"ext_localconf.php";s:4:"fd30";s:14:"ext_tables.php";s:4:"3d63";s:14:"ext_tables.sql";s:4:"5a42";s:25:"ext_tables_static+adt.sql";s:4:"3c1b";s:27:"classes/class.tx_em_api.php";s:4:"c09b";s:40:"classes/class.tx_em_extensionmanager.php";s:4:"9f41";s:16:"classes/conf.php";s:4:"d842";s:17:"classes/index.php";s:4:"afdb";s:61:"classes/connection/class.tx_em_connection_extdirectserver.php";s:4:"8e05";s:59:"classes/connection/class.tx_em_connection_extdirectsoap.php";s:4:"fda8";s:50:"classes/connection/class.tx_em_connection_soap.php";s:4:"decd";s:49:"classes/connection/class.tx_em_connection_ter.php";s:4:"1f3c";s:41:"classes/database/class.tx_em_database.php";s:4:"e5a0";s:54:"classes/exception/class.tx_em_connection_exception.php";s:4:"8b14";s:59:"classes/exception/class.tx_em_extensionimport_exception.php";s:4:"62e2";s:56:"classes/exception/class.tx_em_extensionxml_exception.php";s:4:"fcfe";s:53:"classes/exception/class.tx_em_mirrorxml_exception.php";s:4:"ad05";s:47:"classes/exception/class.tx_em_xml_exception.php";s:4:"3679";s:53:"classes/extensions/class.tx_em_extensions_details.php";s:4:"7b5a";s:50:"classes/extensions/class.tx_em_extensions_list.php";s:4:"f28c";s:59:"classes/import/class.tx_em_import_extensionlistimporter.php";s:4:"25e8";s:56:"classes/import/class.tx_em_import_mirrorlistimporter.php";s:4:"6c5e";s:39:"classes/install/class.tx_em_install.php";s:4:"1642";s:64:"classes/parser/class.tx_em_parser_extensionxmlabstractparser.php";s:4:"469f";s:60:"classes/parser/class.tx_em_parser_extensionxmlpullparser.php";s:4:"6d57";s:60:"classes/parser/class.tx_em_parser_extensionxmlpushparser.php";s:4:"eb30";s:61:"classes/parser/class.tx_em_parser_mirrorxmlabstractparser.php";s:4:"8f3c";s:57:"classes/parser/class.tx_em_parser_mirrorxmlpullparser.php";s:4:"8092";s:57:"classes/parser/class.tx_em_parser_mirrorxmlpushparser.php";s:4:"7267";s:55:"classes/parser/class.tx_em_parser_xmlabstractparser.php";s:4:"6d00";s:54:"classes/parser/class.tx_em_parser_xmlparserfactory.php";s:4:"471c";s:55:"classes/reports/class.tx_em_reports_extensionstatus.php";s:4:"efb5";s:45:"classes/repository/class.tx_em_repository.php";s:4:"a953";s:53:"classes/repository/class.tx_em_repository_mirrors.php";s:4:"987c";s:53:"classes/repository/class.tx_em_repository_utility.php";s:4:"33ed";s:41:"classes/settings/class.tx_em_settings.php";s:4:"9c1d";s:55:"classes/tasks/class.tx_em_tasks_updateextensionlist.php";s:4:"b634";s:35:"classes/tools/class.tx_em_tools.php";s:4:"aacf";s:41:"classes/tools/class.tx_em_tools_unzip.php";s:4:"d183";s:46:"classes/tools/class.tx_em_tools_xmlhandler.php";s:4:"1bbd";s:49:"classes/translations/class.tx_em_translations.php";s:4:"935d";s:61:"interfaces/interface.tx_em_index_checkdatabaseupdateshook.php";s:4:"7178";s:22:"language/locallang.xml";s:4:"27ce";s:18:"res/css/editor.css";s:4:"d4a2";s:17:"res/css/t3_em.css";s:4:"0cb2";s:24:"res/icons/arrow_redo.png";s:4:"343b";s:24:"res/icons/arrow_undo.png";s:4:"9a4f";s:20:"res/icons/cancel.png";s:4:"757a";s:22:"res/icons/download.png";s:4:"c5b2";s:19:"res/icons/drive.png";s:4:"9520";s:19:"res/icons/email.png";s:4:"af58";s:32:"res/icons/extension-required.png";s:4:"5619";s:25:"res/icons/filebrowser.png";s:4:"25b9";s:18:"res/icons/flag.png";s:4:"8798";s:19:"res/icons/image.png";s:4:"82ab";s:21:"res/icons/install.gif";s:4:"8d57";s:20:"res/icons/jslint.gif";s:4:"2e24";s:19:"res/icons/oodoc.gif";s:4:"744b";s:23:"res/icons/repupdate.png";s:4:"eaa5";s:20:"res/icons/server.png";s:4:"92ce";s:22:"res/icons/settings.png";s:4:"30a1";s:25:"res/icons/text_indent.png";s:4:"47f0";s:19:"res/icons/tools.png";s:4:"16d9";s:23:"res/icons/uninstall.gif";s:4:"a77f";s:16:"res/js/em_app.js";s:4:"53ec";s:23:"res/js/em_components.js";s:4:"608b";s:18:"res/js/em_files.js";s:4:"236b";s:22:"res/js/em_languages.js";s:4:"4b2f";s:20:"res/js/em_layouts.js";s:4:"6539";s:22:"res/js/em_locallist.js";s:4:"bc7c";s:27:"res/js/em_repositorylist.js";s:4:"2f2a";s:21:"res/js/em_settings.js";s:4:"0264";s:16:"res/js/em_ter.js";s:4:"b7bf";s:18:"res/js/em_tools.js";s:4:"b9b8";s:22:"res/js/em_usertools.js";s:4:"694b";s:33:"res/js/overrides/ext_overrides.js";s:4:"2a8d";s:24:"res/js/ux/GridFilters.js";s:4:"95db";s:29:"res/js/ux/RowPanelExpander.js";s:4:"d4dd";s:27:"res/js/ux/custom_plugins.js";s:4:"d761";s:28:"res/js/ux/fileuploadfield.js";s:4:"06a5";s:19:"res/js/ux/jslint.js";s:4:"8c75";s:24:"res/js/ux/searchfield.js";s:4:"1d2e";s:29:"res/js/ux/css/GridFilters.css";s:4:"78fa";s:27:"res/js/ux/css/RangeMenu.css";s:4:"c5f6";s:33:"res/js/ux/filter/BooleanFilter.js";s:4:"d67f";s:30:"res/js/ux/filter/DateFilter.js";s:4:"1d6d";s:26:"res/js/ux/filter/Filter.js";s:4:"5e35";s:30:"res/js/ux/filter/ListFilter.js";s:4:"a9ab";s:33:"res/js/ux/filter/NumericFilter.js";s:4:"abb4";s:32:"res/js/ux/filter/StringFilter.js";s:4:"0923";s:27:"res/js/ux/images/equals.png";s:4:"87b7";s:25:"res/js/ux/images/find.png";s:4:"9f1c";s:33:"res/js/ux/images/greater_than.png";s:4:"746c";s:30:"res/js/ux/images/less_than.png";s:4:"2fb7";s:38:"res/js/ux/images/sort_filtered_asc.gif";s:4:"9e7a";s:39:"res/js/ux/images/sort_filtered_desc.gif";s:4:"6d59";s:26:"res/js/ux/menu/ListMenu.js";s:4:"d6c1";s:27:"res/js/ux/menu/RangeMenu.js";s:4:"cc46";}',
        'constraints' => array(
                'depends' => array(
                        'cms' => '',
index b1ee13b..0b43783 100644 (file)
@@ -10,6 +10,11 @@ if (TYPO3_MODE === 'BE') {
        $TYPO3_CONF_VARS['SC_OPTIONS']['ExtDirect']['TYPO3.EMSOAP.ExtDirect'] = t3lib_extMgm::extPath($_EXTKEY) . 'classes/connection/class.tx_em_connection_extdirectsoap.php:tx_em_Connection_ExtDirectSoap';
 
                // register reports check
-       $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['reports']['tx_reports']['status']['providers']['ExtensionManager'][] = 'tx_em_reports_ExtensionStatus';
+       $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['reports']['tx_reports']['status']['providers']['Extension Manager'][] = 'tx_em_reports_ExtensionStatus';
+
+       $icons = array(
+               'extension-required' => t3lib_extMgm::extRelPath('em') . 'res/icons/extension-required.png'
+       );
+       t3lib_SpriteManager::addSingleIcons($icons, 'em');
 }
 ?>
\ No newline at end of file
index f8462fa..7a8a221 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2010-2011 Xavier Perseguers <typo3@perseguers.ch>
+*  (c) 2010 Xavier Perseguers <typo3@perseguers.ch>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
index ab515b8..233c686 100644 (file)
@@ -6,10 +6,10 @@
        </meta>
        <data type="array">
                <languageKey index="default" type="array">
-                       <label index="tasks_updateExtensionlistTask.name">Update extension list</label>
-                       <label index="tasks_updateExtensionlistTask.description">Update extension list on a regular basis. Once a day is a good interval.</label>
+                       <label index="tasks_updateExtensionlistTask.name">Update Extension List</label>
+                       <label index="tasks_updateExtensionlistTask.description">Update the extension list on a regular basis. Once a day is a good interval.</label>
                        <label index="mlang_labels_tablabel">TYPO3 Extension Manager</label>
-                       <label index="mlang_labels_tabdescr">Manages TYPO3 extensions from a central repository, which includes plugins, modules, class extensions, configuration code etc.</label>
+                       <label index="mlang_labels_tabdescr">Manages TYPO3 extensions from a central repository. TYPO3 extensions include plugins, modules, class extensions, configuration code, etc.</label>
                        <label index="mlang_tabs_tab">Extension Manager</label>
                        <label index="category_BE">Backend</label>
                        <label index="category_BE_modules">Backend Modules</label>
@@ -42,6 +42,7 @@
                        <label index="menu_import_extensions">Import extensions</label>
                        <label index="menu_update_extensions">Update extensions</label>
                        <label index="menu_translation_handling">Translation handling</label>
+                       <label index="menu_language_packges">Language Packages</label>
                        <label index="menu_settings">Settings</label>
                        <label index="lang_language">Language</label>
                        <label index="lang_short">Short</label>
@@ -62,7 +63,8 @@
                        <label index="details_info">Information</label>
                        <label index="details_edit">Edit files</label>
                        <label index="details_backup_delete">Backup/Delete</label>
-                       <label index="details_dump_db">Dump DB</label>
+                       <label index="details_maintainance">Maintainance</label>
+                       <label index="details_dump_db">Dump Database</label>
                        <label index="details_upload">Upload to TER</label>
                        <label index="details_update">UPDATE!</label>
                        <label index="header">Extension Manager</label>
@@ -72,8 +74,8 @@
                        <label index="display_obsolete">Display obsolete extensions</label>
                        <label index="hide_shy">Hide shy extensions</label>
                        <label index="hide_obsolete">Hide obsolete extensions</label>
-                       <label index="display_installedOnly">Display installed extensions only</label>
-                       <label index="display_updatesOnly">Display updatable extensions only</label>
+                       <label index="display_installedOnly">Only display installed extensions</label>
+                       <label index="display_updatesOnly">Only display updatable extensions</label>
                        <label index="display_all">Display all extensions</label>
                        <label index="only_my_ext">Only my extensions:</label>
                        <label index="show_obsolete">Show obsolete:</label>
                        <label index="global">global</label>
                        <label index="local">local</label>
                        <label index="excluded_from_updates">The extension is excluded from updates! You can change this in the appropriate ext_emconf.php file.</label>
-                       <label index="import_to_local_dir">Import this extension from online repository to the 'local' directory typo3conf/ext/.</label>
+                       <label index="import_to_local_dir">Import this extension from the online repository to the 'local' directory typo3conf/ext/.</label>
                        <label index="list_or_look_up">List or look up %s extensions</label>
                        <label index="list_or_look_up_extensions">Look up extensions:</label>
                        <label index="list_or_look_up_all">all</label>
                        <label index="list_or_look_up_reviewed">reviewed</label>
                        <label index="look_up_button">Look up</label>
                        <label index="privacy_notice_header">PRIVACY NOTICE:</label>
-                       <label index="extensions_repository_group_by">Extensions in TYPO3 Extension Repository (online) - Grouped by:</label>
+                       <label index="extensions_repository_group_by">Extensions in the TYPO3 Extension Repository (online) - Grouped by:</label>
                        <label index="extensions_repository_short">Extensions in repository:</label>
                        <label index="extension_required_short">Rq</label>
                        <label index="list_of_local_extensions">This is the list of extensions which are available locally, but not in the repository.</label>
                        <label index="no_matching_extensions">No matching extensions found.</label>
                        <label index="connect_to_ter">Connect to the current mirror and retrieve the current list of available plugins from the TYPO3 Extension Repository.</label>
                        <label index="retrieve_update">Retrieve/Update</label>
-                       <label index="ext_list_last_updated">(last update: %s)</label>
-                       <label index="in_repository">Extensions in TYPO3 Extension Repository</label>
+                       <label index="ext_list_last_updated">(Last Update: %s)</label>
+                       <label index="in_repository">Extensions in the TYPO3 Extension Repository</label>
                        <label index="upload_t3x">Upload extension file (.t3x):</label>
                        <label index="upload_to_location">...to location:</label>
                        <label index="local_folder">Local (../typo3conf/ext/)</label>
                        <label index="security_settings">Security Settings</label>
                        <label index="show_exts_without_security_check">Enable extensions without review (basic security check):</label>
                        <label index="notice">Notice:</label>
-                       <label index="security_notice">Make sure you know what consequences enabling this checkbox might have. Check the %sinformation on typo3.org about security reviews%s!</label>
-                       <label index="user_settings">User Settings</label>
-                       <label index="enter_repository_username">Enter repository username:</label>
-                       <label index="enter_repository_password">Enter repository password:</label>
+                       <label index="security_notice">Make sure you know the consequences of enabling this checkbox. Check the %sinformation on typo3.org about security reviews%s!</label>
+                       <label index="user_settings">Repository User Settings</label>
+                       <label index="enter_repository_username">Username</label>
+                       <label index="enter_repository_password">Password</label>
                        <label index="repository_password_info">This is &lt;em&gt;not&lt;/em&gt; your password to the TYPO3 backend! This user information is what is needed to log in at typo3.org with your account there!</label>
                        <label index="repository_notfound">No repositories found.</label>
                        <label index="repository_update">Update Repository</label>
                        <label index="repository_saving">Saving Repository ...</label>
                        <label index="repository_update_not_needed">No update needed!</label>
                        <label index="repository_updated">Repository was updated.</label>
-                       <label index="repository_extensions_count">There are {0} extensions now in repository.</label>
-                       <label index="repository_extensions_count">There are {0} extensions now in repository.</label>
+                       <label index="repository_extensions_count">There are {0} extensions currently in the repository.</label>
+                       <label index="repository_extensions_count">There are {0} extensions currently in the repository.</label>
                        <label index="mirror_selection">Mirror selection</label>
                        <label index="mirror_list_url">Enter mirror list URL:</label>
                        <label index="mirror_select">Select a mirror from below. This list is built from the online mirror list retrieved from the URL above.</label>
                        <label index="repository_created">Repository "{0}" was created.</label>
                        <label index="repository_saved">Repository "{0}" was saved.</label>
                        <label index="repository">Repository</label>
-                       <label index="repository_main_nodelete">Main repository can not be deleted!</label>
-                       <label index="repository_upToDate">Repository is up-to-date.</label>
+                       <label index="repository_main_nodelete">Main repository cannot be deleted!</label>
+                       <label index="repository_upToDate">Repository is up to date.</label>
                        <label index="translation_settings">Translation Settings</label>
                        <label index="languages_to_fetch">Languages to fetch:</label>
-                       <label index="translation_info">For the selected languages the EM tries to download and install translation files if available, whenever an extension is installed. (This replaces the &lt;code&gt;csh_*&lt;/code&gt; extensions that were used to install core translations before TYPO3 version 4!)</label>
+                       <label index="translation_info">For the selected languages the Extension Manager tries to download and install translation files if available, whenever an extension is installed. (This replaces the &lt;code&gt;csh_*&lt;/code&gt; extensions that were used to install core translations before TYPO3 version 4!)</label>
                        <label index="translation_loaded_exts">To request an update or installation for already loaded extensions, see below.</label>
                        <label index="translation_save_selection">Save selection</label>
                        <label index="translation_selection_saved">Language selection was saved</label>
                        <label index="translation_not_installed">Not installed/Unknown</label>
                        <label index="translation_status_unknown">???</label>
                        <label index="translation_status_new">New translation available</label>
-                       <label index="translation_status_uptodate">up-to-date</label>
+                       <label index="translation_status_uptodate">up to date</label>
                        <label index="translation_needs_update">Needs update</label>
                        <label index="translation_status_update">Update available</label>
                        <label index="translation_status_notchecked">not checked</label>
                        <label index="translation_check_done">Check done.</label>
                        <label index="translation_update_status">Updating translations, please wait...</label>
                        <label index="translation_table_update">This table shows the update results of the translations of the loaded extensions.</label>
-                       <label index="translation_full_check_update">If you want to force a full check or update, delete the l10n zip-files from the typo3temp folder.</label>
+                       <label index="translation_full_check_update">If you want to force a full check or update, delete the l10n zip files from the typo3temp folder.</label>
                        <label index="translation_updating_extension">Updating translation for extension \"%s\"...</label>
                        <label index="translation_has_been_updated">Has been updated</label>
                        <label index="translation_status_error">ERR</label>
                        <label index="translation_status_could_not_fetch">Could not fetch translation status</label>
                        <label index="translation_update_done">Update done.</label>
                        <label index="translation_unpacking_failed">Unpacking the language pack failed!</label>
+                       <label index="translation_singleCheckQuestion">Do you want to update the language package "{0}" for the extension {1}?</label>
+                       <label index="translation_singleCheck">Fetch language {0} for extension {1} ...</label>
+                       <label index="translation_singleCheckTip">Click to update this language for this extension only</label>
                        <label index="ext_load_details_button">Load details</label>
                        <label index="ext_or">or</label>
                        <label index="ext_import_update_button">Import/Update</label>
                        <label index="ext_import_remote_ext_details">Remote Extension Details</label>
                        <label index="ext_import_list_not_updated">Error: The list could not be fetched from %s.</label>
                        <label index="ext_import_list_updated">The mirror list has been updated and now contains %s entries.</label>
-                       <label index="ext_import_list_empty">The mirror list was not updated as it contained no entries.</label>
+                       <label index="ext_import_list_empty">The mirror list contained no entries and was not updated.</label>
                        <label index="ext_import_md5_not_updated">Error: The extension MD5 sum could not be fetched from %s.</label>
                        <label index="ext_import_extlist_updated_header">Extension list updated</label>
-                       <label index="ext_import_extlist_updated">The extensions list has been updated and now contains %s extension entries.</label>
+                       <label index="ext_import_extlist_updated">The extension list has been updated and now contains %s extension entries.</label>
                        <label index="ext_import_list_unchanged_header">No updates available</label>
-                       <label index="ext_import_list_unchanged">The extension list has not changed remotely, it has thus not been fetched.</label>
+                       <label index="ext_import_list_unchanged">The extension list has not changed remotely and has not been fetched.</label>
                        <label index="ext_import_ext_already_installed_loaded">Extension already installed and loaded.</label>
                        <label index="ext_import_p_localconf">localconf.php is not writable!</label>
-                       <label index="ext_import_ext_loaded">Extension was already installed, it has been loaded.</label>
+                       <label index="ext_import_ext_loaded">Extension was already installed, and has now been loaded.</label>
                        <label index="ext_import_ext_n_a">Extension not available in matching version.</label>
                        <label index="ext_import_ext_imported">Extension has been imported from repository and loaded.</label>
-                       <label index="ext_import_ext_not_loaded">Extension is in repository, but could not be loaded.</label>
+                       <label index="ext_import_ext_not_loaded">Extension is in repository but could not be loaded.</label>
                        <label index="ext_import_ext_n_a_rep">Extension not available in repository.</label>
                        <label index="ext_import_file_not_uploaded">File was not uploaded?!</label>
                        <label index="ext_import_file_empty">File is empty!</label>
-                       <label index="ext_import_ext_present_no_overwrite">A version  of the extension was already present in '%s' and the overwrite flag was not set.</label>
+                       <label index="ext_import_ext_present_no_overwrite">A version of the extension was already present in '%s' and the overwrite flag was not set.</label>
                        <label index="ext_import_ext_present_nothing_done">So nothing was done...</label>
                        <label index="ext_import_no_key">No extension key in file. Strange...</label>
                        <label index="ext_import_wrong_file_format">Wrong file format. No data recognized, %s.</label>
-                       <label index="ext_import_no_file">No file uploaded! Probably the file was too large for PHPs internal limit for uploadable files.</label>
+                       <label index="ext_import_no_file">No file uploaded! Probably the file was too large for PHP's internal limit for uploadable files.</label>
                        <label index="ext_import_file_not_created">Error: File '%s' could not be created!!!</label>
                        <label index="ext_import_file_corrupted">Error: File '%s' MD5 was different from the md5 of the original file - so the file is corrupted!</label>
                        <label index="ext_import_success">Extension imported</label>
                        <label index="ext_import_success_folder">Folder created: %s</label>
                        <label index="ext_import_no_conf_file">Error: Could not find '%s'.</label>
                        <label index="ext_import_ext_type">Installation Type:</label>
-                       <label index="ext_import_cache_files_removed">Cache-files are removed and will be re-written upon next hit.</label>
+                       <label index="ext_import_cache_files_removed">Cache files are removed and will be rewritten upon next hit.</label>
                        <label index="ext_import_install_uninstall">Install/Uninstall Extension:</label>
                        <label index="ext_import_uninstall">Uninstall extension</label>
                        <label index="ext_import_install">Install extension</label>
                        <label index="ext_details_new_tables_fields_select">Please select which operations to perform:</label>
                        <label index="ext_details_installing">Installing %s:</label>
                        <label index="ext_details_db_needs_update">Database needs to be updated</label>
+                       <label index="ext_details_dbUpToDate">Database is up to date</label>
                        <label index="ext_details_remove_ext">Remove extension</label>
                        <label index="ext_details_removing">Removing %s:</label>
                        <label index="ext_details_ext_installed_removed">The extension has been %s.</label>
                        <label index="ext_details_saving_disabled">[SAVING IS DISABLED - It can be enabled with the $TYPO3_CONF_VARS['EXT']['noEdit'] flag]</label>
                        <label index="ext_details_cancel_button">Cancel</label>
                        <label index="ext_details_edit_file">Edit file:</label>
-                       <label index="ext_details_filesize_exceeded_kb">Filesize exceeded %s KBytes</label>
+                       <label index="ext_details_filesize_exceeded_kb">File size exceeded %s KBytes</label>
                        <label index="ext_details_file_too_large">Files larger than %s KBytes are not allowed to be edited.</label>
                        <label index="ext_details_fatal_edit_error">Fatal Edit error: File '%s' was not inside the correct path of the TYPO3 Extension!</label>
                        <label index="ext_details_loaded_and_running">The extension is installed (loaded and running)!</label>
                        <label index="ext_details_configuration">Configuration:</label>
                        <label index="ext_details_notice_clear_cache">(&lt;em&gt;Notice: You may need to clear the cache after the configuration of the extension. This is required if the extension adds TypoScript depending on these settings.&lt;/em&gt;)</label>
                        <label index="ext_details_details">Details:</label>
-                       <label index="ext_details_no_unique_ext">The extensions has an extension key prefixed "user_" which indicates that it is a user-defined extension with no official unique identification. Therefore it cannot be uploaded.</label>
+                       <label index="ext_details_no_unique_ext">The extension has an extension key prefixed with "user_" which indicates that it is a user-defined extension with no official unique identification. Therefore it cannot be uploaded.</label>
                        <label index="ext_details_no_username">You have not configured a default username/password yet. %sGo to "Settings"%s if you want to do that.</label>
                        <label index="ext_details_upload_to_ter">Upload extension to repository</label>
                        <label index="ext_details_delete">Delete</label>
                        <label index="ext_details_update_em_conf">Update EM_CONF</label>
                        <label index="ext_details_ext_files">Extension files</label>
                        <label index="ext_details_update">Update:</label>
+                       <label index="ext_details_externActions">External extension actions</label>
                        <label index="ext_details_no_update_object">No update object</label>
+                       <label index="ext_details_updateScript">Update script</label>
+                       <label index="ext_details_checkUpdateScript">Check update script</label>
                        <label index="reqInstExt_install_import">Install/Import:</label>
                        <label index="reqInstExt_ext_key">Extension Key:</label>
                        <label index="reqInstExt_import_install_selected">Import and Install selected</label>
                        <label index="extDumpTables_write_static">Write current static table contents to ext_tables_static+adt.sql now!</label>
                        <label index="extDumpTables_dumping_db_structure">Dumping current database structure for:</label>
                        <label index="extDumpTables_tables">Tables:</label>
-                       <label index="extDumpTables_solo_fields">Solo-fields:</label>
+                       <label index="extDumpTables_solo_fields">Solo fields:</label>
                        <label index="extDumpTables_write_dump">Write this dump to ext_tables.sql now!</label>
                        <label index="extDumpTables_based_on">This dump is based on two factors:</label>
-                       <label index="extDumpTables_based_on_one">1) All tablenames in ext_tables.sql which are &lt;em&gt;not&lt;/em&gt; found in the "modify_tables" list in ext_emconf.php are dumped with the current database structure.</label>
-                       <label index="extDumpTables_based_on_two">2) For any tablenames which &lt;em&gt;are&lt;/em&gt; listed in "modify_tables" all fields and keys found for the table in ext_tables.sql will be re-dumped with the fresh equivalents from the database.</label>
+                       <label index="extDumpTables_based_on_one">1) All table names in ext_tables.sql which are &lt;em&gt;not&lt;/em&gt; found in the "modify_tables" list in ext_emconf.php are dumped with the current database structure.</label>
+                       <label index="extDumpTables_based_on_two">2) For any table names which &lt;em&gt;are&lt;/em&gt; listed in "modify_tables" all fields and keys found for the table in ext_tables.sql will be redumped with the fresh equivalents from the database.</label>
                        <label index="extDumpTables_bottomline">Bottomline is: Whole tables are dumped from database with no regard to which fields and keys are defined in ext_tables.sql. But for tables which are only modified, any NEW fields added to the database must in some form or the other exist in the ext_tables.sql file as well.</label>
                        <label index="extFileList_file">File:</label>
                        <label index="extFileList_size">Size:</label>
                        <label index="extFileList_download">Download...</label>
                        <label index="extFileList_edit_file">Edit file</label>
                        <label index="extFileList_total">Total:</label>
-                       <label index="extDelete_ext_active">This extension is currently installed (loaded and active) and so cannot be deleted!</label>
+                       <label index="extDelete_ext_active">This extension is currently installed (loaded and active) and cannot be deleted!</label>
                        <label index="extDelete_wrong_scope">You cannot delete (and install/update) extensions in the %s scope.</label>
                        <label index="extDelete_remove_dir_failed">ERROR: Could not remove extension directory '%s'. The following errors occurred:</label>
                        <label index="extDelete_removed_header">Extension deleted</label>
                        <label index="extDelete_from_server">DELETE EXTENSION FROM SERVER</label>
                        <label index="extDelete_from_location">(in the '%s' location '%s'!)</label>
                        <label index="extDelete_backup">(Maybe you should make a backup first, see above.)</label>
-                       <label index="extDelete_neither_global_nor_local">This extension is neither a global nor a local one and so cannot be removed.</label>
+                       <label index="extDelete_neither_global_nor_local">This extension is neither global nor local one and cannot be removed.</label>
                        <label index="extUpdateEMCONF_sure">Are you sure you want to update EM_CONF?</label>
                        <label index="extUpdateEMCONF_file">Update extension EM_CONF file</label>
                        <label index="extUpdateEMCONF_info_changes">If files are changed, added or removed to an extension this is normally detected and displayed so you know that this extension has been altered locally and may need to be uploaded or at least not overwritten.</label>
                        <label index="extInfoArray_version">Version</label>
                        <label index="extInfoArray_versions">Versions</label>
                        <label index="extInfoArray_downloads">Downloads</label>
+                       <label index="extInfoArray_lastUpdate">Last Update</label>
                        <label index="extInfoArray_category">Category</label>
                        <label index="extInfoArray_state">State</label>
                        <label index="extInfoArray_shy">Shy</label>
                        <label index="extInfoArray_inst_twice">Double installation</label>
                        <label index="extInfoArray_root_files">Root files</label>
                        <label index="extInfoArray_table_error">Table error!</label>
-                       <label index="extInfoArray_missing_fields">Probably one or more required fields/tables are missing in the database!</label>
+                       <label index="extInfoArray_missing_fields">One or more required fields/tables are probably missing in the database!</label>
                        <label index="extInfoArray_static_table_error">Static table error!</label>
                        <label index="extInfoArray_static_tables_missing_empty">The static tables are missing or empty!</label>
                        <label index="extInfoArray_db_update_needed">The database will need to be updated when this extension is installed.</label>
                        <label index="extInfoArray_class_names">Class names:</label>
                        <label index="extInfoArray_code_warnings">Code warnings:</label>
                        <label index="extInfoArray_dev_relevant">(developer-relevant)</label>
+                       <label index="extInfoArray_relevance">Relevance</label>
                        <label index="extInfoArray_annoyances">Naming annoyances:</label>
                        <label index="extInfoArray_exception">[exception]</label>
                        <label index="extInfoArray_difference_detected">A difference between the originally installed version and the current one was detected!</label>
                        <label index="extInfoArray_additional_fields">Additional fields:</label>
                        <label index="extInfoArray_double_installation_infotext">A %s extension with this key is also available on the server, but cannot be loaded, because the "%s" version takes precedence.</label>
                        <label index="repositories">Repositories</label>
-                       <label index="repository_select">Select repository</label>
+                       <label index="repository_select">Select Repository</label>
                        <label index="repository_details">Repository Details</label>
                        <label index="repositoryUploadForm_username">Repository Username</label>
                        <label index="repositoryUploadForm_password">Repository Password</label>
                        <label index="detailedExtAnalysis_TCA">TCA</label>
                        <label index="detailedExtAnalysis_plugin">Plugin</label>
                        <label index="detailedExtAnalysis_plugin_st43">Plugin/ST43</label>
-                       <label index="detailedExtAnalysis_page_ts">Page-TSconfig</label>
-                       <label index="detailedExtAnalysis_user_ts">User-TSconfig</label>
+                       <label index="detailedExtAnalysis_page_ts">Page TSconfig</label>
+                       <label index="detailedExtAnalysis_user_ts">User TSconfig</label>
                        <label index="detailedExtAnalysis_ts_setup">TS/Setup</label>
                        <label index="detailedExtAnalysis_ts_constants">TS/Constants</label>
                        <label index="detailedExtAnalysis_constants">Constants</label>
                        <label index="detailedExtAnalysis_class_not_ok">Class filename "%s" did NOT contain the class "%s"!</label>
                        <label index="detailedExtAnalysis_xclass_ok">'XCLASS OK in %s.</label>
                        <label index="detailedExtAnalysis_xclass_no_include">Couldn't find the include_once statement for XCLASS!</label>
-                       <label index="detailedExtAnalysis_xclass_incorrect">The XCLASS filename-key "%s" was different from "%s" which it should have been!</label>
-                       <label index="detailedExtAnalysis_no_xclass_filename">No XCLASS filename-key found in file "%s". Maybe a regex coding error here...</label>
+                       <label index="detailedExtAnalysis_xclass_incorrect">The XCLASS filename key "%s" was different from "%s" which it should have been!</label>
+                       <label index="detailedExtAnalysis_no_xclass_filename">No XCLASS filename key found in file "%s". Maybe a regex coding error here...</label>
                        <label index="detailedExtAnalysis_no_xclass_found">No XCLASS inclusion code found in file "%s".</label>
                        <label index="rmExtDir_could_not_be_deleted">Error: "%s" could not be deleted!</label>
                        <label index="rmExtDir_error_file">Error: "%s" was either not a file, or it was equal to the removed directory or simply outside the removed directory "%s"!</label>
                        <label index="clearMakeExtDir_could_not_create_dir">ERROR: Could not create extension directory "%s"!</label>
                        <label index="clearMakeExtDir_no_dir">ERROR: The extension install path "%s" was no directory!</label>
                        <label index="writeModPath_ok">TYPO3_MOD_PATH and $BACK_PATH were updated in "%s"!</label>
-                       <label index="writeModPath_notRequired">Notice: Module "%s" uses module-API to register module, TYPO3_MOD_PATH and $BACK_PATH not required.</label>
+                       <label index="writeModPath_notRequired">Notice: Module "%s" uses module API to register module, TYPO3_MOD_PATH and $BACK_PATH not required.</label>
                        <label index="writeModPath_error">Error: Either TYPO3_MOD_PATH or $BACK_PATH was not found in the "%s" file. You must manually configure that!</label>
                        <label index="updateLocalEM_CONF_ok">The file "%s" was updated with a cleaned up EM_CONF array.</label>
                        <label index="updateLocalEM_CONF_not_writable">Error: "%s" was not writable!</label>
                        <label index="tab_mod_key">Extension Key</label>
                        <label index="tab_mod_loc_ver">Local</label>
                        <label index="tab_mod_rem_ver">Remote</label>
-                       <label index="tab_mod_comment">Upload-Comment</label>
+                       <label index="tab_mod_comment">Upload Comment</label>
                        <label index="tab_mod_location">Location</label>
                        <label index="msg_warn_diff">A difference between the originally installed version and the current was detected!</label>
                        <label index="msg_modified">Modified Files:</label>
                        <label index="localext">Locally installed extension</label>
                        <label index="sysext">System extension</label>
                        <label index="localExtensions">Local extensions</label>
-                       <label index="remoteRepository">Remote repository</label>
-                       <label index="myExtensions">My extensions</label>
+                       <label index="remoteRepository">Remote Repository</label>
+                       <label index="myExtensions">My Extensions</label>
                        <label index="emLoaded">Application is loaded</label>
                        <label index="cmd_edit">Edit</label>
                        <label index="cmd_create">Create</label>
                        <label index="cmd_redo">Redo</label>
                        <label index="cmd_indent">Indent</label>
                        <label index="cmd_jslint">JS Lint</label>
-                       <label index="msg_terupload">Extension "{0}" was uploaded to TER.</label>
+                       <label index="msg_terupload">Extension "{0}" was uploaded to the TER.</label>
                        <label index="msg_uploaded">Extension "{0}" was uploaded.</label>
                        <label index="msg_error">Error</label>
                        <label index="msg_invalid">Invalid</label>
                        <label index="msg_info">Info</label>
                        <label index="msg_debug">Debug</label>
                        <label index="msg_update">Update</label>
+                       <label index="msg_dbupdate">Database Update</label>
                        <label index="msg_configuration">Configuration</label>
                        <label index="msg_congratsNoErrors">Congratulation! No errors found.</label>
                        <label index="msg_files">Files</label>
                        <label index="msg_character">Character</label>
                        <label index="msg_developerinformation">Developer Information</label>
                        <label index="msg_fileSaved">File "{0}" was saved.</label>
-                       <label index="msg_extUpToDate">Extension is up-to-date.</label>
+                       <label index="msg_extUpToDate">Extension is up to date.</label>
                        <label index="msg_extNotInstalled">Extension "%s" is not installed.</label>
                        <label index="msg_extNoConfiguration">This extension has no configuration.</label>
                        <label index="msg_loginFailed">login failed!</label>
                        <label index="msg_noUserLoginData">No user login data!</label>
-                       <label index="msg_ok">Okay</label>
-                       <label index="msg_userNotExists">User does not exists!</label>
-                       <label index="msg_extkexExists">Extensionkey already exists.</label>
-                       <label index="msg_extkexNotExists">Extensionkey does not exists.</label>
-                       <label index="msg_extkexNotValid">Extensionkey is not valid.</label>
-                       <label index="msg_extkexRegistered">Extensionkey was successful registered.</label>
+                       <label index="msg_ok">OK</label>
+                       <label index="msg_userNotExists">User does not exist!</label>
+                       <label index="msg_extkexExists">Extension key already exists.</label>
+                       <label index="msg_extkexNotExists">Extension key does not exist.</label>
+                       <label index="msg_extkexNotValid">Extension key is not valid.</label>
+                       <label index="msg_extkexRegistered">Extension key was successful registered.</label>
                        <label index="msg_extkexUploadedSuccess">Extension was successful uploaded.</label>
                        <label index="msg_extkexDeletedSuccess">Extension was successful deleted.</label>
                        <label index="msg_unknownError">Unknow error occured.</label>
+                       <label index="msg_startTyping">Start typing here and press &lt;return&gt;</label>
                        <label index="configurationSaved">Configuration was saved.</label>
-                       <label index="action_loading_extlist">Loading Extensionlist ...</label>
-                       <label index="action_loadingRepositoryExtlist">Loading Repository Extensionlist ...</label>
-                       <label index="action_loading">Loading  ...</label>
+                       <label index="action_loading_extlist">Loading Extension List ...</label>
+                       <label index="action_loadingRepositoryExtlist">Loading Repository Extension List ...</label>
+                       <label index="action_loading">Loading ...</label>
                        <label index="action_searching">Searching ...</label>
                        <label index="action_saving_settings">Saving settings ...</label>
+                       <label index="action_updateDatabase">Update database ...</label>
                        <label index="action_sending_data">Sending data ...</label>
                        <label index="registerkeys_rules_heading">Extension key format rules</label>
                        <label index="registerkeys_rules_allowedcharacters">Allowed characters are: a-z (lowercase), 0-9 and '_' (underscore)</label>
-                       <label index="registerkeys_rules_prefixes">The key must not being with one of the following prefixes: tx,u,user_,pages,tt_,sys_,ts_language_,csh_</label>
-                       <label index="registerkeys_rules_startandend">Extension keys cannot start or end with 0-9 and '_' (underscore)</label>
-                       <label index="registerkeys_rules_length">An extension key must have minimum 3, maximum 30 characters (not counting underscores)</label>
+                       <label index="registerkeys_rules_prefixes">The key must not begin with one of the following prefixes: tx,u,user_,pages,tt_,sys_,ts_language_,csh_</label>
+                       <label index="registerkeys_rules_startandend">Extension keys cannot start or end with 0-9 or '_' (underscore)</label>
+                       <label index="registerkeys_rules_length">An extension key must have a minimum 3 characters and a maximum of 30 characters (not counting underscores)</label>
                        <label index="registerkeys_check_validity">Check Validity</label>
                        <label index="registerkeys_check_validity_extkey">Check validity of extension key</label>
                        <label index="registerkeys_check_validity_extkey_isvalid">Extension key is valid</label>
                        <label index="registerkeys_checking_validity">Checking validity ...</label>
                        <label index="registerkeys_register_extkey">Register extension key ...</label>
-                       <label index="registerkeys_register_extkey_success">Extensionkey {0} was registered</label>
+                       <label index="registerkeys_register_extkey_success">Extension key {0} was registered</label>
                        <label index="registerkeys_registerkey">Register extension key</label>
                        <label index="registerkeys_cancel_register">Cancel register</label>
-                       <label index="transferkeys_info">Transfer an extension key to another user. There is no undo, be sure you have the right username of the user you want to transfer the extension key to.</label>
-                       <label index="deletekey_info">Deletes an extension key. There is no undo, once a key is deleted, it is available again for registration.</label>
+                       <label index="transferkeys_info">Transfer an extension key to another user. There is no undo so be sure you have the right username of the person you want to transfer the extension key to.</label>
+                       <label index="deletekey_info">Deletes an extension key. There is no undo. Once a key is deleted, it is available again for registration.</label>
                        <label index="transferkeys_success">Transfer of extension key {0} to user {1} succeded.</label>
                        <label index="transferkeys_fail">Transfer of extension key {0} to user {1} failed.</label>
-                       <label index="deletekey_success">Delete of extension key {0} succeded.</label>
-                       <label index="deletekey_fail">Delete of extension key {0} failed.</label>
+                       <label index="deletekey_success">Extension key {0} was successfully deleted.</label>
+                       <label index="deletekey_fail">Attempt to delete extension key {0} failed.</label>
                        <label index="reports_StatusMainRepository">Integrity of TYPO3 main repository record</label>
                        <label index="reports_StatusMainRepositoryUpdate">Last update of TYPO3 main repository</label>
                        <label index="reports_insecureInstalledExtensions">The following extensions are insecure and usage might damage your system. Please update these extensions as soon as possible or remove them from your system:</label>
-                       <label index="reports_insecureExistingExtensions">The following extensions were found on your system, but are currently not installed. Please delete the extension using the extension manager:</label>
+                       <label index="reports_insecureExistingExtensions">The following extensions were found on your system, but are currently not installed. Please delete the extensions using the extension manager:</label>
                        <label index="reports_StatusInstalledExtensions">Security status of installed extensions</label>
                        <label index="reports_StatusExistingExtensions">Security status of existing extensions</label>
                        <label index="insecureExtension">This extension is marked as insecure and usage might damage your system. Please update this extension as soon as possible or remove it from your system.</label>
                        <label index="reports_insecureExtensionsFound">%s insecure extension(s) found</label>
-                       <label index="reports_sysTerNotFound">The table "sys_ter" was not found. Please go to install tool and make a database compare!</label>
-                       <label index="reports_MainRepositoryNotFound">The Main Repository entry in table "sys_ter" was not found. Please go to extension manager / em and import static data!</label>
-                       <label index="reports_MainRepositoryNoExtensions">The Main Repository has no extensions. Please update the repository in extension manager or scheduler.</label>
-                       <label index="reports_MainRepositoryOldList">The Main Repository extension list is older than 7 days. Please make an update in extension manager or scheduler.</label>
+                       <label index="reports_sysTerNotFound">The table "sys_ter" was not found. Please go to the Install Tool and do a database compare!</label>
+                       <label index="reports_MainRepositoryNotFound">The Main Repository entry in table "sys_ter" was not found. Please go to the Extension Manager and import static data!</label>
+                       <label index="reports_MainRepositoryNoExtensions">The Main Repository has no extensions. Please update the repository in the Extension Manager or the Scheduler.</label>
+                       <label index="reports_MainRepositoryOldList">The Main Repository extension list is older than 7 days. Please update it in the Extension manager or Scheduler.</label>
                        <label index="reports_NoExtensionsFound">No extensions found!</label>
                        <label index="reports_ExtensionsNotUpToDate">Extension list is not up to date!</label>
                        <label index="wsdlUrl">WSDL URL</label>
                        <label index="msg_item">Item</label>
                        <label index="cmd_ClearAllFilters">Clear all Filters</label>
                        <label index="cmd_RetrieveUpdate">Retrieve / Update</label>
-                       <label index="help_localFilter">Enter something for filter and press Enter. Look up is in fields "title, description and extkey"</label>
-                       <label index="help_remoteFilter">Enter something for search and press Enter. To list all, use "*"</label>
+                       <label index="help_localFilter">Enter something to search for and press Enter. Title, description, and extension key are searched.</label>
+                       <label index="help_remoteFilter">Enter something to search for and press Enter. To list all extensions, use "*"</label>
                        <label index="help_loadFileInEditor">Click on a file to load in editor</label>
-                       <label index="extTemplate_showOldModules">Show old modules: Enable this option to have old modules like "Loaded Extensions, Installed extensions ..." available in upper left select box of extension manager</label>
-                       <label index="extTemplate_selectedLanguages">Language selection: The language setting is saved here as a global setting. You might not change it at this place, use the tab "Translation handling" to add / remove languages to your installation</label>
-                       <label index="extTemplate_inlineToWindow">Use windows instead inline expander: On small screens the inline row expanders might take too much space. This switch move this info to windows.</label>
+                       <label index="extTemplate_showOldModules">Show old modules: Enable this option to have old modules like "Loaded Extensions, Installed extensions ..." available in upper left select box of the Extension Manager</label>
+                       <label index="extTemplate_selectedLanguages">Language selection: The language setting is saved here as a global setting. You should not change it at this place but instead use the Extension Manager tab for "Translation handling" to add and remove languages for your installation</label>
+                       <label index="extTemplate_inlineToWindow">Use windows instead of inline display: On small screens the inline display of rows might take too much space. This switch moves the inline info to windows.</label>
+                       <label index="extTemplate_displayMyExtensions">Display "My Extensions" Tab: In this tab you can manage your own extensions.</label>
                        <label index="soap_error">Unexpected result from SOAP</label>
 
                </languageKey>
index bdae6ed..3990198 100644 (file)
@@ -11,16 +11,12 @@ strong {
        vertical-align: middle;
 }
 
-.x-grid-panel .x-panel-body {
-       overflow: auto !important;
-}
-
 .x-panel-tbar {
     border-bottom: none;
     padding: 0;
 }
 
-.x-form fieldset {
+.x-form fieldset, .x-fieldset {
         border: none;
 }
 
@@ -28,6 +24,13 @@ strong {
        font-weight: bold;
 }
 
+.gridrowpanel .x-panel-body {
+       background: #fff;
+       padding:10px;
+       overflow: auto !important;
+}
+
+
 /* extension states */
 .state-alpha div {background-color:#d12438;color:#fff !important;font-weight:bold !important;}
 .state-beta div {background-color:#97b17e;color:#fff !important;font-weight:bold !important;}
@@ -40,6 +43,11 @@ strong {
 img.installExtension, img.removeExtension {
        cursor: pointer;
 }
+
+.action-title-cell {
+       cursor: pointer;
+}
+
 .extLangTitleWithIcon img {
        vertical-align: bottom;
 }
@@ -131,7 +139,23 @@ img.installExtension, img.removeExtension {
        line-height: 14px;
 }
 
-#em-extlanguagegrid .x-grid3-row-selected {
+.em-extlist-extinfo-sub {
+       overflow: auto;
+}
+
+.em-extlist-extinfo-left {
+       float: left;
+       padding: 10px 40px 0 0;
+}
+
+.em-extlist-extinfo-right {
+       float: left;
+       padding: 10px 40px 0 0;
+}
+
+#em-local-extensions .x-grid3-row-selected,
+#em-extlanguagegrid .x-grid3-row-selected
+{
        background-color: #cfffda;
 }
 
@@ -142,6 +166,10 @@ img.installExtension, img.removeExtension {
        width: 100px;
        font-weight: bold;
 }
+.em-extlist-extinfo-right label {
+       width: auto;
+       margin-bottom: 5px;
+}
 
 a.email {
        background: url(../icons/email.png) no-repeat;
index 0c22da9..b12cfec 100644 (file)
@@ -48,7 +48,11 @@ Ext.onReady(function() {
        var EM = new TYPO3.EM.App.init();
 });
 
+
 TYPO3.EM.App = {
+       refreshLocalList: false,
+       loadingIndicor: '<div class="loading-indicator">' + TYPO3.lang.action_loading + '</div>',
+
        categoryLabels : [
                        TYPO3.lang.category_BE,
                        TYPO3.lang.category_BE_modules,
@@ -65,7 +69,17 @@ TYPO3.EM.App = {
        init : function() {
 
                TYPO3.settings.EM.selectedRepository = TYPO3.settings.EM.selectedRepository || 1;
-               var appPanel = new Ext.TabPanel( {
+               var items = [
+                       TYPO3.EM.LocalListTab,
+                       TYPO3.EM.RepositoryListTab,
+                       TYPO3.EM.LanguageTab,
+                       TYPO3.EM.SettingsTab
+               ];
+               if (TYPO3.settings.EM.displayMyExtensions == 1) {
+                       items.push(TYPO3.EM.UserTab)
+               }
+
+               this.appPanel = new Ext.TabPanel( {
                        renderTo : 'em-app',
                        id: 'em-main',
                        layoutOnTabChange: true,
@@ -83,13 +97,7 @@ TYPO3.EM.App = {
                                        activeTab: this.items.indexOf(this.getActiveTab())
                                };
                        },
-                       items : [
-                               TYPO3.EM.LocalListTab,
-                               TYPO3.EM.RepositoryListTab,
-                               TYPO3.EM.LanguageTab,
-                               TYPO3.EM.SettingsTab,
-                               TYPO3.EM.UserTab
-                       ],
+                       items : items,
                        plugins: [new Ext.ux.plugins.FitToParent()]
                });
        },
index 58e4efc..9f88ea5 100644 (file)
@@ -142,31 +142,38 @@ TYPO3.EM.GridColumns.InstallExtension = {
                                        this.items[0].tooltip = TYPO3.lang.menu_install_extensions;
                                        return 't3-icon t3-icon-actions t3-icon-actions-system t3-icon-system-extension-install';
                                } else {
-                                       this.items[0].tooltip = TYPO3.lang.ext_details_remove_ext;
-                                       return 't3-icon t3-icon-actions t3-icon-actions-system t3-icon-system-extension-uninstall';
+                                       if (record.get('required')) {
+                                               this.items[0].tooltip = TYPO3.lang.ext_details_always_loaded;
+                                               return 't3-icon t3-icon-extensions t3-icon-extensions-em t3-icon-em-extension-required';
+                                       } else {
+                                               this.items[0].tooltip = TYPO3.lang.ext_details_remove_ext;
+                                               return 't3-icon t3-icon-actions t3-icon-actions-system t3-icon-system-extension-uninstall';
+                                       }
                                }
                        },
                        handler: function(grid, rowIndex, colIndex) {
                                var record = grid.store.getAt(rowIndex).data;
-                               var action = record.installed ? TYPO3.lang.ext_details_remove_ext : TYPO3.lang.menu_install_extensions;
-                               var link = TYPO3.settings.EM.scriptLink
-                                               + '&nodoc=1&view=info&CMD[silentMode]=1&CMD[standAlone]=1&CMD[showExt]=' + record.extkey
-                                               + '&CMD[' + (record.installed ? 'remove' : 'load') + ']=1&CMD[clrCmd]=1&SET[singleDetails]=info';
-
-                               TYPO3.EM.ImportWindow = new TYPO3.EM.InstallWindow({
-                                       title: action + ': ' + record.title + ' (' + record.extkey + ') version ' + record.version,
-                                       record: record,
-                                       installAction: 'install',
-                                       url: link,
-                                       listeners: {
-                                               close: function() {
-                                                       grid.store.reload();
-                                                       TYPO3.EM.Tools.refreshMenu();
+                               if (!record.required) {
+                                       var action = record.installed ? TYPO3.lang.ext_details_remove_ext : TYPO3.lang.menu_install_extensions;
+                                       var link = TYPO3.settings.EM.scriptLink
+                                                       + '&nodoc=1&view=info&CMD[silentMode]=1&CMD[standAlone]=1&CMD[showExt]=' + record.extkey
+                                                       + '&CMD[' + (record.installed ? 'remove' : 'load') + ']=1&CMD[clrCmd]=1&SET[singleDetails]=info';
+
+                                       TYPO3.EM.ImportWindow = new TYPO3.EM.InstallWindow({
+                                               title: action + ': ' + record.title + ' (' + record.extkey + ') version ' + record.version,
+                                               record: record,
+                                               installAction: 'install',
+                                               url: link,
+                                               listeners: {
+                                                       close: function() {
+                                                               grid.store.reload();
+                                                               TYPO3.EM.Tools.refreshMenu(record, 'install');
+                                                       }
                                                }
-                                       }
-                               }).show(true, function(){
-                                       Ext.getCmp('emInstallIframeWindow').setUrl(link);
-                               });
+                                       }).show(true, function(){
+                                               Ext.getCmp('emInstallIframeWindow').setUrl(link);
+                                       });
+                               }
                        }
                },
                {
@@ -196,8 +203,8 @@ TYPO3.EM.GridColumns.ImportExtension = {
        items: [
                {
                        getClass: function(value, meta, record) {
-                               if (record.get('exists') == 1) {
-                                       if (record.get('versionislower')) {
+                               if (record.data.exists) {
+                                       if (record.data.versionislower) {
                                                this.items[0].tooltip = TYPO3.lang.menu_update_extensions;
                                                return 't3-icon t3-icon-actions t3-icon-actions-system t3-icon-system-extension-update';
                                        } else {
@@ -211,6 +218,9 @@ TYPO3.EM.GridColumns.ImportExtension = {
                        handler: function(grid, rowIndex, colIndex) {
                                var record = grid.store.getAt(rowIndex).data;
                                var action = record.installed ? TYPO3.lang.ext_details_remove_ext : TYPO3.lang.menu_install_extensions;
+                               if (record.exists && record.versionislower) {
+                                       action = TYPO3.lang.menu_install_extensions;
+                               }
                                var link = TYPO3.settings.EM.scriptLink
                                                + '&nodoc=1&view=info&CMD[silentMode]=1&CMD[standAlone]=1&ter_connect=1&CMD[importExt]='
                                                + record.extkey  + '&CMD[extVersion]=' + record.version + '&CMD[loc]=L'
@@ -222,7 +232,7 @@ TYPO3.EM.GridColumns.ImportExtension = {
                                        installAction: 'import',
                                        listeners: {
                                                close: function() {
-                                                       TYPO3.EM.Tools.refreshMenu();
+                                                       TYPO3.EM.Tools.refreshMenu(record, 'import');
                                                }
                                        }
                                }).show(true, function(){
@@ -254,6 +264,7 @@ TYPO3.EM.GridColumns.ExtensionTitle = {
        filterable: true,
        hideable: true,
        renderer:function(value, metaData, record, rowIndex, colIndex, store) {
+               metaData.css += 'action-title-cell';
                var description = record.data.description;
                if (value == '') {
                        value = '[no title]';
@@ -263,7 +274,7 @@ TYPO3.EM.GridColumns.ExtensionTitle = {
                        description += '<br><br><strong>' + TYPO3.lang.insecureExtension + '</strong>';
                }
                if (description) {
-                       metaData.attr = 'ext:qtip="' + description + '"';
+                       metaData.attr = 'ext:qtip="' + Ext.util.Format.htmlEncode(description) + '"';
                }
                return record.data.icon + ' ' + value + ' (v' + record.data.version + ')';
        }
@@ -307,7 +318,7 @@ TYPO3.EM.GridColumns.ExtensionAuthor = {
        hideable: true,
        dataIndex:'author',
        renderer: function(value, metaData, record, rowIndex, colIndex, store) {
-               metaData.attr = 'ext:qtip="' + value + '"';
+               metaData.attr = 'ext:qtip="' + Ext.util.Format.htmlEncode(value) + '"';
                var t = Ext.util.Format.ellipsis(value, 20);
                if (record.data.author_email) {
                        return '<a class="email" href="mailto:' + record.data.author_email + '">' + t + '</a>';
@@ -325,7 +336,7 @@ TYPO3.EM.GridColumns.ExtensionRemoteAuthor = {
        hideable: true,
        dataIndex:'authorname',
        renderer: function(value, metaData, record, rowIndex, colIndex, store) {
-               metaData.attr = 'ext:qtip="' + value + '"';
+               metaData.attr = 'ext:qtip="' + Ext.util.Format.htmlEncode(value) + '"';
                var t = Ext.util.Format.ellipsis(value, 20);
                if (record.data.authoremail) {
                        return '<a class="email" href="mailto:' + record.data.authoremail + '">' + t + '</a>';
@@ -389,7 +400,11 @@ TYPO3.EM.GridColumns.ExtensionDownloads = {
        width: 40,
        sortable: true,
        hideable: true,
-       dataIndex:'alldownloadcounter'
+       dataIndex:'alldownloadcounter',
+       renderer: function(value, metaData, record, rowIndex, colIndex, store){
+               return record.data.alldownloadcounter + ' / ' + record.data.downloadcounter;
+       },
+       filterable: true
 };
 
 TYPO3.EM.GridColumns.ExtensionVersion = {
@@ -397,9 +412,18 @@ TYPO3.EM.GridColumns.ExtensionVersion = {
        width:40,
        sortable: true,
        hideable: true,
+       hidden: true,
        dataIndex:'version'
 };
 
+TYPO3.EM.GridColumns.Relevance = {
+       header: TYPO3.lang.extInfoArray_relevance,
+       width:40,
+       sortable: true,
+       hideable: true,
+       dataIndex:'relevance'
+};
+
 
 ///////////////////////////////////////////////////////
 // Stores
@@ -420,7 +444,15 @@ TYPO3.EM.LocationStore = new Ext.data.JsonStore({
 TYPO3.EM.LocalListTab = {
        title : TYPO3.lang.localExtensions,
        xtype: 'TYPO3.EM.LocalList',
-       id: 'em-local-extensions'
+       id: 'em-local-extensions',
+       listeners: {
+               activate: function(panel) {
+                       if (TYPO3.EM.App.refreshLocalList) {
+                               Ext.StoreMgr.get('localstore').load();
+                       }
+               },
+               scope: this
+       }
 };
 
 TYPO3.EM.RepositoryListTab = {
@@ -435,20 +467,11 @@ TYPO3.EM.RepositoryListTab = {
                region: 'center',
                margins: '0 0 0 0'
        }],
-       id: 'em-remote-extensions',
-       listeners: {
-               activate: function(panel) {
-                       var store = Ext.StoreMgr.get('repositoryliststore');
-                       if (!store.getCount()) {
-                               store.load();
-                       }
-               },
-               scope: this
-       }
+       id: 'em-remote-extensions'
 };
 
 TYPO3.EM.LanguageTab = {
-       title: TYPO3.lang.menu_translation_handling,
+       title: TYPO3.lang.menu_language_packges,
        xtype: 'extlanguages',
        id: 'em-translations',
        listeners: {
@@ -522,27 +545,60 @@ TYPO3.EM.RepositoryCombo = new Ext.form.ComboBox({
 TYPO3.EM.LanguagesActionPanel = {
        xtype: 'container',
        layout: 'hbox',
-       height: 40,
+       height: 30,
        id: 'LanguagesActionPanel',
        layoutConfig: {
-               align: 'stretch'
+               align: 'middle'
        },
        defaults: {
                border:false,
-               flex: 1,
-               margins: '10 10 10 10'
+               flex: 1
        },
        items: [{
                xtype: 'button',
                text: TYPO3.lang.translation_check_status_button,
-               id: 'lang-checkbutton'
+               id: 'lang-checkbutton',
+               margins: '0 10 10 0'
        }, {
                xtype: 'button',
                text: TYPO3.lang.translation_update_button,
-               id: 'lang-updatebutton'
+               id: 'lang-updatebutton',
+               margins: '0 0 10 10'
        }]
 };
 
+TYPO3.EM.LanguagesProgressBar = new Ext.ProgressBar ({
+       id:  'langpb',
+       cls: 'left-align',
+       style: 'margin: 0 0 20px 0',
+       animate: true
+});
+
+TYPO3.EM.LanguagesProgressPanel = {
+       xtype: 'container',
+       layout: 'hbox',
+       height: 40,
+       id: 'LanguagesProgressPanel',
+       hidden: true,
+       layoutConfig: {
+               align: 'middle'
+       },
+       defaults: {
+               border: false,
+               flex: 1,
+               height: 20
+       },
+       items: [
+               TYPO3.EM.LanguagesProgressBar,
+               {
+                       xtype: 'button',
+                       text: 'cancel', //TYPO3.lang.cancel,
+                       id: 'lang-cancelbutton',
+                       margins: '0 0 10 10',
+                       width: 80
+               }
+       ]
+};
 
 TYPO3.EM.InstallWindow = Ext.extend(Ext.Window, {
        width: 500,
index 940c3fa..19a4eb7 100644 (file)
@@ -62,7 +62,12 @@ TYPO3.EM.ExtFilelist = Ext.extend(Ext.Panel, {
                                                        this.layout.center.panel.undoButton.enable();
                                                        this.layout.center.panel.redoButton.enable();
                                                        this.layout.center.panel.indentButton.enable();
-
+                                                       if (node.attributes.ext == 'js') {
+                                                               this.layout.center.panel.jslintButton.enable();
+                                                       } else {
+                                                               this.layout.center.panel.jslintButton.disable();
+                                                       }
+                                                       console.log(node.attributes);
                                                }, this);
                                        }
                                        if (node.attributes.fileType === 'image') {
@@ -295,25 +300,25 @@ TYPO3.EM.CodeMirrorConfig = {
                        stylesheet: [TYPO3.settings.EM.codemirrorCssPath + "jscolors.css"]
                },
                php: {
-                       parserfile: ["tokenizephp.js", "parsephp.js"],
-                       stylesheet: [TYPO3.settings.EM.codemirrorCssPath + "phpcolors.css"]
+                       parserfile: ["../contrib/php/js/tokenizephp.js", "../contrib/php/js/parsephp.js"],
+                       stylesheet: [TYPO3.settings.EM.codemirrorContribPath + "php/css/phpcolors.css"]
                },
                html: {
-                       parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", "tokenizephp.js", "parsephp.js", "parsephphtmlmixed.js"],
+                       parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", "../contrib/php/js/tokenizephp.js", "../contrib/php/js/parsephp.js", "../contrib/php/js/parsephphtmlmixed.js"],
                        stylesheet: [
                                TYPO3.settings.EM.codemirrorCssPath + "xmlcolors.css",
                                TYPO3.settings.EM.codemirrorCssPath + "jscolors.css",
                                TYPO3.settings.EM.codemirrorCssPath + "csscolors.css",
-                               TYPO3.settings.EM.codemirrorCssPath + "phpcolors.css"]
+                               TYPO3.settings.EM.codemirrorContribPath + "php/css/phpcolors.css"]
 
                },
                mixed: {
-                       parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", "tokenizephp.js", "parsephp.js", "parsephphtmlmixed.js"],
+                       parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", "../contrib/php/js/tokenizephp.js", "../contrib/php/js/parsephp.js", "../contrib/php/js/parsephphtmlmixed.js"],
                        stylesheet: [
                                TYPO3.settings.EM.codemirrorCssPath + "xmlcolors.css",
                                TYPO3.settings.EM.codemirrorCssPath + "jscolors.css",
                                TYPO3.settings.EM.codemirrorCssPath + "csscolors.css",
-                               TYPO3.settings.EM.codemirrorCssPath + "phpcolors.css"
+                               TYPO3.settings.EM.codemirrorContribPath + "php/css/phpcolors.css"
                        ]
                }
        }
@@ -418,7 +423,7 @@ TYPO3.EM.CodeMirror = Ext.extend(Ext.Panel, {
        /** @private */
        resizeCodeEditor: function(component, width, height, origWidth, origHeight) {
                var el = Ext.fly(this.codeMirrorEditor.frame);
-               el.setSize(width - 50, height);
+               el.setSize(width , height);
                el.next().setHeight(height);
                this.doLayout();
        },
@@ -460,12 +465,6 @@ TYPO3.EM.CodeMirror = Ext.extend(Ext.Panel, {
                this.editorConfig = Ext.applyIf(this.editorConfig, TYPO3.EM.CodeMirrorConfig.parser[sParserType]);
                this.codeMirrorEditor = new CodeMirror.fromTextArea(Ext.getDom(oCmp.id).id, this.editorConfig);
 
-               // Disable spell check button for non-js content
-               if (sParserType == 'js' || sParserType == 'css') {
-                       this.ownerCt.jslintButton.enable();
-               } else {
-                       this.ownerCt.jslintButton.disable();
-               }
        },
 
        changeAction: function(changed) {
@@ -494,10 +493,6 @@ TYPO3.EM.CodeMirror = Ext.extend(Ext.Panel, {
        },
 
        openText: function(text, parser) {
-               /*this.parser = parser;
-               this.editorConfig = Ext.applyIf(this.editorConfig, TYPO3.EM.CodeMirrorConfig.parser[parser]);
-               console.log(this.editorConfig);
-               this.codeMirrorEditor.setParser(parser, this.editorConfig);*/
                this.codeMirrorEditor.setCode(text);
        }
 
index cc4440f..b921dff 100644 (file)
@@ -86,9 +86,7 @@ TYPO3.EM.LanguagesColumnModel = new Ext.grid.ColumnModel([
                header: TYPO3.lang.lang_language,
                sortable: true,
                menuDisabled: true,
-               fixed: true,
                dataIndex: 'label',
-               width: 150,
                hidable: false,
                renderer: function(value, metaData, record, rowIndex, colIndex, store) {
                        return '<span class="' + record.data.cls + '">&nbsp</span>' + value;
@@ -97,7 +95,6 @@ TYPO3.EM.LanguagesColumnModel = new Ext.grid.ColumnModel([
                id: 'lang-key',
                header: TYPO3.lang.lang_short,
                menuDisabled: true,
-               fixed: true,
                sortable: true,
                dataIndex: 'lang',
                hidable: false
@@ -108,7 +105,7 @@ TYPO3.EM.LanguagesProgressBar = new Ext.ProgressBar ({
        id:  'langpb',
        cls: 'left-align',
        autoWidth: true,
-       style: 'margin: 10px',
+       style: 'margin: 0 0 20px 0',
        animate: true,
        height: 20,
        hidden: true
@@ -191,39 +188,56 @@ TYPO3.EM.Languages = Ext.extend(Ext.FormPanel, {
                                border: false
                        },
                        items: [{
-                               width: 350,
+                               width: 250,
                                layout: 'fit',
                                items: [{
-                                       xtype:'fieldset',
-                                       title: TYPO3.lang.translation_settings,
-                                       collapsible: false,
-                                       labelWidth: 1,
-                                       labelPad: 0,
-                                       defaults: {
-                                               border: false
-                                       },
-                                       items: [{
-                                               xtype: 'grid',
-                                               id: 'em-languagegrid',
-                                               stripeRows: true,
-                                               store: this.langStore,
-                                               cm: TYPO3.EM.LanguagesColumnModel,
-                                               sm: TYPO3.EM.LanguagesSelectionModel,
-                                               enableColumnMove: false,
-                                               anchor: '100% 100%',
-                                               onRowClick: Ext.emptyFn
-                                       }]
+                                       xtype: 'grid',
+                                       id: 'em-languagegrid',
+                                       stripeRows: true,
+                                       store: this.langStore,
+                                       cm: TYPO3.EM.LanguagesColumnModel,
+                                       sm: TYPO3.EM.LanguagesSelectionModel,
+                                       enableColumnMove: false,
+                                       onRowClick: Ext.emptyFn,
+                                       viewConfig: {
+                                               forceFit: true
+                                       }
                                }]
                        }, {
                                flex: 1,
                                layout: 'fit',
                                items: [{
                                        xtype:'fieldset',
-                                       title: TYPO3.lang.translation_status,
+                                       //title: TYPO3.lang.translation_status,
                                        collapsible: false,
                                        items: [
                                                TYPO3.EM.LanguagesActionPanel,
-                                               TYPO3.EM.LanguagesProgressBar, {
+                                               {
+                                                       xtype: 'container',
+                                                       layout: 'hbox',
+                                                       height: 40,
+                                                       id: 'LanguagesActionPanel',
+                                                       layoutConfig: {
+                                                               align: 'stretch'
+                                                       },
+                                                       defaults: {
+                                                               border:false,
+                                                               flex: 1
+                                                       },
+                                                       items: [{
+                                                               xtype: 'button',
+                                                               text: TYPO3.lang.translation_check_status_button,
+                                                               id: 'lang-checkbutton',
+                                                               margins: '0 10 10 0'
+                                                       }, {
+                                                               xtype: 'button',
+                                                               text: TYPO3.lang.translation_update_button,
+                                                               id: 'lang-updatebutton',
+                                                               margins: '0 0 10 10'
+                                                       }]
+                                               },
+                                               TYPO3.EM.LanguagesProgressBar,
+                                               {
                                                xtype: 'grid',
                                                        id: 'em-extlanguagegrid',
                                                        stripeRows: true,
@@ -234,24 +248,53 @@ TYPO3.EM.Languages = Ext.extend(Ext.FormPanel, {
                                                        autoheight: true,
                                                        cm: new Ext.grid.DynamicColumnModelForLanguages(langExtStore),
                                                        margins: '0 10 0 0',
-                                                       anchor: '100% -40'
+                                                       anchor: '100% -40',
+                                                       listeners: {
+                                                               render: this.onExtensionLangguageGridRender
+                                                       }
                                                }]
                                        }]
                                }]
                });
 
-               // call parent
+                       // call parent
                TYPO3.EM.Languages.superclass.initComponent.apply(this, arguments);
                this.langGrid = Ext.getCmp('em-languagegrid');
                this.langGrid.getSelectionModel().on('selectionchange', function(){
+                       this.langGrid.disable();
                        this.saveSelection();
                }, this);
                Ext.getCmp('lang-checkbutton').handler = this.langActionHandler.createDelegate(this);
                Ext.getCmp('lang-updatebutton').handler = this.langActionHandler.createDelegate(this);
-
-
        } ,
 
+       onExtensionLangguageGridRender: function() {
+               this.on('cellclick',function(grid, rowIndex, columnIndex, event) {
+                       if (!this.interruptProcess && columnIndex > 0) {
+                               var record = grid.store.getAt(rowIndex);
+                               var lang = grid.colModel.config[columnIndex].dataIndex;
+                               Ext.Msg.confirm(
+                                       TYPO3.lang.menu_language_packges,
+                                       String.format(TYPO3.lang.translation_singleCheckQuestion, lang, '<strong>' + record.data.extkey + '</strong>'),
+                                       function(btn) {
+                                               if (btn === 'yes') {
+                                                       this.waitBox = Ext.Msg.wait(
+                                                               String.format(TYPO3.lang.translation_singleCheck, lang, '<strong>' + record.data.extkey + '</strong>'),
+                                                               TYPO3.lang.translation_checking
+                                                       );
+                                                       TYPO3.EM.ExtDirect.fetchTranslations(record.data.extkey, 1, [lang], function(response) {
+                                                               record.set(lang, response[lang]);
+                                                               record.commit();
+                                                               this.waitBox.hide()
+                                                       }, this);
+                                               }
+                                       },
+                                       this
+                               );
+                       }
+               });
+       },
+
        langActionHandler: function(button, event) {
                var lg = Ext.getCmp('em-languagegrid');
                var bp = Ext.getCmp('LanguagesActionPanel');
@@ -268,7 +311,7 @@ TYPO3.EM.Languages = Ext.extend(Ext.FormPanel, {
                                        pp.hide();
                                        bp.show();
                                        lg.enable();
-                               }).defer(5000, this);
+                               }).defer(1000, this);
                                if (!this.interruptProcess) {
                                        TYPO3.Flashmessage.display(TYPO3.Severity.information, TYPO3.lang.translation_checking_extension, TYPO3.lang.translation_check_done, 3);
                                        Ext.getCmp('em-extlanguagegrid').getSelectionModel().clearSelections();
@@ -306,6 +349,13 @@ TYPO3.EM.Languages = Ext.extend(Ext.FormPanel, {
                                record = this.langStore.getById(response.diff);
                                this.addRemoveExtLanguageGridColumn(record.data);
                        },this);
+                       if (this.selectedLanguages.length) {
+                               Ext.getCmp('lang-checkbutton').enable();
+                               Ext.getCmp('lang-updatebutton').enable();
+                       } else {
+                               Ext.getCmp('lang-checkbutton').disable();
+                               Ext.getCmp('lang-updatebutton').disable();
+                       }
                }
        },
 
@@ -328,21 +378,18 @@ TYPO3.EM.Languages = Ext.extend(Ext.FormPanel, {
                this.fetchLanguage();
        },
 
-       fetchLanguage: function(res) {
+       fetchLanguage: function(response) {
                var grid = Ext.getCmp('em-extlanguagegrid');
                var row = this.extCount - this.extkeyArray.length;
                var record = grid.store.getAt(row);
                var i;
 
 
-               // res is response from request
-               // array selectedLanguage key => grid html
-
-               if (res) {
+               if (response) {
                        // update fetched record
                        var fetchedRecord = grid.store.getAt(row - 1);
                        for (i = 0; i < this.selectedLanguages.length; i++) {
-                               fetchedRecord.set(this.selectedLanguages[i], res[this.selectedLanguages[i]]);
+                               fetchedRecord.set(this.selectedLanguages[i], response[this.selectedLanguages[i]]);
                }
                fetchedRecord.commit();
                }
@@ -411,11 +458,14 @@ TYPO3.EM.Languages = Ext.extend(Ext.FormPanel, {
                        }, {
                                header: '<span class="' + record.cls + '">&nbsp</span>' + record.label,
                                dataIndex: record.lang,
-                               id: record.lang
+                               id: record.lang,
+                               css: 'cursor:pointer;',
+                               tooltip: TYPO3.lang.translation_singleCheckTip
                        });
                } else {
                        columns.removeColumn(index);
                }
+               this.langGrid.enable();
        },
 
        afterRender: function() {
index 4465575..8729594 100644 (file)
@@ -38,20 +38,32 @@ TYPO3.EM.Layouts = {
                // later get template via Ajax
                return new Ext.XTemplate(
                        '<div class="em-extlist-extinfo">',
-                               '<h2>{icon} {title}</h2>',
+                               '<h2>{icon} {title} ({extkey})</h2>',
                                '<p class="desc">{description}</p>',
-                               '<h3>' + TYPO3.lang.show_links + '</h3>',
-                               '<p><label>' + TYPO3.lang.cmd_downloadext + ':</label> {download}</p> ',
-                               '<tpl if="doc"><p><label>' + TYPO3.lang.cmd_readdoc + ':</label> {doc}</p></tpl>',
-                               '<h3>' + TYPO3.lang.show_details + '</h3>',
-                               '<p><label>' + TYPO3.lang.extInfoArray_author + ':</label> {author}<br />',
-                               '<label>' + TYPO3.lang.extInfoArray_version + ':</label> {version}<br />',
-                               '<label>' + TYPO3.lang.extInfoArray_category + ':</label> {category}<br />',
-                               '<label>' + TYPO3.lang.extInfoArray_state + ':</label> {state}<br />',
-                               '<label>' + TYPO3.lang.extInfoArray_shy + ':</label> {shyword}<br />',
-                               '<label>' + TYPO3.lang.extInfoArray_internal + ':</label> {internal}<br />',
-                               '<label>' + TYPO3.lang.extInfoArray_depends_on + ':</label> {depends}<br />',
-                               '<label>' + TYPO3.lang.extInfoArray_conflicts_with + ':</label> {conflicts}<br />',
+                               '<div class="em-extlist-extinfo-sub">',
+                                       '<div class="em-extlist-extinfo-left">',
+                                               '<h3>' + TYPO3.lang.show_details + '</h3>',
+                                               '<p><label>' + TYPO3.lang.extInfoArray_author + ':</label> {author}<br />',
+                                               '<label>' + TYPO3.lang.extInfoArray_version + ':</label> {version}<br />',
+                                               '<label>' + TYPO3.lang.extInfoArray_category + ':</label> {category}<br />',
+                                               '<label>' + TYPO3.lang.extInfoArray_state + ':</label> {state}<br />',
+                                               '<label>' + TYPO3.lang.extInfoArray_shy + ':</label> {shyword}<br />',
+                                               '<label>' + TYPO3.lang.extInfoArray_internal + ':</label> {internal}<br />',
+                                               '<label>' + TYPO3.lang.extInfoArray_depends_on + ':</label> {depends}<br />',
+                                               '<label>' + TYPO3.lang.extInfoArray_conflicts_with + ':</label> {conflicts}<br />',
+                                       '</div>',
+                                       '<div class="em-extlist-extinfo-right">',
+                                               '<h3>' + TYPO3.lang.show_links + '</h3>',
+                                               '<p><label>' + TYPO3.lang.cmd_downloadext + ':</label> {download}</p> ',
+                                               '<tpl if="doc">',
+                                                       '<p><label>' + TYPO3.lang.cmd_readdoc + ':</label> {doc}</p>',
+                                               '</tpl>',
+                                               '<tpl if="updateModule">',
+                                                       '<h3>' + TYPO3.lang.cmd_update + '</h3>',
+                                                       '<p><a href="#" id="update-check-{extkey}" class="update-check-link">' + TYPO3.lang.ext_details_checkUpdateScript + '</a></p>',
+                                               '</tpl>',
+                                       '</div>',
+                               '</div>',
                        '</div>'
                );
        },
@@ -63,7 +75,8 @@ TYPO3.EM.Layouts = {
                                '<p><label>' + TYPO3.lang.listRowHeader_ext_key + '</label>{extkey}</p>',
                                '<p><label>' + TYPO3.lang.extInfoArray_category + ':</label>{[TYPO3.EM.App.getCategoryLabel(values.category)]}</p>',
                                '<p><label>' + TYPO3.lang.extInfoArray_version + ':</label>{version}</p>',
-                               '<p><label>' + TYPO3.lang.extInfoArray_downloads + ':</label>{alldownloadcounter}</p>',
+                               '<p><label>' + TYPO3.lang.extInfoArray_downloads + ':</label>{alldownloadcounter} / {downloadcounter}</p>',
+                               '<p><label>' + TYPO3.lang.extInfoArray_lastUpdate + ':</label>{lastuploaddate:this.getDateFormat}</p>',
                                '<p><label>' + TYPO3.lang.extInfoArray_state + ':</label>{state}</p>',
                                '<p><label>' + TYPO3.lang.extInfoArray_author + ':</label>{[this.getAuthor(values)]}</p>',
                                '<p><label>' + TYPO3.lang.extInfoArray_versions + ':</label>{versions}</p>',
@@ -79,6 +92,9 @@ TYPO3.EM.Layouts = {
                                        return '<a class="email" href="mailto:' + values.author_email + '">' + values.author + '</a>';
                                }
                                return values.authorname;
+                       },
+                       getDateFormat: function(value) {
+                               return value.format("d-m-Y");
                        }
                }
                );
index 5d1b281..8fd85ca 100644 (file)
@@ -50,34 +50,110 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                        plain: true,
                                        activeTab: 0,
                                        defaults: {
-                                               bodyStyle: 'background:#fff;padding:10px;overflow: auto;',
+                                               cls: 'gridrowpanel',
                                                height: 250
                                        },
                                        record: record,
                                        items:[
                                                {
                                                        title: TYPO3.lang.msg_info,
-                                                       html: TYPO3.EM.Layouts.showExtInfo(record.data)
+                                                       html: TYPO3.EM.Layouts.showExtInfo(record.data),
+                                                       listeners: {
+                                                               activate: function(panel) {
+                                                                       var updateScriptLink = Ext.fly('update-check-' + record.data.extkey);
+                                                                       if (updateScriptLink) {
+                                                                               updateScriptLink.on('click', function() {
+                                                                                       panel.getEl().mask('loading');
+                                                                                       TYPO3.EM.ExtDirect.getExtensionUpdateScript(record.data.extkey, function(response) {
+                                                                                               panel.getEl().unmask();
+                                                                                               if (response.success) {
+                                                                                                       var w = new Ext.Window({
+                                                                                                               width: 500,
+                                                                                                               height: 500,
+                                                                                                               layout: 'fit',
+                                                                                                               title: TYPO3.lang.ext_details_updateScript + ' (' + record.data.extkey + ')',
+                                                                                                               items: [{
+                                                                                                                       xtype: 'iframePanel',
+                                                                                                                       id: 'updateScript-' + record.data.extkey
+                                                                                                               }]
+                                                                                                       }).show(true, function(){
+                                                                                                               Ext.getCmp('updateScript-' + record.data.extkey).setUrl('mod.php?M=tools_em&nodoc=1&CMD[showExt]=' + record.data.extkey + '&SET[singleDetails]=updateModule');
+                                                                                                       });
+                                                                                               } else {
+                                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.information, TYPO3.lang.cmd_update, TYPO3.lang.repository_update_not_needed, 5);
+                                                                                               }
+                                                                                       });
+                                                                               }, this);
+                                                                       }
+
+                                                               }
+                                                       }
                                                },
                                                {
-                                                       title: TYPO3.lang.msg_update,
-                                                       html: '<div class="loading-indicator">' + TYPO3.lang.action_loading + '</div>',
+                                                       title: TYPO3.lang.msg_dbupdate,
+                                                       html: TYPO3.EM.App.loadingIndicor,
+                                                       xtype: 'form',
                                                        disabled: record.data.installed === 0,
                                                        listeners: {
                                                                activate: function(panel) {
+                                                                       panel.update(TYPO3.EM.App.loadingIndicor);
                                                                        TYPO3.EM.ExtDirect.getExtensionUpdate(record.data.extkey, function(response) {
-                                                                               panel.update(response);
-                                                                       });
+                                                                               panel.update(response, true,  this.readUpdateForm.createDelegate(this));
+                                                                       }, this);
                                                                }
+                                                       },
+                                                       scope: this,
+                                                       readUpdateForm: function() {
+                                                               var button = Ext.get('update-submit-' + record.data.extkey);
+                                                               Ext.apply(this.form,{
+                                                                       api: {
+                                                                               submit: TYPO3.EM.ExtDirect.saveExtensionConfiguration
+                                                                       },
+                                                                       paramsAsHash: false
+                                                               });
+                                                               if (button) {
+                                                                       button.on('click', function() {
+                                                                               this.doUpdate(false);
+                                                                       }, this);
+                                                               }
+                                                       },
+                                                       doUpdate: function(noSave) {
+                                                               this.form.submit({
+                                                                       waitMsg : noSave ? ' ' : TYPO3.lang.action_updateDatabase,
+                                                                       params: {
+                                                                               extkey: record.data.extkey,
+                                                                               exttype: record.data.typeShort,
+                                                                               noSave: noSave
+                                                                       },
+                                                                       success: function(form, action) {
+                                                                               this.ownerCt.activeTab.update(TYPO3.EM.App.loadingIndicor);
+                                                                               TYPO3.EM.ExtDirect.getExtensionUpdate(record.data.extkey, function(response) {
+                                                                                       this.ownerCt.activeTab.update(response, true,  this.readUpdateForm.createDelegate(this));
+                                                                       }, this);
+                                                                       },
+                                                                       failure: function(form, action) {
+                                                                               if (action.failureType === Ext.form.Action.CONNECT_FAILURE) {
+                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.lang.msg_error,
+                                                                                                                                       TYPO3.lang.msg_error + ':' + action.response.status + ': ' +
+                                                                                                                                       action.response.statusText, 5);
+                                                                               }
+                                                                               if (action.failureType === Ext.form.Action.SERVER_INVALID) {
+                                                                                               // server responded with success = false
+                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.lang.invalid, action.result.errormsg, 5);
+                                                                               }
+                                                                        },
+                                                                       scope: this
+                                                                });
                                                        }
                                                },
                                                {
                                                        title: TYPO3.lang.msg_configuration,
                                                        xtype: 'form',
                                                        disabled: record.data.installed === 0,
-                                                       html: '<div class="loading-indicator">' + TYPO3.lang.action_loading + '</div>',
+                                                       html: TYPO3.EM.App.loadingIndicor,
                                                        listeners: {
                                                                activate: function(panel) {
+                                                                       panel.update(TYPO3.EM.App.loadingIndicor);
                                                                        TYPO3.EM.ExtDirect.getExtensionConfiguration(record.data.extkey, function(response) {
                                                                                panel.update(response, true, this.readConfigForm.createDelegate(this));
                                                                        }, this);
@@ -85,45 +161,70 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                                        },
                                                        scope: this,
                                                        readConfigForm: function() {
-                                                               var button = Ext.select('input[type="submit"]');
-                                                               if (button) {
-                                                                       button.on('click', function() {
-                                                                               Ext.apply(this.form,{
-                                                                               api: {
-                                                                                       submit: TYPO3.EM.ExtDirect.saveExtensionConfiguration
-                                                                               },
-                                                                               paramsAsHash: false
-
-                                                                       });
-                                                                               this.form.submit({
-                                                                                       waitMsg : TYPO3.lang.action_saving_settings,
-                                                                                       params: {
-                                                                                               extkey: record.data.extkey,
-                                                                                               exttype: record.data.typeShort
+                                                               var button = Ext.get('configuration-submit-' + record.data.extkey);
+                                                               var select = Ext.select('.mod-menu-template-select');
+                                                               Ext.apply(this.form,{
+                                                                       api: {
+                                                                               submit: TYPO3.EM.ExtDirect.saveExtensionConfiguration
+                                                                       },
+                                                                       paramsAsHash: false
+                                                               });
+                                                               if (select) {
+                                                                       var converted = new Ext.form.ComboBox({
+                                                                               transform: select.elements[0],
+                                                                               typeAhead: true,
+                                                                               listeners: {
+                                                                                       beforequery: function(o) {
+                                                                                               o.forceAll = true;
                                                                                        },
-                                                                                       success: function(form, action) {
-                                                                                               TYPO3.Flashmessage.display(TYPO3.Severity.information, TYPO3.lang.msg_configuration, TYPO3.lang.configurationSaved, 5);
+                                                                                       select: function() {
+                                                                                               this.doSubmit(true);
                                                                                        },
-                                                                                       failure: function(form, action) {
-                                                                                               if (action.failureType === Ext.form.Action.CONNECT_FAILURE) {
-                                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.lang.msg_error,
-                                                                                                                                                       TYPO3.lang.msg_error + ':' + action.response.status + ': ' +
-                                                                                                                                                       action.response.statusText, 5);
-                                                                                       }
-                                                                                       if (action.failureType === Ext.form.Action.SERVER_INVALID) {
-                                                                                                       // server responded with success = false
-                                                                                               TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.lang.invalid, action.result.errormsg, 5);
-                                                                                       }
-                                                                                }
-                                                                        });
+                                                                                       scope: this
+                                                                               }
+                                                                       });
+                                                               }
+                                                               if (button) {
+                                                                       button.on('click', function() {
+                                                                               this.doSubmit(false);
                                                                        }, this);
                                                                }
+                                                       },
+                                                       doSubmit: function(noSave) {
+                                                               this.form.submit({
+                                                                       waitMsg : noSave ? ' ' : TYPO3.lang.action_saving_settings,
+                                                                       params: {
+                                                                               extkey: record.data.extkey,
+                                                                               exttype: record.data.typeShort,
+                                                                               noSave: noSave
+                                                                       },
+                                                                       success: function(form, action) {
+                                                                               if (action.result.html) {
+                                                                                       this.ownerCt.activeTab.update(action.result.html, true, this.readConfigForm.createDelegate(this));
+                                                                               } else {
+                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.ok, TYPO3.lang.msg_configuration, TYPO3.lang.configurationSaved, 5);
+                                                                               }
+                                                                       },
+                                                                       failure: function(form, action) {
+                                                                               if (action.failureType === Ext.form.Action.CONNECT_FAILURE) {
+                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.lang.msg_error,
+                                                                                                                                       TYPO3.lang.msg_error + ':' + action.response.status + ': ' +
+                                                                                                                                       action.response.statusText, 5);
+                                                                               }
+                                                                               if (action.failureType === Ext.form.Action.SERVER_INVALID) {
+                                                                                               // server responded with success = false
+                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.lang.invalid, action.result.errormsg, 5);
+                                                                               }
+                                                                        },
+                                                                       scope: this
+                                                                });
                                                        }
                                                },
                                                {
                                                        title: TYPO3.lang.msg_files,
                                                        xtype: 'extfilelist',
-                                                       recordData: record.data
+                                                       recordData: record.data,
+                                                       cls: 'gridrowfilespanel'
                                                },
                                                {
                                                        xtype: 'terupload',
@@ -143,9 +244,9 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                                        }
                                                },
                                                {
-                                                       title: TYPO3.lang.details_backup_delete,
+                                                       title: TYPO3.lang.details_maintainance,
                                                        //disabled: record.data.installed === 0,
-                                                       html: '<div class="loading-indicator">' + TYPO3.lang.action_loading + '</div>',
+                                                       html: TYPO3.EM.App.loadingIndicor,
                                                        listeners: {
                                                                activate: function(panel) {
                                                                        TYPO3.EM.ExtDirect.getExtensionBackupDelete(record.data.extkey, function(response) {
@@ -155,11 +256,16 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                                        },
                                                        scope: this,
                                                        readBackupDeleteLinks: function() {
-                                                               var emconflink = Ext.select('a.t3-link emconfLink');
-                                                               if (emconflink) {
-                                                                               //todo catch the link and do it the ext way
-                                                                       emconflink.on('click', function() {
-                                                                               return false;
+                                                               var emconflink = Ext.select('a.emconfLink');
+                                                               if (emconflink.elements.length) {
+                                                                       var link = emconflink.elements[0];
+                                                                       link.removeAttribute('onclick');
+                                                                       Ext.get(link).on('click', function() {
+                                                                               this.waitBox = Ext.Msg.wait(TYPO3.lang.ext_details_update_em_conf, record.data.extkey);
+                                                                               TYPO3.EM.ExtDirect.cleanEmConf(record.data.extkey, function(response) {
+                                                                                       this.waitBox.hide();
+                                                                                       TYPO3.Flashmessage.display(TYPO3.Severity.ok, TYPO3.lang.ext_details_update_em_conf, response.result, 5);
+                                                                               }, this);
                                                                        });
                                                                }
 
@@ -205,7 +311,8 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                        {name:'reviewstate'},
                                        {name:'required'},
                                        {name:'doubleInstall'},
-                                       {name:'doubleInstallShort'}
+                                       {name:'doubleInstallShort'},
+                                       {name:'updateModule'}
                                ]
                        }),
 
@@ -242,6 +349,7 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                        }
                                },
                                load: function(store) {
+                                       TYPO3.EM.App.refreshLocalList = false;
                                        if (store.showAction) {
                                                this.showExtension.defer(500, this);
                                        }
@@ -250,13 +358,12 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                scope: this
                        },
                        validateRecord: function(record){
-                               //return false; //testcase
                                var control = Ext.getCmp('localSearchField');
                                if (control) {
                                        var filtertext = control.getRawValue();
                                        if (filtertext) {
                                                        //filter by search string
-                                               var re = new RegExp(Ext.escapeRe(filtertext));
+                                               var re = new RegExp(Ext.escapeRe(filtertext), 'gi');
                                                var isMatched = record.data.extkey.match(re) || record.data.title.match(re) ||  record.data.description.match(re);
                                                if (!isMatched) {
                                                        return false;
@@ -277,10 +384,12 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                        }
                });
 
-               var searchField = new Ext.ux.form.FilterField({
+               var searchField = new Ext.ux.form.SearchField({
                        store: this.localstore,
+                       filterFunction: this.filterRecords,
                        id: 'localSearchField',
-                       width: 200
+                       width: 200,
+                       charCountTrigger: 1
                });
 
                var cols = [
@@ -302,6 +411,13 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
 
                });
 
+               var sm = Ext.emptyFn();
+               if (TYPO3.settings.EM.inlineToWindow == 1) {
+                       var sm = new Ext.grid.RowSelectionModel({
+                               singleSelect: true
+                       });
+               }
+
                Ext.apply(this, {
                        itemId: 'em-localLocalExtensionlist',
                        title: TYPO3.lang.localExtensionList,
@@ -309,6 +425,7 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                        layout: 'fit',
                        store: this.localstore,
                        cm: cm,
+                       sm: sm,
                        plugins: TYPO3.settings.EM.inlineToWindow == 1 ? [TYPO3.EM.Filters] : [this.rowExpander, TYPO3.EM.Filters],
                        view : new Ext.grid.GroupingView({
                                forceFit : true,
@@ -336,7 +453,7 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                                                handler: function(item, event) {
                                                                        TYPO3.settings.EM.display_installed =  item.checked ? 0 : 1;
                                                                        TYPO3.EM.ExtDirect.saveSetting('display_installed', TYPO3.settings.EM.display_installed);
-                                                                       this.store.reload();
+                                                                       this.filterRecords();
                                                                },
                                                                scope: this
                                                        }, {
@@ -345,7 +462,7 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                                                handler: function(item, event) {
                                                                        TYPO3.settings.EM.hide_shy =  item.checked ? 0 : 1;
                                                                                TYPO3.EM.ExtDirect.saveSetting('hide_shy', TYPO3.settings.EM.hide_shy);
-                                                                               this.store.reload();
+                                                                               this.filterRecords();
                                                                },
                                                                scope: this
                                                        }, {
@@ -354,7 +471,7 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                                                                handler: function(item, event) {
                                                                        TYPO3.settings.EM.hide_obsolete = item. checked ? 0 : 1;
                                                                        TYPO3.EM.ExtDirect.saveSetting('hide_obsolete', TYPO3.settings.EM.hide_obsolete);
-                                                                       this.store.reload();
+                                                                       this.filterRecords();
                                                                } ,
                                                                scope: this
                                                        }
@@ -403,7 +520,11 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
        showExtension: function() {
                var row = this.store.find('extkey', this.store.showAction);
                if (row) {
-                       this.rowExpander.expandRow(row);
+                       if (TYPO3.settings.EM.inlineToWindow == 1) {
+
+                       } else {
+                               this.rowExpander.expandRow(row);
+                       }
                        this.getSelectionModel().selectRow(row);
                        this.getView().focusRow(row);
                }
@@ -417,7 +538,13 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                }
 
                this.on('rowdblclick',function(grid, rowIndex, event) {
-                       if (TYPO3.settings.EM.inlineToWindow) {
+                       if (TYPO3.settings.EM.inlineToWindow == 1) {
+                               this.showExtInfoInWindow(rowIndex);
+                       }
+               });
+
+               this.on('cellclick',function(grid, rowIndex, columnIndex, event) {
+                       if (TYPO3.settings.EM.inlineToWindow == 1 && columnIndex == 2) {
                                this.showExtInfoInWindow(rowIndex);
                        }
                });
@@ -436,11 +563,15 @@ TYPO3.EM.LocalList = Ext.extend(Ext.grid.GridPanel, {
                });
                var w = new Ext.Window({
                        title: TYPO3.EM.Tools.renderExtensionTitle(record),
-                       width: 700,
+                       width: 720,
                        height: 400,
                        layout: 'fit',
                        items : tabs
                }).show();
+       },
+
+       filterRecords: function() {
+               Ext.StoreMgr.get('localstore').filterBy(TYPO3.EM.Filters.getRecordFilter());
        }
 
 });
index cdd88e5..a6f6106 100644 (file)
@@ -82,17 +82,19 @@ TYPO3.EM.RepositoryList = Ext.extend(Ext.grid.GridPanel, {
                                {name:'category', type: 'int'},
                                {name:'version'},
                                {name:'alldownloadcounter', type: 'int'},
+                               {name:'downloadcounter', type: 'int'},
                                {name:'statevalue'},
                                {name:'state'},
                                {name:'icon'},
                                {name:'description'},
-                               {name:'lastuploaddate'},
+                               {name:'lastuploaddate', type: 'date', dateFormat: 'timestamp'},
                                {name:'authorname'},
                                {name:'authoremail'},
                                {name:'versions', type: 'int'},
                                {name:'installed', type: 'int'},
                                {name:'versionislower', type: 'bool'},
-                               {name:'exists', type: 'int'}
+                               {name:'exists', type: 'int'},
+                               {name:'relevance', type: 'int'}
                        ],
                        paramNames: {
                                start : 'start',
@@ -102,7 +104,7 @@ TYPO3.EM.RepositoryList = Ext.extend(Ext.grid.GridPanel, {
                                query: 'query'
                        },
                        baseParams: {
-                               query: '*',
+                               query: '',
                                repository: 1,
                                start: 0,
                                limit: 50
@@ -155,7 +157,8 @@ TYPO3.EM.RepositoryList = Ext.extend(Ext.grid.GridPanel, {
                var searchField = new Ext.ux.form.SearchField({
                        id: 'rsearchField',
                        store: this.repositoryListStore,
-                       width: 200
+                       width: 260,
+                       emptyText: TYPO3.lang.msg_startTyping
                });
 
                var cm = new Ext.grid.ColumnModel({
@@ -167,6 +170,8 @@ TYPO3.EM.RepositoryList = Ext.extend(Ext.grid.GridPanel, {
                                TYPO3.EM.GridColumns.ExtensionCategoryRemote,
                                TYPO3.EM.GridColumns.ExtensionRemoteAuthor,
                                TYPO3.EM.GridColumns.ExtensionType,
+                               TYPO3.EM.GridColumns.Relevance,
+                               TYPO3.EM.GridColumns.ExtensionDownloads,
                                TYPO3.EM.GridColumns.ExtensionStateValue
                        ],
                        defaults: {
@@ -322,7 +327,7 @@ TYPO3.EM.RepositoryList = Ext.extend(Ext.grid.GridPanel, {
                                                                        installAction: 'import',
                                                                        listeners: {
                                                                                close: function() {
-                                                                                       TYPO3.EM.Tools.refreshMenu();
+                                                                                       TYPO3.EM.Tools.refreshMenu(record, 'import');
                                                                                }
                                                                        }
                                                                }).show(true, function(){
@@ -337,7 +342,12 @@ TYPO3.EM.RepositoryList = Ext.extend(Ext.grid.GridPanel, {
                });
 
                this.on('rowdblclick',function(grid, rowIndex, event) {
-                       if (TYPO3.settings.EM.inlineToWindow) {
+                       if (TYPO3.settings.EM.inlineToWindow == 1) {
+                               this.showExtInfoInWindow(rowIndex);
+                       }
+               });
+               this.on('cellclick',function(grid, rowIndex, columnIndex, event) {
+                       if (TYPO3.settings.EM.inlineToWindow == 1 && columnIndex == 2) {
                                this.showExtInfoInWindow(rowIndex);
                        }
                });
index c7da49f..72dd0a5 100644 (file)
@@ -39,6 +39,7 @@ TYPO3.EM.Tools = function() {
                                // select local extension list
                        Ext.getCmp('em-main').setActiveTab(0);
                        if (reload === true) {
+                               TYPO3.EM.Filters.clearFilters();
                                localStore.showAction = extKey;
                                localStore.load();
                        } else {
@@ -76,8 +77,12 @@ TYPO3.EM.Tools = function() {
                        TYPO3.EM.ImportWindow.close();
                },
 
-               refreshMenu: function() {
-                       if (top.TYPO3ModuleMenu) {
+               refreshMenu: function(record, installAction) {
+                       if (installAction == 'import') {
+                               console.log(record);
+                               TYPO3.EM.Tools.displayLocalExtension(record.extkey, true);
+                       }
+                       if (top.TYPO3ModuleMenu && installAction == 'install') {
                                top.TYPO3ModuleMenu.refreshMenu();
                        }
                }
index 8133f00..fca1bef 100644 (file)
@@ -107,11 +107,10 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                ]);
 
                var userExtStore = new Ext.data.DirectStore({
-                       storeId  : 'em-userext',
-                       autoLoad        : false,
-                       directFn        : TYPO3.EMSOAP.ExtDirect.getExtensions,
-                       paramsAsHash: false,
-                       root            : 'data',
+                       storeId : 'em-userext',
+                       autoLoad: false,
+                       directFn: TYPO3.EMSOAP.ExtDirect.getExtensions,
+                       root: 'data',
                        idProperty  : 'extensionkey',
                        fields : [
                                {name : 'extensionkey', type : 'string'},
@@ -127,8 +126,8 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                        storeFilter: function(record, id) {
                                var filtertext = Ext.getCmp('myExtSearchField').getRawValue();
                                if (filtertext) {
-                                       //filter by search string
-                                       var re = new RegExp(Ext.escapeRe(filtertext));
+                                               //filter by search string
+                                       var re = new RegExp(Ext.escapeRe(filtertext), 'gi');
                                        var isMatched = record.data.extensionkey.match(re) || record.data.title.match(re) || record.data.description.match(re);
                                        if (!isMatched) {
                                                return false;
@@ -139,6 +138,7 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                        listeners: {
                                load: function(store, records) {
                                        Ext.getCmp('extvalidformbutton').enable();
+                                       store.filterBy(store.storeFilter);
                                },
                                exception: function(proxy, response, read, request, ExtDirectParams) {
                                        var error;
@@ -155,7 +155,7 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                        }
                });
 
-               var searchField = new Ext.ux.form.FilterField({
+               var searchField = new Ext.ux.form.SearchField({
                        store: userExtStore,
                        id: 'myExtSearchField',
                        width: 200
@@ -164,7 +164,12 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                Ext.apply(this, {
                        itemId: 'UserTools',
                        layout: 'hbox',
-                       align: 'stretchmax',
+                       layoutConfig: {
+                               align: 'stretch'
+                       },
+                       defaults: {
+                               border: false
+                       },
                        bodyStyle: 'padding-top: 10px;',
                        border: false,
                        items: [
@@ -329,7 +334,7 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                                {
                                        flex: 1,
                                        border: false,
-                                       //layout: 'fit',
+                                       layout: 'fit',
                                        items: [
                                                {
                                                        xtype: 'fieldset',
@@ -347,6 +352,9 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                                                                                forceFit: true,
                                                                                autofill: true
                                                                        },
+                                                                       autoheight: true,
+                                                                       bodyStyle: 'padding: 10px 10px 0 10px;',
+                                                                       anchor: '100% 100%',
                                                                        stateId: 'userextgrid',
                                                                        stateful: true,
                                                                        tbar: [
@@ -378,8 +386,7 @@ TYPO3.EM.UserTools = Ext.extend(Ext.Panel, {
                                                                                        handler: this.deletekey,
                                                                                        scope: this
                                                                                }
-                                                                       ],
-                                                                       height: 450
+                                                                       ]
                                                                }
                                                        ]
                                                }
index 476ff71..3c8926a 100644 (file)
@@ -7,6 +7,9 @@
 Ext.ns('Ext.ux.form');
 
 Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
+       charCountTrigger: 0,
+       enableKeyEvents: true,
+
        initComponent : function(){
 
                Ext.ux.form.SearchField.superclass.initComponent.call(this);
@@ -15,6 +18,14 @@ Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
                                this.onTrigger2Click();
                        }
                }, this);
+               if (this.charCountTrigger > 0) {
+                       this.on('keyup', function(f, e){
+                               var value = this.getRawValue();
+                               if (value.length > this.charCountTrigger) {
+                                       this.onTrigger2Click();
+                               }
+                       }, this);
+               }
        },
 
        validationEvent:false,
@@ -25,6 +36,7 @@ Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
        width:180,
        hasSearch : false,
        paramName : 'query',
+       filterFunction: null,
 
        onTrigger1Click : function(){
                if(this.hasSearch){
@@ -32,7 +44,11 @@ Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
                        var o = {start: 0};
                        this.store.baseParams = this.store.baseParams || {};
                        this.store.baseParams[this.paramName] = '';
-                       this.store.reload({params:o});
+                       if (typeof this.filterFunction == "function") {
+                               this.filterFunction.call();
+                       } else {
+                               this.store.reload({params:o});
+                       }
                        this.triggers[0].hide();
                        this.hasSearch = false;
                }
@@ -47,48 +63,12 @@ Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
                var o = {start: 0};
                this.store.baseParams = this.store.baseParams || {};
                this.store.baseParams[this.paramName] = v;
-               this.store.reload({params:o});
-               this.hasSearch = true;
-               this.triggers[0].show();
-       }
-});
-
-Ext.ux.form.FilterField = Ext.extend(Ext.form.TwinTriggerField, {
-       initComponent : function(){
-               Ext.ux.form.SearchField.superclass.initComponent.call(this);
-               this.on('specialkey', function(f, e){
-                       if(e.getKey() == e.ENTER){
-                               this.onTrigger2Click();
-                       }
-               }, this);
-       },
-
-       validationEvent:false,
-       validateOnBlur:false,
-       trigger1Class:'x-form-clear-trigger',
-       trigger2Class:'x-form-search-trigger',
-       hideTrigger1:true,
-       width:180,
-       hasSearch : false,
-       paramName : 'query',
-
-       onTrigger1Click : function(){
-               if(this.hasSearch){
-                       this.el.dom.value = '';
-                       this.triggers[0].hide();
-                       this.hasSearch = false;
-                       this.store.reload(); //filterBy(this.store.storeFilter);
-               }
-       },
-
-       onTrigger2Click : function(){
-               var v = this.getRawValue();
-               if(v.length < 1){
-                       this.onTrigger1Click();
-                       return;
+               if (typeof this.filterFunction == "function") {
+                       this.filterFunction.call();
+               } else {
+                       this.store.reload({params:o});
                }
-               this.store.reload(); //filterBy(this.store.storeFilter);
                this.hasSearch = true;
                this.triggers[0].show();
        }
-});
\ No newline at end of file
+});