Bug #17412
closedparseFunc tags.XXX for single tags doesn't work
0%
Description
parseFunc "tags" doesn't work if the tag is a single tag which has attributes. E.g. the following:
lib.parseFunc_RTE {
tags.img = TEXT
tags.img {
current = 1
case = upper
}
}
Won't handle: <img src="..." ... />
Will handle: <img/>
Will handle: <img src="..." ...></img>
So currently one cannot write a parseFunc for such an img tag.
This can be used for example for the click-enlarge rendering of images embedded in RTE, as Stanislau alterady added to rtehtmlarea code a year ago, but marked as "EXPERIMENTAL" because of this core bug. See related bug report #14605
(issue imported from #M5841)
Updated by Stanislas Rolland almost 17 years ago
You may try the small patch attached to issue #0880. Let me know if it works for whatever you were trying to do.
Updated by Ernesto Baschny almost 17 years ago
Hi Stanislas,
thanks for bringing this up again. I was trying to finally enable the click-enlarge in RTE while you were gone. :) My patch was already in core list (search for 5841), but wasn't approved. And your patch and mine had the same trouble that I only recognized later.
See discussion in core-list. My last post about it, no further feedback came in:
The problem I encountered was that it is difficult to differenciate a single tag (ends with "/") and a open/close tag in a TYPO-tag, which is not XML-conform.
E.g. this is valid for parseFunc processing:
<link http://www.typo3.org/>Link</link>
but of course this is not XML. And the ending "/" in the opening <link> makes it very difficult to differenciate that from a single tag with parameters, e.g:
<img src="..." /> ...
This was broken with the previous patch (v2), as it broke all links which ended with "/".
In the new patch (attached, as v3) I do that with a regexp which expects at least one space before the closing "/".
Parsing single tags without attributes should have been possible with standard TYPO3 if the "/" is glued with the tag name:
a) <br/> -> works because the "/" is the end of $tag0
b) <br /> -> doesn't work, because "/" is in $tag1
Variant b) might work with my patch, I haven't tested.
Updated by Stanislas Rolland almost 17 years ago
I updated the patch on issue 880.
Updated by Martin Holtz over 12 years ago
- Target version deleted (
0)
IMHO this is fixed already. I tested with 4.5.14:
page.10 = TEXT page.10.value ( <img> <img src="..." /> ) page.10.parseFunc { tags.img = TEXT tags.img { value = img! } }
and i get:
img! img!
In class tslib_content -> function _parseFunc($theValue, $conf) there is a part which deals with this issue:
if (!$currentTag && !$tag['out']) { $currentTag = $tag; // $currentTag (array!) is the tag we are currently processing $contentAccumP++; $treated = 1; // in-out-tag: img and other empty tags if (preg_match('/^(area|base|br|col|hr|img|input|meta|param)$/i', $tag[0])) { $tag['out'] = 1; } }
So i guess, this issue can be closed.
Updated by Ernesto Baschny over 12 years ago
- Category deleted (
Communication) - Status changed from New to Closed
Good catch! :) Thanks!