# snippet to render content elements lib.tx_mask.content = RECORDS lib.tx_mask.content { tables = tt_content source.current = 1 dontCheckPid = 1 } # mask content elements are rendered with this snippet lib.maskContentElement = FLUIDTEMPLATE lib.maskContentElement { dataProcessing { 100 = MASK\Mask\DataProcessing\MaskProcessor } } # Temporary page cObject: temp.mask.page = PAGE temp.mask.page { 10 = FLUIDTEMPLATE 10 { file.stdWrap.cObject = CASE file.stdWrap.cObject { key.data = levelfield:-1, backend_layout_next_level, slide key.override.field = backend_layout default = TEXT default.value = fileadmin/templates/default.html } } headerData.10 = CASE headerData.10 { key.data = levelfield:-1, backend_layout_next_level, slide key.override.field = backend_layout } } # Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!) lib.parseFunc { makelinks = 1 makelinks.http.keep = path makelinks.http.extTarget < lib.parseTarget makelinks.http.extTarget = makelinks.http.extTarget.override = _blank makelinks.mailto.keep = path tags { link = TEXT link { current = 1 typolink.parameter.data = parameters : allParams typolink.extTarget < lib.parseTarget typolink.extTarget = typolink.extTarget.override = _blank typolink.target < lib.parseTarget parseFunc.constants = 1 } } allowTags = a, abbr, acronym, address, article, aside, b, bdo, big, blockquote, br, caption, center, cite, code, col, colgroup, dd, del, dfn, dl, div, dt, em, font, footer, header, h1, h2, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, meta, nav, ol, p, pre, q, samp, sdfield, section, small, span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var denyTags = * constants = 1 nonTypoTagStdWrap.HTMLparser = 1 nonTypoTagStdWrap.HTMLparser { keepNonMatchedTags = 1 htmlSpecialChars = 2 } } # Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "ts_css" transformation. lib.parseFunc_RTE < lib.parseFunc lib.parseFunc_RTE { // makelinks > # Processing and
blocks separately externalBlocks = article, aside, blockquote, div, dd, dl, footer, header, nav, ol, section, table, ul externalBlocks { # The blockquote content is passed into parseFunc again... blockquote.stripNL = 1 blockquote.callRecursive = 1 blockquote.callRecursive.tagStdWrap.HTMLparser = 1 blockquote.callRecursive.tagStdWrap.HTMLparser.tags.blockquote.overrideAttribs = style="margin-bottom:0;margin-top:0;" ol.stripNL = 1 ol.stdWrap.parseFunc =< lib.parseFunc ul.stripNL = 1 ul.stdWrap.parseFunc =< lib.parseFunc table.stripNL = 1 table.stdWrap.HTMLparser = 1 table.stdWrap.HTMLparser.tags.table.fixAttrib.class { default = contenttable always = 1 list = contenttable } table.stdWrap.HTMLparser.keepNonMatchedTags = 1 table.HTMLtableCells = 1 table.HTMLtableCells { # Recursive call to self but without wrapping non-wrapped cell content default.stdWrap { parseFunc =< lib.parseFunc_RTE parseFunc.nonTypoTagStdWrap.encapsLines.nonWrappedTag = } addChr10BetweenParagraphs = 1 } div.stripNL = 1 div.callRecursive = 1 article < .div aside < .div footer < .div header < .div nav < .div section < .div # Definition list processing dl < .div dd < .div } nonTypoTagStdWrap.encapsLines { encapsTagList = p,pre,h1,h2,h3,h4,h5,h6,hr,dt remapTag.DIV = P nonWrappedTag = P innerStdWrap_all.ifBlank =   addAttributes.P.class.setOnly = blank } nonTypoTagStdWrap.HTMLparser = 1 nonTypoTagStdWrap.HTMLparser { keepNonMatchedTags = 1 htmlSpecialChars = 2 } }