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

Reply via email to