You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by dk...@apache.org on 2019/12/19 21:09:56 UTC

[sling-org-apache-sling-app-cms] 09/17: SLING-7900 UI Updates

This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch SLING-7900
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit 3b977b1fd5325d74b2a021c8f11e9848caf89e91
Author: Jason E Bailey <je...@apache.org>
AuthorDate: Fri Sep 14 16:19:46 2018 -0400

    SLING-7900 UI Updates
    
    formatting updates
    separated actions from views
    testing breadcrumb/menu integration
---
 core/pom.xml                                       |   6 +
 .../apache/sling/cms/core/models/BaseModel.java    |  86 ++++++
 .../{AvailableActions.java => Action.java}         |  62 +++--
 .../{AvailableActions.java => Actions.java}        |  95 +++----
 .../cms/core/models/components/Breadcrumbs.java    |  40 +--
 .../cms/core/models/components/ContentTable.java   |   7 +-
 .../models/components/column/LastModified.java     |  63 +++++
 .../cms/core/models/components/column/Name.java    |  37 +++
 ui/pom.xml                                         |   2 +-
 ui/src/main/resources/jcr_root/conf/global.json    | 276 +++++++++----------
 ui/src/main/resources/jcr_root/content.json        |   7 -
 .../content/sling-cms/errorhandling/401.json       |  34 +--
 .../content/sling-cms/errorhandling/403.json       |  34 +--
 .../content/sling-cms/errorhandling/404.json       |  34 +--
 .../content/sling-cms/errorhandling/default.json   |  34 +--
 .../jcr_root/libs/sling-cms/actions/nt%3Afile.json |   7 +-
 .../{sling%3ASite.json => sling%3AConfig.json}     |  10 +-
 .../libs/sling-cms/actions/sling%3AFile.json       |   7 +-
 .../libs/sling-cms/actions/sling%3AFolder.json     |   4 +-
 .../libs/sling-cms/actions/sling%3AMapping.json    |   1 +
 .../sling-cms/actions/sling%3AOrderedFolder.json   |   6 +-
 .../libs/sling-cms/actions/sling%3APage.json       |   3 +-
 .../libs/sling-cms/actions/sling%3ASite.json       |   4 +-
 .../{sling%3AFolder.json => sling%3ATaxonomy.json} |   9 +-
 .../name.jsp => breadcrumbmenu/breadcrumbmenu.jsp} |  24 +-
 .../components/cms/breadcrumbmenu/edit.json        |  31 +++
 .../components/cms/columns/actions/actions.jsp     |  35 +--
 .../cms/columns/lastmodified/lastmodified.jsp      |  10 +-
 .../sling-cms/components/cms/columns/name/name.jsp |   5 +-
 .../cms/contentactions/contentactions.jsp          |  32 ++-
 .../name/name.jsp => resource/action/action.jsp}   |  22 +-
 .../components/cms/staticnav/staticnav.jsp         |   6 +-
 .../libs/sling-cms/components/pages/base/nav.jsp   |   1 -
 .../sling-cms/content/actions/create/config.json   |   5 -
 .../content/actions/create/sitegroup.json          | 129 +++++----
 .../sling-cms/content/actions/create/taxonomy.json |   5 -
 .../sling-cms/content/actions/create/template.json |   5 -
 .../libs/sling-cms/content/actions/edit/site.json  | 121 ++++----
 .../sling-cms/content/actions/edit/sitegroup.json  |   5 -
 .../sling-cms/content/actions/edit/taxonomy.json   |   2 +-
 .../content/actions/optimize/optimize.json         |   7 +-
 .../libs/sling-cms/content/config/edit.json        |  46 ++--
 .../libs/sling-cms/content/config/list.json        |  12 +-
 .../libs/sling-cms/content/mappings/list.json      | 304 ++++++++++-----------
 .../libs/sling-cms/content/site/content.json       |  11 +-
 .../libs/sling-cms/content/site/sites.json         |  21 +-
 .../libs/sling-cms/content/siteconfig/editor.json  |  71 ++---
 .../libs/sling-cms/content/static/content.json     |   9 +-
 .../libs/sling-cms/content/taxonomy/list.json      |  24 +-
 49 files changed, 960 insertions(+), 851 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index d936bb1..2b20be9 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -185,6 +185,12 @@
             <artifactId>org.apache.sling.cms.api</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.xss</artifactId>
+            <scope>provided</scope>
+            <version>2.0.0</version>
+        </dependency>
     </dependencies>
     <properties>
         <sling.java.version>8</sling.java.version>
diff --git a/core/src/main/java/org/apache/sling/cms/core/models/BaseModel.java b/core/src/main/java/org/apache/sling/cms/core/models/BaseModel.java
new file mode 100644
index 0000000..fa07fee
--- /dev/null
+++ b/core/src/main/java/org/apache/sling/cms/core/models/BaseModel.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cms.core.models;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.models.annotations.DefaultInjectionStrategy;
+import org.apache.sling.models.annotations.Model;
+import org.apache.sling.models.annotations.injectorspecific.OSGiService;
+import org.apache.sling.models.annotations.injectorspecific.Self;
+import org.apache.sling.xss.XSSAPI;
+
+@Model(adaptables = { SlingHttpServletRequest.class,
+        Resource.class }, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
+public class BaseModel {
+
+    @OSGiService
+    public XSSAPI xss;
+
+    @Inject
+    @Self
+    public Resource resource;
+
+    @Inject
+    @Self
+    public SlingHttpServletRequest slingRequest;
+
+    private ValueMap valueMap;
+
+    @PostConstruct
+    public void baseResourceModel() {
+        if (resource == null) {
+            resource = slingRequest.getResource();
+        }
+        valueMap = resource.getValueMap();
+    }
+
+    /**
+     * Convenience method for scripting languages such as the JSP EL.
+     * 
+     * @param key
+     * @return
+     */
+    public String get(String key) {
+        return valueMap.get(key, "");
+    }
+
+    /**
+     * Convenience method for scripting languages such as the JSP EL.
+     * 
+     * @param key
+     * @return
+     */
+    public <T> T get(String key, T def) {
+        return valueMap.get(key, def);
+    }
+    
+    /**
+     * Convenience method for scripting languages such as the JSP EL.
+     * 
+     * @param key
+     * @return
+     */
+    public <T> T get(String key, Class<T> def) {
+        return valueMap.get(key, def);
+    }
+
+}
diff --git a/core/src/main/java/org/apache/sling/cms/core/models/components/AvailableActions.java b/core/src/main/java/org/apache/sling/cms/core/models/components/Action.java
similarity index 50%
copy from core/src/main/java/org/apache/sling/cms/core/models/components/AvailableActions.java
copy to core/src/main/java/org/apache/sling/cms/core/models/components/Action.java
index 13e4770..bde08fe 100644
--- a/core/src/main/java/org/apache/sling/cms/core/models/components/AvailableActions.java
+++ b/core/src/main/java/org/apache/sling/cms/core/models/components/Action.java
@@ -16,37 +16,53 @@
  */
 package org.apache.sling.cms.core.models.components;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
+import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 
-import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.cms.core.models.BaseModel;
 import org.apache.sling.models.annotations.DefaultInjectionStrategy;
 import org.apache.sling.models.annotations.Model;
-import org.apache.sling.models.annotations.injectorspecific.Self;
 
-@Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
-public class AvailableActions {
+@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
+public class Action extends BaseModel {
+
+    @Inject
+    boolean modal;
 
     @Inject
-    @Self
-    SlingHttpServletRequest slingRequest;
-    
-    public List<Resource> getChildren() {
-        System.out.println(slingRequest.getContextPath());
-        System.out.println(slingRequest.getResource().getPath());
-        String type = slingRequest.getResource().getValueMap().get("jcr:primaryType", "sling:File");
-        System.out.println(type);
-        Resource resource = slingRequest.getResourceResolver().resolve("/libs/sling-cms/actions/"+type);
-        
-        List<Resource> list = new ArrayList<>();
-        resource.listChildren().forEachRemaining(list::add);
-        System.out.println(list.toString());
-        return list;
+    boolean target;
+
+    @PostConstruct
+    public void init() {
+        System.out.println("here");
+    }
+
+    public String getClasses() {
+        String response = "button";
+        if (modal) {
+            response += "  Fetch-Modal";
+        }
+        return response;
+    }
+
+    public String getTitle() {
+        return xss.encodeForHTMLAttr(get("title"));
+    }
+
+    public String getDataPath() {
+        return get("ajaxPath", ".Main-Content form");
+    }
+
+    public String getIcon() {
+        return String.format("jam jam-%s", get("icon", "file"));
+    }
+
+    public String getTarget() {
+        if (target) {
+            return "target='_blank'";
+        }
+        return "";
     }
 
 }
diff --git a/core/src/main/java/org/apache/sling/cms/core/models/components/AvailableActions.java b/core/src/main/java/org/apache/sling/cms/core/models/components/Actions.java
similarity index 68%
rename from core/src/main/java/org/apache/sling/cms/core/models/components/AvailableActions.java
rename to core/src/main/java/org/apache/sling/cms/core/models/components/Actions.java
index 13e4770..067c078 100644
--- a/core/src/main/java/org/apache/sling/cms/core/models/components/AvailableActions.java
+++ b/core/src/main/java/org/apache/sling/cms/core/models/components/Actions.java
@@ -1,52 +1,43 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sling.cms.core.models.components;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import javax.inject.Inject;
-
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.models.annotations.DefaultInjectionStrategy;
-import org.apache.sling.models.annotations.Model;
-import org.apache.sling.models.annotations.injectorspecific.Self;
-
-@Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
-public class AvailableActions {
-
-    @Inject
-    @Self
-    SlingHttpServletRequest slingRequest;
-    
-    public List<Resource> getChildren() {
-        System.out.println(slingRequest.getContextPath());
-        System.out.println(slingRequest.getResource().getPath());
-        String type = slingRequest.getResource().getValueMap().get("jcr:primaryType", "sling:File");
-        System.out.println(type);
-        Resource resource = slingRequest.getResourceResolver().resolve("/libs/sling-cms/actions/"+type);
-        
-        List<Resource> list = new ArrayList<>();
-        resource.listChildren().forEachRemaining(list::add);
-        System.out.println(list.toString());
-        return list;
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cms.core.models.components;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.cms.core.models.BaseModel;
+import org.apache.sling.models.annotations.DefaultInjectionStrategy;
+import org.apache.sling.models.annotations.Model;
+import org.apache.sling.models.annotations.injectorspecific.Self;
+
+@Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
+public class Actions extends BaseModel {
+
+    
+    public List<Resource> getChildren() {
+        String type = get("jcr:primaryType", "sling:File");
+        Resource target = slingRequest.getResourceResolver().resolve("/libs/sling-cms/actions/"+type);
+        List<Resource> list = new ArrayList<>();
+        target.listChildren().forEachRemaining(list::add);
+        return list;
+    }
+
+}
diff --git a/core/src/main/java/org/apache/sling/cms/core/models/components/Breadcrumbs.java b/core/src/main/java/org/apache/sling/cms/core/models/components/Breadcrumbs.java
index c4abe0c..d119638 100644
--- a/core/src/main/java/org/apache/sling/cms/core/models/components/Breadcrumbs.java
+++ b/core/src/main/java/org/apache/sling/cms/core/models/components/Breadcrumbs.java
@@ -25,11 +25,13 @@ import javax.inject.Inject;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.cms.core.models.BaseModel;
 import org.apache.sling.models.annotations.Default;
 import org.apache.sling.models.annotations.DefaultInjectionStrategy;
 import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.annotations.Via;
 import org.apache.sling.models.annotations.injectorspecific.Self;
+
 /**
  * Logic for the Suffix BreadCrumb Component
  * 
@@ -37,43 +39,34 @@ import org.apache.sling.models.annotations.injectorspecific.Self;
  *
  */
 @Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
-public class Breadcrumbs {
+public class Breadcrumbs extends BaseModel {
 
     @Inject
     @Via("resource")
-    @Default(intValues=1)
+    @Default(intValues = 2)
     int depth;
 
-    @Inject
-    Resource resource;
-
-    @Inject
-    @Via("resource")
-    @Default(values="../..")
-    String prefix;
 
     @Inject
     @Via("resource")
     @Default(values = "jcr:title")
     String titleProp;
 
-    @Self
-    SlingHttpServletRequest servletRequest;
-
     Resource suffixResource;
 
     List<PathData> pathData = new ArrayList<>();
 
     @PostConstruct
     public void postConstruct() {
-        suffixResource = servletRequest.getRequestPathInfo().getSuffixResource();
+        suffixResource = slingRequest.getRequestPathInfo().getSuffixResource();
         if (suffixResource == null) {
             return;
         }
+        String prefix = slingRequest.getPathInfo();
         boolean first = true;
         while (suffixResource.getParent() != null) {
             String suffix = suffixResource.getPath();
-            pathData.add(0, new PathData(prefix + suffix, getTitle(suffixResource),first));
+            pathData.add(0, new PathData(suffix, prefix + getTitle(suffixResource), first));
             if (first) {
                 first = false;
             }
@@ -85,22 +78,17 @@ public class Breadcrumbs {
     }
 
     private String getTitle(Resource resource) {
-        ValueMap map = resource.getValueMap();
-        String title = map.get("jcr:title", String.class);
+        String title = get("jcr:title", String.class);
         if (title != null) {
             return title;
         }
-        title = map.get("jcr:content/jcr:title", String.class);
+        title = get("jcr:content/jcr:title", String.class);
         if (title != null) {
             return title;
         }
         return resource.getName();
     }
 
-    public String getTitle() {
-        return null;
-    }
-
     public List<PathData> getPathData() {
         return pathData;
     }
@@ -114,7 +102,7 @@ public class Breadcrumbs {
         public PathData(String href, String title, boolean first) {
             this.href = href;
             this.title = title;
-            this.first= first;
+            this.first = first;
         }
 
         public String getHref() {
@@ -126,21 +114,19 @@ public class Breadcrumbs {
         public String getTitle() {
             return title;
         }
-        
+
         public String getAria() {
             if (first) {
                 return "aria-current='page'";
             }
             return "";
         }
-        
+
         public String getClassAttr() {
             if (first) {
-                return "class='is-active'";
+                return "class='has-background-grey-lighter'";
             }
             return "";
         }
-
     }
-
 }
diff --git a/core/src/main/java/org/apache/sling/cms/core/models/components/ContentTable.java b/core/src/main/java/org/apache/sling/cms/core/models/components/ContentTable.java
index cbd611e..fb72f28 100644
--- a/core/src/main/java/org/apache/sling/cms/core/models/components/ContentTable.java
+++ b/core/src/main/java/org/apache/sling/cms/core/models/components/ContentTable.java
@@ -27,14 +27,14 @@ import javax.inject.Inject;
 import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.cms.core.models.BaseModel;
 import org.apache.sling.models.annotations.Default;
 import org.apache.sling.models.annotations.DefaultInjectionStrategy;
 import org.apache.sling.models.annotations.Model;
 import org.apache.sling.models.annotations.Via;
-import org.apache.sling.models.annotations.injectorspecific.Self;
 
 @Model(adaptables = SlingHttpServletRequest.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
-public class ContentTable {
+public class ContentTable extends BaseModel {
 
     @Inject
     @Via("resource")
@@ -47,12 +47,9 @@ public class ContentTable {
 
     private String[] types;
 
-    @Self
-    SlingHttpServletRequest slingRequest;
 
     @PostConstruct
     public void init() {
-        Resource resource = slingRequest.getResource();
         ValueMap data = resource.getChild("columns").getValueMap();
         types = data.get("resourceTypes", new String[]{});
     }
diff --git a/core/src/main/java/org/apache/sling/cms/core/models/components/column/LastModified.java b/core/src/main/java/org/apache/sling/cms/core/models/components/column/LastModified.java
new file mode 100644
index 0000000..ab653b3
--- /dev/null
+++ b/core/src/main/java/org/apache/sling/cms/core/models/components/column/LastModified.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cms.core.models.components.column;
+
+import java.util.Calendar;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.cms.core.models.BaseModel;
+import org.apache.sling.models.annotations.DefaultInjectionStrategy;
+import org.apache.sling.models.annotations.Model;
+
+@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
+public class LastModified extends BaseModel {
+    
+    private String subPath = "";
+    
+    @PostConstruct
+    private void init() {
+        if (resource.getChild("jcr:content") != null) {
+            subPath = "jcr:content/";
+        }
+    }
+    
+    public String getLastModified() {
+        Calendar cal = get(subPath +"jcr:lastModified",Calendar.class);
+        if (cal == null) {
+            cal = get(subPath +"jcr:created",Calendar.class);
+            if (cal == null) {
+                return "";
+            }
+        }
+        return xss.encodeForHTML(cal.getTime().toString());
+    }
+    
+    public String getLastModifiedBy() {
+        String name = get(subPath+"jcr:lastModifiedBy",String.class);
+        if (name == null) {
+            name = get(subPath+"jcr:createdBy","");
+        }
+        return xss.encodeForHTML(name);
+    }
+    
+    public String getTitle() {
+        return getLastModified()+" - " + getLastModifiedBy();
+    }
+
+}
diff --git a/core/src/main/java/org/apache/sling/cms/core/models/components/column/Name.java b/core/src/main/java/org/apache/sling/cms/core/models/components/column/Name.java
new file mode 100644
index 0000000..92f140f
--- /dev/null
+++ b/core/src/main/java/org/apache/sling/cms/core/models/components/column/Name.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cms.core.models.components.column;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.cms.core.models.BaseModel;
+import org.apache.sling.models.annotations.DefaultInjectionStrategy;
+import org.apache.sling.models.annotations.Model;
+
+@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
+public class Name extends BaseModel {
+    
+    public String getIcon() {
+        if (resource.isResourceType("nt:file")) {
+            return "document";
+        }
+        if (resource.isResourceType("nt:folder")) {
+            return "folder";
+        }
+        return "link";
+    }
+
+}
diff --git a/ui/pom.xml b/ui/pom.xml
index 4a031e4..662a292 100644
--- a/ui/pom.xml
+++ b/ui/pom.xml
@@ -121,7 +121,7 @@
 									<pluginExecutionFilter>
 										<groupId>com.github.eirslett</groupId>
 										<artifactId>frontend-maven-plugin</artifactId>
-										<versionRange>[1.0.0,)</versionRange>
+                                        <versionRange>[1.6.0,)</versionRange>
 										<goals>
 											<goal>install-node-and-npm</goal>
 											<goal>npm</goal>
diff --git a/ui/src/main/resources/jcr_root/conf/global.json b/ui/src/main/resources/jcr_root/conf/global.json
index 37e62ed..12f7383 100644
--- a/ui/src/main/resources/jcr_root/conf/global.json
+++ b/ui/src/main/resources/jcr_root/conf/global.json
@@ -1,139 +1,139 @@
 {
-	"jcr:primaryType": "sling:OrderedFolder",
-	"jcr:content": {
-		"jcr:primaryType": "nt:unstructured",
-		"jcr:title": "Global"
-	},
-	"files": {
-		"jcr:primaryType": "sling:OrderedFolder",
-		"jcr:content": {
-			"jcr:primaryType": "nt:unstructured",
-			"jcr:title": "File Configurations"
-		},
-		"editors": {
-			"jcr:primaryType": "sling:OrderedFolder",
-			"jcr:content": {
-				"jcr:primaryType": "nt:unstructured",
-				"jcr:title": "File Editor"
-			},
-			"default": {
-				"jcr:primaryType": "sling:Config",
-				"jcr:title": "Default File Editor",
-				"sling:resourceType": "sling-cms/components/cms/fileeditorconfig",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"title": {
-						"jcr:primaryType": "nt:unstructured",
-						"required": false,
-						"name": "jcr:content/jcr:title",
-						"type": "text",
-						"label": "Title",
-						"sling:resourceType": "sling-cms/components/editor/fields/text"
-					},
-					"jcrmimeType": {
-						"jcr:primaryType": "nt:unstructured",
-						"required": true,
-						"name": "jcr:content/jcr:mimeType",
-						"type": "text",
-						"label": "MIME Type",
-						"sling:resourceType": "sling-cms/components/editor/fields/text"
-					},
-					"licensing": {
-						"jcr:primaryType": "nt:unstructured",
-						"required": false,
-						"name": "jcr:content/licensing",
-						"type": "text",
-						"label": "Licensing",
-						"sling:resourceType": "sling-cms/components/editor/fields/text"
-					},
-					"taxonomy": {
-						"jcr:primaryType": "nt:unstructured",
-						"name": "jcr:content/sling:taxonomy",
-						"label": "Taxonomy",
-						"sling:resourceType": "sling-cms/components/editor/fields/taxonomy"
-					},
-					"taxonomyTypeHint": {
-						"jcr:primaryType": "nt:unstructured",
-						"name": "jcr:content/sling:taxonomy@TypeHint",
-						"value": "String[]",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden"
-					},
-					"published": {
-						"jcr:primaryType": "nt:unstructured",
-						"options": "Yes=true, No=false",
-						"name": "jcr:content/published",
-						"label": "Published",
-						"sling:resourceType": "sling-cms/components/editor/fields/select"
-					},
-					"publishedTypeHint": {
-						"jcr:primaryType": "nt:unstructured",
-						"name": "jcr:content/published@TypeHint",
-						"value": "Boolean",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden"
-					}
-				}
-			}
-		}
-	},
-	"site": {
-		"jcr:primaryType": "sling:Config",
-		"sling:resourceType": "sling-cms/components/cms/siteconfig",
-		"jcr:title": "Default Site Configuration",
-		"rewrite": {
-			"jcr:primaryType": "nt:unstructured",
-			"doctype": "<!DOCTYPE html>",
-			"attributes": [
-				"action",
-				"href",
-				"src"
-			]
-		},
-		"templates": {
-			"jcr:primaryType": "nt:unstructured",
-			"base-page": {
-				"jcr:primaryType": "nt:unstructured",
-				"jcr:title": "Base Page",
-				"template": "{\r\n  \"jcr:primaryType\": \"sling:Page\",\r\n  \"jcr:content\": {\r\n    \"jcr:primaryType\": \"nt:unstructured\",\r\n    \"jcr:title\": \"{{title}}\",\r\n    \"sling:template\": \"/conf/global/site/templates/base-page\",\r\n    \"sling:resourceType\": \"reference/components/pages/base\",\r\n    \"published\": false\r\n  }\r\n}",
-				"availableComponentTypes": [
-					"General"
-				],
-				"allowedPaths": [
-					"/content/apache/apache-sling-org.*"
-				],
-				"sling:resourceType": "sling-cms/components/cms/pagetemplate",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"text": {
-						"jcr:primaryType": "nt:unstructured",
-						"required": true,
-						"name": "title",
-						"type": "text",
-						"label": "Title",
-						"sling:resourceType": "sling-cms/components/editor/fields/text"
-					},
-					"text_1147023191": {
-						"jcr:primaryType": "nt:unstructured",
-						"required": true,
-						"name": ":name",
-						"type": "text",
-						"label": "Name",
-						"sling:resourceType": "sling-cms/components/editor/fields/text"
-					}
-				},
-				"componentConfigurations": {
-					"jcr:primaryType": "nt:unstructured",
-					"componentconfig": {
-						"jcr:primaryType": "nt:unstructured",
-						"type": "reference/components/general/columncontrol",
-						"containerclass": "container",
-						"columns": [
-							"50-50=col-md-6 col-md-6",
-							"100=col-md-12"
-						],
-						"sling:resourceType": "sling-cms/components/cms/componentconfig"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:OrderedFolder",
+    "jcr:content": {
+        "jcr:primaryType": "nt:unstructured",
+        "jcr:title": "Global"
+    },
+    "files": {
+        "jcr:primaryType": "sling:OrderedFolder",
+        "jcr:content": {
+            "jcr:primaryType": "nt:unstructured",
+            "jcr:title": "File Configurations"
+        },
+        "editors": {
+            "jcr:primaryType": "sling:OrderedFolder",
+            "jcr:content": {
+                "jcr:primaryType": "nt:unstructured",
+                "jcr:title": "File Editor"
+            },
+            "default": {
+                "jcr:primaryType": "sling:Config",
+                "jcr:title": "Default File Editor",
+                "sling:resourceType": "sling-cms/components/cms/fileeditorconfig",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "title": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "required": false,
+                        "name": "jcr:content/jcr:title",
+                        "type": "text",
+                        "label": "Title",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text"
+                    },
+                    "jcrmimeType": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "required": true,
+                        "name": "jcr:content/jcr:mimeType",
+                        "type": "text",
+                        "label": "MIME Type",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text"
+                    },
+                    "licensing": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "required": false,
+                        "name": "jcr:content/licensing",
+                        "type": "text",
+                        "label": "Licensing",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text"
+                    },
+                    "taxonomy": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "name": "jcr:content/sling:taxonomy",
+                        "label": "Taxonomy",
+                        "sling:resourceType": "sling-cms/components/editor/fields/taxonomy"
+                    },
+                    "taxonomyTypeHint": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "name": "jcr:content/sling:taxonomy@TypeHint",
+                        "value": "String[]",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden"
+                    },
+                    "published": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "options": "Yes=true, No=false",
+                        "name": "jcr:content/published",
+                        "label": "Published",
+                        "sling:resourceType": "sling-cms/components/editor/fields/select"
+                    },
+                    "publishedTypeHint": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "name": "jcr:content/published@TypeHint",
+                        "value": "Boolean",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden"
+                    }
+                }
+            }
+        }
+    },
+    "site": {
+        "jcr:primaryType": "sling:Config",
+        "sling:resourceType": "sling-cms/components/cms/siteconfig",
+        "jcr:title": "Default Site Configuration",
+        "rewrite": {
+            "jcr:primaryType": "nt:unstructured",
+            "doctype": "<!DOCTYPE html>",
+            "attributes": [
+                "action",
+                "href",
+                "src"
+            ]
+        },
+        "templates": {
+            "jcr:primaryType": "nt:unstructured",
+            "base-page": {
+                "jcr:primaryType": "nt:unstructured",
+                "jcr:title": "Base Page",
+                "template": "{\r\n  \"jcr:primaryType\": \"sling:Page\",\r\n  \"jcr:content\": {\r\n    \"jcr:primaryType\": \"nt:unstructured\",\r\n    \"jcr:title\": \"{{title}}\",\r\n    \"sling:template\": \"/conf/global/site/templates/base-page\",\r\n    \"sling:resourceType\": \"reference/components/pages/base\",\r\n    \"published\": false\r\n  }\r\n}",
+                "availableComponentTypes": [
+                    "General"
+                ],
+                "allowedPaths": [
+                    "/content/apache/apache-sling-org.*"
+                ],
+                "sling:resourceType": "sling-cms/components/cms/pagetemplate",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "text": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "required": true,
+                        "name": "title",
+                        "type": "text",
+                        "label": "Title",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text"
+                    },
+                    "text_1147023191": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "required": true,
+                        "name": ":name",
+                        "type": "text",
+                        "label": "Name",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text"
+                    }
+                },
+                "componentConfigurations": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "componentconfig": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "type": "reference/components/general/columncontrol",
+                        "containerclass": "container",
+                        "columns": [
+                            "50-50=col-md-6 col-md-6",
+                            "100=col-md-12"
+                        ],
+                        "sling:resourceType": "sling-cms/components/cms/componentconfig"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/content.json b/ui/src/main/resources/jcr_root/content.json
deleted file mode 100644
index 0f29c12..0000000
--- a/ui/src/main/resources/jcr_root/content.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "jcr:primaryType": "sling:Folder",
-    "allowedResourceTypes": [
-        "sling:Site",
-        "sling:OrderedFolder"
-    ]
-}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/401.json b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/401.json
index ce41d15..7ed027a 100644
--- a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/401.json
+++ b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/401.json
@@ -1,18 +1,18 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/error",
-		"jcr:title": "Unauthorized",
-		"jcr:primaryType": "nt:unstructured",
-		"center": true,
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h3>Unauthorized</h3><p>You cannot access the requested resource.</p><p><a href=\"/system/sling/form/login\">Login?</a>"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/error",
+        "jcr:title": "Unauthorized",
+        "jcr:primaryType": "nt:unstructured",
+        "center": true,
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "richtext": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/general/richtext",
+                "text": "<h3>Unauthorized</h3><p>You cannot access the requested resource.</p><p><a href=\"/system/sling/form/login\">Login?</a>"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/403.json b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/403.json
index e7685a3..c29719c 100644
--- a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/403.json
+++ b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/403.json
@@ -1,18 +1,18 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/error",
-		"jcr:title": "Forbidden",
-		"jcr:primaryType": "nt:unstructured",
-		"center": true,
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h3>Forbidden</h3><p>You cannot access the requested resource.</p><p><a href=\"/system/sling/form/login\">Login?</a>"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/error",
+        "jcr:title": "Forbidden",
+        "jcr:primaryType": "nt:unstructured",
+        "center": true,
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "richtext": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/general/richtext",
+                "text": "<h3>Forbidden</h3><p>You cannot access the requested resource.</p><p><a href=\"/system/sling/form/login\">Login?</a>"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/404.json b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/404.json
index 5faf31a..7a2acaf 100644
--- a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/404.json
+++ b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/404.json
@@ -1,18 +1,18 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/error",
-		"jcr:title": "Not Found",
-		"jcr:primaryType": "nt:unstructured",
-		"center": true,
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h3>Not Found</h3><p>The requested content was not found.</p>"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/error",
+        "jcr:title": "Not Found",
+        "jcr:primaryType": "nt:unstructured",
+        "center": true,
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "richtext": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/general/richtext",
+                "text": "<h3>Not Found</h3><p>The requested content was not found.</p>"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/default.json b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/default.json
index da21f25..7d25e3c 100644
--- a/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/default.json
+++ b/ui/src/main/resources/jcr_root/content/sling-cms/errorhandling/default.json
@@ -1,18 +1,18 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/error",
-		"jcr:title": "Exception",
-		"jcr:primaryType": "nt:unstructured",
-		"center": true,
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h3>Unexpected Exception</h3><p>An unexpected exception occurred rendering the response.</p>"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/error",
+        "jcr:title": "Exception",
+        "jcr:primaryType": "nt:unstructured",
+        "center": true,
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "richtext": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/general/richtext",
+                "text": "<h3>Unexpected Exception</h3><p>An unexpected exception occurred rendering the response.</p>"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/nt%3Afile.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/nt%3Afile.json
index fc1963a..4f42e3f 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/nt%3Afile.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/nt%3Afile.json
@@ -1,11 +1,11 @@
 {
     "jcr:primaryType": "nt:unstructured",
-    "sling:resourceType": "sling-cms/components/cms/columns/actions",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
         "title": "Edit File",
         "icon": "pencil-f",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/edit/file.html"
     },
     "optimize": {
@@ -13,12 +13,14 @@
         "modal": false,
         "title": "Optimize File",
         "icon": "archive",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/optimize/file.html"
     },
     "download": {
         "jcr:primaryType": "nt:unstructured",
         "modal": false,
         "title": "Download file",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "icon": "download"
     },
     "movecopy": {
@@ -26,6 +28,7 @@
         "modal": true,
         "title": "Move / Copy File",
         "icon": "move-alt",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/movecopy.html"
     },
     "version": {
@@ -34,6 +37,7 @@
         "modal": true,
         "title": "Manage Versions",
         "icon": "history",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/versions.html"
     },
     "delete": {
@@ -41,6 +45,7 @@
         "modal": true,
         "title": "Delete File",
         "icon": "trash",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/delete.html"
     }
 }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AConfig.json
similarity index 69%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json
copy to ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AConfig.json
index 7a92041..14badd1 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AConfig.json
@@ -1,23 +1,23 @@
 {
-    "jcr:resourceType": "nt:unstructured",
+    "jcr:primaryType": "nt:unstructured",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
-        "title": "Edit Site",
+        "title": "Edit Site Config",
         "icon": "pencil-f",
-        "prefix": "/cms/action/edit/site.html"
+        "prefix": "/cms/config/metadata.html"
     },
     "movecopy": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
-        "title": "Move / Copy Site",
+        "title": "Move / Copy Config",
         "icon": "move-alt",
         "prefix": "/cms/actions/shared/movecopy.html"
     },
     "delete": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
-        "title": "Delete the specified site",
+        "title": "Delete Site Config",
         "icon": "trash",
         "prefix": "/cms/actions/shared/delete.html"
     }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFile.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFile.json
index fc1963a..4f42e3f 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFile.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFile.json
@@ -1,11 +1,11 @@
 {
     "jcr:primaryType": "nt:unstructured",
-    "sling:resourceType": "sling-cms/components/cms/columns/actions",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
         "title": "Edit File",
         "icon": "pencil-f",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/edit/file.html"
     },
     "optimize": {
@@ -13,12 +13,14 @@
         "modal": false,
         "title": "Optimize File",
         "icon": "archive",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/optimize/file.html"
     },
     "download": {
         "jcr:primaryType": "nt:unstructured",
         "modal": false,
         "title": "Download file",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "icon": "download"
     },
     "movecopy": {
@@ -26,6 +28,7 @@
         "modal": true,
         "title": "Move / Copy File",
         "icon": "move-alt",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/movecopy.html"
     },
     "version": {
@@ -34,6 +37,7 @@
         "modal": true,
         "title": "Manage Versions",
         "icon": "history",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/versions.html"
     },
     "delete": {
@@ -41,6 +45,7 @@
         "modal": true,
         "title": "Delete File",
         "icon": "trash",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/delete.html"
     }
 }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json
index f437acb..9067adc 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json
@@ -1,11 +1,11 @@
 {
     "jcr:primaryType": "nt:unstructured",
-    "sling:resourceType": "sling-cms/components/cms/columns/actions",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
         "title": "Edit Folder",
         "icon": "pencil-f",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/edit/folder.html"
     },
     "movecopy": {
@@ -13,6 +13,7 @@
         "modal": true,
         "title": "Move / Copy Folder",
         "icon": "move-alt",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/movecopy.html"
     },
     "delete": {
@@ -20,6 +21,7 @@
         "modal": true,
         "title": "Delete Folder",
         "icon": "trash",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/delete.html"
     }
 }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AMapping.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AMapping.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AMapping.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AOrderedFolder.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AOrderedFolder.json
index 6a91288..b6f64a9 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AOrderedFolder.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AOrderedFolder.json
@@ -1,11 +1,11 @@
 {
-    "jcr:primartyType": "nt:unstructured",
-    "sling:resourceType": "sling-cms/components/cms/columns/actions",
+    "jcr:primaryType": "nt:unstructured",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
         "title": "Edit Site Group",
         "icon": "pencil-f",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/edit/sitegroup.html"
     },
     "movecopy": {
@@ -13,12 +13,14 @@
         "modal": true,
         "title": "Move / Copy Site Group",
         "icon": "move-alt",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/movecopy.html"
     },
     "delete": {
         "jcr:primaryType": "nt:unstructured",
         "title": "Delete Site Group",
         "icon": "trash",
+        "sling:resourceType": "sling-cms/components/cms/resource/action",
         "prefix": "/cms/actions/shared/delete.html",
         "modal": true
     }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3APage.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3APage.json
index 356523e..369b7e5 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3APage.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3APage.json
@@ -1,4 +1,5 @@
 {
+    "jcr:primaryType": "nt:unstructured",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": false,
@@ -31,7 +32,7 @@
     "delete": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
-        "title": "Delete the specified page",
+        "title": "Delete Page",
         "icon": "trash",
         "prefix": "/cms/shared/delete.html"
     }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json
index 7a92041..154e16a 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json
@@ -1,11 +1,11 @@
 {
-    "jcr:resourceType": "nt:unstructured",
+    "jcr:primaryType": "nt:unstructured",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
         "title": "Edit Site",
         "icon": "pencil-f",
-        "prefix": "/cms/action/edit/site.html"
+        "prefix": "/cms/actions/edit/site.html"
     },
     "movecopy": {
         "jcr:primaryType": "nt:unstructured",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ATaxonomy.json
similarity index 69%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json
copy to ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ATaxonomy.json
index f437acb..af5eec7 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ATaxonomy.json
@@ -1,24 +1,23 @@
 {
     "jcr:primaryType": "nt:unstructured",
-    "sling:resourceType": "sling-cms/components/cms/columns/actions",
     "edit": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
-        "title": "Edit Folder",
+        "jcr:title": "Edit Taxonomy Item",
         "icon": "pencil-f",
-        "prefix": "/cms/actions/edit/folder.html"
+        "prefix": "/cms/actions/edit/taxonomy.html"
     },
     "movecopy": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
-        "title": "Move / Copy Folder",
+        "jcr:title": "Move / Copy Taxonomy Item",
         "icon": "move-alt",
         "prefix": "/cms/actions/shared/movecopy.html"
     },
     "delete": {
         "jcr:primaryType": "nt:unstructured",
         "modal": true,
-        "title": "Delete Folder",
+        "jcr:title": "Delete Taxonomy Item",
         "icon": "trash",
         "prefix": "/cms/actions/shared/delete.html"
     }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/breadcrumbmenu/breadcrumbmenu.jsp
similarity index 62%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp
copy to ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/breadcrumbmenu/breadcrumbmenu.jsp
index 5455d56..309308c 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/breadcrumbmenu/breadcrumbmenu.jsp
@@ -16,16 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */ --%>
+<%@page import="org.apache.sling.models.factory.ModelFactory"%>
+<%@page import="org.apache.sling.cms.core.models.components.Breadcrumbs"%>
 <%@include file="/libs/sling-cms/global.jsp"%>
-<td><c:set var="colValue" value="${resource.name}" /> <c:choose>
-        <c:when test="${colConfig.valueMap.link}">
-            <a class="has-text-primary"
-                href="${colConfig.valueMap.prefix}${resource.path}">
-                <span class="icon"><i class="jam jam-link"></i></span>&nbsp;
-                <sling:encode value="${colValue}" mode="HTML" />
-            </a>
-        </c:when>
-        <c:otherwise>
-            <sling:encode value="${colValue}" mode="HTML" />
-        </c:otherwise>
-    </c:choose></td>
\ No newline at end of file
+<sling:adaptTo adaptable="${slingRequest}" adaptTo="org.apache.sling.cms.core.models.components.Breadcrumbs" var="model"/>
+<ul>
+   <c:forEach var="item" items="${model.pathData}">
+       <li>
+           <a href="${item.href}" ${item.aria} ${item.classAttr} >
+               <sling:encode value="${item.title}" mode="HTML" />
+           </a>
+       </li>
+   </c:forEach>
+</ul>
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/breadcrumbmenu/edit.json b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/breadcrumbmenu/edit.json
new file mode 100644
index 0000000..e5f0709
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/breadcrumbmenu/edit.json
@@ -0,0 +1,31 @@
+ {
+	"jcr:primaryType": "nt:unstructured",
+	"sling:resourceType": "sling-cms/components/editor/slingform",
+	"title": "Suffix BreadCrumb",
+	"button": "Save Suffix Breadcrumb",
+	"fields": {
+		"jcr:primaryType": "nt:unstructured",
+		"sling:resourceType": "sling-cms/components/general/container",
+		"level": {
+			"jcr:primaryType": "nt:unstructured",
+			"sling:resourceType": "sling-cms/components/editor/fields/text",
+			"label": "Depth",
+			"name": "depth",
+			"required": true,
+			"type": "number"
+		},
+		"levelTypeHint": {
+			"jcr:primaryType": "nt:unstructured",
+			"sling:resourceType": "sling-cms/components/editor/fields/hidden",
+			"name": "level@TypeHint",
+			"value": "Long"
+		},
+		"prefix": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Prefix",
+            "name": "prefix",
+            "required": true
+        }
+	}
+}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/actions/actions.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/actions/actions.jsp
index 116cea6..8499f32 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/actions/actions.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/actions/actions.jsp
@@ -17,29 +17,12 @@
  * under the License.
  */ --%>
 <%@include file="/libs/sling-cms/global.jsp"%>
-<td class="is-hidden cell-actions">
-<sling:adaptTo adaptable="${slingRequest}"
-    adaptTo="org.apache.sling.cms.core.models.components.AvailableActions" var="model" />
-<c:forEach var="child" items="${model.children}">
-        <c:choose>
-            <c:when test="${child.valueMap.modal}">
-                <a class="button Fetch-Modal"
-                    data-title="${sling:encode(child.valueMap.title,'HTML_ATTR')}"
-                    data-path="${child.valueMap.ajaxPath != null ? actionConfig.valueMap.ajaxPath : '.Main-Content form'}"
-                    href="${child.valueMap.prefix}${resource.path}"
-                    title="${sling:encode(child.valueMap.title,'HTML_ATTR')}">
-                    <span class="jam jam-${child.valueMap.icon}">
-                </span>
-                </a>
-            </c:when>
-            <c:otherwise>
-                <a class="button"
-                    ${child.valueMap.new != false ? 'target="_blank"' : ''}
-                    href="${child.valueMap.prefix}${resource.path}"
-                    title="${sling:encode(child.valueMap.title,'HTML_ATTR')}">
-                    <span class="jam jam-${child.valueMap.icon}">
-                </span>
-                </a>
-            </c:otherwise>
-        </c:choose>
-    </c:forEach></td>
\ No newline at end of file
+<td class="is-hidden cell-actions"><sling:adaptTo
+        adaptable="${slingRequest}"
+        adaptTo="org.apache.sling.cms.core.models.components.Actions"
+        var="model"
+    /> <c:set var="colResource" value="${resource}" scope="request" />
+    <c:forEach var="child" items="${model.children}">
+        <sling:include resource="${child}" resourceType="sling-cms/components/cms/resource/action" />
+    </c:forEach>
+</td>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/lastmodified/lastmodified.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/lastmodified/lastmodified.jsp
index 2811532..71d647e 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/lastmodified/lastmodified.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/lastmodified/lastmodified.jsp
@@ -17,11 +17,9 @@
  * under the License.
  */ --%>
 <%@include file="/libs/sling-cms/global.jsp"%>
-<c:set var="modifiedProperty" value="${colConfig.valueMap.subPath}jcr:lastModified" />
-<c:set var="modifiedByProperty" value="${colConfig.valueMap.subPath}jcr:lastModifiedBy" />
-<fmt:formatDate var="lastModified" type = "both"  dateStyle = "medium" timeStyle = "medium" value="${resource.valueMap[modifiedProperty].time}" />
+<sling:adaptTo adaptable="${resource}" adaptTo="org.apache.sling.cms.core.models.components.column.LastModified" var="model" />
+
 <c:set var="colValue" value="${lastModified} - ${resource.valueMap[modifiedByProperty]}" />
-<td title="${sling:encode(colValue,'HTML_ATTR')}">
-	<sling:encode value="${lastModified}" mode="HTML" /><br/>
-	<sling:encode value="${resource.valueMap[modifiedByProperty]}" mode="HTML" />
+<td title="${model.title}">
+	${model.lastModified}<br/>${model.lastModifiedBy}
 </td>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp
index 5455d56..41e5ae3 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp
@@ -17,11 +17,14 @@
  * under the License.
  */ --%>
 <%@include file="/libs/sling-cms/global.jsp"%>
+<sling:adaptTo adaptable="${resource}"
+        adaptTo="org.apache.sling.cms.core.models.components.column.Name"
+        var="model" />
 <td><c:set var="colValue" value="${resource.name}" /> <c:choose>
         <c:when test="${colConfig.valueMap.link}">
             <a class="has-text-primary"
                 href="${colConfig.valueMap.prefix}${resource.path}">
-                <span class="icon"><i class="jam jam-link"></i></span>&nbsp;
+                <span class="icon"><i class="jam jam-${model.icon}"></i></span>&nbsp;
                 <sling:encode value="${colValue}" mode="HTML" />
             </a>
         </c:when>
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentactions/contentactions.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentactions/contentactions.jsp
index 5880c78..2644a3e 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentactions/contentactions.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentactions/contentactions.jsp
@@ -18,17 +18,23 @@
  */ --%>
 <%@include file="/libs/sling-cms/global.jsp"%>
 <nav class="level">
-	<div class="level-left">
-		<div class="level-item">
-			<div class="buttons has-addons">
-				<c:forEach var="action" items="${sling:listChildren(sling:getRelativeResource(resource,'actions'))}" varStatus="status">
-					<a class="button Fetch-Modal" data-title="Add ${action.valueMap.label}" data-path=".Main-Content form" href="${action.valueMap.prefix}${slingRequest.requestPathInfo.suffix}">+ ${action.valueMap.label}</a>
-				</c:forEach>
-			</div>
-		</div>
-		<div class="level-item">
-			<div class="buttons has-addons actions-target">
-			</div>
-		</div>
-	</div>
+    <div class="level-left">
+        <div class="level-item">
+            <div class="buttons has-addons">
+                <c:forEach var="action"
+                    items="${sling:listChildren(sling:getRelativeResource(resource,'actions'))}"
+                    varStatus="status"
+                >
+                    <a class="button Fetch-Modal"
+                        data-title="Add ${action.valueMap.label}"
+                        data-path=".Main-Content form"
+                        href="${action.valueMap.prefix}${slingRequest.requestPathInfo.suffix}"
+                    >+ ${action.valueMap.label}</a>
+                </c:forEach>
+            </div>
+        </div>
+        <div class="level-item">
+            <div class="buttons has-addons actions-target"></div>
+        </div>
+    </div>
 </nav>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/resource/action/action.jsp
similarity index 62%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp
copy to ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/resource/action/action.jsp
index 5455d56..1bea8b5 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/name/name.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/resource/action/action.jsp
@@ -17,15 +17,13 @@
  * under the License.
  */ --%>
 <%@include file="/libs/sling-cms/global.jsp"%>
-<td><c:set var="colValue" value="${resource.name}" /> <c:choose>
-        <c:when test="${colConfig.valueMap.link}">
-            <a class="has-text-primary"
-                href="${colConfig.valueMap.prefix}${resource.path}">
-                <span class="icon"><i class="jam jam-link"></i></span>&nbsp;
-                <sling:encode value="${colValue}" mode="HTML" />
-            </a>
-        </c:when>
-        <c:otherwise>
-            <sling:encode value="${colValue}" mode="HTML" />
-        </c:otherwise>
-    </c:choose></td>
\ No newline at end of file
+<!-- modal -->
+<sling:adaptTo adaptable="${resource}"
+    adaptTo="org.apache.sling.cms.core.models.components.Action" var="model" />
+<a class="${model.classes}" data-title="${model.title}"
+    data-path="${model.dataPath}"
+    ${model.target}
+    href="${properties.prefix}${colResource.path}"
+    title="${model.title}">
+    <span class="jam jam-${model.icon}"> </span>
+</a>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/staticnav/staticnav.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/staticnav/staticnav.jsp
index 7d6f342..7c008f7 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/staticnav/staticnav.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/staticnav/staticnav.jsp
@@ -27,7 +27,11 @@
 </c:forEach>
 <ul id="${fn:replace(properties.title,' ','-')}-nav" class="menu-list ${hidden}">
     <c:forEach var="item" items="${sling:listChildren(sling:getRelativeResource(resource,'links'))}">
-        <li class="${fn:startsWith(slingRequest.requestURI,item.valueMap.link) ? 'active' : ''}"><a href="${item.valueMap.link}">${item.valueMap.text}</a></li>
+        <li ><a href="${item.valueMap.link}"class="${fn:startsWith(slingRequest.requestURI,item.valueMap.link) ? 'is-active' : ''}">${item.valueMap.text}</a>
+        <c:if test="${fn:startsWith(slingRequest.requestURI,item.valueMap.link) }" >
+            <sling:include path="bread" resourceType="sling-cms/components/cms/breadcrumbmenu" />
+        </c:if>
+        </li>
     </c:forEach>
 </ul>
 </div>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/base/nav.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/base/nav.jsp
index e8ee431..2a6c5c5 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/base/nav.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/base/nav.jsp
@@ -24,7 +24,6 @@
 </a>
 <a href="/cms/start.html" class="navbar-item" title="CMS Home"><span class="icon"><i class="jam jam-home-f"></i></span></a>
 <div class="navbar-item">
-<sling:include path="breadcrumb" resourceType="sling-cms/components/cms/contentbreadcrumb" />
 </div>
 <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
   <span aria-hidden="true"></span>
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/config.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/config.json
index e08e63d..ae5f047 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/config.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/config.json
@@ -7,11 +7,6 @@
         "container": {
             "jcr:primaryType": "nt:unstructured",
             "sling:resourceType": "sling-cms/components/general/container",
-            "richtext": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/general/richtext",
-                "text": "<h3>Create Site Config</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/sitegroup.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/sitegroup.json
index 353affa..936d88a 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/sitegroup.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/sitegroup.json
@@ -1,68 +1,63 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/form",
-		"jcr:title": "Create Folder",
-		"jcr:primaryType": "nt:unstructured",
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h3>Create Site Group</h3>"
-			},
-			"slingform": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/editor/slingform",
-				"actionSuffix": "/*",
-				"button": "Create Site Group",
-				"successPrepend": "/libs/sling-cms/content/site/content.html",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/general/container",
-					"title": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/text",
-						"label": "Title",
-						"name": "jcr:content/jcr:title",
-						"required": true
-					},
-					"name": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/text",
-						"label": "Name",
-						"name": ":name"
-					},
-					"nameParam": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": ":nameParam",
-						"value": "jcr:content/jcr:title"
-					},
-					"config": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/path",
-						"basePath": "/conf",
-						"label": "Config",
-						"name": "sling:configRef",
-						"required": false,
-						"type": "config"
-					},
-					"primaryType": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": "jcr:primaryType",
-						"value": "sling:OrderedFolder"
-					},
-					"contentPrimaryType": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": "jcr:content/jcr:primaryType",
-						"value": "nt:unstructured"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Create Folder",
+        "jcr:primaryType": "nt:unstructured",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "slingform": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/editor/slingform",
+                "actionSuffix": "/*",
+                "button": "Create Site Group",
+                "successPrepend": "/libs/sling-cms/content/site/content.html",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/general/container",
+                    "title": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text",
+                        "label": "Title",
+                        "name": "jcr:content/jcr:title",
+                        "required": true
+                    },
+                    "name": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text",
+                        "label": "Name",
+                        "name": ":name"
+                    },
+                    "nameParam": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": ":nameParam",
+                        "value": "jcr:content/jcr:title"
+                    },
+                    "config": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/path",
+                        "basePath": "/conf",
+                        "label": "Config",
+                        "name": "sling:configRef",
+                        "required": false,
+                        "type": "config"
+                    },
+                    "primaryType": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": "jcr:primaryType",
+                        "value": "sling:OrderedFolder"
+                    },
+                    "contentPrimaryType": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": "jcr:content/jcr:primaryType",
+                        "value": "nt:unstructured"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/taxonomy.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/taxonomy.json
index 5bb6b4f..49aabca 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/taxonomy.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/taxonomy.json
@@ -7,11 +7,6 @@
         "container": {
             "jcr:primaryType": "nt:unstructured",
             "sling:resourceType": "sling-cms/components/general/container",
-            "richtext": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/general/richtext",
-                "text": "<h3>Create Taxonomy</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/template.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/template.json
index 9a33987..d18f3d3 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/template.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/template.json
@@ -7,11 +7,6 @@
         "container": {
             "jcr:primaryType": "nt:unstructured",
             "sling:resourceType": "sling-cms/components/general/container",
-            "richtext": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/general/richtext",
-                "text": "<h3>Create Template</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/site.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/site.json
index ec528b8..e62680d 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/site.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/site.json
@@ -1,64 +1,59 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/form",
-		"jcr:title": "Edit Site",
-		"jcr:primaryType": "nt:unstructured",
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h3>Edit Site</h3>"
-			},
-			"slingform": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/editor/slingform",
-				"button": "Save Changes",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/general/container",
-					"title": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/text",
-						"label": "Title",
-						"name": "jcr:title",
-						"required": true
-					},
-					"description": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/textarea",
-						"label": "Description",
-						"name": "jcr:description",
-						"required": false
-					},
-					"url": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/text",
-						"label": "Primary URL",
-						"name": "sling:url",
-						"required": true
-					},
-					"locale": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/select",
-						"label": "Language",
-						"name": "jcr:language",
-						"optionsScript": "/libs/sling-cms/components/editor/scripts/localeOptions.jsp",
-						"required": true
-					},
-					"config": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/path",
-						"basePath": "/conf",
-						"label": "Config",
-						"name": "sling:configRef",
-						"required": false,
-						"type": "config"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Edit Site",
+        "jcr:primaryType": "nt:unstructured",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "slingform": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/editor/slingform",
+                "button": "Save Changes",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/general/container",
+                    "title": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text",
+                        "label": "Title",
+                        "name": "jcr:title",
+                        "required": true
+                    },
+                    "description": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/textarea",
+                        "label": "Description",
+                        "name": "jcr:description",
+                        "required": false
+                    },
+                    "url": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text",
+                        "label": "Primary URL",
+                        "name": "sling:url",
+                        "required": true
+                    },
+                    "locale": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/select",
+                        "label": "Language",
+                        "name": "jcr:language",
+                        "optionsScript": "/libs/sling-cms/components/editor/scripts/localeOptions.jsp",
+                        "required": true
+                    },
+                    "config": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/path",
+                        "basePath": "/conf",
+                        "label": "Config",
+                        "name": "sling:configRef",
+                        "required": false,
+                        "type": "config"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/sitegroup.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/sitegroup.json
index 93063f6..d61c3d2 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/sitegroup.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/sitegroup.json
@@ -7,11 +7,6 @@
         "container": {
             "jcr:primaryType": "nt:unstructured",
             "sling:resourceType": "sling-cms/components/general/container",
-            "richtext": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/general/richtext",
-                "text": "<h3>Edit Site Group</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/taxonomy.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/taxonomy.json
index f664ab9..59e3b47 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/taxonomy.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/taxonomy.json
@@ -1,7 +1,7 @@
 {
     "jcr:primaryType": "sling:Page",
     "jcr:content": {
-        "sling:resourceType": "sling-cms/components/pages/base",
+        "sling:resourceType": "sling-cms/components/pages/form",
         "jcr:title": "Edit Taxonomy Item",
         "jcr:primaryType": "nt:unstructured",
         "container": {
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/optimize/optimize.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/optimize/optimize.json
index 5c92acd..eded2e9 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/optimize/optimize.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/optimize/optimize.json
@@ -1,17 +1,12 @@
 {
     "jcr:primaryType": "sling:Page",
     "jcr:content": {
-        "sling:resourceType": "sling-cms/components/pages/base",
+        "sling:resourceType": "sling-cms/components/pages/form",
         "jcr:title": "Optimize File",
         "jcr:primaryType": "nt:unstructured",
         "container": {
             "jcr:primaryType": "nt:unstructured",
             "sling:resourceType": "sling-cms/components/general/container",
-            "richtext": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/general/richtext",
-                "text": "<h3>Optimize File</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/cms/optimizefile"
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/edit.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/edit.json
index 8e475ce..29af331 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/edit.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/edit.json
@@ -1,27 +1,21 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Edit Configuration",
-		"jcr:primaryType": "nt:unstructured",
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h2>Edit Configuration</h2>"
-			},
-			"contentbreadcrumb": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/contentbreadcrumb",
-				"depth": 2,
-				"prefix": "/cms/config/list.html"
-			},
-			"editconfig": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/editconfig"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/base",
+        "jcr:title": "Edit Configuration",
+        "jcr:primaryType": "nt:unstructured",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "richtext": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/general/richtext",
+                "text": "<h2>Edit Configuration</h2>"
+            },
+            "editconfig": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/editconfig"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/list.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/list.json
index bd7dda8..11809a1 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/list.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/config/list.json
@@ -14,12 +14,12 @@
                     "folder": {
                         "jcr:primaryType": "nt:unstructured",
                         "label": "Folder",
-                        "prefix": "/cms/folder/create.html"
+                        "prefix": "/cms/actions/create/folder.html"
                     },
                     "config": {
                         "jcr:primaryType": "nt:unstructured",
                         "label": "Config",
-                        "prefix": "/cms/config/create.html"
+                        "prefix": "/cms/actions/create/config.html"
                     }
                 }
             },
@@ -34,11 +34,17 @@
                 "sling:resourceType": "sling-cms/components/cms/contenttable",
                 "columns": {
                     "jcr:primaryType": "nt:unstructured",
+                    "resourceTypes": [
+                        "sling:OrderedFolder",
+                        "sling:Folder",
+                        "sling:Conf",
+                        "nt:file"
+                    ],
                     "name": {
                         "jcr:primaryType": "nt:unstructured",
                         "sling:resourceType": "sling-cms/components/cms/columns/name",
                         "jcr:title": "Name",
-                        "prefix": "/cms/config/edit.html",
+                        "prefix": "/cms/config/list.html",
                         "link": true
                     },
                     "title": {
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/mappings/list.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/mappings/list.json
index 01804ee..b1ba3cf 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/mappings/list.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/mappings/list.json
@@ -1,153 +1,153 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Mappings",
-		"jcr:primaryType": "nt:unstructured",
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"richtext": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/general/richtext",
-				"text": "<h3>Mappings</h3>"
-			},
-			"contentactions": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/contentactions",
-				"actions": {
-					"folder": {
-						"jcr:primaryType": "nt:unstructured",
-						"label": "Folder",
-						"prefix": "/cms/folder/create.html"
-					},
-					"mappings": {
-						"jcr:primaryType": "nt:unstructured",
-						"label": "Mapping",
-						"prefix": "/cms/mappings/create.html"
-					}
-				}
-			},
-			"contenttable": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/contenttable",
-				"columns": {
-					"jcr:primaryType": "nt:unstructured",
-					"name": {
-						"jcr:primaryType": "nt:unstructured",
-						"title": "Name"
-					},
-					"title": {
-						"jcr:primaryType": "nt:unstructured",
-						"title": "Match"
-					},
-					"lastModified": {
-						"jcr:primaryType": "nt:unstructured",
-						"title": "Last Modified"
-					},
-					"actions": {
-						"jcr:primaryType": "nt:unstructured",
-						"title": "Actions"
-					}
-				},
-				"types": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:Mapping": {
-						"jcr:primaryType": "nt:unstructured",
-						"columns": {
-							"jcr:primaryType": "nt:unstructured",
-							"name": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/name",
-								"link": true,
-								"prefix": "/cms/mappings/list.html"
-							},
-							"title": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/text",
-								"property": "sling:match"
-							},
-							"lastModified": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
-								"subPath": ""
-							},
-							"actions": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/actions",
-								"edit": {
-									"jcr:primaryType": "nt:unstructured",
-									"modal": true,
-									"title": "Edit Mapping",
-									"icon": "pencil-f",
-									"prefix": "/cms/mappings/edit.html"
-								},
-								"movecopy": {
-									"jcr:primaryType": "nt:unstructured",
-									"modal": true,
-									"title": "Move / Copy Mapping",
-									"icon": "move-alt",
-									"prefix": "/cms/shared/movecopy.html"
-								},
-								"delete": {
-									"jcr:primaryType": "nt:unstructured",
-									"modal": true,
-									"title": "Delete Mapping",
-									"icon": "trash",
-									"prefix": "/cms/shared/delete.html"
-								}
-							}
-						}
-					},
-					"sling:OrderedFolder": {
-						"jcr:primaryType": "nt:unstructured",
-						"columns": {
-							"jcr:primaryType": "nt:unstructured",
-							"name": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/name",
-								"link": true,
-								"prefix": "/cms/mappings/list.html"
-							},
-							"title": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/static",
-								"value": ""
-							},
-							"lastModified": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
-								"subPath": "jcr:content/"
-							},
-							"actions": {
-								"jcr:primaryType": "nt:unstructured",
-								"sling:resourceType": "sling-cms/components/cms/columns/actions",
-								"edit": {
-									"jcr:primaryType": "nt:unstructured",
-									"modal": true,
-									"title": "Edit Folder",
-									"icon": "pencil-f",
-									"prefix": "/cms/folder/edit.html"
-								},
-								"movecopy": {
-									"jcr:primaryType": "nt:unstructured",
-									"modal": true,
-									"title": "Move / Copy Folder",
-									"icon": "move-alt",
-									"prefix": "/cms/shared/movecopy.html"
-								},
-								"delete": {
-									"jcr:primaryType": "nt:unstructured",
-									"modal": true,
-									"title": "Delete Folder",
-									"icon": "trash",
-									"prefix": "/cms/shared/delete.html"
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/base",
+        "jcr:title": "Mappings",
+        "jcr:primaryType": "nt:unstructured",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "richtext": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/general/richtext",
+                "text": "<h3>Mappings</h3>"
+            },
+            "contentactions": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/contentactions",
+                "actions": {
+                    "folder": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "label": "Folder",
+                        "prefix": "/cms/folder/create.html"
+                    },
+                    "mappings": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "label": "Mapping",
+                        "prefix": "/cms/mappings/create.html"
+                    }
+                }
+            },
+            "contenttable": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/contenttable",
+                "columns": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "name": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "title": "Name"
+                    },
+                    "title": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "title": "Match"
+                    },
+                    "lastModified": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "title": "Last Modified"
+                    },
+                    "actions": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "title": "Actions"
+                    }
+                },
+                "types": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:Mapping": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "columns": {
+                            "jcr:primaryType": "nt:unstructured",
+                            "name": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/name",
+                                "link": true,
+                                "prefix": "/cms/mappings/list.html"
+                            },
+                            "title": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/text",
+                                "property": "sling:match"
+                            },
+                            "lastModified": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
+                                "subPath": ""
+                            },
+                            "actions": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/actions",
+                                "edit": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "Edit Mapping",
+                                    "icon": "pencil-f",
+                                    "prefix": "/cms/mappings/edit.html"
+                                },
+                                "movecopy": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "Move / Copy Mapping",
+                                    "icon": "move-alt",
+                                    "prefix": "/cms/shared/movecopy.html"
+                                },
+                                "delete": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "Delete Mapping",
+                                    "icon": "trash",
+                                    "prefix": "/cms/shared/delete.html"
+                                }
+                            }
+                        }
+                    },
+                    "sling:OrderedFolder": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "columns": {
+                            "jcr:primaryType": "nt:unstructured",
+                            "name": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/name",
+                                "link": true,
+                                "prefix": "/cms/mappings/list.html"
+                            },
+                            "title": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/static",
+                                "value": ""
+                            },
+                            "lastModified": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
+                                "subPath": "jcr:content/"
+                            },
+                            "actions": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "sling:resourceType": "sling-cms/components/cms/columns/actions",
+                                "edit": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "Edit Folder",
+                                    "icon": "pencil-f",
+                                    "prefix": "/cms/folder/edit.html"
+                                },
+                                "movecopy": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "Move / Copy Folder",
+                                    "icon": "move-alt",
+                                    "prefix": "/cms/shared/movecopy.html"
+                                },
+                                "delete": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "Delete Folder",
+                                    "icon": "trash",
+                                    "prefix": "/cms/shared/delete.html"
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/content.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/content.json
index d882436..e5941cf 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/content.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/content.json
@@ -28,13 +28,6 @@
                     }
                 }
             },
-            "contentbreadcrumb": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/cms/contentbreadcrumb",
-                "depth": 2,
-                "prefix": "/cms/site/content.html",
-                "titleProp": "jcr:content/jcr:title"
-            },
             "contenttable": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/cms/contenttable",
@@ -76,6 +69,10 @@
                         "sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
                         "jcr:title": "Last Modified",
                         "subPath": "jcr:content/"
+                    },
+                    "actions": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/cms/columns/actions"
                     }
                 }
             }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/sites.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/sites.json
index 85b1f8e..0129958 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/sites.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/sites.json
@@ -25,13 +25,6 @@
                     }
                 }
             },
-            "contentbreadcrumb": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/cms/contentbreadcrumb",
-                "depth": 2,
-                "prefix": "/cms/site/sites.html",
-                "titleProp": "jcr:content/jcr:title"
-            },
             "contenttable": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/cms/contenttable",
@@ -39,17 +32,18 @@
                 "columns": {
                     "jcr:primaryType": "nt:unstructured",
                     "resourceTypes": [
-                        "sling:Page",
-                        "sling:File",
+                        "sling:Site",
                         "sling:OrderedFolder",
-                        "sling:Folder"
+                        "sling:Folder",
+                        "sling:Page",
+                        "nt:file"
                     ],
                     "name": {
                         "jcr:primaryType": "nt:unstructured",
                         "sling:resourceType": "sling-cms/components/cms/columns/name",
                         "link": true,
                         "jcr:title": "Name",
-                        "prefix": "/cms/site/content.html"
+                        "prefix": "/cms/site/sites.html"
                     },
                     "title": {
                         "jcr:primaryType": "nt:unstructured",
@@ -63,6 +57,11 @@
                         "sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
                         "jcr:title": "Last Modified",
                         "subPath": "jcr:content/"
+                    },
+                    "actions": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/cms/columns/actions",
+                        "jcr:title": "Actions"
                     }
                 }
             }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/siteconfig/editor.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/siteconfig/editor.json
index 453c58f..3ef82cc 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/siteconfig/editor.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/siteconfig/editor.json
@@ -23,71 +23,34 @@
         "appendSuffix": "/templates",
         "columns": {
             "jcr:primaryType": "nt:unstructured",
+            "resourceTypes": [
+                "sling:OrderedFolder",
+                "sling:Folder",
+                "sling:Conf",
+                "nt:file"
+            ],
             "name": {
                 "jcr:primaryType": "nt:unstructured",
-                "title": "Name"
+                "sling:resourceType": "sling-cms/components/cms/columns/name",
+                "jcr:title": "Name",
+                "link": false
             },
             "title": {
                 "jcr:primaryType": "nt:unstructured",
-                "title": "Title"
+                "sling:resourceType": "sling-cms/components/cms/columns/text",
+                "jcr:title": "Title",
+                "property": "jcr:title"
             },
             "lastModified": {
                 "jcr:primaryType": "nt:unstructured",
-                "title": "Last Modified"
+                "sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
+                "jcr:title": "Last Modified",
+                "subPath": ""
             },
             "actions": {
                 "jcr:primaryType": "nt:unstructured",
-                "title": "Actions"
-            }
-        },
-        "types": {
-            "jcr:primaryType": "nt:unstructured",
-            "nt:unstructured": {
-                "jcr:primaryType": "nt:unstructured",
-                "columns": {
-                    "jcr:primaryType": "nt:unstructured",
-                    "name": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "sling:resourceType": "sling-cms/components/cms/columns/name",
-                        "link": false
-                    },
-                    "title": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "sling:resourceType": "sling-cms/components/cms/columns/text",
-                        "property": "jcr:title"
-                    },
-                    "lastModified": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "sling:resourceType": "sling-cms/components/cms/columns/lastmodified",
-                        "subPath": ""
-                    },
-                    "actions": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "sling:resourceType": "sling-cms/components/cms/columns/actions",
-                        "edit": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": false,
-                            "new": false,
-                            "title": "Edit Template",
-                            "icon": "pencil-f",
-                            "prefix": "/cms/template/edit.html"
-                        },
-                        "movecopy": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "title": "Move / Copy Template",
-                            "icon": "move-alt",
-                            "prefix": "/cms/shared/movecopy.html"
-                        },
-                        "delete": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "title": "Delete Template",
-                            "icon": "trash",
-                            "prefix": "/cms/shared/delete.html"
-                        }
-                    }
-                }
+                "jcr:title": "Actions",
+                "sling:resourceType": "sling-cms/components/cms/columns/actions"
             }
         }
     }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/static/content.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/static/content.json
index 3c38b2f..06704ba 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/static/content.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/static/content.json
@@ -23,20 +23,13 @@
                     }
                 }
             },
-            "contentbreadcrumb": {
-                "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/cms/contentbreadcrumb",
-                "depth": 2,
-                "prefix": "/cms/static/content.html",
-                "titleProp": "jcr:content/jcr:title"
-            },
             "contenttable": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/cms/contenttable",
                 "defaultPath": "/content",
                 "columns": {
                     "resourceTypes": [
-                        "sling:File",
+                        "sling:Conf",
                         "sling:OrderedFolder",
                         "sling:Folder",
                         "nt:file"
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/taxonomy/list.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/taxonomy/list.json
index 0b69881..147c40b 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/taxonomy/list.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/taxonomy/list.json
@@ -57,28 +57,8 @@
                     },
                     "actions": {
                         "jcr:primaryType": "nt:unstructured",
-                        "sling:resourceType": "sling-cms/components/cms/columns/actions",
-                        "edit": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "jcr:title": "Edit Taxonomy Item",
-                            "icon": "pencil-f",
-                            "prefix": "/cms/actions/edit/taxonomy.html"
-                        },
-                        "movecopy": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "jcr:title": "Move / Copy Taxonomy Item",
-                            "icon": "move-alt",
-                            "prefix": "/cms/actions/shared/movecopy.html"
-                        },
-                        "delete": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "jcr:title": "Delete Taxonomy Item",
-                            "icon": "trash",
-                            "prefix": "/cms/actions/shared/delete.html"
-                        }
+                        "sling:resourceType": "sling-cms/components/cms/columns/actions"
+                        
                     }
                 }
             }