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:55 UTC

[sling-org-apache-sling-app-cms] 08/17: SLING-7900 UI dynamic file actions

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 f0ffbd3c4c1d3768f3e5e2bf9d97436e6a044938
Author: Jason E Bailey <je...@apache.org>
AuthorDate: Thu Sep 13 20:21:48 2018 -0400

    SLING-7900 UI dynamic file actions
---
 .../core/models/components/AvailableActions.java   |  31 +++++
 .../jcr_root/libs/sling-cms/actions/nt%3Afile.json |  46 +++++++
 .../libs/sling-cms/actions/sling%3AFile.json       |  46 +++++++
 .../libs/sling-cms/actions/sling%3AFolder.json     |  25 ++++
 .../sling-cms/actions/sling%3AOrderedFolder.json   |  25 ++++
 .../libs/sling-cms/actions/sling%3APage.json       |  38 ++++++
 .../libs/sling-cms/actions/sling%3ASite.json       |  24 ++++
 .../components/cms/columns/actions/actions.jsp     |  42 +++---
 .../components/cms/columns/publish/publish.jsp     |   4 +-
 .../sling-cms/content/actions/create/config.json   |   2 +-
 .../sling-cms/content/actions/create/folder.json   |   7 +-
 .../sling-cms/content/actions/create/page.json     |   7 +-
 .../sling-cms/content/actions/create/site.json     | 142 ++++++++++-----------
 .../sling-cms/content/actions/edit/folder.json     |   7 +-
 .../libs/sling-cms/content/actions/edit/site.json  |   2 +-
 .../sling-cms/content/actions/edit/sitegroup.json  |   3 +-
 .../sling-cms/content/actions/edit/taxonomy.json   |   7 +-
 .../sling-cms/content/actions/edit/template.json   |   5 -
 .../sling-cms/content/actions/shared/delete.json   |  83 ++++++------
 .../sling-cms/content/actions/shared/movecopy.json | 121 +++++++++---------
 .../sling-cms/content/actions/shared/publish.json  |  79 ++++++------
 .../sling-cms/content/actions/shared/search.json   | 104 +++++++--------
 .../content/actions/shared/unpublish.json          |  79 ++++++------
 .../sling-cms/content/actions/shared/versions.json |  35 +++--
 .../jcr_root/libs/sling-cms/content/page/edit.json | 106 +++++++--------
 .../sling-cms/content/page/editproperties.json     |  30 ++---
 .../libs/sling-cms/content/page/pagewrapper.json   |   4 +-
 .../sling-cms/content/page/siteeditproperties.json |  35 +++--
 .../libs/sling-cms/content/site/content.json       |  41 ------
 .../libs/sling-cms/content/site/sites.json         |  26 ----
 30 files changed, 663 insertions(+), 543 deletions(-)

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/AvailableActions.java
index 767cb6f..13e4770 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/AvailableActions.java
@@ -16,6 +16,37 @@
  */
 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;
+    }
+
 }
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
new file mode 100644
index 0000000..fc1963a
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/nt%3Afile.json
@@ -0,0 +1,46 @@
+{
+    "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",
+        "prefix": "/cms/actions/edit/file.html"
+    },
+    "optimize": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": false,
+        "title": "Optimize File",
+        "icon": "archive",
+        "prefix": "/cms/actions/optimize/file.html"
+    },
+    "download": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": false,
+        "title": "Download file",
+        "icon": "download"
+    },
+    "movecopy": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Move / Copy File",
+        "icon": "move-alt",
+        "prefix": "/cms/actions/shared/movecopy.html"
+    },
+    "version": {
+        "jcr:primaryType": "nt:unstructured",
+        "ajaxPath": ".versionmanager",
+        "modal": true,
+        "title": "Manage Versions",
+        "icon": "history",
+        "prefix": "/cms/actions/shared/versions.html"
+    },
+    "delete": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Delete File",
+        "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
new file mode 100644
index 0000000..fc1963a
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFile.json
@@ -0,0 +1,46 @@
+{
+    "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",
+        "prefix": "/cms/actions/edit/file.html"
+    },
+    "optimize": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": false,
+        "title": "Optimize File",
+        "icon": "archive",
+        "prefix": "/cms/actions/optimize/file.html"
+    },
+    "download": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": false,
+        "title": "Download file",
+        "icon": "download"
+    },
+    "movecopy": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Move / Copy File",
+        "icon": "move-alt",
+        "prefix": "/cms/actions/shared/movecopy.html"
+    },
+    "version": {
+        "jcr:primaryType": "nt:unstructured",
+        "ajaxPath": ".versionmanager",
+        "modal": true,
+        "title": "Manage Versions",
+        "icon": "history",
+        "prefix": "/cms/actions/shared/versions.html"
+    },
+    "delete": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Delete File",
+        "icon": "trash",
+        "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
new file mode 100644
index 0000000..f437acb
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AFolder.json
@@ -0,0 +1,25 @@
+{
+    "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/actions/edit/folder.html"
+    },
+    "movecopy": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Move / Copy Folder",
+        "icon": "move-alt",
+        "prefix": "/cms/actions/shared/movecopy.html"
+    },
+    "delete": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Delete Folder",
+        "icon": "trash",
+        "prefix": "/cms/actions/shared/delete.html"
+    }
+}
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
new file mode 100644
index 0000000..6a91288
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3AOrderedFolder.json
@@ -0,0 +1,25 @@
+{
+    "jcr:primartyType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/cms/columns/actions",
+    "edit": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Edit Site Group",
+        "icon": "pencil-f",
+        "prefix": "/cms/actions/edit/sitegroup.html"
+    },
+    "movecopy": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Move / Copy Site Group",
+        "icon": "move-alt",
+        "prefix": "/cms/actions/shared/movecopy.html"
+    },
+    "delete": {
+        "jcr:primaryType": "nt:unstructured",
+        "title": "Delete Site Group",
+        "icon": "trash",
+        "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
new file mode 100644
index 0000000..356523e
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3APage.json
@@ -0,0 +1,38 @@
+{
+    "edit": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": false,
+        "title": "Edit Page",
+        "icon": "pencil-f",
+        "prefix": "/cms/page/edit.html"
+    },
+    "properties": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Edit Page Properties",
+        "icon": "cog",
+        "prefix": "/cms/page/siteeditproperties.html"
+    },
+    "movecopy": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Move / Copy Page",
+        "icon": "move-alt",
+        "prefix": "/cms/shared/movecopy.html"
+    },
+    "version": {
+        "jcr:primaryType": "nt:unstructured",
+        "ajaxPath": ".versionmanager",
+        "modal": true,
+        "title": "Manage Versions",
+        "icon": "history",
+        "prefix": "/cms/shared/versions.html"
+    },
+    "delete": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Delete the specified 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
new file mode 100644
index 0000000..7a92041
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/actions/sling%3ASite.json
@@ -0,0 +1,24 @@
+{
+    "jcr:resourceType": "nt:unstructured",
+    "edit": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Edit Site",
+        "icon": "pencil-f",
+        "prefix": "/cms/action/edit/site.html"
+    },
+    "movecopy": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Move / Copy Site",
+        "icon": "move-alt",
+        "prefix": "/cms/actions/shared/movecopy.html"
+    },
+    "delete": {
+        "jcr:primaryType": "nt:unstructured",
+        "modal": true,
+        "title": "Delete the specified site",
+        "icon": "trash",
+        "prefix": "/cms/actions/shared/delete.html"
+    }
+}
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 b1e51fb..116cea6 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
@@ -18,20 +18,28 @@
  */ --%>
 <%@include file="/libs/sling-cms/global.jsp"%>
 <td class="is-hidden cell-actions">
-	<c:forEach var="actionConfig" items="${sling:listChildren(colConfig)}">
-		<c:choose>
-			<c:when test="${actionConfig.valueMap.modal}">
-				<a class="button Fetch-Modal" data-title="${sling:encode(actionConfig.valueMap.title,'HTML_ATTR')}" data-path="${actionConfig.valueMap.ajaxPath != null ? actionConfig.valueMap.ajaxPath : '.Main-Content form'}" href="${actionConfig.valueMap.prefix}${resource.path}" title="${sling:encode(actionConfig.valueMap.title,'HTML_ATTR')}">
-					<span class="jam jam-${actionConfig.valueMap.icon}">
-					</span>
-				</a>
-			</c:when>
-			<c:otherwise>
-				<a class="button" ${actionConfig.valueMap.new != false ? 'target="_blank"' : ''} href="${actionConfig.valueMap.prefix}${resource.path}" title="${sling:encode(actionConfig.valueMap.title,'HTML_ATTR')}">
-					<span class="jam jam-${actionConfig.valueMap.icon}">
-					</span>
-				</a>
-			</c:otherwise>
-		</c:choose>
-	</c:forEach>
-</td>
\ No newline at end of file
+<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
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/publish/publish.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/publish/publish.jsp
index ee55ded..e00bb7e 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/publish/publish.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/columns/publish/publish.jsp
@@ -20,12 +20,12 @@
 <td class="has-text-centered" data-value="${sling:getRelativeResource(resource,'jcr:content').valueMap.published ? 0 : 1}">
 	<c:choose>
 		<c:when test="${sling:getRelativeResource(resource,'jcr:content').valueMap.published}">
-			<a class="button is-success is-centered  Fetch-Modal" href="/cms/shared/unpublish.html${resource.path}" title="Click to Unpublish" data-title="Unpublish" data-path=".Main-Content form">
+			<a class="button is-success is-centered  Fetch-Modal" href="/cms/actions/shared/unpublish.html${resource.path}" title="Click to Unpublish" data-title="Unpublish" data-path=".Main-Content form">
 				<i class="jam jam-download"></i>
 			</a>
 		</c:when>
 		<c:otherwise>
-			<a class="button is-danger Fetch-Modal" href="/cms/shared/publish.html${resource.path}" title="Click to Publish" data-title="Publish" data-path=".Main-Content form">
+			<a class="button is-danger Fetch-Modal" href="/cms/actions/shared/publish.html${resource.path}" title="Click to Publish" data-title="Publish" data-path=".Main-Content form">
 				<i class="jam jam-upload"></i>
 			</a>
 		</c:otherwise>
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 2d1d7ff..e08e63d 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
@@ -16,7 +16,7 @@
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
                 "actionSuffix": "/*",
-                "button": "Create Site Config",
+                "button": "Create",
                 "successPrepend": "/libs/sling-cms/content/site/content.html",
                 "fields": {
                     "jcr:primaryType": "nt:unstructured",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/folder.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/folder.json
index 8c04f36..485bce9 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/folder.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/folder.json
@@ -7,16 +7,11 @@
         "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 Folder</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
                 "actionSuffix": "/*",
-                "button": "Create Folder",
+                "button": "Create",
                 "successPrepend": "/libs/sling-cms/content/site/content.html",
                 "fields": {
                     "jcr:primaryType": "nt:unstructured",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/page.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/page.json
index 003f562..bf3e2db 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/page.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/page.json
@@ -7,15 +7,10 @@
         "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 Page</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
-                "button": "Create Page",
+                "button": "Create",
                 "successPrepend": "/libs/sling-cms/content/site/content.html",
                 "fields": {
                     "jcr:primaryType": "nt:unstructured",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/site.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/site.json
index d2c64c9..ecb522f 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/site.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/create/site.json
@@ -1,72 +1,72 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/form",
-		"jcr:title": "Create 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",
-				"actionSuffix": "/*",
-				"button": "Create Site",
-				"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: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:title"
-					},
-					"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"
-					},
-					"primaryType": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": "jcr:primaryType",
-						"value": "sling:Site"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Create 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",
+                "actionSuffix": "/*",
+                "button": "Create Site",
+                "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: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:title"
+                    },
+                    "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"
+                    },
+                    "primaryType": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": "jcr:primaryType",
+                        "value": "sling:Site"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/folder.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/folder.json
index bb2371b..1e41cbe 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/folder.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/folder.json
@@ -7,15 +7,10 @@
         "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 Folder</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
-                "button": "Edit Folder",
+                "button": "Save Changes",
                 "successPrepend": "/libs/sling-cms/content/site/content.html",
                 "fields": {
                     "jcr:primaryType": "nt:unstructured",
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 e73af63..ec528b8 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
@@ -15,7 +15,7 @@
 			"slingform": {
 				"jcr:primaryType": "nt:unstructured",
 				"sling:resourceType": "sling-cms/components/editor/slingform",
-				"button": "Edit Site",
+				"button": "Save Changes",
 				"fields": {
 					"jcr:primaryType": "nt:unstructured",
 					"sling:resourceType": "sling-cms/components/general/container",
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 6c29d0f..93063f6 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
@@ -15,8 +15,7 @@
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
-                "actionSuffix": "/*",
-                "button": "Create Folder",
+                "button": "Save Changes",
                 "successPrepend": "/libs/sling-cms/content/site/content.html",
                 "fields": {
                     "jcr:primaryType": "nt:unstructured",
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 2f46bd1..f664ab9 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
@@ -7,15 +7,10 @@
         "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 Taxonomy Item</h3>"
-            },
             "slingform": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/editor/slingform",
-                "button": "Update Taxonomy",
+                "button": "Save Changes",
                 "fields": {
                     "jcr:primaryType": "nt:unstructured",
                     "sling:resourceType": "sling-cms/components/general/container",
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/template.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/template.json
index 9ae587a..f02fa95 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/template.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/edit/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": "<h2>Edit Template</h2>"
-            },
             "siteconfig": {
                 "jcr:primaryType": "nt:unstructured",
                 "sling:resourceType": "sling-cms/components/cms/templateeditor"
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/delete.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/delete.json
index 6b9b365..d5c30c4 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/delete.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/delete.json
@@ -1,45 +1,40 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Delete Content",
-		"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>Delete Content</h3>"
-			},
-			"slingform": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/editor/slingform",
-				"button": "Delete",
-				"callback": "handledelete",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/general/container",
-					"path": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/suffixlabel",
-						"label": "Do you want to delete:"
-					},
-					"operation": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": ":operation",
-						"value": "delete"
-					},
-					"references": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/references",
-						"includeDestination": true,
-						"label": "Update references?",
-						"name": ":updateReferences"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Delete Content",
+        "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": "Delete",
+                "callback": "handledelete",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/general/container",
+                    "path": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/suffixlabel",
+                        "label": "Do you want to delete:"
+                    },
+                    "operation": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": ":operation",
+                        "value": "delete"
+                    },
+                    "references": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/references",
+                        "includeDestination": true,
+                        "label": "Update references?",
+                        "name": ":updateReferences"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/movecopy.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/movecopy.json
index 8d6c399..0b70b80 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/movecopy.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/movecopy.json
@@ -1,64 +1,59 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Move/Copy Content",
-		"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>Move/Copy Content</h3>"
-			},
-			"slingform": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/editor/slingform",
-				"button": "Move/Copy",
-				"callback": "handlemove",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/general/container",
-					"path": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType" : "sling-cms/components/editor/fields/suffixlabel",
-						"label": "Existing Path:"
-					},
-					"destination": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType" : "sling-cms/components/editor/fields/path",
-						"label": "Destination:",
-						"name": ":dest"
-					},
-					"operation": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/select",
-						"label": "Operation",
-						"name": ":operation",
-						"options": {
-							"jcr:primaryType": "nt:unstructured",
-							"copy":{
-								"jcr:primaryType": "nt:unstructured",
-								"label": "Copy",
-								"value": "copy"
-							},
-							"move":{
-								"jcr:primaryType": "nt:unstructured",
-								"label": "Move",
-								"value": "move"
-							}
-						}
-					},
-					"references": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/references",
-						"label": "Update References?",
-						"name": ":updateReferences",
-						"toggle": true
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Move/Copy Content",
+        "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": "Move/Copy",
+                "callback": "handlemove",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/general/container",
+                    "path": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/suffixlabel",
+                        "label": "Existing Path:"
+                    },
+                    "destination": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/path",
+                        "label": "Destination:",
+                        "name": ":dest"
+                    },
+                    "operation": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/select",
+                        "label": "Operation",
+                        "name": ":operation",
+                        "options": {
+                            "jcr:primaryType": "nt:unstructured",
+                            "copy": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "label": "Copy",
+                                "value": "copy"
+                            },
+                            "move": {
+                                "jcr:primaryType": "nt:unstructured",
+                                "label": "Move",
+                                "value": "move"
+                            }
+                        }
+                    },
+                    "references": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/references",
+                        "label": "Update References?",
+                        "name": ":updateReferences",
+                        "toggle": true
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/publish.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/publish.json
index 2abc9d5..6206d21 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/publish.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/publish.json
@@ -1,43 +1,38 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Publish Content",
-		"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>Publish Content</h3>"
-			},
-			"slingform": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/editor/slingform",
-				"button": "Publish",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/general/container",
-					"path": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType" : "sling-cms/components/editor/fields/suffixlabel",
-						"label": "Do you want to publish:"
-					},
-					"published": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": "jcr:content/published",
-						"value": "true"
-					},
-					"publishedTypeHint": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": "jcr:content/published@TypeHint",
-						"value": "Boolean"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Publish Content",
+        "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": "Publish",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/general/container",
+                    "path": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/suffixlabel",
+                        "label": "Do you want to publish:"
+                    },
+                    "published": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": "jcr:content/published",
+                        "value": "true"
+                    },
+                    "publishedTypeHint": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": "jcr:content/published@TypeHint",
+                        "value": "Boolean"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/search.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/search.json
index 63655ff..7ca912a 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/search.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/search.json
@@ -1,53 +1,53 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Search",
-		"jcr:primaryType": "nt:unstructured",
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"searchform": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/getform",
-				"button": "Search",
-				"load": "#search-results",
-				"target": "#search-results",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/general/container",
-					"term": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/text",
-						"label": "Term",
-						"name": "term",
-						"required": "required"
-					},
-					"type": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/select",
-						"name": "type",
-						"label": "Content Type",
-						"options": [
-							"Page=sling:Page",
-							"File=sling:File",
-							"Folder=sling:Folder",
-							"Everything=nt:base"
-						]
-					},
-					"path": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/path",
-						"label": "Path",
-						"name": "path",
-						"hidesearch": true
-					}
-				}
-			},
-			"searchresults": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/searchresults"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/base",
+        "jcr:title": "Search",
+        "jcr:primaryType": "nt:unstructured",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "searchform": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/getform",
+                "button": "Search",
+                "load": "#search-results",
+                "target": "#search-results",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/general/container",
+                    "term": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/text",
+                        "label": "Term",
+                        "name": "term",
+                        "required": "required"
+                    },
+                    "type": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/select",
+                        "name": "type",
+                        "label": "Content Type",
+                        "options": [
+                            "Page=sling:Page",
+                            "File=sling:File",
+                            "Folder=sling:Folder",
+                            "Everything=nt:base"
+                        ]
+                    },
+                    "path": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/path",
+                        "label": "Path",
+                        "name": "path",
+                        "hidesearch": true
+                    }
+                }
+            },
+            "searchresults": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/searchresults"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/unpublish.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/unpublish.json
index ece8b0f..3abdecd 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/unpublish.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/unpublish.json
@@ -1,43 +1,38 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Unpublish Content",
-		"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>Unpublish Content</h3>"
-			},
-			"slingform": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/editor/slingform",
-				"button": "Unpublish",
-				"fields": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/general/container",
-					"path": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType" : "sling-cms/components/editor/fields/suffixlabel",
-						"label": "Do you want to unpublish:"
-					},
-					"published": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": "jcr:content/published",
-						"value": "false"
-					},
-					"publishedTypeHint": {
-						"jcr:primaryType": "nt:unstructured",
-						"sling:resourceType": "sling-cms/components/editor/fields/hidden",
-						"name": "jcr:content/published@TypeHint",
-						"value": "Boolean"
-					}
-				}
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Unpublish Content",
+        "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": "Unpublish",
+                "fields": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/general/container",
+                    "path": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/suffixlabel",
+                        "label": "Do you want to unpublish:"
+                    },
+                    "published": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": "jcr:content/published",
+                        "value": "false"
+                    },
+                    "publishedTypeHint": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+                        "name": "jcr:content/published@TypeHint",
+                        "value": "Boolean"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/versions.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/versions.json
index ca321bf..9fda781 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/versions.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/actions/shared/versions.json
@@ -1,21 +1,16 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Manage Versions",
-		"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>Manage Versions</h3>"
-			},
-			"versionmanager": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/versionmanager"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/form",
+        "jcr:title": "Manage Versions",
+        "jcr:primaryType": "nt:unstructured",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "versionmanager": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/versionmanager"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/edit.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/edit.json
index 82bc782..63b8a90 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/edit.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/edit.json
@@ -1,54 +1,54 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"jcr:primaryType": "nt:unstructured",
-		"jcr:title": "Edit",
-		"sling:resourceType": "sling-cms/components/pages/editor",
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"pageeditbar": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/pageeditbar",
-				"actions": {
-					"jcr:primaryType": "nt:unstructured",
-					"sling:resourceType": "sling-cms/components/cms/pageeditbar/actions",
-					"edit": {
-						"jcr:primaryType": "nt:unstructured",
-						"ajaxPath": ".Form-Ajax",
-						"modal": true,
-						"prefix": "/cms/page/editproperties.html",
-						"title": "Edit Page",
-						"icon": "pencil-f"
-					},
-					"version": {
-						"jcr:primaryType": "nt:unstructured",
-						"ajaxPath": ".versionmanager",
-						"modal": true,
-						"title": "Manage Versions",
-						"icon": "history",
-						"prefix": "/cms/shared/versions.html"
-					},
-					"movecopy": {
-						"jcr:primaryType": "nt:unstructured",
-						"modal": true,
-						"title": "Move / Copy Page",
-						"icon": "move-alt",
-						"prefix": "/cms/shared/movecopy.html"
-					},
-					"delete": {
-						"jcr:primaryType": "nt:unstructured",
-						"modal": true,
-						"title": "Delete Page",
-						"icon": "trash",
-						"prefix": "/cms/shared/delete.html"
-					}
-				}
-			},
-			"pageeditor": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/pageeditor"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "jcr:primaryType": "nt:unstructured",
+        "jcr:title": "Edit",
+        "sling:resourceType": "sling-cms/components/pages/editor",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "pageeditbar": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/pageeditbar",
+                "actions": {
+                    "jcr:primaryType": "nt:unstructured",
+                    "sling:resourceType": "sling-cms/components/cms/pageeditbar/actions",
+                    "edit": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "ajaxPath": ".Form-Ajax",
+                        "modal": true,
+                        "prefix": "/cms/page/editproperties.html",
+                        "title": "Edit Page",
+                        "icon": "pencil-f"
+                    },
+                    "version": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "ajaxPath": ".versionmanager",
+                        "modal": true,
+                        "title": "Manage Versions",
+                        "icon": "history",
+                        "prefix": "/cms/shared/versions.html"
+                    },
+                    "movecopy": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "modal": true,
+                        "title": "Move / Copy Page",
+                        "icon": "move-alt",
+                        "prefix": "/cms/shared/movecopy.html"
+                    },
+                    "delete": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "modal": true,
+                        "title": "Delete Page",
+                        "icon": "trash",
+                        "prefix": "/cms/shared/delete.html"
+                    }
+                }
+            },
+            "pageeditor": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/pageeditor"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/editproperties.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/editproperties.json
index b6df91d..80c27e1 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/editproperties.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/editproperties.json
@@ -1,16 +1,16 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"jcr:primaryType": "nt:unstructured",
-		"jcr:title": "Edit Properties",
-		"sling:resourceType": "sling-cms/components/pages/editor",
-		"container": {
-			"jcr:primaryType": "nt:unstructured",
-			"sling:resourceType": "sling-cms/components/general/container",
-			"pageeditor": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/pageeditbar/propertieseditor"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "jcr:primaryType": "nt:unstructured",
+        "jcr:title": "Edit Properties",
+        "sling:resourceType": "sling-cms/components/pages/editor",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "pageeditor": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/pageeditbar/propertieseditor"
+            }
+        }
+    }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/pagewrapper.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/pagewrapper.json
index b9c1469..aefeb29 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/pagewrapper.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/pagewrapper.json
@@ -1,4 +1,4 @@
 {
     "jcr:primaryType": "nt:unstructured",
-    "sling:resourceType" : "sling-cms/components/cms/pagewrapper"
-}
\ No newline at end of file
+    "sling:resourceType": "sling-cms/components/cms/pagewrapper"
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/siteeditproperties.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/siteeditproperties.json
index 522d698..8b23187 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/siteeditproperties.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/page/siteeditproperties.json
@@ -1,21 +1,16 @@
 {
-	"jcr:primaryType": "sling:Page",
-	"jcr:content": {
-		"sling:resourceType": "sling-cms/components/pages/base",
-		"jcr:title": "Edit Page",
-		"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 Page</h3>"
-			},
-			"pageeditor": {
-				"jcr:primaryType": "nt:unstructured",
-				"sling:resourceType": "sling-cms/components/cms/pageeditbar/propertieseditor"
-			}
-		}
-	}
-}
\ No newline at end of file
+    "jcr:primaryType": "sling:Page",
+    "jcr:content": {
+        "sling:resourceType": "sling-cms/components/pages/base",
+        "jcr:title": "Edit Page",
+        "jcr:primaryType": "nt:unstructured",
+        "container": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/general/container",
+            "pageeditor": {
+                "jcr:primaryType": "nt:unstructured",
+                "sling:resourceType": "sling-cms/components/cms/pageeditbar/propertieseditor"
+            }
+        }
+    }
+}
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 365848c..d882436 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
@@ -76,47 +76,6 @@
                         "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",
-                        "edit": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": false,
-                            "title": "Edit Page",
-                            "icon": "pencil-f",
-                            "prefix": "/cms/page/edit.html"
-                        },
-                        "properties": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "title": "Edit Page Properties",
-                            "icon": "cog",
-                            "prefix": "/cms/page/siteeditproperties.html"
-                        },
-                        "movecopy": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "title": "Move / Copy Page",
-                            "icon": "move-alt",
-                            "prefix": "/cms/actions/shared/movecopy.html"
-                        },
-                        "version": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "ajaxPath": ".versionmanager",
-                            "modal": true,
-                            "title": "Manage Versions",
-                            "icon": "history",
-                            "prefix": "/cms/actions/shared/versions.html"
-                        },
-                        "delete": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "title": "Delete the specified page",
-                            "icon": "trash",
-                            "prefix": "/cms/actions/shared/delete.html"
-                        }
                     }
                 }
             }
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 628c6bc..85b1f8e 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
@@ -63,32 +63,6 @@
                         "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",
-                        "edit": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "title": "Edit Site Group",
-                            "icon": "pencil-f",
-                            "prefix": "/cms/actions/edit/sitegroup.html"
-                        },
-                        "movecopy": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "modal": true,
-                            "title": "Move / Copy Site Group",
-                            "icon": "move-alt",
-                            "prefix": "/cms/actions/shared/movecopy.html"
-                        },
-                        "delete": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "title": "Delete Site Group",
-                            "icon": "trash",
-                            "prefix": "/cms/actions/shared/delete.html",
-                            "modal": true
-                        }
                     }
                 }
             }