[
http://jira.magnolia-cms.com/browse/BLOSSOM-1?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=28983#action_28983
]
Tobias Mattsson commented on BLOSSOM-1:
---------------------------------------
My idea is to make DefaultBlossomTemplateRegistry always set the class in
repository. The class should be a subclass of Template that when isAvailable()
is called finds the BlossomTemplateDescription from the TemplateRegistry and
invokes a method on the handler/controller. I'm not sure yet what the best way
of declaring that method is. Either using an annotation or implementing an
interface.
The solution with an interface would look something like:
@Template
public class MyTemplate implements ConditionallyAvailableTemplate {
public boolean isAvailable(Content content) { /* something interesting */ }
}
public class BlossomTemplate extends Template {
public boolean isAvailable(Content content) {
BlossomTemplateDescription description =
BlossomModule.getTemplateRegistry().getTemplate(getName());
if (description.getHandler() instanceof ConditionallyAvailableTemplate)
return
((ConditionallyAvailableTemplate)description.getHandler()).isAvailable(content);
else
return super.isAvailable(content);
}
}
in DefaultTemplateRegistry the class that's written to repository is
BlossomTemplate.class.getName()
> Template annotation should allow specifying "class"
> ---------------------------------------------------
>
> Key: BLOSSOM-1
> URL: http://jira.magnolia-cms.com/browse/BLOSSOM-1
> Project: Magnolia Blossom Module
> Issue Type: New Feature
> Reporter: Tobias Mattsson
> Assignee: Tobias Mattsson
> Priority: Minor
> Attachments: blossom-template-class-patch.txt
>
>
> Transferred from Sourceforge
> Original description:
> Magnolia templates support a node named "class" that contains the fully
> qualified class name to be instantiated for that particular template. This is
> useful, for example, if you want to override the default isAvailable() method.
> The Blossom @Template annotation should allow specifying this value and
> subsequently configuring it on the blossom generated template.
> Followup comments:
> Good suggestion, though even cooler would be to have isAvailable() directly
> on the controller.
> For now you can subclass DefaultBlossomTemplateRegistry and overload
> writeTemplateDefinition() to add the custom properties that you need.
> Replace <blossom:configuration /> with
> <bean class="se.issi.magnolia.module.blossom.BlossomConfiguration">
> <property name="templateRegistry">
> <bean class="some.package.MyCustomTemplateRegistry" />
> </property>
> </bean>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.magnolia-cms.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
----------------------------------------------------------------
For list details see
http://www.magnolia-cms.com/home/community/mailing-lists.html
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------