Hi Robert,

the detail panel's info/form renderer never uses the custom association type 
names for rendering title labels.

The Contacts and Events modules achieve the rendering solely trough CSS rules, 
using pseudo elements:

contacts.css:

        div.dm4\.contacts\.person > div.dm4\.datetime\.date::before {
                content: "Date of Birth";
                display: block;
                margin-bottom: 0.6em;
                font-size: 0.75em;      /* must match .field-label style in 
webclient.css */
                color: gray;            /* must match .field-label style in 
webclient.css */
        }

events.css:

        div.dm4\.events\.event > div.dm4\.datetime\#dm4\.events\.from::before {
                content: "From";
                ... same as above
        }

        div.dm4\.events\.event > div.dm4\.datetime\#dm4\.events\.to::before {
                content: "To";
                ... same as above
        }

These rules are based on the semantic markup generated by the detail panel 
renderer. It annotates each <div> with the DM type URIs as CSS class names.

The backslash is the escape character in CSS. It is needed in CSS rules if a 
class name contains characters that have special meaning in CSS.

In your plugin you have to add corresponding rules for each of your types.

Note: css files located in your plugin's /resources/web/style directory are 
picked up automatically by the Webclient.

Be aware: the Person rule doesn't use the "#dm4.contacts.date_of_birth" 
qualifier. Basically it says all kinds of Person dates are "Date of Birth". 
This hinders extensibility. You could write a ticket about fixing that Contacts 
CSS. In the meantime your plugin should override that Person rule.

Tell me if you need more help.

BTW: of course the CSS approach is not very comfortable for rendering title 
labels. It was just a pragmatic approach as it works immediately without 
extending DM. This way the plugin author can control what labels to render. 
Usually some Custom Association Type names need to be rendered, but some are 
not (e.g. the Contacts module's "Address Entry" and "Phone Entry"). Possible 
solutions would be a configuration option (e.g. extending DM's ViewConfig 
model), or a one-fits-all renderer heuristic like: if the custom association 
type is SIMPLE and the child type is COMPOSITE then render the association type 
name as title label (the detail renderer deploys such heuristics already). You 
could write a ticket about this as well.

Your code looks good btw :-)

Cheers,
Jörg


> On 20 Oct 2016, at 20:15, Robert Schuster <[email protected]> 
> wrote:
> 
> Hi alltogether,
> I am adding "To" and "From" associations to a bunch of topic types like
> this:
> 
>       return dm4.getTopicType(topicTypeUri)
>               .addAssocDef(mf.newAssociationDefinitionModel(
>                       "dm4.core.aggregation_def", "dm4.events.from",
>                       topicTypeUri, "dm4.datetime.date",
>                       "dm4.core.many", "dm4.core.one"))
>               .addAssocDef(mf.newAssociationDefinitionModel(
>                       "dm4.core.aggregation_def", "dm4.events.to",
>                       topicTypeUri, "dm4.datetime.date",
>                       "dm4.core.many", "dm4.core.one"));
> 
> As the custom association type "dm4.events.from" and "dm4.events.to"
> suited my need so far I used those. However there is the slight issue
> that in the webclient those associations appear with no title label in
> the edit form.
> 
> What I would like to have is that they are labeled "From" and "To"
> exactly as one can see in instances of dm4.events.event .
> 
> Any pointer on what I am missing here?
> 
> All the best,
> Robert

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

-- 
devel mailing list
[email protected]
http://lists.deepamehta.de/mailman/listinfo/devel-lists.deepamehta.de

Reply via email to