[TASK] Compatibility and code cleanup 94/47894/2
authorFrancois Suter <francois@typo3.org>
Mon, 25 Apr 2016 09:41:26 +0000 (11:41 +0200)
committerFrancois Suter <francois@typo3.org>
Mon, 25 Apr 2016 09:45:31 +0000 (11:45 +0200)
Verified compatibility with TYPO3 CMS 7, applied PSR-2,
cleaned up code, replaced old API calls.

Resolves: #75900
Releases: 2.0
Change-Id: Ic8be62dd841f0346b28e2600fb1e2f1cbf94a074
Reviewed-on: https://review.typo3.org/47894
Reviewed-by: Francois Suter <francois@typo3.org>
Tested-by: Francois Suter <francois@typo3.org>
21 files changed:
ChangeLog
Classes/Component/DataConsumer.php [new file with mode: 0644]
Classes/Utility/Template.php [new file with mode: 0644]
Configuration/TCA/Overrides/tt_content.php [new file with mode: 0644]
Configuration/TCA/tx_phpdisplay_displays.php
LICENSE.txt [new file with mode: 0644]
README.txt
Resources/Private/Language/locallang_db.xlf [new file with mode: 0644]
Resources/Private/Language/locallang_db.xml [deleted file]
Resources/Public/Icons/PhpDisplay.png [new file with mode: 0644]
Resources/Public/images/tx_phpdisplay_displays.png [deleted file]
Samples/Advanced.php
Samples/Simple.php
class.tx_phpdisplay.php [deleted file]
class.tx_phpdisplay_template.php [deleted file]
composer.json [new file with mode: 0644]
ext_autoload.php [deleted file]
ext_emconf.php
ext_icon.gif [deleted file]
ext_localconf.php
ext_tables.php

index e5d96cd..582d1c0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2016-04-25 Francois Suter (Cobweb)  <typo3@cobweb.ch>
+
+       * Verified compatibility with TYPO3 CMS 7, cleaned up code, applied PSR-2, resolves #75900
+
 2014-05-09 Francois Suter (Cobweb)  <typo3@cobweb.ch>
 
        * Verified compatibility with TYPO3 CMS 6.2, resolves #58680
diff --git a/Classes/Component/DataConsumer.php b/Classes/Component/DataConsumer.php
new file mode 100644 (file)
index 0000000..f42df39
--- /dev/null
@@ -0,0 +1,213 @@
+<?php
+namespace Tesseract\Phpdisplay\Component;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+use Tesseract\Phpdisplay\Utility\Template;
+use Tesseract\Tesseract\Service\FrontendConsumerBase;
+use Tesseract\Tesseract\Tesseract;
+use Tesseract\Tesseract\Utility\Utilities;
+use TYPO3\CMS\Core\Messaging\FlashMessage;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Utility\DebuggerUtility;
+use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
+
+/**
+ * Plugin 'PHP Displayer' for the 'phpdisplay' extension.
+ *
+ * @author Fabien Udriot <fabien.udriot@ecodev.ch>
+ * @author Francois Suter (Cobweb) <typo3@cobweb.ch>
+ * @package TYPO3
+ * @subpackage tx_phpdisplay
+ */
+class DataConsumer extends FrontendConsumerBase
+{
+
+    public $tsKey = 'tx_phpdisplay';
+    public $extKey = 'phpdisplay';
+    protected $configuration;
+    protected $table; // Name of the table where the details about the data display are stored
+    protected $uid; // Primary key of the record to fetch for the details
+    protected $structure = array(); // Input standardised data structure
+    protected $result = ''; // The result of the processing by the Data Consumer
+    protected $counter = array();
+
+    protected $labelMarkers = array();
+    protected $datasourceFields = array();
+    protected $datasourceObjects = array();
+    protected $LLkey = 'default';
+    protected $fieldMarkers = array();
+
+    /**
+     * This method resets values for a number of properties
+     * This is necessary because services are managed as singletons
+     *
+     * @return    void
+     */
+    public function reset()
+    {
+        $this->structure = array();
+        $this->result = '';
+        $this->uid = '';
+        $this->table = '';
+        $this->conf = array();
+        $this->datasourceFields = array();
+        $this->LLkey = 'default';
+        $this->fieldMarkers = array();
+    }
+
+    /**
+     * Return the filter data.
+     *
+     * @return    array
+     */
+    public function getFilter()
+    {
+        return $this->filter;
+    }
+
+    /**
+     *
+     * @var ContentObjectRenderer
+     */
+    protected $localCObj;
+
+    // Data Consumer interface methods
+
+    /**
+     * This method returns the type of data structure that the Data Consumer can use
+     *
+     * @return string type of used data structures
+     */
+    public function getAcceptedDataStructure()
+    {
+        return Tesseract::RECORDSET_STRUCTURE_TYPE;
+    }
+
+    /**
+     * This method indicates whether the Data Consumer can use the type of data structure requested or not
+     *
+     * @param string $type Type of data structure
+     * @return boolean True if it can use the requested type, false otherwise
+     */
+    public function acceptsDataStructure($type)
+    {
+        return $type === Tesseract::RECORDSET_STRUCTURE_TYPE;
+    }
+
+    /**
+     * This method is used to pass a data structure to the Data Consumer
+     *
+     * @param array $structure Standardised data structure
+     * @return void
+     */
+    public function setDataStructure($structure)
+    {
+        $this->structure[$structure['name']] = $structure;
+    }
+
+    /**
+     * This method is used to pass a filter to the Data Consumer
+     *
+     * @param array $filter Data Filter structure
+     * @return void
+     */
+    public function setDataFilter($filter)
+    {
+        $this->filter = $filter;
+    }
+
+    /**
+     * This method is used to get a data structure
+     *
+     * @return array Standardised data structure
+     */
+    public function getDataStructure()
+    {
+        return $this->structure;
+    }
+
+    /**
+     * This method returns the result of the work done by the Data Consumer (FE output or whatever else)
+     *
+     * @return mixed The result of the Data Consumer's work
+     */
+    public function getResult()
+    {
+        return $this->result;
+    }
+
+    /**
+     * This method sets the result. Useful for hooks.
+     *
+     * @param mixed $result Predefined result
+     * @return void
+     */
+    public function setResult($result)
+    {
+
+        $this->result = $result;
+    }
+
+    /**
+     * This method starts whatever rendering process the Data Consumer is programmed to do
+     *
+     * @return void
+     */
+    public function startProcess()
+    {
+        if (isset($GLOBALS['_GET']['debug']['structure']) && isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_start'])) {
+            DebuggerUtility::var_dump($this->structure);
+        }
+        // Initializes local cObj
+        $this->localCObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
+        $this->configuration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf'][$this->extKey]);
+
+
+        // Get the full path to the template file
+        try {
+            $filePath = Utilities::getTemplateFilePath($this->consumerData['template']);
+
+            /** @var $template Template */
+            $template = GeneralUtility::makeInstance(Template::class);
+            $template->set('controller', $this->getController());
+            $template->set('filter', $this->getFilter());
+            $template->set('datastructure', $this->getDataStructure());
+            $this->result = $template->fetch($filePath);
+        } catch (\Exception $e) {
+            $this->controller->addMessage(
+                    $this->extKey,
+                    $e->getMessage() . ' (' . $e->getCode() . ')',
+                    'Error processing the view',
+                    FlashMessage::ERROR
+            );
+        }
+    }
+
+    /**
+     * Displays in the frontend or in the devlog some debug output
+     *
+     * @return void
+     */
+    protected function debug()
+    {
+        if (isset($GLOBALS['_GET']['debug']['structure']) && $GLOBALS['TSFE']->beUserLogin) {
+            DebuggerUtility::var_dump($this->getDataStructure());
+        }
+
+        if (isset($GLOBALS['_GET']['debug']['filter']) && $GLOBALS['TSFE']->beUserLogin) {
+            DebuggerUtility::var_dump($this->getFilter());
+        }
+    }
+}
diff --git a/Classes/Utility/Template.php b/Classes/Utility/Template.php
new file mode 100644 (file)
index 0000000..a4659c3
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+namespace Tesseract\Phpdisplay\Utility;
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+/**
+ * Totally minimal PHP template engine
+ *
+ * @author Fabien Udriot <fabien.udriot@ecodev.ch>
+ * @package TYPO3
+ * @subpackage tx_phpdisplay
+ */
+
+class Template
+{
+    private $vars = array(); /// Holds all the template variables
+
+    /**
+     * Constructor
+     *
+     * @param $file string the file name you want to load
+     */
+    public function __construct($file = null)
+    {
+        $this->file = $file;
+    }
+
+    /**
+     * Set a template variable.
+     */
+    public function set($name, $value)
+    {
+        $this->vars[$name] = $value;
+    }
+
+    /**
+     * Open, parse, and return the template file.
+     *
+     * @param $file string the template file name
+     * @return string The content of the template file
+     */
+    public function fetch($file = null)
+    {
+        if (!$file) {
+            $file = $this->file;
+        }
+
+        // Extract the vars to local namespace
+        extract(
+                $this->vars,
+                EXTR_OVERWRITE
+        );
+        // Start output buffering
+        ob_start();
+        // Include the file
+        include($file);
+        // Get the contents of the buffer
+        $contents = ob_get_contents();
+        // End buffering and discard
+        ob_end_clean();
+        // Return the contents
+        return $contents;
+    }
+}
diff --git a/Configuration/TCA/Overrides/tt_content.php b/Configuration/TCA/Overrides/tt_content.php
new file mode 100644 (file)
index 0000000..506e72c
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+// Add a wizard for adding a phpdisplay
+$addTemplateDisplayWizard = array(
+'type' => 'script',
+    'title' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xlf:wizards.add_phpdisplay',
+    'icon' => 'EXT:phpdisplay/Resources/Public/Icons/PhpDisplay.png',
+    'module' => array(
+        'name' => 'wizard_add'
+    ),
+    'params' => array(
+            'table' => 'tx_phpdisplay_displays',
+            'pid' => '###CURRENT_PID###',
+            'setValue' => 'set'
+    )
+);
+$GLOBALS['TCA']['tt_content']['columns']['tx_displaycontroller_consumer']['config']['wizards']['add_phpdisplay'] = $addTemplateDisplayWizard;
+
+// Register phpdisplay with the Display Controller as a Data Consumer
+$GLOBALS['TCA']['tt_content']['columns']['tx_displaycontroller_consumer']['config']['allowed'] .= ',tx_phpdisplay_displays';
index de6b3e5..26aa07a 100644 (file)
@@ -1,16 +1,30 @@
 <?php
-if (!defined ('TYPO3_MODE'))   die ('Access denied.');
 
-$TCA['tx_phpdisplay_displays'] = array(
-       'ctrl' => $GLOBALS['TCA']['tx_phpdisplay_displays']['ctrl'],
+return array(
+       'ctrl' => array(
+               'title'     => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xlf:tx_phpdisplay_displays',
+        'descriptionColumn' => 'description',
+               'label'     => 'title',
+               'tstamp'    => 'tstamp',
+               'crdate'    => 'crdate',
+               'cruser_id' => 'cruser_id',
+               'default_sortby' => 'ORDER BY title',
+               'delete' => 'deleted',
+               'enablecolumns' => array(
+                       'disabled' => 'hidden',
+               ),
+               'searchFields' => 'title,description,template',
+        'typeicon_classes' => array(
+            'default' => 'tx_phpdisplay-display'
+        ),
+       ),
        'interface' => array(
                'showRecordFieldList' => 'hidden,title,description'
        ),
-       'feInterface' => $GLOBALS['TCA']['tx_phpdisplay_displays']['feInterface'],
        'columns' => array(
                'hidden' => array(
                        'exclude' => 1,
-                       'label'   => 'LLL:EXT:lang/locallang_general.xml:LGL.hidden',
+                       'label'   => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden',
                        'config'  => array(
                                'type'    => 'check',
                                'default' => '0'
@@ -18,7 +32,7 @@ $TCA['tx_phpdisplay_displays'] = array(
                ),
                'title' => array(
                        'exclude' => 0,
-                       'label' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xml:tx_phpdisplay_displays.title',
+                       'label' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xlf:tx_phpdisplay_displays.title',
                        'config' => array(
                                'type' => 'input',
                                'size' => '30',
@@ -27,7 +41,7 @@ $TCA['tx_phpdisplay_displays'] = array(
                ),
                'description' => array(
                        'exclude' => 0,
-                       'label' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xml:tx_phpdisplay_displays.description',
+                       'label' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xlf:tx_phpdisplay_displays.description',
                        'config' => array(
                                'type' => 'text',
                                'cols' => '40',
@@ -36,37 +50,33 @@ $TCA['tx_phpdisplay_displays'] = array(
                ),
                'template' => array(
                        'exclude' => 0,
-                       'label' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xml:tx_phpdisplay_displays.template',
+                       'label' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xlf:tx_phpdisplay_displays.template',
                        'config' => array(
                                'type' => 'input',
                                'size' => '30',
                                'eval' => 'trim',
                                'default' => 'EXT:phpdisplay/Samples/Simple.php',
-                               'wizards' => Array(
-                                       '_PADDING' => 2,
-                                       'link' => Array(
-                                               'type' => 'popup',
-                                               'title' => 'Link',
-                                               'icon' => 'link_popup.gif',
-                                               'script' => 'browse_links.php?mode=wizard',
-                                               'JSopenParams' => 'height=600,width=700,status=0,menubar=0,scrollbars=1',
-                                               'params' => array(
-                                                       'blindLinkOptions' => 'page,url,mail,spec,folder',
-                                               ),
-                                       )
+                               'wizards' => array(
+                    'link' => array(
+                        'type' => 'popup',
+                        'title' => 'Link',
+                        'icon' => 'link_popup.gif',
+                        'module' => array(
+                            'name' => 'wizard_element_browser',
+                            'urlParameters' => array(
+                                'mode' => 'wizard'
+                            )
+                        ),
+                        'JSopenParams' => 'height=600,width=700,status=0,menubar=0,scrollbars=1',
+                        'params' => array(
+                            'blindLinkOptions' => 'page,url,mail,spec,folder'
+                        ),
+                    )
                                )
                        )
                ),
        ),
        'types' => array(
-               '0' => array('showitem' => 'hidden;;1;;1-1-1, title;;;;2-2-2, template, description')
-       ),
-       'palettes' => array(
-               '1' => array('showitem' => '')
+               '0' => array('showitem' => 'hidden, title, template, description')
        )
 );
-
-t3lib_extMgm::addToAllTCAtypes("tx_phpdisplay_displays","--palette--;LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xml:tx_phpdisplay_displays.debug;10","","after:description");
-t3lib_extMgm::addToAllTCAtypes("tx_phpdisplay_displays","--palette--;LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xml:tx_phpdisplay_displays.pagebrowser;20","","after:description");
-
-?>
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644 (file)
index 0000000..95d36a7
--- /dev/null
@@ -0,0 +1,345 @@
+Some icons used in the TYPO3 project are retrieved from the "Silk" icon set of
+Mark James, which can be found at http://famfamfam.com/lab/icons/silk/. This
+set is distributed under a Creative Commons Attribution 2.5 License. The
+license can be found at http://creativecommons.org/licenses/by/2.5/.
+---------------------------------
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program 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.
+
+    This program 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.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
index cc38855..afa05ad 100644 (file)
@@ -1,3 +1,3 @@
-This extension is a FE plugin that manages relations between Tesseract components and produces output in the FE.
+This extension provides a Data Consumer for Tesseract which simply manages PHP-based templates for output.
 
 Refer to the manual for more information.
\ No newline at end of file
diff --git a/Resources/Private/Language/locallang_db.xlf b/Resources/Private/Language/locallang_db.xlf
new file mode 100644 (file)
index 0000000..b00fef4
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<xliff version="1.0">
+       <file source-language="en" datatype="plaintext" original="messages" date="2016-04-25T09:22:55Z" product-name="phpdisplay">
+               <header/>
+               <body>
+                       <trans-unit id="tx_phpdisplay_displays" xml:space="preserve">
+                               <source>PHP based Display</source>
+                       </trans-unit>
+                       <trans-unit id="tx_phpdisplay_displays.title" xml:space="preserve">
+                               <source>Title</source>
+                       </trans-unit>
+                       <trans-unit id="tx_phpdisplay_displays.description" xml:space="preserve">
+                               <source>Description</source>
+                       </trans-unit>
+                       <trans-unit id="tx_phpdisplay_displays.mappings" xml:space="preserve">
+                               <source>Mappings</source>
+                       </trans-unit>
+                       <trans-unit id="tx_phpdisplay_displays.template" xml:space="preserve">
+                               <source>Template path</source>
+                       </trans-unit>
+               </body>
+       </file>
+</xliff>
\ No newline at end of file
diff --git a/Resources/Private/Language/locallang_db.xml b/Resources/Private/Language/locallang_db.xml
deleted file mode 100644 (file)
index d52daff..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<T3locallang>
-       <meta type="array">
-               <type>database</type>
-               <description>Language labels for database tables/fields belonging to extension 'phpdisplay'</description>
-       </meta>
-       <data type="array">
-               <languageKey index="default" type="array">
-                       <label index="tx_phpdisplay_displays">PHP based Display</label>
-                       <label index="tx_phpdisplay_displays.title">Title</label>
-                       <label index="tx_phpdisplay_displays.description">Description</label>
-                       <label index="tx_phpdisplay_displays.mappings">Mappings</label>
-                       <label index="tx_phpdisplay_displays.template">Template path</label>
-                       <!--
-                       <label index="tx_phpdisplay_displays.text">Text</label>
-                       <label index="tx_phpdisplay_displays.richtext">Rich text (HTML)</label>
-                       <label index="tx_phpdisplay_displays.image">Image</label>
-                       <label index="tx_phpdisplay_displays.image_resource">Image Resource</label>
-                       <label index="tx_phpdisplay_displays.link_to_detail">URL to detail</label>
-                       <label index="tx_phpdisplay_displays.link_to_page">URL to page</label>
-                       <label index="tx_phpdisplay_displays.link_to_file">URL to file</label>
-                       <label index="tx_phpdisplay_displays.user">User Function</label>
-                       <label index="tx_phpdisplay_displays.debug">Debug (extension develog must be installed)</label>
-                       <label index="tx_phpdisplay_displays.debug_markers">Debug markers</label>
-                       <label index="tx_phpdisplay_displays.debug_template_structure">Debug template structure</label>
-                       <label index="tx_phpdisplay_displays.debug_data_structure">Debug data structure</label>
-                       <label index="tx_phpdisplay_displays.email">Email</label>
-                       <label index="tx_phpdisplay_displays.showJson">Show JSON</label>
-                       <label index="tx_phpdisplay_displays.editJson">Edit JSON</label>
-                       <label index="tx_phpdisplay_displays.editHtml">HTML</label>
-                       <label index="tx_phpdisplay_displays.mapping">Mapping</label>
-                       <label index="tx_phpdisplay_displays.fields">Fields</label>
-                       <label index="tx_phpdisplay_displays.types">Types</label>
-                       <label index="tx_phpdisplay_displays.configuration">Typoscript configuration</label>
-                       <label index="tx_phpdisplay_displays.insertDefaultConfiguration">Insert default configuration</label>
-                       <label index="tx_phpdisplay_displays.saveFieldConfiguration">Save field configuration</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser">Page Browser Config</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_tpl">Template path</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_showmore">Show more pages</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_showless">Show less pages</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_pagesbefore"># pages before</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_pagesafter"># pages after</label>
-                       <label index="tx_phpdisplay_displays.fileNotFound">File not found at</label>
-                       <label index="tx_phpdisplay_displays.imported">imported</label>
-                       -->
-               </languageKey>
-               <languageKey index="fr" type="array">
-                       <label index="tx_phpdisplay_displays">Afficheur de données (modèle HTML)</label>
-                       <label index="tx_phpdisplay_displays.title">Nom</label>
-                       <label index="tx_phpdisplay_displays.description">Description</label>
-                       <label index="tx_phpdisplay_displays.mappings">Corrélations</label>
-                       <label index="tx_phpdisplay_displays.template">Modèle HTML</label>
-                       <!--
-                       <label index="tx_phpdisplay_displays.text">Texte</label>
-                       <label index="tx_phpdisplay_displays.richtext">Texte riche (HTML)</label>
-                       <label index="tx_phpdisplay_displays.image">Image</label>
-                       <label index="tx_phpdisplay_displays.image_resource">Image Ressource</label>
-                       <label index="tx_phpdisplay_displays.link_to_detail">URL vers detail</label>
-                       <label index="tx_phpdisplay_displays.link_to_page">URL vers page</label>
-                       <label index="tx_phpdisplay_displays.link_to_file">URL vers fichier</label>
-                       <label index="tx_phpdisplay_displays.user">Fonction utilisateur</label>
-                       <label index="tx_phpdisplay_displays.debug">Deboguer (l'extension devlog doit être installé)</label>
-                       <label index="tx_phpdisplay_displays.debug_markers">Deboguer les tags</label>
-                       <label index="tx_phpdisplay_displays.debug_template_structure">Deboguer la structure de modèles</label>
-                       <label index="tx_phpdisplay_displays.debug_data_structure">Deboguer la structure de données</label>
-                       <label index="tx_phpdisplay_displays.email">Email</label>
-                       <label index="tx_phpdisplay_displays.showJson">Afficher JSON</label>
-                       <label index="tx_phpdisplay_displays.editJson">Editer JSON</label>
-                       <label index="tx_phpdisplay_displays.editHtml">HTML</label>
-                       <label index="tx_phpdisplay_displays.fields">Champs</label>
-                       <label index="tx_phpdisplay_displays.types">Types</label>
-                       <label index="tx_phpdisplay_displays.configuration">Configuration Typoscript</label>
-                       <label index="tx_phpdisplay_displays.insertDefaultConfiguration">Insérer une valeur par défaut</label>
-                       <label index="tx_phpdisplay_displays.saveFieldConfiguration">Sauvegarder la configuration</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser">Configuration du Page Browser</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_tpl">Modèle HTML</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_showmore">Voir plus de pages</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_showless">Voir moins de pages</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_pagesbefore">nbr pages suivantes</label>
-                       <label index="tx_phpdisplay_displays.pagebrowser_pagesafter">nbr pages précédentes</label>
-                       <label index="tx_phpdisplay_displays.fileNotFound">Fichier non trouvé:</label>
-                       <label index="tx_phpdisplay_displays.imported">importé</label>
-                       -->
-               </languageKey>
-       </data>
-</T3locallang>
diff --git a/Resources/Public/Icons/PhpDisplay.png b/Resources/Public/Icons/PhpDisplay.png
new file mode 100644 (file)
index 0000000..7cf9c14
Binary files /dev/null and b/Resources/Public/Icons/PhpDisplay.png differ
diff --git a/Resources/Public/images/tx_phpdisplay_displays.png b/Resources/Public/images/tx_phpdisplay_displays.png
deleted file mode 100755 (executable)
index 7cf9c14..0000000
Binary files a/Resources/Public/images/tx_phpdisplay_displays.png and /dev/null differ
index cd3502e..f01e1ca 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 // Parameters
-$parameters = t3lib_div::_GP('tx_displaycontroller');
+$parameters = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('tx_displaycontroller');
 
 // Default language of this website is 'fr'
 $language = 'fr';
@@ -69,7 +69,7 @@ saveParameters($parameters);
  */
 function translate($key) {
        $extensionName = 'employer_searchform';
-       print Tx_Extbase_Utility_Localization::translate($key, $extensionName);
+       print \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($key, $extensionName);
 }
 
 /**
@@ -114,7 +114,7 @@ function image($key) {
 function linkSort() {
 
        // Parameters
-       $parameters = t3lib_div::_GP('tx_displaycontroller');
+       $parameters = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('tx_displaycontroller');
 
        // Set default sorting value
        if (empty($parameters['sort'])) {
@@ -133,26 +133,26 @@ function linkSort() {
                $additionalParams .= sprintf("&tx_displaycontroller[%s]=%s", $parameter, $value);
        }
 
-       /** @var $contentObject tslib_cObj */
+       /** @var $contentObject \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer */
        $contentObject = $GLOBALS['TSFE']->cObj;
        $config['returnLast'] = 'url';
        $config['parameter'] = $GLOBALS['TSFE']->id;
        $config['additionalParams'] = $additionalParams;
-       print $contentObject->typolink('', $config);
+       print $contentObject->typoLink('', $config);
 }
 
 /**
  * @param $uid
  */
 function linkToDetail($uid) {
-       /** @var $contentObject tslib_cObj */
+       /** @var $contentObject \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer */
        $contentObject = $GLOBALS['TSFE']->cObj;
        $config = array();
        $config['returnLast'] = 'url';
        $config['parameter'] = 314;
        $config['useCacheHash'] = 1;
        $config['additionalParams'] = '&tx_displaycontroller[job]=' . $uid;
-       print $contentObject->typolink('', $config);
+       print $contentObject->typoLink('', $config);
 }
 
 /**
@@ -168,10 +168,10 @@ function numberOfResults($datastructure, $filter) {
        }
 
        print sprintf('%s %d-%d %s %d',
-               Tx_Extbase_Utility_Localization::translate('advertisements', $extensionName),
+               \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('advertisements', $extensionName),
                $filter['limit']['offset'] * $filter['limit']['max'] + 1,
                $total,
-               Tx_Extbase_Utility_Localization::translate('on', $extensionName),
+               \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('on', $extensionName),
                $datastructure['tx_employer_jobs']['totalCount']
        );
 }
@@ -184,7 +184,7 @@ function numberOfResults($datastructure, $filter) {
  */
 function pageBrowser($datastructure, $filter) {
 
-       /** @var $contentObject tslib_cObj */
+       /** @var $contentObject \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer */
        $contentObject = $GLOBALS['TSFE']->cObj;
        $conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_pagebrowse_pi1.'];
        $conf['pageParameterName'] = 'tx_displaycontroller|page';
@@ -217,10 +217,10 @@ function pageBrowser($datastructure, $filter) {
  *
  * This could quickly become  error-prone.
  *
- * @param $parameters Array The parameters coming from the URL
+ * @param $parameters array The parameters coming from the URL
  */
 function saveParameters($parameters) {
-       /** @var $user tslib_feUserAuth */
+       /** @var $user \TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication */
        $user = $GLOBALS['TSFE']->fe_user;
 
        if (empty($parameters['sort'])) {
@@ -234,5 +234,3 @@ function saveParameters($parameters) {
        }
        $user->setKey('ses', 'job_search', $values);
 }
-
-?>
\ No newline at end of file
index 7055494..545fd56 100644 (file)
@@ -1 +1 @@
-<!-- Looping around $records -->\r<b>It works!</b> See content of EXT:phpdisplay/Samples/Simple.php to have more examples.\r<br />\r\r<!-- PHP TEMPLATE SYNTAX FOR HTML -->\r<?php if (! empty($datastructure['page']['records'])): ?>\r     <?php foreach($datastructure['page']['records'] as $record): ?>\r                <?php print $record['title'] ?>\r        <?php endforeach ?>\r<?php endif ?>\r\r<?php\r      // debug\r       #t3lib_div::debug($datastructure,'debug');\r     #t3lib_div::debug($filter,'debug');\r\r   // CObj\r        $localCObj = t3lib_div::makeInstance('tslib_cObj');\r    $localCObj->start(array(), '');\r\r       // Parameters\r  $parameters = t3lib_div::_GP('tx_displaycontroller');\r\r // FE USER\r     $feUser = $GLOBALS['TSFE']->fe_user->user;\r     $feUserUid = $GLOBALS['TSFE']->fe_user->user['uid'];\r\r  // link\r        $localCObj->start($record);\r    $config = array();\r     $config['returnLast'] = 'url';\r $config['parameter.']['data'] = 'TSFE:tmpl|setup|plugin.|tx_speciality.|courses_detail_pid';\r   $config['additionalParams'] = '&tx_displaycontroller[table]=courses&tx_displaycontroller[showUid]={field:uid}';\r        $config['additionalParams.']['insertData'] = 1;\r        $link = $localCObj->typolink('',$config);\r\r     // Generating thumbnails\r       $configThumbnail = array();\r    $configThumbnail['file'] = $record['file'];\r    $configThumbnail['altText'] = $record['title'];\r        $configThumbnail['file.']['height'] = 70;\r      $configThumbnail['file.']['width'] = 50;\r       $configThumbnail['file.']['minW'] = 70;\r        $configThumbnail['file.']['minH'] = 50;\r        $htmlThumbnail = $localCObj->IMAGE($configThumbnail);\r\r\r        // Generating thumbnails from PDF\r      $configThumbnail = array();\r    $configThumbnail['file'] = $record['file'];\r    $configThumbnail['altText'] = $record['title'];\r        #$configThumbnail['file.']['height'] = 70;\r     $configThumbnail['file.']['width'] = 50;\r       #$configThumbnail['file.']['minW'] = 70;\r       #$configThumbnail['file.']['minH'] = 50;\r       $configThumbnail['file.']['import.']['cObject'] = 'IMG_RESOURCE';\r      $configThumbnail['file.']['import.']['cObject.']['ext'] = 'jpg';\r       $configThumbnail['file.']['import.']['cObject.']['quality'] = '100';\r   $configThumbnail['file.']['import.']['cObject.']['file.']['params'] = '-trim';\r $configThumbnail['file.']['import.']['cObject.']['file'] = $configThumbnail['file'];\r   #$configThumbnail['file.']['import.']['cObject.']['file.']['width'] = '1080';\r  $htmlThumbnail = $localCObj->IMAGE($configThumbnail);\r\r // TypoScript configuration\r    $configuration = $TSFE->tmpl->setup['config.'];\r\r       // Language support\r    $LANG = t3lib_div::makeInstance('Language');\r   $LANG->lang = $configuration['language'];\r      $LANG->charSet = 'utf-8';\r      $LANG->includeLLFile('EXT:speciality/Resources/Private/locallang.xml');\r\r       print $LANG->getLL('cat');\r     print $LANG->sL('LLL:EXT:speciality/Resources/Private/locallang.xml');\r\r        // RTE\r $config['parseFunc.'] = $GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.'];\r       $config['value'] = $record['bodytext'];\r        $value = $localCObj->TEXT($config);\r\r   // PAGEBROWSE\r  $conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_pagebrowse_pi1.'];\r        $conf['pageParameterName'] = 'tx_displaycontroller|page';\r\r\r    // Adds limit to the query and calculates the number of pages.\r if ($filter['limit']['max'] != '' && $filter['limit']['max'] != '0') {\r         //$conf['extraQueryString'] .= '&' . $this->pObj->getPrefixId() . '[max]=' . $filter['limit']['max'];\r          $conf['numberOfPages'] = ceil($datastructure['news']['totalCount'] / $filter['limit']['max']);\r         $conf['items_per_page'] = $filter['limit']['max'];\r             $conf['total_items'] = $datastructure['news']['totalCount'];\r           $conf['total_pages'] = $conf['numberOfPages']; // duplicated, because $conf['numberOfPages'] is protected\r      }\r      else {\r         $conf['numberOfPages'] = 1;\r    }\r\r     // Defines other possible pagebrowse configuration options\r     #$conf['enableMorePages'] = '';\r        #$conf['enableLessPages'] = '';\r        #$conf['pagesBefore'] = '';\r    #$conf['pagesAfter'] = '';\r\r    /* @var $cObj tslib_cObj */\r    print $localCObj->cObjGetSingle('USER', $conf);\r?>\r
\ No newline at end of file
+<!-- Looping around $records -->\r<b>It works!</b> See content of EXT:phpdisplay/Samples/Simple.php to have more examples.\r<br />\r\r<!-- PHP TEMPLATE SYNTAX FOR HTML -->\r<?php if (! empty($datastructure['page']['records'])): ?>\r     <?php foreach($datastructure['page']['records'] as $record): ?>\r                <?php print $record['title'] ?>\r        <?php endforeach ?>\r<?php endif ?>\r\r<?php\r      // debug\r       #\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($datastructure,'debug');\r #\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($filter,'debug');\r\r       /** @var \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $localCObj */\r $localCObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::class);\r     $localCObj->start(array(), '');\r\r       // Parameters\r  $parameters = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('tx_displaycontroller');\r\r    // FE USER\r     $feUser = $GLOBALS['TSFE']->fe_user->user;\r     $feUserUid = $GLOBALS['TSFE']->fe_user->user['uid'];\r\r  // link\r        $localCObj->start($record);\r    $config = array();\r     $config['returnLast'] = 'url';\r $config['parameter.']['data'] = 'TSFE:tmpl|setup|plugin.|tx_speciality.|courses_detail_pid';\r   $config['additionalParams'] = '&tx_displaycontroller[table]=courses&tx_displaycontroller[showUid]={field:uid}';\r        $config['additionalParams.']['insertData'] = 1;\r        $link = $localCObj->typoLink('',$config);\r\r     // Generating thumbnails\r       $configThumbnail = array();\r    $configThumbnail['file'] = $record['file'];\r    $configThumbnail['altText'] = $record['title'];\r        $configThumbnail['file.']['height'] = 70;\r      $configThumbnail['file.']['width'] = 50;\r       $configThumbnail['file.']['minW'] = 70;\r        $configThumbnail['file.']['minH'] = 50;\r        $htmlThumbnail = $localCObj->cObjGetSingle('IMAGE', $configThumbnail);\r\r\r       // Generating thumbnails from PDF\r      $configThumbnail = array();\r    $configThumbnail['file'] = $record['file'];\r    $configThumbnail['altText'] = $record['title'];\r        #$configThumbnail['file.']['height'] = 70;\r     $configThumbnail['file.']['width'] = 50;\r       #$configThumbnail['file.']['minW'] = 70;\r       #$configThumbnail['file.']['minH'] = 50;\r       $configThumbnail['file.']['import.']['cObject'] = 'IMG_RESOURCE';\r      $configThumbnail['file.']['import.']['cObject.']['ext'] = 'jpg';\r       $configThumbnail['file.']['import.']['cObject.']['quality'] = '100';\r   $configThumbnail['file.']['import.']['cObject.']['file.']['params'] = '-trim';\r $configThumbnail['file.']['import.']['cObject.']['file'] = $configThumbnail['file'];\r   #$configThumbnail['file.']['import.']['cObject.']['file.']['width'] = '1080';\r  $htmlThumbnail = $localCObj->cObjGetSingle('IMAGE', $configThumbnail);\r\r        // TypoScript configuration\r    $configuration = $GLOBALS['TSFE']->tmpl->setup['config.'];\r\r    // Language support\r    /** @var \TYPO3\CMS\Lang\LanguageService $LANG */\r      $LANG = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Lang\LanguageService::class);\r  $LANG->lang = $configuration['language'];\r      $LANG->charSet = 'utf-8';\r      $LANG->includeLLFile('EXT:speciality/Resources/Private/locallang.xml');\r\r       print $LANG->getLL('cat');\r     print $LANG->sL('LLL:EXT:speciality/Resources/Private/locallang.xml');\r\r        // RTE\r $config['parseFunc.'] = $GLOBALS['TSFE']->tmpl->setup['lib.']['parseFunc_RTE.'];\r       $config['value'] = $record['bodytext'];\r        $value = $localCObj->TEXT($config);\r\r   // PAGEBROWSE\r  $conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_pagebrowse_pi1.'];\r        $conf['pageParameterName'] = 'tx_displaycontroller|page';\r\r\r    // Adds limit to the query and calculates the number of pages.\r if ($filter['limit']['max'] != '' && $filter['limit']['max'] != '0') {\r         //$conf['extraQueryString'] .= '&' . $this->pObj->getPrefixId() . '[max]=' . $filter['limit']['max'];\r          $conf['numberOfPages'] = ceil($datastructure['news']['totalCount'] / $filter['limit']['max']);\r         $conf['items_per_page'] = $filter['limit']['max'];\r             $conf['total_items'] = $datastructure['news']['totalCount'];\r           $conf['total_pages'] = $conf['numberOfPages']; // duplicated, because $conf['numberOfPages'] is protected\r      }\r      else {\r         $conf['numberOfPages'] = 1;\r    }\r\r     // Defines other possible pagebrowse configuration options\r     #$conf['enableMorePages'] = '';\r        #$conf['enableLessPages'] = '';\r        #$conf['pagesBefore'] = '';\r    #$conf['pagesAfter'] = '';\r\r    print $localCObj->cObjGetSingle('USER', $conf);\r
\ No newline at end of file
diff --git a/class.tx_phpdisplay.php b/class.tx_phpdisplay.php
deleted file mode 100644 (file)
index c38ba8c..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  (c) 2008-2012       Francois Suter (Cobweb) <typo3@cobweb.ch>
-*                                      Fabien Udriot <fabien.udriot@ecodev.ch>
-*  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.
-*
-*  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!
-***************************************************************/
-
-/**
- * Plugin 'Data Displayer' for the 'phpdisplay' extension.
- *
- * @author             Francois Suter (Cobweb) <typo3@cobweb.ch>
- * @author             Fabien Udriot <fabien.udriot@ecodev.ch>
- * @package            TYPO3
- * @subpackage tx_phpdisplay
- *
- * $Id$
- */
-class tx_phpdisplay extends tx_tesseract_feconsumerbase {
-
-       public $tsKey = 'tx_phpdisplay';
-       public $extKey = 'phpdisplay';
-       protected $configuration;
-       protected $table; // Name of the table where the details about the data display are stored
-       protected $uid; // Primary key of the record to fetch for the details
-       protected $structure = array(); // Input standardised data structure
-       protected $result = ''; // The result of the processing by the Data Consumer
-       protected $counter = array();
-
-       protected $labelMarkers = array();
-       protected $datasourceFields = array();
-       protected $datasourceObjects = array();
-       protected $LLkey = 'default';
-       protected $fieldMarkers = array();
-
-       /**
-        * This method resets values for a number of properties
-        * This is necessary because services are managed as singletons
-        *
-        * @return      void
-        */
-       public function reset(){
-               $this->structure = array();
-               $this->result = '';
-               $this->uid = '';
-               $this->table = '';
-               $this->conf = array();
-               $this->datasourceFields = array();
-               $this->LLkey = 'default';
-               $this->fieldMarkers = array();
-       }
-
-       /**
-        * Return the filter data.
-        *
-        * @return      array
-        */
-       public function getFilter() {
-               return $this->filter;
-       }
-
-       /**
-        *
-        * @var tslib_cObj
-        */
-       protected $localCObj;
-
-       // Data Consumer interface methods
-
-       /**
-        * This method returns the type of data structure that the Data Consumer can use
-        *
-        * @return      string  type of used data structures
-        */
-       public function getAcceptedDataStructure() {
-               return tx_tesseract::RECORDSET_STRUCTURE_TYPE;
-       }
-
-       /**
-        * This method indicates whether the Data Consumer can use the type of data structure requested or not
-        *
-        * @param       string          $type: type of data structure
-        * @return      boolean         true if it can use the requested type, false otherwise
-        */
-       public function acceptsDataStructure($type) {
-               return $type == tx_tesseract::RECORDSET_STRUCTURE_TYPE;
-       }
-
-       /**
-        * This method is used to pass a data structure to the Data Consumer
-        *
-        * @param       array   $structure: standardised data structure
-        * @return      void
-        */
-       public function setDataStructure($structure) {
-               $this->structure[$structure['name']] = $structure;
-       }
-
-       /**
-        * This method is used to pass a filter to the Data Consumer
-        *
-        * @param       array   $filter: Data Filter structure
-        * @return      void
-        */
-       public function setDataFilter($filter) {
-               $this->filter = $filter;
-       }
-
-       /**
-        * This method is used to get a data structure
-        *
-        * @return      array   $structure: standardised data structure
-        */
-       public function getDataStructure() {
-               return $this->structure;
-       }
-
-       /**
-        * This method returns the result of the work done by the Data Consumer (FE output or whatever else)
-        *
-        * @return      mixed   the result of the Data Consumer's work
-        */
-       public function getResult() {
-               return $this->result;
-       }
-
-       /**
-        * This method sets the result. Useful for hooks.
-        *
-        * @param mixed $result Predefined result
-        * @return void
-        */
-       public function setResult($result) {
-
-               $this->result = $result;
-       }
-
-       /**
-        * This method starts whatever rendering process the Data Consumer is programmed to do
-        *
-        * @return      void
-        */
-       public function startProcess() {
-
-               if (isset($GLOBALS['_GET']['debug']['structure']) && isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_start'])) {
-                       t3lib_utility_Debug::debug($this->structure);
-               }
-               // Initializes local cObj
-               $this->localCObj = t3lib_div::makeInstance('tslib_cObj');
-               $this->configuration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf'][$this->extKey]);
-
-
-                       // Get the full path to the template file
-               try {
-                       $filePath = tx_tesseract_utilities::getTemplateFilePath($this->consumerData['template']);
-
-                               /** @var $template tx_phpdisplay_template */
-                       $template = t3lib_div::makeInstance('tx_phpdisplay_template');
-                       $template->set('controller', $this->getController());
-                       $template->set('filter', $this->getFilter());
-                       $template->set('datastructure', $this->getDataStructure());
-                       $this->result = $template->fetch($filePath);
-               }
-               catch (Exception $e) {
-                       $this->controller->addMessage(
-                               $this->extKey,
-                               $e->getMessage() . ' (' . $e->getCode() . ')',
-                               'Error processing the view',
-                               t3lib_FlashMessage::ERROR
-                       );
-               }
-       }
-
-       /**
-        * Displays in the frontend or in the devlog some debug output
-        *
-        * @return void
-        */
-       protected function debug() {
-
-               if (isset($GLOBALS['_GET']['debug']['structure']) && $GLOBALS['TSFE']->beUserLogin) {
-                       t3lib_utility_Debug::debug($this->getDataStructure());
-               }
-
-               if (isset($GLOBALS['_GET']['debug']['filter']) && $GLOBALS['TSFE']->beUserLogin) {
-                       t3lib_utility_Debug::debug($this->getFilter());
-               }
-       }
-
-       /**
-        * Returns a reference to the component's controller
-        *
-        * @return tx_tesseract_datacontroller_output The controller
-        */
-       public function getController() {
-               return $this->controller;
-       }
-}
-
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/phpdisplay/class.tx_phpdisplay.php']){
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/phpdisplay/class.tx_phpdisplay.php']);
-}
-
-?>
diff --git a/class.tx_phpdisplay_template.php b/class.tx_phpdisplay_template.php
deleted file mode 100644 (file)
index 4c95fd5..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/***************************************************************
-*  Copyright notice
-*
-*  Copyright: http://www.massassi.com/php/articles/template_engines/
-*  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.
-*
-*  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!
-***************************************************************/
-
-/**
- * Very basic PHP template engine
- *
- * @package            TYPO3
- * @subpackage tx_phpdisplay
- *
- * $Id$
- */
-
-class tx_phpdisplay_template {
-       private $vars = array(); /// Holds all the template variables
-
-       /**
-        * Constructor
-        *
-        * @param $file string the file name you want to load
-        */
-       function __construct($file = null){
-               $this->file = $file;
-       }
-
-       /**
-        * Set a template variable.
-        */
-       function set($name, $value){
-               $this->vars[$name] = $value;
-       }
-
-       /**
-        * Open, parse, and return the template file.
-        *
-        * @param $file string the template file name
-        * @return string The content of the template file
-        */
-       function fetch($file = null){
-               if(! $file) {
-                       $file = $this->file;
-               }
-
-               extract($this->vars); // Extract the vars to local namespace
-               ob_start(); // Start output buffering
-               include ($file); // Include the file
-               $contents = ob_get_contents(); // Get the contents of the buffer
-               ob_end_clean(); // End buffering and discard
-               return $contents; // Return the contents
-       }
-}
-
-?>
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644 (file)
index 0000000..846d923
--- /dev/null
@@ -0,0 +1,32 @@
+{
+       "name": "tesseract/phpdisplay",
+       "type": "typo3-cms-extension",
+       "description": "Use Plain PHP templates to display any kind of data returned by a Data Provider. More info on http://www.typo3-tesseract.com.",
+       "license": [
+               "GPL-2.0+"
+       ],
+       "authors": [
+               {
+                       "name": "Fabien Udriot",
+                       "role": "Developer"
+               },
+               {
+                       "name": "Francois Suter",
+                       "role": "Developer"
+               }
+       ],
+       "autoload": {
+               "psr-4": {
+                       "Tesseract\\Phpdisplay\\": "Classes/"
+               }
+       },
+       "version": "2.0.0",
+       "require": {
+               "typo3/cms-core": ">=7.0.0,<8.0",
+               "tesseract/tesseract": ">=2.0.0"
+       },
+       "replace": {
+               "phpdisplay": "self.version",
+               "typo3-ter/phpdisplay": "self.version"
+       }
+}
diff --git a/ext_autoload.php b/ext_autoload.php
deleted file mode 100644 (file)
index b7bfad8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/* 
- * Register necessary class names with autoloader
- *
- * $Id$
- */
-$extensionPath = t3lib_extMgm::extPath('phpdisplay');
-return array(
-       'tx_phpdisplay' => $extensionPath . 'class.tx_phpdisplay.php',
-       'tx_phpdisplay_template' => $extensionPath . 'class.tx_phpdisplay_template.php',
-);
-?>
index e6759c6..c4497fe 100644 (file)
@@ -10,7 +10,7 @@
 
 $EM_CONF[$_EXTKEY] = array (
   'title' => 'Plain PHP based Data Display (Data Consumer) - Tesseract project',
-  'description' => 'Use Plain PHP templates to display any kind of data returned by a Data Provider. More info on http://www.typo3-tesseract.com',
+  'description' => 'Use Plain PHP templates to display any kind of data returned by a Data Provider. More info on http://www.typo3-tesseract.com.',
   'category' => 'fe',
   'author' => 'Fabien Udriot',
   'author_email' => 'fabien.udriot@ecodev.ch',
@@ -28,25 +28,25 @@ $EM_CONF[$_EXTKEY] = array (
   'lockType' => '',
   'author_company' => '',
   'version' => '1.4.0',
-  'constraints' => 
+  'constraints' =>
   array (
-    'depends' => 
+    'depends' =>
     array (
-      'typo3' => '4.5.0-6.2.99',
-      'tesseract' => '1.7.0-0.0.0',
+      'typo3' => '7.6.0-7.99.99',
+      'tesseract' => '2.0.0-0.0.0',
     ),
-    'conflicts' => 
+    'conflicts' =>
     array (
     ),
-    'suggests' => 
+    'suggests' =>
     array (
     ),
   ),
   '_md5_values_when_last_written' => 'a:16:{s:9:"ChangeLog";s:4:"3b70";s:10:"README.txt";s:4:"b948";s:23:"class.tx_phpdisplay.php";s:4:"e02b";s:32:"class.tx_phpdisplay_template.php";s:4:"1b68";s:16:"ext_autoload.php";s:4:"cb29";s:12:"ext_icon.gif";s:4:"9530";s:12:"ext_icon.png";s:4:"55ad";s:17:"ext_localconf.php";s:4:"fa6b";s:14:"ext_tables.php";s:4:"df7a";s:14:"ext_tables.sql";s:4:"b2b4";s:44:"Configuration/TCA/tx_phpdisplay_displays.php";s:4:"adef";s:43:"Resources/Private/Language/locallang_db.xml";s:4:"683d";s:50:"Resources/Public/images/tx_phpdisplay_displays.png";s:4:"55ad";s:14:"doc/manual.pdf";s:4:"f117";s:14:"doc/manual.sxw";s:4:"f7bf";s:17:"samples/dummy.php";s:4:"55a6";}',
-  'suggests' => 
+  'suggests' =>
   array (
   ),
-  'comment' => 'Compatibility with TYPO3 CMS 6.2.',
+  'comment' => 'Compatibility with TYPO3 CMS 7 LTS; refactored using namespaces.',
   'user' => 'francois',
 );
 
diff --git a/ext_icon.gif b/ext_icon.gif
deleted file mode 100644 (file)
index bf29389..0000000
Binary files a/ext_icon.gif and /dev/null differ
index a73d2c3..da362d1 100644 (file)
@@ -2,29 +2,28 @@
 if (!defined ('TYPO3_MODE')) {
        die ('Access denied.');
 }
-t3lib_extMgm::addUserTSConfig('
-       options.saveDocNew.tx_phpdisplay_displays=1
-');
 
 // Register as Data Consumer service
 // Note that the subtype corresponds to the name of the database table
-t3lib_extMgm::addService($_EXTKEY,  'dataconsumer' /* sv type */,  'tx_phpdisplay_dataconsumer' /* sv key */,
-       array(
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
+               $_EXTKEY,
+        // Service type
+        'dataconsumer',
+        // Service key
+        'tx_phpdisplay_dataconsumer',
+        array(
+            'title' => 'PHP Display Engine',
+            'description' => 'PHP-based Data Consumer for recordset-type data structures',
 
-               'title' => 'Data Display Engine',
-               'description' => 'Generic Data Consumer for recordset-type data structures',
+            'subtype' => 'tx_phpdisplay_displays',
 
-               'subtype' => 'tx_phpdisplay_displays',
+            'available' => TRUE,
+            'priority' => 50,
+            'quality' => 50,
 
-               'available' => TRUE,
-               'priority' => 50,
-               'quality' => 50,
+            'os' => '',
+            'exec' => '',
 
-               'os' => '',
-               'exec' => '',
-
-               'classFile' => t3lib_extMgm::extPath($_EXTKEY, 'class.tx_phpdisplay.php'),
-               'className' => 'tx_phpdisplay',
-       )
+            'className' => \Tesseract\Phpdisplay\Component\DataConsumer::class
+        )
 );
-?>
index 1676c66..0c6e822 100644 (file)
@@ -3,44 +3,15 @@ if (!defined ('TYPO3_MODE')) {
        die ('Access denied.');
 }
 
-t3lib_extMgm::allowTableOnStandardPages('tx_phpdisplay_displays');
+\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_phpdisplay_displays');
 
-       // TCA ctrl for new table
-$GLOBALS['TCA']['tx_phpdisplay_displays'] = array(
-       'ctrl' => array(
-               'title'     => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xml:tx_phpdisplay_displays',
-               'label'     => 'title',
-               'tstamp'    => 'tstamp',
-               'crdate'    => 'crdate',
-               'cruser_id' => 'cruser_id',
-               'default_sortby' => 'ORDER BY title',
-               'delete' => 'deleted',
-               'enablecolumns' => array(
-                       'disabled' => 'hidden',
-               ),
-               'searchFields' => 'title,description,template',
-               'dynamicConfigFile' => t3lib_extMgm::extPath($_EXTKEY).'Configuration/TCA/tx_phpdisplay_displays.php',
-               'iconfile'          => t3lib_extMgm::extRelPath($_EXTKEY).'Resources/Public/images/tx_phpdisplay_displays.png',
-       ),
+// Register sprite icon for templatedisplay table
+/** @var \TYPO3\CMS\Core\Imaging\IconRegistry $iconRegistry */
+$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
+$iconRegistry->registerIcon(
+        'tx_phpdisplay-display',
+        \TYPO3\CMS\Core\Imaging\IconProvider\BitmapIconProvider::class,
+        [
+            'source' => 'EXT:phpdisplay/Resources/Public/Icons/PhpDisplay.png'
+        ]
 );
-
-
-       // Add a wizard for adding a datadisplay
-$addTemplateDisplayWizard = array(
-                                               'type' => 'script',
-                                               'title' => 'LLL:EXT:phpdisplay/Resources/Private/Language/locallang_db.xml:wizards.add_phpdisplay',
-                                               'script' => 'wizard_add.php',
-                                               'icon' => 'EXT:phpdisplay/Resources/Public/images/tx_phpdisplay_displays.png',
-                                               'params' => array(
-                                                               'table' => 'tx_phpdisplay_displays',
-                                                               'pid' => '###CURRENT_PID###',
-                                                               'setValue' => 'set'
-                                                       )
-                                               );
-$GLOBALS['TCA']['tt_content']['columns']['tx_displaycontroller_consumer']['config']['wizards']['add_phpdisplay'] = $addTemplateDisplayWizard;
-
-
-       // Register phpdisplay with the Display Controller as a Data Consumer
-t3lib_div::loadTCA('tt_content');
-$GLOBALS['TCA']['tt_content']['columns']['tx_displaycontroller_consumer']['config']['allowed'] .= ',tx_phpdisplay_displays';
-?>
\ No newline at end of file