Display a subtree in a different tab

This configuration was tested with a Hippo ECM 2.10.00 pre-release and is expected to work with 2.09.01 and later.

The documents tree can contain all kinds of folders. Some of these folders may contain regular content, like news or event documents. Other folders, may contain documents that help your site look better, like labels or banners. Let's call the latter "construction".
Normal authors and editors don't need to maintain the contents of the construction folder but they may need the files inside for picking a value from a list so you can't deny access. If you separate the view of construction, most of the time they won't see its contents in their documents tree.


Construction as part of documents


Documents browser with extra construction tab


Picker dialog

Configuring the construction folder

In the CND, add the construction folder for your namespace
[demonamespace:constructionfolder] > hippostd:folder orderable

Then create a folder "construction" of type "demonamespace:constructionfolder" inside documents.

Add the tree view

Add into

/hippo:configuration/hippo:frontend/cms/cms-tree-views/
<?xml version="1.0" encoding="UTF-8"?>
<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" sv:name="construction">
  <sv:property sv:name="jcr:primaryType" sv:type="Name">
    <sv:value>frontend:plugincluster</sv:value>
  </sv:property>
  <sv:property sv:name="frontend:properties" sv:type="String">
    <sv:value>use.width.from.classname</sv:value>
    <sv:value>bind.to.layout.unit</sv:value>
    <sv:value>register.context.menu</sv:value>
  </sv:property>
  <sv:property sv:name="frontend:references" sv:type="String">
    <sv:value>wicket.model</sv:value>
    <sv:value>browser.id</sv:value>
    <sv:value>editor.id</sv:value>
  </sv:property>
  <sv:property sv:name="frontend:services" sv:type="String">
    <sv:value>wicket.id</sv:value>
  </sv:property>
  <sv:node sv:name="addfolderPlugin">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
      <sv:value>frontend:plugin</sv:value>
    </sv:property>
    <sv:property sv:name="browser.id" sv:type="String">
      <sv:value>${browser.id}</sv:value>
    </sv:property>
    <sv:property sv:name="editor.id" sv:type="String">
      <sv:value>${editor.id}</sv:value>
    </sv:property>
    <sv:property sv:name="option.location" sv:type="String">
      <sv:value>/content/documents/construction</sv:value>
    </sv:property>
    <sv:property sv:name="plugin.class" sv:type="String">
      <sv:value>org.hippoecm.frontend.plugins.standardworkflow.FolderShortcutPlugin</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.id" sv:type="String">
      <sv:value>${cluster.id}.addfolder</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.variant" sv:type="String">
      <sv:value>addfolder</sv:value>
    </sv:property>
    <sv:property sv:name="workflow.categories" sv:type="String">
      <sv:value>threepane</sv:value>
    </sv:property>
  </sv:node>
  <sv:node sv:name="constructionBrowser">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
      <sv:value>frontend:plugin</sv:value>
    </sv:property>
    <sv:property sv:name="bind.to.layout.unit" sv:type="String">
      <sv:value>${bind.to.layout.unit}</sv:value>
    </sv:property>
    <sv:property sv:name="extension.addfolder" sv:type="String">
      <sv:value>${cluster.id}.addfolder</sv:value>
    </sv:property>
    <sv:property sv:name="path" sv:type="String">
      <sv:value>/content/documents/construction</sv:value>
    </sv:property>
    <sv:property sv:name="plugin.class" sv:type="String">
      <sv:value>org.hippoecm.frontend.plugins.cms.browse.tree.FolderTreePlugin</sv:value>
    </sv:property>
    <sv:property sv:name="register.context.menu" sv:type="String">
      <sv:value>${register.context.menu}</sv:value>
    </sv:property>
    <sv:property sv:name="rootless" sv:type="String">
      <sv:value>true</sv:value>
    </sv:property>
    <sv:property sv:name="use.width.from.classname" sv:type="String">
      <sv:value>${use.width.from.classname}</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.id" sv:type="String">
      <sv:value>${wicket.id}</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.model" sv:type="String">
      <sv:value>${wicket.model}</sv:value>
    </sv:property>
    <sv:node sv:name="module.workflow">
      <sv:property sv:name="jcr:primaryType" sv:type="Name">
        <sv:value>frontend:plugin</sv:value>
      </sv:property>
      <sv:property sv:name="browser.id" sv:type="String">
        <sv:value>${browser.id}</sv:value>
      </sv:property>
      <sv:property sv:name="editor.id" sv:type="String">
        <sv:value>${editor.id}</sv:value>
      </sv:property>
      <sv:property sv:name="plugin.class" sv:type="String">
        <sv:value>org.hippoecm.addon.workflow.ContextWorkflowPlugin</sv:value>
      </sv:property>
      <sv:property sv:name="workflow.categories" sv:type="String">
        <sv:value>threepane</sv:value>
      </sv:property>
    </sv:node>
    <sv:node sv:name="filters">
      <sv:property sv:name="jcr:primaryType" sv:type="Name">
        <sv:value>frontend:pluginconfig</sv:value>
      </sv:property>
      <sv:node sv:name="showFolderType">
        <sv:property sv:name="jcr:primaryType" sv:type="Name">
          <sv:value>frontend:pluginconfig</sv:value>
        </sv:property>
        <sv:property sv:name="child" sv:type="String">
          <sv:value>hippostd:folder</sv:value>
        </sv:property>
        <sv:property sv:name="display" sv:type="Boolean">
          <sv:value>true</sv:value>
        </sv:property>
      </sv:node>
      <sv:node sv:name="showDirectoryType">
        <sv:property sv:name="jcr:primaryType" sv:type="Name">
          <sv:value>frontend:pluginconfig</sv:value>
        </sv:property>
        <sv:property sv:name="child" sv:type="String">
          <sv:value>hippostd:directory</sv:value>
        </sv:property>
        <sv:property sv:name="display" sv:type="Boolean">
          <sv:value>true</sv:value>
        </sv:property>
      </sv:node>
      <sv:node sv:name="hideHandleType">
        <sv:property sv:name="jcr:primaryType" sv:type="Name">
          <sv:value>frontend:pluginconfig</sv:value>
        </sv:property>
        <sv:property sv:name="child" sv:type="String">
          <sv:value>hippo:handle</sv:value>
        </sv:property>
        <sv:property sv:name="display" sv:type="Boolean">
          <sv:value>false</sv:value>
        </sv:property>
      </sv:node>
      <sv:node sv:name="hideResultsetType">
        <sv:property sv:name="jcr:primaryType" sv:type="Name">
          <sv:value>frontend:pluginconfig</sv:value>
        </sv:property>
        <sv:property sv:name="child" sv:type="String">
          <sv:value>hippo:facetresult</sv:value>
        </sv:property>
        <sv:property sv:name="display" sv:type="Boolean">
          <sv:value>false</sv:value>
        </sv:property>
      </sv:node>
    </sv:node>
  </sv:node>
</sv:node>

Add into

/hippo:configuration/hippo:frontend/cms/cms-browser/
<?xml version="1.0" encoding="UTF-8"?>
<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" sv:name="constructionTreeLoader">
  <sv:property sv:name="jcr:primaryType" sv:type="Name">
    <sv:value>frontend:plugin</sv:value>
  </sv:property>
  <sv:property sv:name="cluster.name" sv:type="String">
    <sv:value>cms-tree-views/construction</sv:value>
  </sv:property>
  <sv:property sv:name="plugin.class" sv:type="String">
    <sv:value>org.hippoecm.frontend.plugin.loader.PluginClusterLoader</sv:value>
  </sv:property>
  <sv:node sv:name="cluster.config">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
      <sv:value>frontend:pluginconfig</sv:value>
    </sv:property>
    <sv:property sv:name="bind.to.layout.unit" sv:type="Boolean">
      <sv:value>true</sv:value>
    </sv:property>
    <sv:property sv:name="browser.id" sv:type="String">
      <sv:value>service.browse</sv:value>
    </sv:property>
    <sv:property sv:name="editor.id" sv:type="String">
      <sv:value>service.edit</sv:value>
    </sv:property>
    <sv:property sv:name="register.context.menu" sv:type="Boolean">
      <sv:value>true</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.id" sv:type="String">
      <sv:value>service.browse.tree.construction</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.model" sv:type="String">
      <sv:value>model.browse.folder</sv:value>
    </sv:property>
  </sv:node>
</sv:node>

Add translations into

/hippo:configuration/hippo:frontend/cms/cms-static/configTranslator/hippostd:translations/
<?xml version="1.0" encoding="UTF-8"?>
<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" sv:name="section-construction">
  <sv:property sv:name="jcr:primaryType" sv:type="Name">
    <sv:value>nt:base</sv:value>
  </sv:property>
  <sv:property sv:name="jcr:mixinTypes" sv:type="Name">
    <sv:value>hippo:translated</sv:value>
  </sv:property>
  <sv:node sv:name="hippo:translation">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
      <sv:value>hippo:translation</sv:value>
    </sv:property>
    <sv:property sv:name="hippo:language" sv:type="String">
      <sv:value>en</sv:value>
    </sv:property>
    <sv:property sv:name="hippo:message" sv:type="String">
      <sv:value>Construction</sv:value>
    </sv:property>
  </sv:node>
  <sv:node sv:name="hippo:translation">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
      <sv:value>hippo:translation</sv:value>
    </sv:property>
    <sv:property sv:name="hippo:language" sv:type="String">
      <sv:value>nl</sv:value>
    </sv:property>
    <sv:property sv:name="hippo:message" sv:type="String">
      <sv:value>Constructie</sv:value>
    </sv:property>
  </sv:node>
</sv:node>

Replace

/hippo:configuration/hippo:frontend/cms/cms-browser/browserPlugin

with

<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" sv:name="browserPlugin">
  <sv:property sv:name="jcr:primaryType" sv:type="Name">
    <sv:value>frontend:plugin</sv:value>
  </sv:property>
  <sv:property sv:name="extension.configuration" sv:type="String">
    <sv:value>service.browse.tree.configuration</sv:value>
  </sv:property>
  <sv:property sv:name="extension.construction" sv:type="String">
    <sv:value>service.browse.tree.construction</sv:value>
  </sv:property>
  <sv:property sv:name="extension.content" sv:type="String">
    <sv:value>service.browse.tree.content</sv:value>
  </sv:property>
  <sv:property sv:name="extension.files" sv:type="String">
    <sv:value>service.browse.tree.files</sv:value>
  </sv:property>
  <sv:property sv:name="extension.images" sv:type="String">
    <sv:value>service.browse.tree.images</sv:value>
  </sv:property>
  <sv:property sv:name="headers" sv:type="String">
    <sv:value>section-documents</sv:value>
    <sv:value>section-construction</sv:value>
    <sv:value>section-images</sv:value>
    <sv:value>section-files</sv:value>
    <sv:value>section-configuration</sv:value>
  </sv:property>
  <sv:property sv:name="plugin.class" sv:type="String">
    <sv:value>org.hippoecm.frontend.plugins.cms.browse.tree.SectionTreePlugin</sv:value>
  </sv:property>
  <sv:property sv:name="translator.id" sv:type="String">
    <sv:value>service.translator.config</sv:value>
  </sv:property>
  <sv:property sv:name="wicket.extensions" sv:type="String">
    <sv:value>extension.content</sv:value>
    <sv:value>extension.construction</sv:value>
    <sv:value>extension.images</sv:value>
    <sv:value>extension.files</sv:value>
    <sv:value>extension.configuration</sv:value>
  </sv:property>
  <sv:property sv:name="wicket.id" sv:type="String">
    <sv:value>service.browse.tree</sv:value>
  </sv:property>
  <sv:property sv:name="wicket.model" sv:type="String">
    <sv:value>model.browse.folder</sv:value>
  </sv:property>
</sv:node>

Change the folders and documents trees

Hide construction in the documents tab.

Add into

/hippo:configuration/hippo:frontend/cms/cms-tree-views/documents/documentsBrowser/filters/

and

/hippo:configuration/hippo:frontend/cms/cms-folder-views/hippostd:directory/root/filters/

the following configuration

<?xml version="1.0" encoding="UTF-8"?>
<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" sv:name="hideConstructionFolderType">
  <sv:property sv:name="jcr:primaryType" sv:type="Name">
    <sv:value>frontend:pluginconfig</sv:value>
  </sv:property>
  <sv:property sv:name="child" sv:type="String">
    <sv:value>demonamespace:constructionfolder</sv:value>
  </sv:property>
  <sv:property sv:name="display" sv:type="Boolean">
    <sv:value>false</sv:value>
  </sv:property>
</sv:node>

Display regular folders

Replace

/hippo:configuration/hippo:frontend/cms/cms-tree-views/documents/documentsBrowser/filters/showFolderType

and

/hippo:configuration/hippo:frontend/cms/cms-folder-views/hippostd:directory/root/filters/showFolderType

with

<?xml version="1.0" encoding="UTF-8"?>
<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" sv:name="showFolderType">
  <sv:property sv:name="jcr:primaryType" sv:type="Name">
    <sv:value>frontend:pluginconfig</sv:value>
  </sv:property>
  <sv:property sv:name="child" sv:type="String">
    <sv:value>hippostd:folder</sv:value>
  </sv:property>
  <sv:property sv:name="display" sv:type="Boolean">
    <sv:value>true</sv:value>
  </sv:property>
</sv:node>

Configure the pickers

Replace

/hippo:configuration/hippo:frontend/cms/cms-pickers/documents/dialogBrowserPlugin

with

<?xml version="1.0" encoding="UTF-8"?>
<sv:node sv:name="dialogBrowserPlugin" xmlns:sv="http://www.jcp.org/jcr/sv/1.0">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
        <sv:value>frontend:plugin</sv:value>
    </sv:property>
    <sv:property sv:name="extension.construction" sv:type="String">
        <sv:value>service.dialog.tree.construction</sv:value>
    </sv:property>
    <sv:property sv:name="extension.content" sv:type="String">
        <sv:value>service.dialog.tree.content</sv:value>
    </sv:property>
    <sv:property sv:name="extension.files" sv:type="String">
        <sv:value>service.dialog.tree.files</sv:value>
    </sv:property>
    <sv:property sv:name="extension.images" sv:type="String">
        <sv:value>service.dialog.tree.images</sv:value>
    </sv:property>
    <sv:property sv:name="headers" sv:type="String">
        <sv:value>section-documents</sv:value>
        <sv:value>section-construction</sv:value>
        <sv:value>section-images</sv:value>
        <sv:value>section-files</sv:value>
    </sv:property>
    <sv:property sv:name="plugin.class" sv:type="String">
        <sv:value>org.hippoecm.frontend.plugins.cms.browse.tree.SectionTreePlugin</sv:value>
    </sv:property>
    <sv:property sv:name="translator.id" sv:type="String">
        <sv:value>service.translator.config</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.extensions" sv:type="String">
        <sv:value>extension.content</sv:value>
        <sv:value>extension.construction</sv:value>
        <sv:value>extension.images</sv:value>
        <sv:value>extension.files</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.id" sv:type="String">
        <sv:value>service.dialog.shortcuts</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.model" sv:type="String">
        <sv:value>${cluster.id}.model.folder</sv:value>
    </sv:property>
    <sv:node sv:name="yui.config.accordion">
        <sv:property sv:name="jcr:primaryType" sv:type="Name">
            <sv:value>frontend:pluginconfig</sv:value>
        </sv:property>
        <sv:property sv:name="ancestor.classname" sv:type="String">
            <sv:value>hippo-picker</sv:value>
        </sv:property>
        <sv:property sv:name="register.render.listener" sv:type="Boolean">
            <sv:value>false</sv:value>
        </sv:property>
        <sv:property sv:name="register.resize.listener" sv:type="Boolean">
            <sv:value>false</sv:value>
        </sv:property>
    </sv:node>
</sv:node>

Add construction to the breadcrumb

Replace

/hippo:configuration/hippo:frontend/cms/cms-pickers/documents/dialogBreadcrumbPlugin

with

<?xml version="1.0" encoding="UTF-8"?>
<sv:node sv:name="dialogBreadcrumbPlugin" xmlns:sv="http://www.jcp.org/jcr/sv/1.0">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
        <sv:value>frontend:plugin</sv:value>
    </sv:property>
    <sv:property sv:name="model.folder" sv:type="String">
        <sv:value>${cluster.id}.model.folder</sv:value>
    </sv:property>
    <sv:property sv:name="plugin.class" sv:type="String">
        <sv:value>org.hippoecm.frontend.plugins.standards.browse.BreadcrumbPlugin</sv:value>
    </sv:property>
    <sv:property sv:name="root.paths" sv:type="String">
        <sv:value>/content/documents</sv:value>
        <sv:value>/content/documents/construction</sv:value>
        <sv:value>/content/gallery</sv:value>
        <sv:value>/content/assets</sv:value>
    </sv:property>
    <sv:property sv:name="translator.id" sv:type="String">
        <sv:value>service.translator.config</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.id" sv:type="String">
        <sv:value>service.dialog.breadcrumb</sv:value>
    </sv:property>
    <sv:property sv:name="wicket.model" sv:type="String">
        <sv:value>${cluster.id}.model.folder</sv:value>
    </sv:property>
</sv:node>

Load the construction tree

Add into

/hippo:configuration/hippo:frontend/cms/cms-pickers/documents
<?xml version="1.0" encoding="UTF-8"?>
<sv:node sv:name="constructionTreeLoader" xmlns:sv="http://www.jcp.org/jcr/sv/1.0">
    <sv:property sv:name="jcr:primaryType" sv:type="Name">
        <sv:value>frontend:plugin</sv:value>
    </sv:property>
    <sv:property sv:name="cluster.name" sv:type="String">
        <sv:value>cms-tree-views/construction</sv:value>
    </sv:property>
    <sv:property sv:name="plugin.class" sv:type="String">
        <sv:value>org.hippoecm.frontend.plugin.loader.PluginClusterLoader</sv:value>
    </sv:property>
    <sv:node sv:name="cluster.config">
        <sv:property sv:name="jcr:primaryType" sv:type="Name">
            <sv:value>frontend:pluginconfig</sv:value>
        </sv:property>
        <sv:property sv:name="bind.to.layout.unit" sv:type="Boolean">
            <sv:value>false</sv:value>
        </sv:property>
        <sv:property sv:name="register.context.menu" sv:type="Boolean">
            <sv:value>false</sv:value>
        </sv:property>
        <sv:property sv:name="use.width.from.classname" sv:type="String">
            <sv:value>hippo-picker-tree</sv:value>
        </sv:property>
        <sv:property sv:name="wicket.id" sv:type="String">
            <sv:value>service.dialog.tree.construction</sv:value>
        </sv:property>
        <sv:property sv:name="wicket.model" sv:type="String">
            <sv:value>${cluster.id}.model.folder</sv:value>
        </sv:property>
    </sv:node>
</sv:node>

Browse Space

- Pages
- News
- Labels
- Attachments
- Bookmarks
- Mail
- Advanced
- Activity

Explore Confluence

- Popular Labels
- Notation Guide

Your Account

Log In

 

Other Features

Add Content

- Add Comment