XIN Mods Admin Panels

Extend Hippo with easy to use XIN Mods Admin Panels

XIN Mods makes it easier to integrate external tools into the CMS by offering a number of easy to use integration points:

  • Adding buttons to the document toolbar
  • Adding a plugin to the dashboard
  • Adding an administrator panel
  • Adding a reporting panel

What follows is a description of the configuration structures required to create these extension points. Once you have set them up, you can easily create a package to their paths that will allow you to reimport them when you desire.

Toolbar plugin

Adding a button to the toolbar of the default workflow can be as easy as following the steps below. Go into the CMS's console and navigate to the path below and add a new node with the following structure:

  • /hippo:configuration/hippo:workflows/default/handle/frontend:renderer

Structure:

toolbar-option1/
    jcr:primaryType = frontend:plugin
    wicket.id = ${item}
    plugin.class = nz.xinsolutions.extensions.XinInjectionToolbarPlugin
    
    # Where to go if the menu item is clicked
    action = http://url/to/go/to?path={path}
    
    # If specified, will show in submenu with that title
    submenu = SubMenuName
    
    title = Label on button
    
    icon = enumeration string from Icon class (default: GEAR)
    
    publishedOnly = true|false
    
    # Only show the option sometimes
    types[] = xinmods:product 

Find a list of possible values for the icon field here.

Content properties

The remaining extension points have a common approach to injecting content. Assume the different plugin types below all share these properties.

    html = 'HTML to render'
    js = 'Javascript to write on the page'
    headCSS[] = one or more urls to stylesheets (will be rendered in <head/>)
    headJS[] = one or more urls to javascripts (will be rendered in <head/>)

Dashboard plugin

To add a widget to the dashboard add a node here: /hippo:configuration/hippo:frontend/cms/cms-dashshortcuts

Using the content properties described above create a node as follows:

    jcr:primaryType = frontend:plugin
    plugin.class = nz.xinsolutions.extensions.XinInjectionPlugin

Admin panel

To add an administration panel add a node here: /hippo:configuration/hippo:frontend/cms/cms-admin

Using the content properties described above create a node as follows:

    jcr:primaryType = frontend:plugin
    plugin.class = nz.xinsolutions.extensions.XinInjectionAdminPanelDefinition
    
    title = Title of admin panel
    help = Description of admin panel
    icon = URL to icon for admin panel

Reporting Panel

To add a reporting panel add two nodes here: /hippo:configuration/hippo:frontend/cms/hippo-reports

First of all a report definition node (eg. my-new-report) -- it does not need any of the injection properties:

    jcr:primaryType = frontend:plugin
    plugin.class = nz.xinsolutions.extensions.XinInjectionReportDefinition
    
    service.id = service.report.my-new-report
    
    title = Title of reporting panel
    help = Description of reporting panel
    icon = URL to icon for reporting panel  

Secondly a report panel plugin node (eg. my-new-report-plugin) -- this one contains the injection properties.

    jcr:primaryType = frontend:plugin
    plugin.class = nz.xinsolutions.extensions.nz.xinsolutions.extensions.XinInjectionReportPlugin
    wicket.id = service.report.my-new-report
    
    html = <something to inject>
    js = 
    headJS =
    headCSS =