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

Ernesto Baschny [cron IT] ernst at cron-it.de
Mon Jun 15 11:09:53 CEST 2009


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