[BUGFIX] RTE: Multi-line lists in default PageTS configs cause problems 36/33936/2
authorStanislas Rolland <typo3@sjbr.ca>
Mon, 10 Nov 2014 03:28:10 +0000 (22:28 -0500)
committerStanislas Rolland <typo3@sjbr.ca>
Mon, 10 Nov 2014 03:34:52 +0000 (04:34 +0100)
Problem: For the sake of clarity, some of the RTE default PageTS
configurations specify lists as multi-line values. If any of these is
ever json-encoded, as some are, for use in JavaScript, some entries in
the list will start with a line feed.
Solution: Use addToList syntax for each additional line.

Releases: master, 6.2
Resolves: #62805
Change-Id: I6cb5eb6556adf2c61bd2610bb6653d767b5972c8
Reviewed-on: http://review.typo3.org/33936
Reviewed-by: Stanislas Rolland <typo3@sjbr.ca>
Tested-by: Stanislas Rolland <typo3@sjbr.ca>
typo3/sysext/rtehtmlarea/Documentation/DefaultConfigurations/Default/Index.rst
typo3/sysext/rtehtmlarea/Documentation/DefaultConfigurations/Demo/Index.rst
typo3/sysext/rtehtmlarea/Documentation/DefaultConfigurations/Typical/Index.rst
typo3/sysext/rtehtmlarea/res/demo/pageTSConfig.txt
typo3/sysext/rtehtmlarea/res/proc/pageTSConfig.txt
typo3/sysext/rtehtmlarea/res/typical/pageTSConfig.txt

index b3a948f..3a7082f 100644 (file)
@@ -97,11 +97,9 @@ insert img tags.
 
 ::
 
-      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
-      )
+      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
+      allowTags := addToList(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)
+      allowTags := addToList(span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var)
 
 ## TAGS DENIED
 
index 8b21286..c758649 100644 (file)
@@ -195,25 +195,21 @@ database
 
 ::
 
-      proc.allowedClasses (
-              external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail,
-              align-left, align-center, align-right, align-justify,
-              csc-frame-frame1, csc-frame-frame2,
-              component-items, action-items,
-              component-items-ordered, action-items-ordered,
-              important, name-of-person, detail,
-              indent
-      )
+      proc.allowedClasses = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
+      proc.allowedClasses := addToList(align-left, align-center, align-right, align-justify)
+      proc.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
+      proc.allowedClasses := addToList(component-items, action-items)
+      proc.allowedClasses := addToList(component-items-ordered, action-items-ordered)
+      proc.allowedClasses := addToList(important, name-of-person, detail)
+      proc.allowedClasses := addToList(indent)
 
 ## Restrict the list of class selectors presented by the RTE to the
 following for the specified tags:
 
 ::
 
-      buttons.blockstyle.tags.div.allowedClasses (
-              align-left, align-center, align-right,
-              csc-frame-frame1, csc-frame-frame2
-      )
+      buttons.blockstyle.tags.div.allowedClasses = align-left, align-center, align-right
+      buttons.blockstyle.tags.div.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
       buttons.blockstyle.tags.table.allowedClasses = csc-frame-frame1, csc-frame-frame2
       buttons.blockstyle.tags.td.allowedClasses = align-left, align-center, align-right
       buttons.textstyle.tags.span.allowedClasses = important, name-of-person, detail
index 28c5de7..7083b09 100644 (file)
@@ -141,16 +141,14 @@ feature
 
 ::
 
-      showButtons (
-                   blockstylelabel, blockstyle, textstylelabel, textstyle,
-                   formatblock, bold, italic, subscript, superscript,
-                   orderedlist, unorderedlist, outdent, indent, textindicator,
-                   insertcharacter, link, table, findreplace, chMode, removeformat, undo, redo, about,
-                   toggleborders, tableproperties,
-                   rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit,
-                   columninsertbefore, columninsertafter, columndelete, columnsplit,
-                   cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge
-      )
+      showButtons = blockstylelabel, blockstyle, textstylelabel, textstyle
+      showButtons := addToList(formatblock, bold, italic, subscript, superscript)
+      showButtons := addToList(orderedlist, unorderedlist, outdent, indent, textindicator)
+      showButtons := addToList(insertcharacter, link, table, findreplace, chMode, removeformat, undo, redo, about)
+      showButtons := addToList(toggleborders, tableproperties)
+      showButtons := addToList(rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit)
+      showButtons := addToList(columninsertbefore, columninsertafter, columndelete, columnsplit)
+      showButtons := addToList(cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge)
 
 ## More toolbar options
 
@@ -175,25 +173,21 @@ database
 
 ::
 
-      proc.allowedClasses (
-              external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail,
-              align-left, align-center, align-right, align-justify,
-              csc-frame-frame1, csc-frame-frame2,
-              component-items, action-items,
-              component-items-ordered, action-items-ordered,
-              important, name-of-person, detail,
-              indent
-      )
+      proc.allowedClasses = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
+      proc.allowedClasses := addToList(align-left, align-center, align-right, align-justify)
+      proc.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
+      proc.allowedClasses := addToList(component-items, action-items)
+      proc.allowedClasses := addToList(component-items-ordered, action-items-ordered)
+      proc.allowedClasses := addToList(important, name-of-person, detail)
+      proc.allowedClasses := addToList(indent)
 
 ## Restrict the list of class selectors presented by the RTE to the
 following for the specified tags:
 
 ::
 
-      buttons.blockstyle.tags.div.allowedClasses (
-              align-left, align-center, align-right,
-              csc-frame-frame1, csc-frame-frame2
-      )
+      buttons.blockstyle.tags.div.allowedClasses = align-left, align-center, align-right
+      buttons.blockstyle.tags.div.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
       buttons.blockstyle.tags.table.allowedClasses = csc-frame-frame1, csc-frame-frame2
       buttons.blockstyle.tags.td.allowedClasses = align-left, align-center, align-right
       buttons.textstyle.tags.span.allowedClasses = important, name-of-person, detail
index 6863409..16a9acd 100644 (file)
@@ -135,21 +135,17 @@ RTE.default {
        proc.entryHTMLparser_db.removeTags := removeFromList(font,strike,u)
 
                ## List all class selectors that are allowed on the way to the database
-       proc.allowedClasses (
-               external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail,
-               align-left, align-center, align-right, align-justify,
-               csc-frame-frame1, csc-frame-frame2,
-               component-items, action-items,
-               component-items-ordered, action-items-ordered,
-               important, name-of-person, detail,
-               indent
-       )
+       proc.allowedClasses = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
+       proc.allowedClasses := addToList(align-left, align-center, align-right, align-justify)
+       proc.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
+       proc.allowedClasses := addToList(component-items, action-items)
+       proc.allowedClasses := addToList(component-items-ordered, action-items-ordered)
+       proc.allowedClasses := addToList(important, name-of-person, detail)
+       proc.allowedClasses := addToList(indent)
 
                ## Restrict the list of class selectors presented by the RTE to the following for the specified tags:
-       buttons.blockstyle.tags.div.allowedClasses (
-               align-left, align-center, align-right,
-               csc-frame-frame1, csc-frame-frame2
-       )
+       buttons.blockstyle.tags.div.allowedClasses = align-left, align-center, align-right
+       buttons.blockstyle.tags.div.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
        buttons.blockstyle.tags.table.allowedClasses = csc-frame-frame1, csc-frame-frame2
        buttons.blockstyle.tags.td.allowedClasses = align-left, align-center, align-right
        buttons.textstyle.tags.span.allowedClasses = important, name-of-person, detail
index 5a44ce1..bfbc1dc 100644 (file)
@@ -37,11 +37,9 @@ RTE.default.proc {
                ## center, font, link, meta, o:p, strike, sdfield, style, title and u will be removed on entry (see below).
                ## b and i will be remapped on exit (see below).
                ## Note that the link accessibility feature of htmlArea RTE does insert img tags.
-       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
-               )
+       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
+       allowTags := addToList(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)
+       allowTags := addToList(span, strike, strong, style, sub, sup, table, thead, tbody, tfoot, td, th, tr, title, tt, u, ul, var)
 
                ## TAGS DENIED
                ## Make sure we can set rules on any tag listed in allowTags.
index e877608..0d043db 100644 (file)
@@ -105,16 +105,14 @@ RTE.default {
 
                ## Toolbar options
                ## The TCA configuration may add buttons to the toolbar
-       showButtons (
-               blockstylelabel, blockstyle, textstylelabel, textstyle,
-               formatblock, bold, italic, subscript, superscript,
-               orderedlist, unorderedlist, outdent, indent, textindicator,
-               insertcharacter, link, table, findreplace, chMode, removeformat, undo, redo, about,
-               toggleborders, tableproperties,
-               rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit,
-               columninsertbefore, columninsertafter, columndelete, columnsplit,
-               cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge
-       )
+       showButtons = blockstylelabel, blockstyle, textstylelabel, textstyle
+       showButtons := addToList(formatblock, bold, italic, subscript, superscript)
+       showButtons := addToList(orderedlist, unorderedlist, outdent, indent, textindicator)
+       showButtons := addToList(insertcharacter, link, table, findreplace, chMode, removeformat, undo, redo, about)
+       showButtons := addToList(toggleborders, tableproperties)
+       showButtons := addToList(rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit)
+       showButtons := addToList(columninsertbefore, columninsertafter, columndelete, columnsplit)
+       showButtons := addToList(cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge)
 
                ## More toolbar options
        keepButtonGroupTogether = 1
@@ -126,21 +124,17 @@ RTE.default {
        buttons.formatblock.removeItems = pre,address
 
                ## List all class selectors that are allowed on the way to the database
-       proc.allowedClasses (
-               external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail,
-               align-left, align-center, align-right, align-justify,
-               csc-frame-frame1, csc-frame-frame2,
-               component-items, action-items,
-               component-items-ordered, action-items-ordered,
-               important, name-of-person, detail,
-               indent
-       )
+       proc.allowedClasses = external-link, external-link-new-window, internal-link, internal-link-new-window, download, mail
+       proc.allowedClasses := addToList(align-left, align-center, align-right, align-justify)
+       proc.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
+       proc.allowedClasses := addToList(component-items, action-items)
+       proc.allowedClasses := addToList(component-items-ordered, action-items-ordered)
+       proc.allowedClasses := addToList(important, name-of-person, detail)
+       proc.allowedClasses := addToList(indent)
 
                ## Restrict the list of class selectors presented by the RTE to the following for the specified tags:
-       buttons.blockstyle.tags.div.allowedClasses (
-               align-left, align-center, align-right,
-               csc-frame-frame1, csc-frame-frame2
-       )
+       buttons.blockstyle.tags.div.allowedClasses = align-left, align-center, align-right
+       buttons.blockstyle.tags.div.allowedClasses := addToList(csc-frame-frame1, csc-frame-frame2)
        buttons.blockstyle.tags.table.allowedClasses = csc-frame-frame1, csc-frame-frame2
        buttons.blockstyle.tags.td.allowedClasses = align-left, align-center, align-right
        buttons.textstyle.tags.span.allowedClasses = important, name-of-person, detail