[TYPO3-core] RFC #2421: Moving file uploads HTML from tx_cssstyledcontent_pi1 to TS

Ernesto Baschny [cron IT] ernst at cron-it.de
Fri Jun 26 17:30:47 CEST 2009


Reminder: one more core dev needed to review and test latest patch (v4).
Thanks!

Cheers,
Ernesto

Ernesto Baschny [cron IT] wrote: on 15.06.2009 11:09:
> Benjamin Mack wrote: on 05.06.2009 19:35:
> 
>> I gave your patch a first try. I like it.
>> Attached is a new patch that applies to latest trunk cleanly.
>>
>> I agree with Franz that the way right now is still not flexible enough.
>> Here are my thoughts:
>>
>> * I tried to replace the link text (the filename by default, coming from
>> cObj->filelink()) with the description so the description is linked to
>> the download. This is currently not possible, but something needed very
>> badly. Maybe we can have a register for the download link URL only as well.
> 
> Attached patch gives this new possibility. That would be the needed setup:
> 
> tt_content.uploads.20.labelStdWrap.override.data = register:description
> 
> With "labelStdWrap" you can also load other information from the file
> into the "linked text" (e.g. combining description, filename, filesize,
> etc).
> 
>> * Some nitpicking. I was confused with the naming of "entryRendering",
>> (entry = going in :)). Maybe we can find a naming that is consistent
>> with other typical TypoScript paradigms... (I don't know a better one
>> either, I like "itemRendering" but it's also not consistent :))
> 
> Changed to itemRendering.
> 
>> * Should we deprecate (or better: hide by default) the "colors", border,
>> padding etc. options in TCEforms for the "uploads" CType? This does not
>> make sense if you use TypoScript and don't use these values anymore.
> 
> Yes we could. But not with this patch/RFC. :)
> 
>> I know that your patch brings the tableless approach, but maybe we can
>> work on this patch to make it completely flexible so we don't need to
>> touch the csc-uploads for a while after that :)
> 
> Yes, that is the idea. I think it is at this state now. What do you think?
> 
> Since the patch (-v4) changed a bit, I would love to see another two +1
> again.
> 
> 
> Pending documentation for css_styled_content part that I would add will be:
> 
> 
> For "render_uploads" userFunc, added properties:
> 
> 1) itemRendering, cObject/+optionSplit. Provides the rendering
> information for every row in the file list. Each file will be rendered
> with this cObject, optionSplit will be applied to the whole
> itemRendering array so that different rendering needs can be applied to
> indidivual rows. Default rendering is a COA for table based rendering
> with even/odd classes in the rows. Available registers at this point are:
> - linkedIcon: a linked icon representing the file (either
> extension-dependent or a thumbnail of the image)
> - linkedLabel: the linked text, usually the filename. The text can be
> overwritten using the labelStdWrap property.
> - filename: the filename being rendered (with extension, but without path)
> - path: the full path of the file
> - description: optional, if available
> - fileSize: the size of the file in bytes
> - fileExtension: the extension of the file (e.g. "pdf", "gif", etc)
> 
> Example:
> 
> 	itemRendering = COA
> 	itemRendering {
> 		wrap = <tr class="tr-odd tr-first">|</tr> |*| <tr
> class="tr-even">|</tr> || <tr class="tr-odd">|</tr> |*|
> 
> 		10 = TEXT
> 		10.data = register:linkedIcon
> 		10.wrap = <td class="csc-uploads-icon">|</td>
> 		10.if.isPositive.field = layout
> 
> 		20 = COA
> 		20.wrap = <td class="csc-uploads-fileName">|</td>
> 		20.1 = TEXT
> 		20.1 {
> 			data = register:linkedLabel
> 			wrap = <p>|</p>
> 		}
> 		20.2 = TEXT
> 		20.2 {
> 			data = register:description
> 			wrap = <p class="csc-uploads-description">|</p>
> 			required = 1
> 		}
> 
> 		30 = TEXT
> 		30.if.isTrue.field = filelink_size
> 		30.data = register:fileSize
> 		30.wrap = <td class="csc-uploads-fileSize">|</td>
> 		30.bytes = 1
> 		30.bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
> 	}
> 
> 
> 2) labelStdWrap, stdWrap. Provides a mean to override the default text
> that is linked in the "linkedLabel" registry for each itemRendering.
> Registry items filename, path, description, fileSize and fileExtension
> are available at this point.
> 
> Example:
> 
> tt_content.uploads.20.labelStdWrap.override.data = register:description
> 
> 
> Cheers,
> Ernesto
> 
> 
>> On 15.05.2009 12:02 Uhr, Ernesto Baschny [cron IT] wrote:
>>> Hi Susanne,
>>>
>>> thanks for bringing this topic finally to the list and a patch. It was
>>> about time. :)
>>>
>>> While we were "typoscriptizing" this part, I would love to make it more
>>> flexible. Just having static "wraps" as a translation to the old
>>> table-based layout seems unflexible to me. This is why I yesterday
>>> implemented my idea for this:
>>>
>>> To allow custom rendering of each row. Meaning I have a cObject (e.g a
>>> COA) that has access to the current files properties through registers.
>>> And have that configuration go through splitOptions so that we can
>>> render each row differently (to get the "odd/even" effect).
>>>
>>> And this is how the original (backwards compabible) layout looks like in
>>> TypoScript:
>>>
>>> # Rendering for each file (e.g. rows of the table) as a cObject
>>> entryRendering = COA
>>> entryRendering {
>>> wrap = <tr class="tr-odd tr-first">|</tr> |*| <tr class="tr-even">|</tr>
>>> || <tr class="tr-odd">|</tr> |*|
>>>
>>> 10 = TEXT
>>> 10.data = register:linkedIcon
>>> 10.wrap = <td class="csc-uploads-icon">|</td>
>>> 10.if.isPositive.field = layout
>>>
>>> 20 = COA
>>> 20.wrap = <td class="csc-uploads-fileName">|</td>
>>> 20.1 = TEXT
>>> 20.1 {
>>> data = register:linkedFileName
>>> wrap = <p>|</p>
>>> }
>>> 20.2 = TEXT
>>> 20.2 {
>>> data = register:description
>>> wrap = <p class="csc-uploads-description">|</p>
>>> required = 1
>>> }
>>>
>>> 30 = TEXT
>>> 30.if.isTrue.field = filelink_size
>>> 30.data = register:fileSize
>>> 30.wrap = <td class="csc-uploads-fileSize">|</td>
>>> 30.bytes = 1
>>> 30.bytes.labels = {$styles.content.uploads.filesizeBytesLabels}
>>> }
>>>
>>> This will make it easy to have totally different layouts for rendering
>>> file uploads and not be so "table-centric".
>>>
>>> Attached patch solves it in this way.
>>>
>>> Cheers,
>>> Ernesto
>>>
>>> PS: I find that the split-up of typoscript in different full blown
>>> "versions" hadn't really reduced complexity. As you see in this patch, I
>>> need to include every change in all 4 files now. This will grow with
>>> future versions. Having a "common base" for new features (that are
>>> included also in all previous "templates") would be nicer.
>>>
>>>
>>> Susanne Moog schrieb:
>>>
>>>> This is an SVN patch request.
>>>>
>>>> Type: Feature
>>>>
>>>> BT Reference: http://bugs.typo3.org/view.php?id=2421
>>>>
>>>> Branch: trunk
>>>>
>>>> Problem:
>>>> The default uploads element from css styled content uses a hardcoded
>>>> table to generate the file list.
>>>>
>>>> Solution:
>>>> Extract the html table and make it configurable via TS.
>>>>
>>>> Notes:
>>>> The behavior should be the same as before. However you can test the
>>>> configuration with the following code, just to see some changes:
>>>>
>>>> tt_content.uploads.20 {
>>>> outerWrap = <ul>|</ul>
>>>> rowWrap = <li>|</li>
>>>> colWrap = <span class="csc-uploads-fileName">|</span>
>>>> fileNameWrap = |
>>>> fileSizeWrap = <span class="csc-uploads-fileSize">|</span>
>>>> iconWrap = <span class="csc-uploads-icon">|</span>
>>>> descriptionWrap = <p class="csc-uploads-description">|</p>
>>>> }
>>>>
>>>> If someone has a better idea to extract the html, please tell me. I'm
>>>> not sure if those wraps are the best way.
>>>>
>>>> Regards,
>>>>
>>>> Susanne
>>>>
>>>>
> 


More information about the TYPO3-team-core mailing list