26 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
27 $subject->setCharSet(
'utf-8');
28 $subject->setLanguage(
'default');
30 $prologueString = $expectedPrologueString =
'<?xml version="1.0" encoding="utf-8" ?>';
31 $subject->setXmlPrologAndDocType($prologueString);
34 $subject->setTitle($title);
35 $expectedTitleString =
'<title>' . $title .
'</title>';
38 $subject->setCharSet($charset);
39 $expectedCharsetString =
'<meta http-equiv="Content-Type" content="text/html; charset=' . $charset .
'" />';
41 $favouriteIcon =
'http://google.com/favicon.ico';
42 $subject->setFavIcon($favouriteIcon);
43 $expectedFavouriteIconPartOne =
'<link rel="shortcut icon" href="' . $favouriteIcon .
'" />';
44 $expectedFavouriteIconPartTwo =
'<link rel="icon" href="' . $favouriteIcon .
'" />';
46 $baseUrl =
'http://google.com/';
47 $subject->setBaseUrl($baseUrl);
48 $expectedBaseUrlString =
'<base href="' . $baseUrl .
'" />';
50 $metaTag = $expectedMetaTagString =
'<meta name="author" content="Anna Lyse">';
51 $subject->addMetaTag($metaTag);
54 $subject->addInlineComment($inlineComment);
55 $expectedInlineCommentString =
'<!-- ' . LF . $inlineComment .
'-->';
57 $headerData = $expectedHeaderData =
'<tag method="private" name="test" />';
58 $subject->addHeaderData($headerData);
60 $subject->addJsLibrary(
'test',
'fileadmin/test.js',
'text/javascript', FALSE, FALSE,
'wrapBeforeXwrapAfter', FALSE,
'X');
61 $expectedJsLibraryRegExp =
'#wrapBefore<script src="fileadmin/test\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>wrapAfter#';
63 $subject->addJsFile(
'fileadmin/test.js',
'text/javascript', FALSE, FALSE,
'wrapBeforeXwrapAfter', FALSE,
'X');
64 $expectedJsFileRegExp =
'#wrapBefore<script src="fileadmin/test\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>wrapAfter#';
66 $jsInlineCode = $expectedJsInlineCodeString =
'var x = "' . $this->
getUniqueId(
'jsInline-') .
'"';
67 $subject->addJsInlineCode($this->
getUniqueId(), $jsInlineCode);
69 $extOnReadyCode = $expectedExtOnReadyCodePartOne = $this->
getUniqueId(
'extOnReady-');
70 $expectedExtOnReadyCodePartTwo =
'Ext.onReady(function() {';
71 $subject->loadExtJS();
72 $subject->addExtOnReadyCode($extOnReadyCode);
75 $expectedCssFileString =
'wrapBefore<link rel="stylesheet" type="text/css" href="' . $cssFile .
'" media="print" />wrapAfter';
76 $subject->addCssFile($cssFile,
'stylesheet',
'print',
'', TRUE, FALSE,
'wrapBeforeXwrapAfter', FALSE,
'X');
78 $expectedCssInlineBlockOnTopString =
'/*general3*/' . LF .
'h1 {margin:20px;}' . LF .
'/*general2*/' . LF .
'body {margin:20px;}';
79 $subject->addCssInlineBlock(
'general2',
'body {margin:20px;}');
80 $subject->addCssInlineBlock(
'general3',
'h1 {margin:20px;}', NULL, TRUE);
82 $expectedLoadPrototypeRegExp =
'#<script src="contrib/prototype/prototype\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>#';
83 $subject->loadPrototype();
85 $subject->loadScriptaculous(
'slider,controls');
86 $expectedScriptaculousMain =
'<script src="contrib/scriptaculous/scriptaculous.js" type="text/javascript"></script>';
87 $expectedScriptaculousEffects =
'<script src="contrib/scriptaculous/effects.js" type="text/javascript"></script>';
88 $expectedScriptaculousControls =
'<script src="contrib/scriptaculous/controls.js" type="text/javascript"></script>';
89 $expectedScriptaculousSlider =
'<script src="contrib/scriptaculous/slider.js" type="text/javascript"></script>';
91 $subject->loadJquery();
93 $expectedJqueryStatement =
'var TYPO3 = TYPO3 || {}; TYPO3.jQuery = jQuery.noConflict(true);';
95 $subject->loadExtJS(TRUE, TRUE,
'jquery');
96 $expectedExtJsRegExp =
'#<script src="contrib/extjs/adapter/jquery/ext-jquery-adapter\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>' . LF .
'<script src="contrib/extjs/ext-all\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>#m';
98 $expectedBodyContent = $this->
getUniqueId(
'ABCDE-');
99 $subject->setBodyContent($expectedBodyContent);
101 $renderedString = $subject->render();
103 $this->assertContains($expectedPrologueString, $renderedString);
104 $this->assertContains($expectedTitleString, $renderedString);
105 $this->assertContains($expectedCharsetString, $renderedString);
106 $this->assertContains($expectedFavouriteIconPartOne, $renderedString);
107 $this->assertContains($expectedFavouriteIconPartTwo, $renderedString);
108 $this->assertContains($expectedBaseUrlString, $renderedString);
109 $this->assertContains($expectedMetaTagString, $renderedString);
110 $this->assertContains($expectedInlineCommentString, $renderedString);
111 $this->assertContains($expectedHeaderData, $renderedString);
112 $this->assertRegExp($expectedJsLibraryRegExp, $renderedString);
113 $this->assertRegExp($expectedJsFileRegExp, $renderedString);
114 $this->assertContains($expectedJsInlineCodeString, $renderedString);
115 $this->assertContains($expectedExtOnReadyCodePartOne, $renderedString);
116 $this->assertContains($expectedExtOnReadyCodePartTwo, $renderedString);
117 $this->assertContains($expectedCssFileString, $renderedString);
118 $this->assertContains($expectedCssInlineBlockOnTopString, $renderedString);
119 $this->assertRegExp($expectedLoadPrototypeRegExp, $renderedString);
120 $this->assertContains($expectedScriptaculousMain, $renderedString);
121 $this->assertContains($expectedScriptaculousEffects, $renderedString);
122 $this->assertContains($expectedScriptaculousControls, $renderedString);
123 $this->assertContains($expectedScriptaculousSlider, $renderedString);
124 $this->assertRegExp($expectedJqueryRegExp, $renderedString);
125 $this->assertContains($expectedJqueryStatement, $renderedString);
126 $this->assertRegExp($expectedExtJsRegExp, $renderedString);
127 $this->assertContains($expectedBodyContent, $renderedString);
134 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
135 $subject->setCharSet(
'utf-8');
136 $subject->setLanguage(
'default');
138 $subject->enableMoveJsFromHeaderToFooter();
140 $footerData = $expectedFooterData =
'<tag method="private" name="test" />';
141 $subject->addFooterData($footerData);
143 $expectedJsFooterLibraryRegExp =
'#wrapBefore<script src="fileadmin/test\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>wrapAfter#';
144 $subject->addJsFooterLibrary(
'test',
'fileadmin/test.js',
'text/javascript', FALSE, FALSE,
'wrapBeforeXwrapAfter', FALSE,
'X');
146 $expectedJsFooterRegExp =
'#wrapBefore<script src="fileadmin/test\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>wrapAfter#';
147 $subject->addJsFooterFile(
'fileadmin/test.js',
'text/javascript', FALSE, FALSE,
'wrapBeforeXwrapAfter', FALSE,
'X');
149 $jsFooterInlineCode = $expectedJsFooterInlineCodeString =
'var x = "' . $this->
getUniqueId(
'jsFooterInline-') .
'"';
150 $subject->addJsFooterInlineCode($this->
getUniqueId(), $jsFooterInlineCode);
153 $subject->loadExtJS();
154 $subject->addInlineLanguageLabel(
'myKey',
'myValue');
155 $subject->addInlineLanguageLabelArray(array(
156 'myKeyArray1' =>
'myValueArray1',
157 'myKeyArray2' =>
'myValueArray2' 159 $subject->addInlineLanguageLabelArray(array(
160 'myKeyArray3' =>
'myValueArray3' 162 $expectedInlineLabelReturnValue =
'TYPO3.lang = {"myKey":"myValue","myKeyArray1":"myValueArray1","myKeyArray2":"myValueArray2","myKeyArray3":"myValueArray3"';
164 $subject->addInlineLanguageLabelFile(
'EXT:lang/locallang_core.xlf');
165 $expectedLanguageLabel1 =
'labels.beUser';
166 $expectedLanguageLabel2 =
'labels.feUser';
169 $subject->addInlineSetting(
'myApp',
'myKey',
'myValue');
170 $subject->addInlineSettingArray(
'myApp', array(
171 'myKey1' =>
'myValue1',
172 'myKey2' =>
'myValue2' 174 $subject->addInlineSettingArray(
'myApp', array(
175 'myKey3' =>
'myValue3' 177 $expectedInlineSettingsReturnValue =
'TYPO3.settings = {"myApp":{"myKey":"myValue","myKey1":"myValue1","myKey2":"myValue2","myKey3":"myValue3"}';
179 $renderedString = $subject->render(\
TYPO3\CMS\Core\Page\PageRenderer::PART_FOOTER);
181 $this->assertContains($expectedFooterData, $renderedString);
182 $this->assertRegExp($expectedJsFooterLibraryRegExp, $renderedString);
183 $this->assertRegExp($expectedJsFooterRegExp, $renderedString);
184 $this->assertContains($expectedJsFooterInlineCodeString, $renderedString);
185 $this->assertContains($expectedInlineLabelReturnValue, $renderedString);
186 $this->assertContains($expectedLanguageLabel1, $renderedString);
187 $this->assertContains($expectedLanguageLabel2, $renderedString);
188 $this->assertContains($expectedInlineSettingsReturnValue, $renderedString);
195 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
197 $_SERVER[
'HTTP_ACCEPT_ENCODING'] =
'gzip,deflate';
198 $GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'compressionLevel'] =
'5';
199 $subject->loadScriptaculous(
'slider,controls');
200 $subject->enableCompressJavascript();
201 $out = $subject->render();
202 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/scriptaculous-[a-f0-9]+.js.gzip" type="text/javascript"></script>#', $out);
203 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/effects-[a-f0-9]+.js.gzip" type="text/javascript"></script>#', $out);
204 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/controls-[a-f0-9]+.js.gzip" type="text/javascript"></script>#', $out);
205 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/slider-[a-f0-9]+.js.gzip" type="text/javascript"></script>#', $out);
212 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
214 $_SERVER[
'HTTP_ACCEPT_ENCODING'] =
'';
215 $GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'compressionLevel'] =
'5';
216 $subject->loadScriptaculous(
'slider,controls');
217 $subject->enableCompressJavascript();
218 $out = $subject->render();
219 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/scriptaculous-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
220 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/effects-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
221 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/controls-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
222 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/slider-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
229 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
231 $_SERVER[
'HTTP_ACCEPT_ENCODING'] =
'gzip,deflate';
232 $GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'compressionLevel'] =
'';
233 $subject->loadScriptaculous(
'slider,controls');
234 $subject->enableCompressJavascript();
235 $out = $subject->render();
236 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/scriptaculous-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
237 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/effects-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
238 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/controls-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
239 $this->assertRegExp(
'#<script src="[^"]*/typo3temp/compressor/slider-[a-f0-9]+.js" type="text/javascript"></script>#', $out);
246 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
249 $expectedStatement =
'var TYPO3 = TYPO3 || {}; TYPO3.MyNameSpace = jQuery.noConflict(true);';
250 $subject->loadJquery(NULL, NULL,
'MyNameSpace');
251 $out = $subject->render();
252 $this->assertRegExp($expectedRegExp, $out);
253 $this->assertContains($expectedStatement, $out);
260 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
263 $expectedStatement =
'jQuery.noConflict();';
264 $subject->loadJquery(NULL, NULL, \
TYPO3\CMS\Core\Page\PageRenderer::JQUERY_NAMESPACE_DEFAULT_NOCONFLICT);
265 $out = $subject->render();
266 $this->assertRegExp($expectedRegExp, $out);
267 $this->assertContains($expectedStatement, $out);
268 $this->assertNotContains(
'var TYPO3 = TYPO3 || {}; TYPO3.', $out);
275 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
278 $subject->loadJquery(NULL, NULL, \
TYPO3\CMS\Core\Page\PageRenderer::JQUERY_NAMESPACE_NONE);
279 $out = $subject->render();
280 $this->assertRegExp($expectedRegExp, $out);
281 $this->assertNotContains(
'jQuery.noConflict', $out);
288 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
291 $expectedStatement =
'var TYPO3 = TYPO3 || {}; TYPO3.jQuery = jQuery.noConflict(true);';
292 $subject->loadJquery();
293 $subject->enableDebugMode();
294 $out = $subject->render();
295 $this->assertRegExp($expectedRegExp, $out);
296 $this->assertContains($expectedStatement, $out);
304 'google with version number' => array(
307 '#<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.js" type="text/javascript"></script>#' 309 'msn with version number' => array(
312 '#<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.3.js" type="text/javascript"></script>#' 314 'jquery with version number' => array(
317 '#<script src="http://code.jquery.com/jquery-1.6.3.js" type="text/javascript"></script>#' 319 'jquery with custom URL' => array(
321 'http://my.cool.cdn/foo/jquery.js',
322 '#<script src="http://my.cool.cdn/foo/jquery.js" type="text/javascript"></script>#' 332 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
334 $subject->loadJquery($version, $source);
335 $subject->enableDebugMode();
336 $out = $subject->render();
337 $this->assertRegExp($regex, $out);
344 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
346 $expectedRegex =
'#<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js" type="text/javascript"></script>#';
347 $subject->loadJquery(
'1.6.3',
'google');
348 $out = $subject->render();
349 $this->assertRegExp($expectedRegex, $out);
356 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
358 $expectedRegExp =
'#<script src="contrib/extjs/ext-all-debug\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>#';
359 $subject->loadExtJS(TRUE, TRUE,
'jquery');
360 $subject->enableExtJsDebug();
361 $out = $subject->render();
362 $this->assertRegExp($expectedRegExp, $out);
369 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
371 $expectedRegExp =
'#<script src="contrib/extjs/ext-core\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>#';
372 $subject->loadExtCore();
373 $out = $subject->render();
374 $this->assertRegExp($expectedRegExp, $out);
381 $subject = new \TYPO3\CMS\Core\Page\PageRenderer();
383 $expectedRegExp =
'#<script src="contrib/extjs/ext-core-debug\\.(js|\\d+\\.js|js\\?\\d+)" type="text/javascript"></script>#';
384 $subject->loadExtCore();
385 $subject->enableExtCoreDebug();
386 $out = $subject->render();
387 $this->assertRegExp($expectedRegExp, $out);
loadJqueryLoadsTheLatestJqueryVersionInNoConflictModeUncompressedInDebugMode()
loadExtCoreInDebugLoadsDebugExtCore()
pageRendererRendersFooterValues()
isScriptaculousNotLoadedCompressedIfCompressionIsNotConfigured()
loadExtCoreLoadsExtCore()
loadJqueryRespectsGivenNamespace()
pageRendererRendersInsertsMainContentStringsInOutput()
isScriptaculousNotLoadedCompressedIfClientCannotHandleCompression()
loadExtJsInDebugLoadsDebugExtJs()
const JQUERY_VERSION_LATEST
loadJqueryFromSourceDataProvider()
loadJqueryWithNamespaceNoneDoesNotIncludeNoConflictHandling()
isScriptaculousLoadedCompressedIfConfiguredAndClientIsCapable()
isJqueryLoadedMinifiedFromGoogleByDefault()
isJqueryLoadedFromSourceUncompressedIfDebugModeIsEnabled($version, $source, $regex)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]
loadJqueryWithDefaultNoConflictModeDoesNotSetNamespace()