Project

General

Profile

Actions

Epic #76862

closed

Refactor and modernise the TypoScript content renderer

Added by Elmar Hinz over 8 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
TypoScript
Target version:
-
Start date:
2015-08-04
Due date:
% Done:

100%

Estimated time:
(Total: 0.00 h)
Sprint Focus:

Description

Goals:

Refactor and modernise the content renderer to a modern architecture, that allows more flexibility and faster development cycles. Modularise the giant class by aspects of separation of concerns. Gain flexibility without loosing speed of execution. Target a test coverage of 100%. Apply PSR-2. Apply rules of encapsulation. Consider TypoScript 2 finally.

Motivation:

Since over a decade there hasn't been much improvements in TypoScript, despite regularly requested for and promised.

Reasons:

  • Monolithic character of the class, which makes it difficult to understand the class at all.
  • Functions with dozens of lines, what makes it hard to write unit tests.
  • Missing unit tests make difficult to change matters, as it is difficult to control the impact.
  • Mixture of concerns, hard to understand, to improve parts and to reuse functionality.
  • Missing encapsulation. Every internal change brings the risk to break external functionality.
  • This creates dependencies from the whole TER and users code, impeding further development.
  • Missing object orientation.

Object orientation:

The TypoScript language seems to be a configuration language of objects and PHP is an object orientated language. Still there isn't a full-blown object model below TypoScript. This has already improved over the years, but there is still a lot to do.

One reason for the current solution is performance, as objects are considered to be slow. The creation time of an object is almost zero with PHP 5 and above. Actually objects become slow, when used in the wrong way. By avoiding busy constructors and applying design patterns like singletons and flyweight, object orientation should be able compete in execution time.


Subtasks 118 (0 open118 closed)

Story #74496: Test coverage of stdWrap processorsClosed2015-08-17

Actions
Task #76275: Add unit test to cover stdWrap_removeBadHTMLClosedElmar Hinz2016-05-24

Actions
Task #76396: Add unit test to cover stdWrap_csConvClosedElmar Hinz2016-05-31

Actions
Bug #76761: Add unit test to cover stdWrap_requiredClosedElmar Hinz2016-06-23

Actions
Task #76763: Add unit test to cover stdWrap_ifClosedElmar Hinz2016-06-23

Actions
Task #76718: Add unit test to cover ContentObjectRenderer::calculateCacheKeyClosedElmar Hinz2016-06-21

Actions
Task #76711: Add unit test to cover stdWrap_stdWrapPostProcessClosedElmar Hinz2016-06-20

Actions
Task #76710: Add unit test to cover stdWrap_stdWrapProcessClosedElmar Hinz2016-06-20

Actions
Task #76709: Add unit test to cover stdWrap_stdWrapOverrideClosedElmar Hinz2016-06-20

Actions
Task #76708: Add unit test to cover stdWrap_stdWrapPreProcessClosedElmar Hinz2016-06-20

Actions
Task #76654: Add unit test to cover stdWrap_dataClosedElmar Hinz2016-06-16

Actions
Bug #76635: Add unit test to cover stdWrap_setContentToCurrentClosedElmar Hinz2016-06-15

Actions
Task #76634: Add unit test to cover stdWrap_setCurrentClosedElmar Hinz2016-06-15

Actions
Task #76610: Add unit test to cover stdWrap_langClosedElmar Hinz2016-06-13

Actions
Task #76608: Fix typos in ContentObjectRendererTestClosedElmar Hinz2016-06-13

Actions
Task #55424: Write unit tests for ContentObjectRenderer and HtmlParserClosed2015-08-17

Actions
Task #69116: Write unit tests for HtmlParser::getSubpartClosedMichael Oehlhof2015-08-17

Actions
Task #69160: Write unit tests for HtmlParser::substituteSubpartClosedMichael Oehlhof2015-08-18

Actions
Task #69175: Write unit tests for HtmlParser::substituteSubpartArrayClosedMichael Oehlhof2015-08-18

Actions
Task #69196: Write unit tests for HtmlParser::substituteMarkerClosedMichael Oehlhof2015-08-19

Actions
Task #69197: Write unit tests for HtmlParser::substituteMarkerArrayClosedMichael Oehlhof2015-08-19

Actions
Task #69264: Write unit tests for HtmlParser->splitIntoBlock()ClosedMichael Oehlhof2015-08-22

Actions
Task #69265: Write unit tests for HtmlParser->getFirstTag() and HtmlParser->getFirstTagName()ClosedMichael Oehlhof2015-08-23

Actions
Task #69266: Write unit tests for HtmlParser->removeFirstAndLastTag()ClosedMichael Oehlhof2015-08-23

Actions
Task #70128: Write unit tests for ContentObjectRenderer->stdWrap_ifEmpty()ClosedMichael Oehlhof2015-09-26

Actions
Task #70130: Write unit tests for ContentObjectRenderer->stdWrapValue()ClosedMichael Oehlhof2015-09-26

Actions
Task #70131: Write unit tests for stdWrap_trim() and stdWrap_intvalClosedMichael Oehlhof2015-09-27

Actions
Task #70165: Write unit tests for stdWrap_numberFormat()ClosedMichael Oehlhof2015-09-28

Actions
Task #70282: Write unit tests for stdWrap_expandListClosedMichael Oehlhof2015-10-01

Actions
Task #70287: Write unit tests for stdWrap_dateClosedMichael Oehlhof2015-10-02

Actions
Task #70321: Write unit tests for stdWrap_ageClosedMichael Oehlhof2015-10-02

Actions
Task #70333: Write unit tests for stdWrap_case()ClosedMichael Oehlhof2015-10-04

Actions
Task #71770: Write unit tests for stdWrap_bytes()ClosedMichael Oehlhof2015-11-22

Actions
Task #71772: Write unit tests for stdWrap_substring()ClosedMichael Oehlhof2015-11-22

Actions
Task #72664: Add Unit Tests for HtmlParserClosedBenni Mack2016-01-12

Actions
Task #76428: Add unit test to cover stdWrap_keywordsClosedElmar Hinz2016-06-02

Actions
Task #76713: Add unit test to cover stdWrap_stdWrapCacheRead and getFromCacheClosedElmar Hinz2016-06-21

Actions
Task #76717: Add unit test to cover ContentObjectRenderer::getFromCacheClosedElmar Hinz2016-06-21

Actions
Task #76553: Add unit test to cover stdWrap_htmlSpecialCharsClosedElmar Hinz2016-06-09

Actions
Task #76552: Add unit test to cover stdWrap_wrap3ClosedElmar Hinz2016-06-09

Actions
Task #76551: Add unit test to cover stdWrap_wrap2ClosedElmar Hinz2016-06-09

Actions
Task #76550: Add unit test to cover stdWrap_outerWrapClosedElmar Hinz2016-06-09

Actions
Task #76549: Add unit test to cover stdWrap_innerWrap2ClosedElmar Hinz2016-06-09

Actions
Task #76548: Add unit test to cover stdWrap_innerWrapClosedElmar Hinz2016-06-09

Actions
Task #76547: Add unit test to cover stdWrap_wrapClosedElmar Hinz2016-06-09

Actions
Task #76537: Add unit test to cover stdWrap_doubleBrTagClosedElmar Hinz2016-06-09

Actions
Task #76409: Add unit test to cover stdWrap_brClosedElmar Hinz2016-05-31

Actions
Task #76383: Deprecate TypoScript stdWrap fontTagClosedElmar Hinz2016-05-31

Actions
Task #76316: Add unit test to cover stdWrap_charClosedElmar Hinz2016-05-27

Actions
Task #76307: Add unit test to cover stdWrap_brTagClosedElmar Hinz2016-05-26

Actions
Task #76733: Add unit test to cover stdWrap_fieldClosedElmar Hinz2016-06-22

Actions
Task #76734: Add unit test to cover stdWrap_currentClosedElmar Hinz2016-06-22

Actions
Task #76735: Add unit test to cover stdWrap_cObjectClosedElmar Hinz2016-06-22

Actions
Task #76736: Add unit test to cover stdWrap_numRowsClosedElmar Hinz2016-06-22

Actions
Bug #76294: Add unit test to cover stdWrap_rawUrlEncode()ClosedElmar Hinz2016-05-25

Actions
Task #76261: Add unit test to cover stdWrap_stripHTMLClosedElmar Hinz2016-05-23

Actions
Task #76783: Refactor unit test to cover stdWrap_substringClosedElmar Hinz2016-06-24

Actions
Bug #76782: Refactor unit test to cover stdWrap_bytesClosedElmar Hinz2016-06-24

Actions
Bug #76781: Refactor unit test to cover stdWrap_caseClosedElmar Hinz2016-06-24

Actions
Task #76738: Add unit test to cover stdWrap_filelistClosedElmar Hinz2016-06-22

Actions
Task #76740: Add unit test to cover stdWrap_preUserFuncClosedElmar Hinz2016-06-22

Actions
Task #76741: Add unit test to cover stdWrap_overrideClosedElmar Hinz2016-06-22

Actions
Task #76743: Add unit test to cover stdWrap_preIfEmptyListNumClosedElmar Hinz2016-06-22

Actions
Task #76751: Add unit test to cover stdWrap_ifBlankClosedElmar Hinz2016-06-23

Actions
Task #76752: Refactor unit test to cover stdWrap_ifEmptyClosedElmar Hinz2016-06-23

Actions
Task #76780: Refactor unit test to cover stdWrap_ageClosedElmar Hinz2016-06-24

Actions
Task #76779: Refactor unit test to cover stdWrap_strftimeClosedElmar Hinz2016-06-24

Actions
Task #76778: Refactor unit test to cover stdWrap_strtotimeClosedElmar Hinz2016-06-24

Actions
Task #76777: Refactor unit test to cover stdWrap_dataClosedElmar Hinz2016-06-24

Actions
Task #76776: Refactor unit test to cover stdWrap_expandListClosedElmar Hinz2016-06-24

Actions
Task #76775: Refactor unit test to cover stdWrap_numberFormatClosedElmar Hinz2016-06-24

Actions
Task #76774: Refactor unit test to cover stdWrap_roundClosedElmar Hinz2016-06-24

Actions
Task #76773: Refactor unit test to cover stdWrap_hashClosedElmar Hinz2016-06-24

Actions
Task #76772: Refactor unit test to cover stdWrap_intvalClosedElmar Hinz2016-06-24

Actions
Task #76771: Add unit test to cover stdWrap_ prioriCalcClosedElmar Hinz2016-06-24

Actions
Task #76770: Refactor unit test to cover stdWrap_ replacementClosedElmar Hinz2016-06-24

Actions
Task #76753: Refactor unit test to cover stdWrap_ifNullClosedElmar Hinz2016-06-23

Actions
Task #76754: Add unit test to cover stdWrap_listNumClosedElmar Hinz2016-06-23

Actions
Bug #76755: Add unit test to cover stdWrap_trimClosedElmar Hinz2016-06-23

Actions
Task #76756: Refactor unit test to cover stdWrap_strPadClosedElmar Hinz2016-06-23

Actions
Task #76757: Add unit test to cover stdWrap_stdWrap ClosedElmar Hinz2016-06-23

Actions
Task #76764: Add unit test to cover stdWrap_fieldRequiredClosedElmar Hinz2016-06-23

Actions
Task #76767: Add unit test to cover stdWrap_parseFunc.ClosedElmar Hinz2016-06-24

Actions
Task #76768: Add unit test to cover stdWrap_HTMLparserClosedElmar Hinz2016-06-24

Actions
Task #76769: Add unit test to cover stdWrap_ splitClosedElmar Hinz2016-06-24

Actions
Task #76826: Add unit test to cover stdWrap_cropClosedElmar Hinz2016-06-28

Actions
Task #76827: Add unit test to cover stdWrap_cropHTMLClosedElmar Hinz2016-06-28

Actions
Task #76828: Add unit test to cover stdWrap_encapsLinesClosedElmar Hinz2016-06-28

Actions
Task #76829: Refactor unit test to cover stdWrap_encodeForJavaScriptValueClosedElmar Hinz2016-06-28

Actions
Task #76832: Add unit test to cover stdWrap_addParamsClosed2016-06-28

Actions
Task #76833: Add unit test to cover stdWrap_filelinkClosedElmar Hinz2016-06-28

Actions
Task #76834: Add unit test to cover stdWrap_preCObjectClosedElmar Hinz2016-06-28

Actions
Task #76835: Add unit test to cover stdWrap_postCObjectClosedElmar Hinz2016-06-28

Actions
Task #76836: Add unit test to cover stdWrap_wrapAlignClosedElmar Hinz2016-06-28

Actions
Task #76837: Add unit test to cover stdWrap_typolinkClosedElmar Hinz2016-06-28

Actions
Task #76838: Add unit test to cover stdWrap_TCAselectItemClosedElmar Hinz2016-06-28

Actions
Task #76839: Add unit test to cover stdWrap_spaceClosedElmar Hinz2016-06-28

Actions
Task #76840: Add unit test to cover stdWrap_spaceBeforeClosedElmar Hinz2016-06-28

Actions
Bug #76841: Add unit test to cover stdWrap_spaceAfterClosedElmar Hinz2016-06-28

Actions
Task #76842: Refactor unit test to cover stdWrap_noTrimWrapClosedElmar Hinz2016-06-28

Actions
Bug #76843: Add unit test to cover stdWrap_dataWrapClosedElmar Hinz2016-06-28

Actions
Task #76845: Add unit test to cover stdWrap_prependClosed2016-06-28

Actions
Task #76846: Add unit test to cover stdWrap_appendClosedElmar Hinz2016-06-28

Actions
Task #76847: Add unit test to cover stdWrap_orderedStdWrapClosedElmar Hinz2016-06-28

Actions
Task #76848: Add unit test to cover stdWrap_insertDataClosedElmar Hinz2016-06-28

Actions
Task #76849: Add unit test to cover stdWrap_postUserFuncClosedElmar Hinz2016-06-28

Actions
Task #76850: Add unit test to cover stdWrap_postUserFuncIntClosedElmar Hinz2016-06-28

Actions
Task #76851: Add unit test to cover stdWrap_prefixCommentClosedElmar Hinz2016-06-28

Actions
Task #76852: Add unit test to cover stdWrap_editIconsClosedElmar Hinz2016-06-28

Actions
Task #76853: Add unit test to cover stdWrap_editPanelClosedElmar Hinz2016-06-28

Actions
Task #76854: Add unit test to cover stdWrap_cacheStoreClosedElmar Hinz2016-06-28

Actions
Task #76856: Add unit test to cover stdWrap_debugFuncClosedElmar Hinz2016-06-28

Actions
Task #76855: Add unit test to cover stdWrap_debugClosedElmar Hinz2016-06-28

Actions
Task #76858: Add unit test to cover stdWrap_debugDataClosedElmar Hinz2016-06-28

Actions
Task #76894: Add unit test to show that all stdWrap_ methods are callableClosedElmar Hinz2016-06-30

Actions
Task #76981: Put stdWrap unit test methods into an alphabetical orderClosedElmar Hinz2016-07-07

Actions
Story #76896: Move stdWrap processing from ContentObjectRenderer into a separate classClosedElmar Hinz2016-06-30

Actions
Task #68733: Cleanup ContentObjectRenderer: Introduduce an Interface for processors of stdWrapRejectedElmar Hinz2015-08-04

Actions
Actions

Also available in: Atom PDF