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 2018/12/05 05:31:47 UTC

[sling-org-apache-sling-app-cms] branch SLING-8074-improve-reference-list updated (6f591b2 -> 642d1ef)

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

dklco pushed a change to branch SLING-8074-improve-reference-list
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git.


    from 6f591b2  Merge branch 'SLING-8074-improve-reference-list' of github.com:apache/sling-org-apache-sling-app-cms into SLING-8074-improve-reference-list
     add 6ffb0a7  Fixed SLING-8074 by excluding the version store path and de-duplicating resources by path
     add 1c24c7a  Update README.md
     add 7b34d17  Update Vagrantfile
     add 04320c5  Merge branch 'master' of git@github.com:apache/sling-org-apache-sling-app-cms.git
     add 5202d46  Adding missing label
     add e035069  Updating so that the cancel / submit buttons are disabled when the form submits
     add 31ab18b  Setting the background for the modal and gracefully aborting the Ajax requiest / resetting state when the background is clicked
     add 8bc06db  Wrapping the version table in a table-container div so it scrolls
     add 1fe05d5  Updated Rava NPM version
     add f2c7c37  Updating to remove the confusing version value
     add e3f272b  [maven-release-plugin] prepare release org.apache.sling.cms-0.11.2
     add 24a9860  [maven-release-plugin] prepare for next development iteration
     add 3363b5e  Update README.md
     add 48ba0b4  Update releases.md
     add 7e11541  Update releases.md
     add 4cd12f1  Update Vagrantfile
     add 98b6a75  Fixed issue with duplicate title and edit site group not saving
     add be715d6  Making the optimizer a modal for the static console
     add dfab4a0  Removing duplicate label
     add 7638c6a  Updating most of the interactions to use ajax to reload rather than refreshing the page
     new e00ccf1  Merging master
     new 642d1ef  Adding the References widget to a number of areas and improving the look / functionality of references

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md                                          |   2 +-
 api/pom.xml                                        |   2 +-
 .../main/java/org/apache/sling/cms/Reference.java  |  71 ++++++++
 .../main/java/org/apache/sling/cms/References.java |   2 +-
 .../java/org/apache/sling/cms/package-info.java    |   2 +-
 builder/pom.xml                                    |   2 +-
 builder/src/main/provisioning/cms.txt              |   2 -
 core/pom.xml                                       |   2 +-
 .../core/internal/models/ReferenceOperation.java   |  11 +-
 .../cms/core/internal/models/ReferencesImpl.java   |   7 +-
 docs/releases.md                                   |  11 +-
 pom.xml                                            |   2 +-
 reference/pom.xml                                  |   4 +-
 ui/pom.xml                                         |   2 +-
 ui/src/main/frontend/package.json                  |   2 +-
 ui/src/main/frontend/src/js/cms.draggable.js       |   6 +-
 ui/src/main/frontend/src/js/cms.fields.js          |   8 +-
 ui/src/main/frontend/src/js/cms.form.js            |   2 +
 ui/src/main/frontend/src/js/cms.js                 |  48 +++++-
 ui/src/main/frontend/src/js/cms.modal.js           |  25 ++-
 ui/src/main/frontend/src/js/cms.table.js           |  58 ++++---
 ui/src/main/frontend/src/js/cms.toggle.js          |   2 +-
 ui/src/main/frontend/src/js/editor.js              |  67 +++++---
 .../components/cms/contenttable/contenttable.jsp   |  72 ++++----
 .../components/cms/i18ntable/i18ntable.jsp         | 120 ++++++-------
 .../components/cms/optimizefile/optimizefile.jsp   |  24 +--
 .../components/cms/pageeditor/pageeditor.jsp       |   2 +-
 .../components/cms/pagewrapper/pagewrapper.jsp     |   9 +-
 .../components/cms/references/references.jsp       |  70 ++++++++
 .../cms/versionmanager/versionmanager.jsp          | 126 +++++++-------
 .../editor/fields/references/references.jsp        | 100 ++++++++---
 .../components/editor/slingform/slingform.jsp      |  15 +-
 .../libs/sling-cms/content/config/create.json      |   1 +
 .../libs/sling-cms/content/config/list.json        |  14 ++
 .../jcr_root/libs/sling-cms/content/page/edit.json |  17 +-
 .../libs/sling-cms/content/shared/references.json  |   2 +-
 .../libs/sling-cms/content/site/content.json       |  42 ++++-
 .../libs/sling-cms/content/site/editgroup.json     |   2 -
 .../libs/sling-cms/content/siteconfig/editor.json  | 191 +++++++++++----------
 .../libs/sling-cms/content/static/content.json     |  30 +++-
 .../libs/sling-cms/content/taxonomy/list.json      |   7 +
 .../libs/sling-cms/content/template/create.json    |   1 -
 vagrant/Vagrantfile                                |   2 +-
 43 files changed, 786 insertions(+), 401 deletions(-)
 create mode 100644 api/src/main/java/org/apache/sling/cms/Reference.java
 create mode 100644 ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/references/references.jsp


[sling-org-apache-sling-app-cms] 01/02: Merging master

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e00ccf1d21d0b34241bce4c57703a7b956c79e5e
Merge: 6f591b2 7638c6a
Author: Dan Klco <dk...@apache.org>
AuthorDate: Tue Dec 4 22:16:29 2018 -0500

    Merging master

 README.md                                          |   2 +-
 api/pom.xml                                        |   2 +-
 builder/pom.xml                                    |   2 +-
 builder/src/main/provisioning/cms.txt              |   2 -
 core/pom.xml                                       |   2 +-
 .../core/internal/models/ReferenceOperation.java   |  11 +-
 docs/releases.md                                   |  11 +-
 pom.xml                                            |   2 +-
 reference/pom.xml                                  |   4 +-
 ui/pom.xml                                         |   2 +-
 ui/src/main/frontend/package.json                  |   2 +-
 ui/src/main/frontend/src/js/cms.draggable.js       |   6 +-
 ui/src/main/frontend/src/js/cms.fields.js          |   8 +-
 ui/src/main/frontend/src/js/cms.form.js            |   2 +
 ui/src/main/frontend/src/js/cms.js                 |  48 +++++++-
 ui/src/main/frontend/src/js/cms.modal.js           |  25 ++--
 ui/src/main/frontend/src/js/cms.table.js           |  58 +++++-----
 ui/src/main/frontend/src/js/cms.toggle.js          |   2 +-
 ui/src/main/frontend/src/js/editor.js              |  67 +++++++----
 .../components/cms/contenttable/contenttable.jsp   |  72 ++++++------
 .../components/cms/i18ntable/i18ntable.jsp         | 120 ++++++++++----------
 .../components/cms/optimizefile/optimizefile.jsp   |  24 ++--
 .../components/cms/pageeditor/pageeditor.jsp       |   2 +-
 .../components/cms/pagewrapper/pagewrapper.jsp     |   9 +-
 .../cms/versionmanager/versionmanager.jsp          | 126 +++++++++++----------
 .../components/editor/slingform/slingform.jsp      |  15 ++-
 .../libs/sling-cms/content/config/create.json      |   1 +
 .../libs/sling-cms/content/site/editgroup.json     |   2 -
 .../libs/sling-cms/content/static/content.json     |   2 +-
 .../libs/sling-cms/content/template/create.json    |   1 -
 vagrant/Vagrantfile                                |   2 +-
 31 files changed, 371 insertions(+), 263 deletions(-)

diff --cc core/src/main/java/org/apache/sling/cms/core/internal/models/ReferenceOperation.java
index 311a8d1,4253f75..1119c8c
--- a/core/src/main/java/org/apache/sling/cms/core/internal/models/ReferenceOperation.java
+++ b/core/src/main/java/org/apache/sling/cms/core/internal/models/ReferenceOperation.java
@@@ -81,6 -83,7 +83,8 @@@ public abstract class ReferenceOperatio
          log.debug("Finding references to {}", resource.getPath());
          String query = "SELECT * FROM [nt:base] AS s WHERE NOT ISDESCENDANTNODE([/jcr:system/jcr:versionStorage]) AND CONTAINS(s.*, '"
                  + resource.getPath() + "')";
+         Set<String> paths = new HashSet<>();
++
          Iterator<Resource> resources = resource.getResourceResolver().findResources(query, Query.JCR_SQL2);
          log.debug("Checking for references with: {}", query);
          while (resources.hasNext()) {


[sling-org-apache-sling-app-cms] 02/02: Adding the References widget to a number of areas and improving the look / functionality of references

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 642d1efe1c0105b02f3648d946c39ba206001f81
Author: Dan Klco <dk...@apache.org>
AuthorDate: Wed Dec 5 00:31:08 2018 -0500

    Adding the References widget to a number of areas and improving the look
    / functionality of references
---
 .../main/java/org/apache/sling/cms/Reference.java  |  71 ++++++++
 .../main/java/org/apache/sling/cms/References.java |   2 +-
 .../java/org/apache/sling/cms/package-info.java    |   2 +-
 .../cms/core/internal/models/ReferencesImpl.java   |   7 +-
 .../components/cms/references/references.jsp       |  70 ++++++++
 .../editor/fields/references/references.jsp        | 100 ++++++++---
 .../libs/sling-cms/content/config/list.json        |  14 ++
 .../jcr_root/libs/sling-cms/content/page/edit.json |  17 +-
 .../libs/sling-cms/content/shared/references.json  |   2 +-
 .../libs/sling-cms/content/site/content.json       |  42 ++++-
 .../libs/sling-cms/content/siteconfig/editor.json  | 191 +++++++++++----------
 .../libs/sling-cms/content/static/content.json     |  28 +++
 .../libs/sling-cms/content/taxonomy/list.json      |   7 +
 13 files changed, 415 insertions(+), 138 deletions(-)

diff --git a/api/src/main/java/org/apache/sling/cms/Reference.java b/api/src/main/java/org/apache/sling/cms/Reference.java
new file mode 100644
index 0000000..8ae9d2f
--- /dev/null
+++ b/api/src/main/java/org/apache/sling/cms/Reference.java
@@ -0,0 +1,71 @@
+/*
+ * 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;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.sling.api.resource.Resource;
+
+public class Reference {
+
+    private final String property;
+    private final Resource resource;
+
+    public Reference(Resource resource, String property) {
+        super();
+        this.resource = resource;
+        this.property = property;
+    }
+
+    /**
+     * @return the property
+     */
+    public String getProperty() {
+        return property;
+    }
+
+    public String getSubPath() {
+        return StringUtils.replaceOnce(resource.getPath(), getContainingPage().getPath(), "");
+    }
+
+    /**
+     * @return the resource
+     */
+    public Resource getResource() {
+        return resource;
+    }
+
+    public boolean isPage() {
+        PageManager pageMgr = resource.adaptTo(PageManager.class);
+        if (pageMgr != null) {
+            return pageMgr.getPage() != null;
+        }
+        return false;
+    }
+
+    public Page getContainingPage() {
+        PageManager pageMgr = resource.adaptTo(PageManager.class);
+        if (pageMgr != null) {
+            return pageMgr.getPage();
+        }
+        return null;
+    }
+
+    public String toString() {
+        return resource.getPath() + "@" + property;
+    }
+
+}
diff --git a/api/src/main/java/org/apache/sling/cms/References.java b/api/src/main/java/org/apache/sling/cms/References.java
index ba60cc5..14f3cb5 100644
--- a/api/src/main/java/org/apache/sling/cms/References.java
+++ b/api/src/main/java/org/apache/sling/cms/References.java
@@ -32,6 +32,6 @@ public interface References {
      * 
      * @return the list of reference path / properties
      */
-    List<String> getReferences();
+    List<Reference> getReferences();
 
 }
diff --git a/api/src/main/java/org/apache/sling/cms/package-info.java b/api/src/main/java/org/apache/sling/cms/package-info.java
index ed64073..ed902f1 100644
--- a/api/src/main/java/org/apache/sling/cms/package-info.java
+++ b/api/src/main/java/org/apache/sling/cms/package-info.java
@@ -23,5 +23,5 @@
  *
  * @since 0.10.0
  */
-@org.osgi.annotation.versioning.Version("0.11.0")
+@org.osgi.annotation.versioning.Version("0.12.0")
 package org.apache.sling.cms;
diff --git a/core/src/main/java/org/apache/sling/cms/core/internal/models/ReferencesImpl.java b/core/src/main/java/org/apache/sling/cms/core/internal/models/ReferencesImpl.java
index f972b18..41b842f 100644
--- a/core/src/main/java/org/apache/sling/cms/core/internal/models/ReferencesImpl.java
+++ b/core/src/main/java/org/apache/sling/cms/core/internal/models/ReferencesImpl.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.sling.api.resource.Resource;
+import org.apache.sling.cms.Reference;
 import org.apache.sling.cms.References;
 import org.apache.sling.models.annotations.Model;
 
@@ -29,19 +30,19 @@ import org.apache.sling.models.annotations.Model;
 @Model(adaptables = Resource.class, adapters = References.class)
 public class ReferencesImpl extends ReferenceOperation implements References {
 
-    private List<String> referenceList = new ArrayList<>();
+    private List<Reference> referenceList = new ArrayList<>();
 
     public ReferencesImpl(Resource resource) {
         super(resource);
     }
 
-    public List<String> getReferences() {
+    public List<Reference> getReferences() {
         init();
         return referenceList;
     }
 
     @Override
     public void doProcess(Resource r, String matchingKey) {
-        referenceList.add(r.getPath() + "@" + matchingKey);
+        referenceList.add(new Reference(r, matchingKey));
     }
 }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/references/references.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/references/references.jsp
new file mode 100644
index 0000000..80cf2c1
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/references/references.jsp
@@ -0,0 +1,70 @@
+<%-- /*
+ * 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.
+ */ --%>
+ <%@include file="/libs/sling-cms/global.jsp"%>
+<sling:adaptTo var="references" adaptable="${slingRequest.requestPathInfo.suffixResource}" adaptTo="org.apache.sling.cms.References" />
+<table class="table">
+    <thead>
+        <tr>
+            <th>Type</th>
+            <th>Content</th>
+            <th>Subpath</th>
+            <th>Property</th>
+    </thead>
+    <tbody>
+        <c:forEach var="ref" items="${references.references}">
+            <tr>
+                <c:choose>
+                    <c:when test="${ref.page}">
+                        <td>
+                            <span class="icon">
+                                <span class="jam jam-document"></span>
+                            </span>
+                        </td>
+                        <td title="${ref.containingPage.path}">
+                            <a href="/cms/site/content.html${ref.containingPage.parent.path}">
+                                ${sling:encode(ref.containingPage.title,'HTML')}
+                            </a>
+                        </td>
+                        <td>
+                            ${sling:encode(ref.subPath,'HTML')}
+                        </td>
+                        <td>
+                            ${sling:encode(ref.property,'HTML')}
+                        </td>
+                    </c:when>
+                    <c:otherwise>
+                        <td>
+                            <span class="icon">
+                                <span class="jam jam-file"></span>
+                            </span>
+                        </td>
+                        <td>
+                            ${ref.resource.path}
+                        </td>
+                        <td>
+                        </td>
+                        <td>
+                            ${sling:encode(ref.property,'HTML')}
+                        </td>
+                    </c:otherwise>
+                </c:choose>
+            </tr>
+        </c:forEach>
+    </tbody>
+</table>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/references/references.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/references/references.jsp
index 3169e27..ec6709d 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/references/references.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/references/references.jsp
@@ -18,36 +18,80 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <c:if test="${slingRequest.requestPathInfo.suffix != null}">
-	<sling:getResource path="${slingRequest.requestPathInfo.suffix}" var="editedResource" />
-	<c:set var="editProperties" value="${sling:adaptTo(editedResource,'org.apache.sling.api.resource.ValueMap')}" scope="request"/>
+    <sling:getResource path="${slingRequest.requestPathInfo.suffix}" var="editedResource" />
+    <c:set var="editProperties" value="${sling:adaptTo(editedResource,'org.apache.sling.api.resource.ValueMap')}" scope="request"/>
 </c:if>
 
 <sling:adaptTo var="references" adaptable="${slingRequest.requestPathInfo.suffixResource}" adaptTo="org.apache.sling.cms.References" />
 <c:if test="${fn:length(references.references) gt 0}">
-	<div class="box field ${properties.toggle ? 'is-hidden toggle-value' : ''}" data-toggle-source=":operation" data-toggle-value="move">
-		<div class="field">
-			<label class="checkbox">
-				<input type="checkbox" name="${properties.name}" value="true" />
-				<sling:encode value="${properties.label}" mode="HTML" />
-			</label>
-		</div>
-		<div class="reference-list field">
-			<ul>
-				<c:forEach var="ref" items="${references.references}">
-					<li>${ref}</li>
-				</c:forEach>
-			</ul>
-		</div>
-		
-		<c:if test="${properties.includeDestination}">
-			<div class="field">
-				<label for=":dest">
-					Replacement Path
-				</label>
-				<div class="control">
-					<input type="text" name=":dest" class="pathfield input" />
-				</div>
-			</div>
-		</c:if>
-	</div>
+    <div class="field ${properties.toggle ? 'is-hidden toggle-value' : ''}" data-toggle-source=":operation" data-toggle-value="move">
+        <div class="field">
+            <label class="checkbox">
+                <input type="checkbox" name="${properties.name}" value="true" />
+                <sling:encode value="${properties.label}" mode="HTML" />
+            </label>
+        </div>
+        <div class="reference-list field">
+            <table class="table" data-paginate="false">
+                <thead>
+                    <tr>
+                        <th>Type</th>
+                        <th>Content</th>
+                        <th>Subpath</th>
+                        <th>Property</th>
+                </thead>
+                <tbody>
+                    <c:forEach var="ref" items="${references.references}">
+                        <tr>
+                            <c:choose>
+                                <c:when test="${ref.page}">
+                                    <td>
+                                        <span class="icon">
+                                            <span class="jam jam-document"></span>
+                                        </span>
+                                    </td>
+                                    <td title="${ref.containingPage.path}">
+                                        <a href="/cms/site/content.html${ref.containingPage.parent.path}">
+                                            ${sling:encode(ref.containingPage.title,'HTML')}
+                                        </a>
+                                    </td>
+                                    <td>
+                                        ${sling:encode(ref.subPath,'HTML')}
+                                    </td>
+                                    <td>
+                                        ${sling:encode(ref.property,'HTML')}
+                                    </td>
+                                </c:when>
+                                <c:otherwise>
+                                    <td>
+                                        <span class="icon">
+                                            <span class="jam jam-file"></span>
+                                        </span>
+                                    </td>
+                                    <td>
+                                        ${ref.resource.path}
+                                    </td>
+                                    <td>
+                                    </td>
+                                    <td>
+                                        ${sling:encode(ref.property,'HTML')}
+                                    </td>
+                                </c:otherwise>
+                            </c:choose>
+                        </tr>
+                    </c:forEach>
+                </tbody>
+            </table>
+        </div>
+        <c:if test="${properties.includeDestination}">
+            <div class="field">
+                <label for=":dest">
+                    Replacement Path
+                </label>
+                <div class="control">
+                    <input type="text" name=":dest" class="pathfield input" />
+                </div>
+            </div>
+        </c:if>
+    </div>
 </c:if>
\ No newline at end of file
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 7dab1db..2604694 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
@@ -83,6 +83,13 @@
                                     "icon": "cog",
                                     "prefix": "/cms/config/metadata.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
@@ -130,6 +137,13 @@
                                     "icon": "cog",
                                     "prefix": "/cms/folder/edit.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
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 a0ff169..af50c6c 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
@@ -28,13 +28,12 @@
                         "icon": "info",
                         "prefix": "/cms/shared/insights.html"
                     },
-                    "version": {
+                    "references": {
                         "jcr:primaryType": "nt:unstructured",
-                        "ajaxPath": ".versionmanager",
                         "modal": true,
-                        "title": "Manage Versions",
-                        "icon": "history",
-                        "prefix": "/cms/shared/versions.html"
+                        "title": "References",
+                        "icon": "directions",
+                        "prefix": "/cms/shared/references.html"
                     },
                     "movecopy": {
                         "jcr:primaryType": "nt:unstructured",
@@ -43,6 +42,14 @@
                         "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,
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/references.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/references.json
index 100d492..5d97060 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/references.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/references.json
@@ -9,7 +9,7 @@
             "sling:resourceType": "sling-cms/components/general/container",
             "references": {
                 "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/editor/fields/references",
+                "sling:resourceType": "sling-cms/components/cms/references",
                 "label": "References"
             }
         }
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 eae063e..9ed8e82 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
@@ -121,6 +121,13 @@
                                     "icon": "info",
                                     "prefix": "/cms/shared/insights.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
@@ -185,6 +192,13 @@
                                     "title": "Download file",
                                     "icon": "download"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
@@ -254,13 +268,6 @@
                                     "title": "Download file",
                                     "icon": "download"
                                 },
-                                "movecopy": {
-                                    "jcr:primaryType": "nt:unstructured",
-                                    "modal": true,
-                                    "title": "Move / Copy File",
-                                    "icon": "move-alt",
-                                    "prefix": "/cms/shared/movecopy.html"
-                                },
                                 "references": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
@@ -268,6 +275,13 @@
                                     "icon": "directions",
                                     "prefix": "/cms/shared/references.html"
                                 },
+                                "movecopy": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "Move / Copy File",
+                                    "icon": "move-alt",
+                                    "prefix": "/cms/shared/movecopy.html"
+                                },
                                 "version": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "ajaxPath": ".versionmanager",
@@ -326,6 +340,13 @@
                                     "icon": "cog",
                                     "prefix": "/cms/folder/edit.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
@@ -383,6 +404,13 @@
                                     "icon": "cog",
                                     "prefix": "/cms/folder/edit.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
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 49ce2d8..e879931 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
@@ -1,94 +1,101 @@
 {
-	"jcr:primaryType": "nt:unstructured",
-	"sling:resourceType": "sling-cms/components/general/container",
-	"richtext": {
-		"jcr:primaryType": "nt:unstructured",
-		"sling:resourceType": "sling-cms/components/general/richtext",
-		"text": "<br/><h3>Templates</h3>"
-	},
-	"contentactions": {
-		"jcr:primaryType": "nt:unstructured",
-		"sling:resourceType": "sling-cms/components/cms/contentactions",
-		"actions": {
-			"template": {
-				"jcr:primaryType": "nt:unstructured",
-				"label": "Template",
-				"prefix": "/cms/template/create.html"
-			}
-		}
-	},
-	"contenttable": {
-		"jcr:primaryType": "nt:unstructured",
-		"sling:resourceType": "sling-cms/components/cms/contenttable",
-		"appendSuffix": "/templates",
-		"columns": {
-			"jcr:primaryType": "nt:unstructured",
-			"name": {
-				"jcr:primaryType": "nt:unstructured",
-				"title": "Name"
-			},
-			"title": {
-				"jcr:primaryType": "nt:unstructured",
-				"title": "Title"
-			},
-			"lastModified": {
-				"jcr:primaryType": "nt:unstructured",
-				"title": "Last Modified"
-			},
-			"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:primaryType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/general/container",
+    "richtext": {
+        "jcr:primaryType": "nt:unstructured",
+        "sling:resourceType": "sling-cms/components/general/richtext",
+        "text": "<br/><h3>Templates</h3>"
+    },
+    "contentactions": {
+        "jcr:primaryType": "nt:unstructured",
+        "sling:resourceType": "sling-cms/components/cms/contentactions",
+        "actions": {
+            "template": {
+                "jcr:primaryType": "nt:unstructured",
+                "label": "Template",
+                "prefix": "/cms/template/create.html"
+            }
+        }
+    },
+    "contenttable": {
+        "jcr:primaryType": "nt:unstructured",
+        "sling:resourceType": "sling-cms/components/cms/contenttable",
+        "appendSuffix": "/templates",
+        "columns": {
+            "jcr:primaryType": "nt:unstructured",
+            "name": {
+                "jcr:primaryType": "nt:unstructured",
+                "title": "Name"
+            },
+            "title": {
+                "jcr:primaryType": "nt:unstructured",
+                "title": "Title"
+            },
+            "lastModified": {
+                "jcr:primaryType": "nt:unstructured",
+                "title": "Last Modified"
+            },
+            "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"
+                        },
+                    "references": {
+                        "jcr:primaryType": "nt:unstructured",
+                        "modal": true,
+                        "title": "References",
+                        "icon": "directions",
+                        "prefix": "/cms/shared/references.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"
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
\ No newline at end of file
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 a38146c..3f2a07b 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
@@ -121,6 +121,13 @@
                                     "icon": "move-alt",
                                     "prefix": "/cms/shared/movecopy.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "version": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "ajaxPath": ".versionmanager",
@@ -178,6 +185,13 @@
                                     "title": "Download file",
                                     "icon": "download"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
@@ -235,6 +249,13 @@
                                     "icon": "cog",
                                     "prefix": "/cms/folder/edit.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
@@ -292,6 +313,13 @@
                                     "icon": "cog",
                                     "prefix": "/cms/folder/edit.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,
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 16d191a..fcc0aee 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
@@ -78,6 +78,13 @@
                                     "icon": "pencil-f",
                                     "prefix": "/cms/taxonomy/edit.html"
                                 },
+                                "references": {
+                                    "jcr:primaryType": "nt:unstructured",
+                                    "modal": true,
+                                    "title": "References",
+                                    "icon": "directions",
+                                    "prefix": "/cms/shared/references.html"
+                                },
                                 "movecopy": {
                                     "jcr:primaryType": "nt:unstructured",
                                     "modal": true,