We're updating the issue view to help you get more done. 

Controls HTML encode all text by default

Description

All text rendered by Remotion.Web and Remotion.ObjectBinding.Web controls is HTML encoded by default.

For each property that should allow customization of the encoding, the following options are available via the enum-type 'StringType':

  • Undefined

    • If the string was retrieved from the domain's metadata (ISmartControl.DisplayName, etc), it is handled as PlainText.

    • If the string was retrieved from the configured property, it is handled as PlainTextWithHotkey.

  • PlainTextWithHotkey:
    Retrieves the hotkey and then HTML-encodes the string.

  • PlainText: HTML-encodes the string.

  • Html: Renderes the string as-is, i.e. without HTML-encoding or hotkey-analyzation.

Affected controls/elements:

  • MenuItem

  • TreeNode

  • TabItem

  • WebButton

  • SmartLabel

  • Control's validators

  • BocList column titles

  • Other text generated by controls

For easier migration, it should be possible to use the behavior of the orginal (hardcoded) implementation as default. If this can only be accomplished by using weird APIs, check again with product requirements.

TBD: Provide an additional extension point for evaluating the StringType enum value. This extension point would have to be aware of the individual properties, either explicitly by providing a dedicated evaluation method for each string property or by supplying the string property's name or an IPropertyInformation object. In the second option, providing a unified API for all controls could also be possible. In addition, this API could possibly be used to implement backwards compatibility.

TBD: MenuItems and Buttons could also provide an additional extension point to allow the injection of HTML markup next to the encoded text. This would be result in the same output as if using StringType.Html and providing the hotkey-formatted and encoded text incuding all the addional markup required. If needed, downlevel infrastructure would use HTML in combination with a separate call to IHotkeyFormatter.

Notes:

  • when using a custom string type, provide an IsEmpty-implementation and possibly an IsNullOrEmpty extension method if a reference type is chosen.

Status

Assignee

Michael Ketting

Reporter

Michael Ketting

Labels

Time tracking

24h

Components

Fix versions

Priority

Normal
Configure