[ 
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]>
----------------------------------------------------------------

Reply via email to