We are pleased to announce the availability of Blossom 1.0 Compared to previous versions Blossom now goes all-in to give you the full flexibility that Spring Framework can give you. Through a small set of annotations you can expose Spring Web MVC controllers as templates and paragraphs. Combined with the ability to create dialogs in code there's no more need to spend time adding configuration in the repository. We think we've reached our goal of zero configuration. Using code to create dialogs also adds a few novel features, such as adding options to a dialog at runtime, for instance by calling a backend webservice to discover the valid options, and to write custom dialog validation for user input.
Another important new feature in 1.0 is that view rendering is performed by the magnolia rendering pipeline. This is important because it will give you all the nice to haves that Magnolia gives you, for instance in freemarker templates. Blossom is hosted on SourceForge, go there to download it https://sourceforge.net/projects/magnoliablossom/ The documentation can be found in the Magnolia WIKI, go there for usage instructions http://wiki.magnolia-cms.com/display/WIKI/Magnolia+Blossom In the coming days we'll update the WIKI page for the new version. See below for instructions on updating from 0.5 If you have any suggestions or if you've found a bug you're welcome to file a feature/support/bug request at SourceForge. Have fun, hope you like it! *Usage example* This is a brief example of how it's used, these classes are automatically exposed to Magnolia @Controller @Paragraph("Text") public class TextParagraph { @TabFactory("Content") public void addPropertiesTab(TabBuilder tab) { tab.addFckEditor("text", "Text", "").setRequired(true); } @TabFactory("Margins") public void addMarginTab(TabBuilder tab) {} @RequestMapping("/text") public String handleRequest() { return "text.jsp"; } } @Controller @Template("Main") public class MainTemplate { @DialogFactory("frontpage-properties") public void addDialog(DialogBuilder dialog) { DialogTabBuilder tab = dialog.addTab("Properties"); tab.addEdit("headline", "Headline", "The text to use as a headline"); } @RequestMapping("/main") public String handleRequest() { return "mainTemplate.ftl"; } } @DialogFactory("main-properties") public class MainDialogFactory { @TabFactory("Properties") public void addPropertiesTab(TabBuilder tab) {} } *Upgrading from 0.5* As of version 1.0 Blossom gives you a much bigger feature set and some of the functionality in the previous version has matured. Unfortunately this means that some changes have to be made when upgrading. But don't worry, your content don't have to be touched. Added features: * Support for exposing controllers as Templates * Support for creating all types of dialogs with code * Localization support for paragraphs, dialogs and templates * Rendering of views is performed using the magnolia render chain, supports both JSP and freemarker * Ordering of dialog tabs is customizable with @TabOrder * The locale used by Magnolia can be made visible to Spring using MagnoliaLocaleResolver * Magnolia's localization mechanism can be bridged into Spring using MagnoliaMessageSource * JSP tag pecid-input is now also available as pecidInput Behind the scenes: * Blossom now expose controllers are normal paragraphs instead of using a placeholder paragraph that delegates rendering to the controller. This is a much cleaner design and opens for migration of existing content and paragraphs into using blossom. * Customization of the paragraph select dialog is no longer necessary. API Changes: * Paragraphs are no longer named after the handlerPath they're mapped to. I.e, a controller mapped to /text that was previously referred to in templates as '/text' is now simply 'text'. This had to be done in order to support migration of existing configured paragraphs into blossom. Using / in a paragraph name was never a good idea in the first place. You don't have to specify a name on your paragraph, it will automatically use the handlerPath stripped from any slashes as it's name. * @ParagraphTitle is renamed to @Pargraph and moves to se.issi.magnolia.module.blossom.annotation * @ParagraphDescription moves to se.issi.magnolia.module.blossom.annotation * DialogTabBuilder is renamed to TabBuilder * DialogTabBuilder.addText changes to TabBuilder.addEdit * Methods in DialogTabBuilder no longer throws RepositoryException * Methods in DialogTabBuilder now return the control they create * @DialogTabFactory is renamed to @TabFactory and moves to se.issi.magnolia.module.blossom.annotation * Ordering of tabs in dialogs are now set using the @TabOrder annotation * <blossom:handler-mapping /> is deprecated and removed * <blossom:paragraph-registry /> is renamed to <blossom:configuration /> * Extension hooks in DefaultBlossomParagraphRegistry has new arguments * ValidatingParagraph is removed and replaced with @DialogValidator * Interface DialogCreator has changed and DefaultDialogCreator changes accordingly. // The Blossom Team ---------------------------------------------------------------- For list details see http://www.magnolia-cms.com/home/community/mailing-lists.html To unsubscribe, E-mail to: <[email protected]> ----------------------------------------------------------------
