jahia howto use spring to change ui

Upload: syed-murtuza-hasan

Post on 03-Mar-2016

40 views

Category:

Documents


3 download

DESCRIPTION

Jahia

TRANSCRIPT

  • Jahia Solutions Group SA

    9 route des Jeunes, CH-1227 Les acacias Geneva, Switzerland

    http://www.jahia.com

    DOCUMENTATION

    How-to use spring configurations to

    modify Jahia GWT Interfaces

    Jahias next-generation, open source CMS stems from a widely

    acknowledged vision of enterprise application convergence web,

    document, search, social and portal unified by the simplicity of web

    content management.

  • Page 2 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    Summary

    1 Introduction ................................................................................................................................................ 3

    1.1 Pre-requisites ........................................................................................................................................ 3

    1.2 Generate your module ......................................................................................................................... 3

    1.3 Create or modify UIs through your modules ........................................................................................ 4

    1.3.1 Add a new GWT menu Item .......................................................................................................... 4

    1.3.2 Add a new GWT tab in the Selector ............................................................................................... 8

    1.3.3 Use spring to create your own picker .......................................................................................... 10

    1.4 Use spring to override Jahia configuration......................................................................................... 12

  • Page 3 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    1 Introduction In Jahia 6.5, you can now embed spring configuration files directly in your module. The goal of this

    documentation is to show you what you can do with this spring files in order to modify / extend Jahias Edit

    Mode GUI (created and compiled with GWT).

    1.1 Pre-requisites

    Have a running Maven configuration

    Have a Java IDE that supports Maven (Eclipse + M2 / IntelliJ / Netbeans / )

    1.2 Generate your module

    In command line, enter:

    mvn archetype:generate -DarchetypeCatalog=http://maven.jahia.org/maven2

    When prompted, choose:

    3: http://maven.jahia.org/maven2 -> jahia-module-archetype (Jahia archetype for creating a new

    module (for Jahia version >= 6.5))

    Then fulfill the different values :

    artifactId : springDemo

    jahiaPackageVersion : 6.5.0

    moduleName : Spring Demo

    Your module is now generated. It is a maven project than you can

    open in your IDE. In the webapp /META-INF/spring folder, you a

    file springDemo.xml.disabled. You can rename it to

    springDemo.xml to start playing with spring configuration.

  • Page 4 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    1.3 Create or modify UIs through your modules

    You can add some GWT items in the Jahia interfaces (Edit Mode / Studio Mode / Administration / )

    directly by using Spring configuration. Of course, you can directly modify the applicationcontext-*.xml files,

    but a more elegant way is to put your configuration directly in your own modules. Lets see a few examples

    have what can be easily achieved

    1.3.1 Add a new GWT menu Item

    You may want to add a new item in the right click on a page of the left panel like that:

    For that, you just have to define the object to create in your definition.cnd :

    [jnt:navMenuImage] > jnt:content, jmix:navMenuItem, mix:title

    - image (weakreference, picker[type='image']) mandatory

    - type (string, choicelist[linktypechoicelist]) mandatory

    And then to create an item in the spring configuration file (springDemo .xml) associated with this type :

  • Page 5 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    In this bean, we of course define values for the different Items attributes (please refer to the related

    documentation for more details about that), but we also specify some properties to define where Spring

    need to inject the bean.

    This is the case of the parent property and positionBefore property. How does it work?

    The parent property represents the path of the parent where we want to be injected as child. In our case,

    the path is editmode.tabs[0].treeContextMenu it means that we are looking for a bean named

    editmode

    This bean is in applicationcontext-editmode.xml :

    Inside this bean, we want to enter in the first bean of the tabs list:

  • Page 6 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    And finally we target the treeContextMenu property:

  • Page 7 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    We are now positioned on the parent. Lets use the positionBefore property to know where to put the

    bean to inject. In our case the value of this property is Toolbar.Item.Publish, so we will be injected here:

  • Page 8 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    Depending on the situation, you can use the positionAfter property, which uses the same mechanism, or

    the position property, which take a number as value to specify the position.

    Now that you know how to inject a GWT Item in a specific path, you can adapt this example to your needs.

    1.3.2 Add a new GWT tab in the Selector

    In some situations, it could be useful to add a new tab in the left panel we call Selector:

  • Page 9 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    One more time, the spring configuration allows doing this directly from modules, here is an example, which

    adds a new content tab that only displays modules of type social components:

    Here, as there is only one point to insert a side panel tab, we just have to specify the id of the parent bean

    and not the full path. Moreover, we need to specify the position where we want to put the item. It will

    inject the bean at the right position in the tabs property list:

  • Page 10 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    Some Jahia users create a new tab to display all their specific content types, while default ones provided by

    Jahia are located in the standard tab, some others used this technic to regroup domain specific content

    types (finance, law, chemistery) then use the permissions to define what group of users can access those

    different tabs.

    1.3.3 Use spring to create your own picker

    Sometimes, you want to use your own picker, to select pages or specific types of nodes.

    For example, imagine you have this kind of data structure:

    You want to have a dedicated picker to associate a speaker to your video. It should allow to browse the

    web site, but only to select nodes of type jnt:speaker.

    For that, you will first create a new picker in the springDemo.xml file :

  • Page 11 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    Please take a look at this file \webapp\WEB-INF\etc\spring\uicomponents\applicationcontext-

    contentpicker.xml in the Jahia install dir to get a full example of picker. The interesting parts of a picker

    are, the nodeTypes, it defines the selectable node types; the folderType, it defines the folder types that

    can be displayed. And then it is a configuration of what should be displayed in the picker, for example copy

  • Page 12 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    / paste button, search fields, ect Finally, you can see a repositories property, it allows to define what the

    user will be able to browse : site for the current site, sites for all the web site of the platform,

    When your new picker is defined, you can now use it in your definition file. For that, take the bean id

    value, without the picker post fix:

    Its done, you will now use your custom picker to select nodes only of type jnt:speaker, on any site of the

    platform.

    /!\ Warning, if you define your picker in a module A, and use it in the CND of a module B, you must define a

    dependency from B to A. Fo r that add a tag in the pom.xml of module B, and put the name of

    module A inside.

    1.4 Use spring to override Jahia configuration

    The latest interesting usage of Spring inside your module, is to override the Jahia configuration without

    modifying the original configuration files.

    For the example, we want to override some existing GWT items to put some restrictions on it. For example,

    modify the Import / Export items to be only displayed for users who have special permissions.

    For that we need to create a special package in the resources folder of our module, named

    org.jahia.config and create inside a file named applicationcontext-xxxxx.xml :

  • Page 13 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    When Jahia is started, Spring loads all the Jahia applicationcontext-xxx.xml files, in the /etc/spring folder,

    and then load all the applicationcontext-xxx.files in the org.jahia.config package defined by modules. Thats

    why the module configuration overrides the Jahia configuration.

    In this file, we have nothing special to do. Just create a bean with the same ID than the bean that you want

    to override, and modify or add properties depending of what you want to do. In our cases we just add a

    visibility property.

    Original beans:

    Overridden beans:

  • Page 14 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    Thats all! So you are free to override any beans in Jahia with a specified ID. The main advantage of this

    method is to keep standard configuration fi

  • Page 15 / 15

    2002 2013 Jahia Solutions Group SA

    How-to use spring configurations to modify Jahia GWT Interfaces

    Jahia Solutions Group SA

    9 route des Jeunes, CH-1227 Les acacias Geneva, Switzerland

    http://www.jahia.com

    DocumentationSummary1 Introduction1.1 Pre-requisites1.2 Generate your module1.3 Create or modify UIs through your modules1.3.1 Add a new GWT menu Item1.3.2 Add a new GWT tab in the Selector1.3.3 Use spring to create your own picker

    1.4 Use spring to override Jahia configuration