[TASK] Deprecate DocumentTemplate methods 69/47769/8
authorBenni Mack <benni@typo3.org>
Tue, 19 Apr 2016 05:27:23 +0000 (07:27 +0200)
committerMarkus Klein <markus.klein@typo3.org>
Sat, 28 May 2016 09:38:52 +0000 (11:38 +0200)
This patch deprecates the following parameters/methods within
DocumentTemplate:

* sectionFlag (is internal)
* viewPageIcon()
* getHeader()
* getResourceHeader()
* header()
* icons()
* t3Button()
* wrapScriptTags()
* loadJavascriptLib()
* getContextMenuCode()

Resolves: #72859
Releases: master
Change-Id: I589c364ec506793439ac007b002cf28a6e1ca69d
Reviewed-on: https://review.typo3.org/47769
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/backend/Classes/Controller/LoginController.php
typo3/sysext/backend/Classes/Controller/Wizard/ColorpickerController.php
typo3/sysext/backend/Classes/Module/BaseScriptClass.php
typo3/sysext/backend/Classes/Template/DocumentTemplate.php
typo3/sysext/belog/Classes/ViewHelpers/ErrorIconViewHelper.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-72859-DeprecateMethodsOfDocumentTemplate.rst [new file with mode: 0644]
typo3/sysext/filelist/Classes/ViewHelpers/Be/ContainerViewHelper.php
typo3/sysext/fluid/Classes/ViewHelpers/Be/ContainerViewHelper.php
typo3/sysext/recordlist/Classes/Controller/ElementBrowserFramesetController.php
typo3/sysext/rtehtmlarea/Classes/Controller/UserElementsController.php
typo3/sysext/version/Classes/Controller/VersionModuleController.php

index 8172309..ba0e67c 100644 (file)
@@ -307,7 +307,7 @@ class LoginController
         if ($this->loginRefresh) {
             $formProtection->setSessionTokenFromRegistry();
             $formProtection->persistSessionToken();
-            $this->getDocumentTemplate()->JScode .= $this->getDocumentTemplate()->wrapScriptTags('
+            $this->getDocumentTemplate()->JScode .= GeneralUtility::wrapJS('
                                if (parent.opener && parent.opener.TYPO3 && parent.opener.TYPO3.LoginRefresh) {
                                        parent.opener.TYPO3.LoginRefresh.startTask();
                                        parent.close();
index a94fbff..641ae0f 100644 (file)
@@ -256,7 +256,7 @@ class ColorpickerController extends AbstractWizardController
      */
     public function frameSet()
     {
-        $this->getDocumentTemplate()->JScode = $this->getDocumentTemplate()->wrapScriptTags('
+        $this->getDocumentTemplate()->JScode = GeneralUtility::wrapJS('
                                if (!window.opener) {
                                        alert("ERROR: Sorry, no link to main window... Closing");
                                        close();
index 2bb139f..c602c63 100644 (file)
@@ -319,8 +319,6 @@ class BaseScriptClass
     /**
      * Calls the 'header' function inside the "Function menu module" if present.
      * A header function might be needed to add JavaScript or other stuff in the head. This can't be done in the main function because the head is already written.
-     * example call in the header function:
-     * $this->pObj->doc->JScode = $this->pObj->doc->wrapScriptTags(' ...
      *
      * @return void
      */
index b55ec7e..18c6eaf 100644 (file)
@@ -196,7 +196,7 @@ function jumpToUrl(URL) {
      * Indicates if a <div>-output section is open
      *
      * @var int
-     * @internal
+     * @internal will be removed in TYPO3 v9
      */
     public $sectionFlag = 0;
 
@@ -363,9 +363,11 @@ function jumpToUrl(URL) {
      *
      * @param int $id The page id
      * @return string HTML string with linked icon(s)
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     public function viewPageIcon($id)
     {
+        GeneralUtility::logDeprecatedFunction();
         // If access to Web>List for user, then link to that module.
         $str = '<a href="' . htmlspecialchars(BackendUtility::getModuleUrl('web_list', [
             'id' => $id,
@@ -390,9 +392,11 @@ function jumpToUrl(URL) {
      * @param array $tWrap is an array with indexes 0 and 1 each representing HTML-tags (start/end) which will wrap the title
      * @param bool $enableClickMenu If TRUE, render click menu code around icon image
      * @return string HTML content
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     public function getHeader($table, $row, $path, $noViewPageIcon = false, $tWrap = array('', ''), $enableClickMenu = true)
     {
+        GeneralUtility::logDeprecatedFunction();
         $viewPage = '';
         if (is_array($row) && $row['uid']) {
             $iconImgTag = '<span title="' . htmlspecialchars($path) . '">' . $this->iconFactory->getIconForRecord($table, $row, Icon::SIZE_SMALL)->render() . '</span>';
@@ -418,9 +422,11 @@ function jumpToUrl(URL) {
      * @param array $tWrap is an array with indexes 0 and 1 each representing HTML-tags (start/end) which will wrap the title
      * @param bool $enableClickMenu If TRUE, render click menu code around icon image
      * @return string
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     public function getResourceHeader(\TYPO3\CMS\Core\Resource\ResourceInterface $resource, $tWrap = array('', ''), $enableClickMenu = true)
     {
+        GeneralUtility::logDeprecatedFunction();
         try {
             $path = $resource->getStorage()->getName() . $resource->getParentFolder()->getIdentifier();
             $iconImgTag = '<span title="' . htmlspecialchars($path) . '">' . $this->iconFactory->getIconForResource($resource, Icon::SIZE_SMALL)->render() . '</span>';
@@ -660,7 +666,7 @@ function jumpToUrl(URL) {
      */
     public function endPage()
     {
-        $str = $this->sectionEnd() . $this->postCode . $this->wrapScriptTags(BackendUtility::getUpdateSignalCode()) . ($this->form ? '
+        $str = $this->postCode . GeneralUtility::wrapJS(BackendUtility::getUpdateSignalCode()) . ($this->form ? '
 </form>' : '');
         // If something is in buffer like debug, put it to end of page
         if (ob_get_contents()) {
@@ -702,9 +708,11 @@ function jumpToUrl(URL) {
      *
      * @param string $text The text string for the header
      * @return string HTML content
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 9
      */
     public function header($text)
     {
+        GeneralUtility::logDeprecatedFunction();
         $str = '
 
        <!-- MAIN Header in page top -->
@@ -923,7 +931,7 @@ function jumpToUrl(URL) {
         $content = str_replace('/*###POSTCSSMARKER###*/', $styles, $content);
 
         // Insert accumulated JS
-        $jscode = $this->JScode . LF . $this->wrapScriptTags(implode(LF, $this->JScodeArray));
+        $jscode = $this->JScode . LF . GeneralUtility::wrapJS(implode(LF, $this->JScodeArray));
         $content = str_replace('<!--###POSTJSMARKER###-->', $jscode, $content);
         return $content;
     }
@@ -1005,9 +1013,11 @@ function jumpToUrl(URL) {
      * @param int $type See description
      * @param string $styleAttribValue Value for style attribute
      * @return string HTML image tag (if applicable)
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     public function icons($type, $styleAttribValue = '')
     {
+        GeneralUtility::logDeprecatedFunction();
         switch ($type) {
             case self::STATUS_ICON_ERROR:
                 $icon = 'status-dialog-error';
@@ -1035,9 +1045,11 @@ function jumpToUrl(URL) {
      * @param string $onClick The value of the onclick attribute of the input tag (submit type)
      * @param string $label The label for the button (which will be htmlspecialchar'ed)
      * @return string A <input> tag of the type "submit
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     public function t3Button($onClick, $label)
     {
+        GeneralUtility::logDeprecatedFunction();
         $button = '<input class="btn btn-default" type="submit" onclick="' . htmlspecialchars($onClick) . '; return false;" value="' . htmlspecialchars($label) . '" />';
         return $button;
     }
@@ -1064,9 +1076,11 @@ function jumpToUrl(URL) {
      * @param string $string Input string
      * @param bool $linebreak Wrap script element in linebreaks? Default is TRUE.
      * @return string Output string
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, use GeneralUtility::wrapJS()
      */
     public function wrapScriptTags($string, $linebreak = true)
     {
+        GeneralUtility::logDeprecatedFunction();
         if (trim($string)) {
             // <script wrapped in nl?
             $cr = $linebreak ? LF : '';
@@ -1111,10 +1125,11 @@ function jumpToUrl(URL) {
      *
      * @param string $lib: Library name. Call it with the full path like "sysext/core/Resources/Public/JavaScript/QueryGenerator.js" to load it
      * @return void
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     public function loadJavascriptLib($lib)
     {
-        // @todo: maybe we can remove this one as well
+        GeneralUtility::logDeprecatedFunction();
         $this->pageRenderer->addJsFile($lib);
     }
 
@@ -1122,9 +1137,11 @@ function jumpToUrl(URL) {
      * Includes the necessary Javascript function for the clickmenu (context sensitive menus) in the document
      *
      * @return void
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     public function getContextMenuCode()
     {
+        GeneralUtility::logDeprecatedFunction();
         $this->pageRenderer->loadJquery();
         $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ClickMenu');
     }
index e4b8bcc..7ff420d 100644 (file)
@@ -15,6 +15,8 @@ namespace TYPO3\CMS\Belog\ViewHelpers;
  */
 
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
+use TYPO3\CMS\Core\Imaging\Icon;
+use TYPO3\CMS\Core\Imaging\IconFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Fluid\ViewHelpers\Be\AbstractBackendViewHelper;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
@@ -61,11 +63,15 @@ class ErrorIconViewHelper extends AbstractBackendViewHelper
     {
         $errorSymbols = array(
             '0' => '',
-            '1' => DocumentTemplate::STATUS_ICON_WARNING,
-            '2' => DocumentTemplate::STATUS_ICON_ERROR,
-            '3' => DocumentTemplate::STATUS_ICON_ERROR
+            '1' => 'status-dialog-warning',
+            '2' => 'status-dialog-error',
+            '3' => 'status-dialog-error'
         );
-        $doc = GeneralUtility::makeInstance(DocumentTemplate::class);
-        return $doc->icons($errorSymbols[$arguments['errorNumber']]);
+        if ($errorSymbols[$arguments['errorNumber']]) {
+            $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
+            return $iconFactory->getIcon($errorSymbols[$arguments['errorNumber']], Icon::SIZE_SMALL)->render();
+        } else {
+            return '';
+        }
     }
 }
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-72859-DeprecateMethodsOfDocumentTemplate.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-72859-DeprecateMethodsOfDocumentTemplate.rst
new file mode 100644 (file)
index 0000000..bab50ca
--- /dev/null
@@ -0,0 +1,47 @@
+===========================================================
+Deprecation: #72859 - Deprecate methods of DocumentTemplate
+===========================================================
+
+Description
+===========
+
+The following methods within ``DocumentTemplate`` have been marked as deprecated:
+
+* viewPageIcon()
+* getHeader()
+* getResourceHeader()
+* header()
+* icons()
+* t3Button()
+* wrapScriptTags()
+* loadJavascriptLib()
+* getContextMenuCode()
+
+The following property within ``DocumentTemplate`` has been marked as deprecated:
+
+* sectionFlag (is internal)
+
+
+Impact
+======
+
+Calling any of the methods above will trigger a deprecation log entry.
+
+
+Affected Installations
+======================
+
+Any installation with a third-party extension calling one of the methods in its PHP code.
+
+
+Migration
+=========
+
+Instead of ``wrapScriptTags()`` use ``GeneralUtility::wrapJS``.
+
+Instead of ``getContextMenuCode()`` use:
+
+.. code-block:: php
+
+    $this->getPageRenderer()->loadJquery();
+    $this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/ClickMenu');
index 5a0e829..decdf0b 100644 (file)
@@ -1,4 +1,6 @@
 <?php
+namespace TYPO3\CMS\Filelist\ViewHelpers\Be;
+
 /*
  * This file is part of the TYPO3 CMS project.
  *
@@ -11,7 +13,8 @@
  *
  * The TYPO3 project - inspiring people to share!
  */
-namespace TYPO3\CMS\Filelist\ViewHelpers\Be;
+
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * View helper which allows you to create extbase based modules in the style of TYPO3 default modules.
@@ -68,7 +71,7 @@ class ContainerViewHelper extends \TYPO3\CMS\Fluid\ViewHelpers\Be\ContainerViewH
         $content = parent::render($pageTitle, $enableClickMenu, $loadExtJs, $loadExtJsTheme, $enableExtJsDebug, $loadJQuery, $includeCssFiles, $includeJsFiles, $addJsInlineLabels, $includeRequireJsModules);
 
         $doc = $this->getDocInstance();
-        $doc->JScode .= $doc->wrapScriptTags($addJsInline);
+        $doc->JScode .= GeneralUtility::wrapJS($addJsInline);
         return $doc->insertStylesAndJS($content);
     }
 }
index d22431e..da91f5b 100644 (file)
@@ -15,6 +15,7 @@ namespace TYPO3\CMS\Fluid\ViewHelpers\Be;
  */
 
 use TYPO3\CMS\Core\Page\PageRenderer;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
 
 /**
@@ -69,11 +70,12 @@ class ContainerViewHelper extends AbstractBackendViewHelper
     {
         $pageRenderer = $this->getPageRenderer();
         $doc = $this->getDocInstance();
-        $doc->JScode .= $doc->wrapScriptTags($doc->redirectUrls());
+        $doc->JScode .= GeneralUtility::wrapJS($doc->redirectUrls());
 
         // Load various standard libraries
         if ($enableClickMenu) {
-            $doc->getContextMenuCode();
+            $pageRenderer->loadJquery();
+            $pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ClickMenu');
         }
         if ($loadExtJs) {
             $pageRenderer->loadExtJS(true, $loadExtJsTheme);
index 6c38fe4..dbbf642 100644 (file)
@@ -76,7 +76,7 @@ class ElementBrowserFramesetController
         $bparams = GeneralUtility::_GP('bparams');
         $moduleUrl = BackendUtility::getModuleUrl('wizard_element_browser') . '&mode=';
         $documentTemplate = $this->getDocumentTemplate();
-        $documentTemplate->JScode = $documentTemplate->wrapScriptTags('
+        $documentTemplate->JScode = GeneralUtility::wrapJS('
                                function closing() {    //
                                        close();
                                }
index 2738880..320d7fb 100644 (file)
@@ -112,7 +112,7 @@ class UserElementsController
         // unset the default jumpToUrl() function
         unset($this->doc->JScodeArray['jumpToUrl']);
 
-        $this->doc->JScode = $this->doc->wrapScriptTags($JScode);
+        $this->doc->JScode = GeneralUtility::wrapJS($JScode);
         $this->modData = $GLOBALS['BE_USER']->getModuleData('user.php', 'ses');
         if (\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('OC_key')) {
             $parts = explode('|', \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('OC_key'));
index b855833..944632f 100644 (file)
@@ -164,7 +164,8 @@ class VersionModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClass
         $this->doc->setModuleTemplate('EXT:version/Resources/Private/Templates/version.html');
 
         // Setting up the context sensitive menu:
-        $this->doc->getContextMenuCode();
+        $this->getPageRenderer()->loadJquery();
+        $this->getPageRenderer()->loadRequireJsModule('TYPO3/CMS/Backend/ClickMenu');
         // Getting input data:
         $this->id = (int)GeneralUtility::_GP('id');