Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Table of Contents
maxLevel2

 

Configuration

...

magnolia.properties

...

New entries in magnolia-empty-

...

webapp/src/main/webapp/WEB-INF/config/default/magnolia.properties:

Code Block
languagebash
titlemagnolia.properties
# Change to point at your custom Vaadin widgetset and theme
# Your widgetset should always inherit magnolia's default widgetset (info.magnolia.ui.vaadin.gwt.MagnoliaWidgetSet)
# Your theme should always include magnolia's default theme (admincentral)
magnolia.ui.vaadin.widgetset=info.magnolia.ui.vaadin.gwt.MagnoliaWidgetSet
magnolia.ui.vaadin.theme=admincentral

AdmincentralUIProvider

Package: info.magnolia.ui.admincentral

This is a custom Vaadin UIProvider. It gets the MagnoliaConfigurationProperties via injection, and checks for property values when queried for widgetset or theme. Vaadin's DefaultUIProvider can only resolve widgetsets and themes either from servlet parameters or via annotation.

Property Most magnolia property keys are mostly defined as constants in the SystemProperty (info.magnolia.cms.core) deprecated  deprecated class. In want of a better location for generic magnolia_ui For these new properties, we keep the widgetset and theme properties keys are defined herekeys where we use them, i.e. in the AdmincentralUIProvider.

Code Block
languagejava
titleAdmincentralUIProvider.java
public static final String MAGNOLIAWIDGETSET_UIPROPERTY_VAADIN_WIDGETSETKEY = "magnolia.ui.vaadin.widgetset";
public static final String MAGNOLIATHEME_UIPROPERTY_VAADIN_THEMEKEY = "magnolia.ui.vaadin.theme";

It also holds fallback constantsdefault values in case widgetset and theme cannot be determined:

Code Block
languagejava
titleAdmincentralUIProvider.java
public static final String DEFAULT_WIDGETSET_NAME = "info.magnolia.ui.vaadin.gwt.MagnoliaWidgetSet";
public static final String DEFAULT_THEME_NAME = "admincentral";

 

Widgetset structure

 git repogroupIdartifactIdWidgetset name (.gwt.xml)gwt:compiledcomments

EE

ee-bundle

info.magnolia.eebundle

magnolia-enterprise-bundle-widgetset

info.magnolia.eebundle.MagnoliaEnterpriseBundleWidgetSet

(plus)

check for 5.1 EE

enterprise / content-dependencies

info.magnolia.dependencies

magnolia-content-dependencies-widgetset

info.magnolia.dependencies.ContentDependenciesWidgetSet

 

just here as a ee module example

CE

ce-bundle

info.magnolia.bundle

magnolia-bundle-widgetset

info.magnolia.bundle.MagnoliaBundleWidgetSet

(plus)

replaces MagnoliaWidgetSet (5.0) - integration and compiler options

modules / dam

info.magnolia.dam

magnolia-dam-widgetset

info.magnolia.dam.DamWidgetSet

 

just here as a ce module example

magnolia_ui / pages

info.magnolia.pages

magnolia-pages-widgetset

info.magnolia.pages.PagesWidgetSet

(minus)

replaces PageEditorWidgetSet (5.0)

UI

magnolia_ui

info.magnolia.ui

magnolia-ui-widgetset

info.magnolia.ui.MagnoliaUiWidgetSet

(minus)

replaces CommonWidgetSet (5.0)

magnolia_ui / magnolia-ui-widgetset

info.magnolia.ui.vaadin

magnolia-ui-vaadin-table

info.magnolia.ui.vaadin.TableWidgetSet

 

extracted from CommonWidgetSet (5.0)

magnolia_ui / magnolia-ui-widgetset

info.magnolia.ui.vaadin

magnolia-ui-vaadin-contextmenu

info.magnolia.ui.vaadin.ContextMenuWidgetSet

 

extracted from CommonWidgetSet (5.0)

magnolia_ui / magnolia-ui-actionbar

info.magnolia.ui.actionbar

magnolia-ui-actionbar-widgetset

info.magnolia.ui.actionbar.ActionBarWidgetSet

 

just here as examples for further ui modularization

magnolia_ui / magnolia-ui-mediaeditor

info.magnolia.ui.mediaeditor

magnolia-ui-mediaeditor-widgetset

info.magnolia.ui.mediaeditor.MediaEditorWidgetSet

 

RAW

magnolia-vaadin-widgetset

info.magnolia.vaadin.widgetset

magnolia-vaadin-widgetset

info.magnolia.vaadin.MagnoliaWidgetSet

 

M5-agnostic vaadin components - not for now

 

Theme structure

Custom widgetset

1. Widgetset fundaments

In order to add custom widgets or Vaadin addons to your Magnolia app, you need to provide a new Widgetset.

Like for any GWT application, there can be only one Widgetset, therefore it should inherit all the Widgetsets you intend to use; in particular it must always inherit Magnolia's default widgetset (identified as info.magnolia.ui.vaadin.gwt.MagnoliaWidgetSet).

Finally, a widgetset must always be GWT-compiled before you run your Web application, and it will have to be recompiled every time the client-side code changes, or when you add that fancy Vaadin addon.

For further information about Vaadin client-side development, or about ways to compile the Widgetset,GWT compilation, please refer to the Book of Vaadin, or the GWT project website.

2. Using a custom widgetset in Magnolia

Once your widgetset is compiled, you may now tell magnolia to use it by editing your webapp's magnolia properties, and setting the key magnolia.ui.vaadin.widgetset.

The expected value is a widgetset qualified name as Vaadin expects it, without the .gwt.xml extension, e.g. some.vaadin.package.SomeWidgetset.

 

Custom app styles

1. Vaadin themes

Module styles are provided as Vaadin themes, generally using Sass.

Like for any Vaadin application, there can be only one Vaadin theme per Vaadin UI (i.e. Magnolia's AdmincentralUI). Therefore it should include all the other themes you intend to use; in particular it must always include Magnolia's default admincentral theme.

Sass themes offer the advantage of being composed from several other Vaadin themes, through Sass mixins. They are ultimately compiled and served as one big chunk of CSS.

For more information on Vaadin themes or Sass, you may refer to the Book of Vaadin or the Sass website.

 

2. Using custom styles in your Magnolia app

You can already use custom styles in your Magnolia app, by adding a theme property to your app descriptor, see App theme. However in some cases, you need the styles to be loaded without starting the app (e.g. custom dialog, custom message view).

In that case, once you have your Sass theme ready (includes the admincentralmixin and your custom styles), you may now tell magnolia to use it by editing your webapp's magnolia properties, and setting the key magnolia.ui.vaadin.theme.

The expected value is a theme name as Vaadin expects it, i.e. the name of the theme folder under src/main/resources/VAADIN/themes.

 

 -