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

dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git


The following commit(s) were added to refs/heads/master by this push:
     new 2aec688  Adding an i18n concept
2aec688 is described below

commit 2aec688845bd047790dee33e363837b81ee09037
Author: Dan Klco <daniel.k...@gmail.com>
AuthorDate: Fri Feb 2 17:36:22 2018 -0500

    Adding an i18n concept
---
 .../apache/sling/cms/core/models/i18nHelper.java   |  62 ++++++++++++
 cms/ui/src/main/frontend/src/js/scripts.js         |  22 +++--
 .../resources/jcr_root/etc/i18n/jcr:content.json   |   4 +
 .../sling-cms/components/cms/i18ntable/config.json |   3 +
 .../components/cms/i18ntable/i18ntable.jsp         |  77 +++++++++++++++
 .../components/editor/slingform/slingform.jsp      |   2 +-
 .../libs/sling-cms/content/i18n/dictionaries.json  | 104 +++++++++++++++++++++
 .../libs/sling-cms/content/i18n/dictionary.json    |  94 +++++++++++++++++++
 .../libs/sling-cms/content/i18n/entry/create.json  |  54 +++++++++++
 .../sling-cms/content/i18n/language/create.json    |  81 ++++++++++++++++
 .../libs/sling-cms/content/i18n/language/edit.json |  41 ++++++++
 .../jcr_root/libs/sling-cms/content/start.json     |   7 +-
 12 files changed, 539 insertions(+), 12 deletions(-)

diff --git 
a/cms/core/src/main/java/org/apache/sling/cms/core/models/i18nHelper.java 
b/cms/core/src/main/java/org/apache/sling/cms/core/models/i18nHelper.java
new file mode 100644
index 0000000..655305d
--- /dev/null
+++ b/cms/core/src/main/java/org/apache/sling/cms/core/models/i18nHelper.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.cms.core.models;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Random;
+import java.util.Set;
+
+import javax.jcr.query.Query;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.models.annotations.Model;
+
+/**
+ * A model retrieving all of the keys for a i18n dictionary
+ */
+@Model(adaptables = Resource.class)
+public class i18nHelper {
+
+       private Resource resource;
+
+       private Set<String> keys = new HashSet<String>();
+
+       private Random rand = new Random();
+
+       public i18nHelper(Resource resource) {
+               this.resource = resource;
+       }
+
+       public Set<String> getKeys() {
+               if (keys.isEmpty()) {
+                       Iterator<Resource> messageEntries = 
resource.getResourceResolver().findResources(
+                                       "SELECT * FROM [sling:MessageEntry] AS 
s WHERE ISDESCENDANTNODE([" + resource.getPath() + "])",
+                                       Query.JCR_SQL2);
+                       while (messageEntries.hasNext()) {
+                               Resource entry = messageEntries.next();
+                               keys.add(entry.getValueMap().get("sling:key", 
String.class));
+                       }
+               }
+               return keys;
+       }
+
+       public String getRandom() {
+               return String.valueOf(rand.nextInt());
+       }
+
+}
diff --git a/cms/ui/src/main/frontend/src/js/scripts.js 
b/cms/ui/src/main/frontend/src/js/scripts.js
index 08c9264..0f1acd2 100644
--- a/cms/ui/src/main/frontend/src/js/scripts.js
+++ b/cms/ui/src/main/frontend/src/js/scripts.js
@@ -108,16 +108,18 @@ Sling.CMS = {
                                                jcrcontent = true;
                                        }
                                });
-                               if(jcrcontent){
-                                       $form.append('<input type="hidden" 
name="jcr:content/jcr:lastModified" />');
-                                       $form.append('<input type="hidden" 
name="jcr:content/jcr:lastModifiedBy" />');
-                                       $form.append('<input type="hidden" 
name="jcr:content/jcr:created" />');
-                                       $form.append('<input type="hidden" 
name="jcr:content/jcr:createdBy" />');
-                               } else {
-                                       $form.append('<input type="hidden" 
name="jcr:lastModified" />');
-                                       $form.append('<input type="hidden" 
name="jcr:lastModifiedBy" />');
-                                       $form.append('<input type="hidden" 
name="jcr:created" />');
-                                       $form.append('<input type="hidden" 
name="jcr:createdBy" />');
+                               if($form.data('addDate') && 
$form.find('input[name="jcr:content/jcr:lastModified"]').length == 0){
+                                       if(jcrcontent){
+                                               $form.append('<input 
type="hidden" name="jcr:content/jcr:lastModified" />');
+                                               $form.append('<input 
type="hidden" name="jcr:content/jcr:lastModifiedBy" />');
+                                               $form.append('<input 
type="hidden" name="jcr:content/jcr:created" />');
+                                               $form.append('<input 
type="hidden" name="jcr:content/jcr:createdBy" />');
+                                       } else {
+                                               $form.append('<input 
type="hidden" name="jcr:lastModified" />');
+                                               $form.append('<input 
type="hidden" name="jcr:lastModifiedBy" />');
+                                               $form.append('<input 
type="hidden" name="jcr:created" />');
+                                               $form.append('<input 
type="hidden" name="jcr:createdBy" />');
+                                       }
                                }
                                $.ajax({
                                        url: $form.attr('action'),
diff --git a/cms/ui/src/main/resources/jcr_root/etc/i18n/jcr:content.json 
b/cms/ui/src/main/resources/jcr_root/etc/i18n/jcr:content.json
new file mode 100644
index 0000000..567db79
--- /dev/null
+++ b/cms/ui/src/main/resources/jcr_root/etc/i18n/jcr:content.json
@@ -0,0 +1,4 @@
+{
+       "jcr:primaryType": "nt:unstructured",
+       "jcr:title": "i18n"
+}
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/i18ntable/config.json
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/i18ntable/config.json
new file mode 100644
index 0000000..87a0fc2
--- /dev/null
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/i18ntable/config.json
@@ -0,0 +1,3 @@
+{
+       "jcr:primaryType": "sling:Component"
+}
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/i18ntable/i18ntable.jsp
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/i18ntable/i18ntable.jsp
new file mode 100644
index 0000000..4f574d7
--- /dev/null
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/i18ntable/i18ntable.jsp
@@ -0,0 +1,77 @@
+<%-- /*
+ * 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"%>
+
+<c:forEach var="language" 
items="${sling:listChildren(slingRequest.requestPathInfo.suffixResource)}">
+       <c:if test="${firstChild == null && not empty 
language.valueMap['jcr:language']}">
+               <c:set var="firstChild" value="${language}" />
+       </c:if>
+</c:forEach>
+<a class="Button Fetch-Modal" data-title="Add Entry" data-path=".Main-Content 
form" href="/cms/i18n/entry/create.html${firstChild.path}">+ Entry</a>
+<form method="post" action="${slingRequest.requestPathInfo.suffix}" 
enctype="multipart/form-data" class="Form-Ajax" data-add-date="false">
+       <table>
+               <thead>
+                       <tr>
+                               <th class="Column-key">
+                                       Key
+                               </th>
+                               <c:forEach var="language" 
items="${sling:listChildren(slingRequest.requestPathInfo.suffixResource)}">
+                                       <c:if test="${not empty 
language.valueMap['jcr:language']}">
+                                               <th 
class="Column-${language.valueMap['jcr:language']}">
+                                                       <sling:encode 
value="${language.valueMap['jcr:content/jcr:title']}" mode="HTML" />
+                                                       <br/>
+                                                       <small>(<sling:encode 
value="${language.valueMap['jcr:language']}" mode="HTML" />)</small>
+                                               </th>
+                                       </c:if>
+                               </c:forEach>
+                       </tr>
+               </thead>
+               <tbody>
+                       <sling:adaptTo var="helper" 
adaptable="${slingRequest.requestPathInfo.suffixResource}" 
adaptTo="org.apache.sling.cms.core.models.i18nHelper" />
+                       <c:forEach var="key" items="${helper.keys}">
+                               <tr>
+                                       <td>
+                                               <sling:encode value="${key}" 
mode="HTML" />
+                                       </td>
+                                       <c:forEach var="language" 
items="${sling:listChildren(slingRequest.requestPathInfo.suffixResource)}">
+                                               <c:if test="${not empty 
language.valueMap['jcr:language']}">
+                                                       <td>
+                                                               <c:set 
var="keyfound" value="false" />
+                                                               <c:forEach 
var="entry" items="${sling:listChildren(language)}">
+                                                                       <c:if 
test="${entry.valueMap['sling:key'] == key}">
+                                                                               
<c:set var="keyfound" value="true" />
+                                                                               
<input name="${language.name}/${entry.name}/sling:message" type="text" 
value="${entry.valueMap['sling:message']}" />
+                                                                               
<input name="${language.name}/${entry.name}/sling:key" type="hidden" 
value="${key}" />
+                                                                       </c:if>
+                                                               </c:forEach>
+                                                               <c:if 
test="${keyfound == 'false'}">
+                                                                       <c:set 
var="rand" value="${helper.random}" />
+                                                                       <input 
name="${language.name}/entry_${rand}/sling:message" type="text" value="" />
+                                                                       <input 
name="${language.name}/entry_${rand}/sling:key" type="hidden" value="${key}" />
+                                                                       <input 
name="${language.name}/entry_${rand}/jcr:primaryType" type="hidden" 
value="sling:MessageEntry" />
+                                                               </c:if>
+                                                       </td>
+                                               </c:if>
+                                       </c:forEach>
+                               </tr>
+                       </c:forEach>
+               </tbody>
+       </table>
+       <button>Save i18n Dictionary</button>
+</form>
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/slingform/slingform.jsp
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/slingform/slingform.jsp
index bf52b01..8e58d38 100644
--- 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/slingform/slingform.jsp
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/slingform/slingform.jsp
@@ -17,7 +17,7 @@
  * under the License.
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
-<form method="post" 
action="${slingRequest.requestPathInfo.suffix}${properties.actionSuffix}" 
enctype="multipart/form-data" class="Form-Ajax" data-success-prepend="">
+<form method="post" 
action="${slingRequest.requestPathInfo.suffix}${properties.actionSuffix}" 
enctype="multipart/form-data" class="Form-Ajax" 
data-add-date="${properties.addDate != false}">
        <sling:include path="fields" 
resourceType="sling-cms/components/general/container" />
        <div class="Field-Group">
                <button type="submit" class="btn btn-success" 
title="<sling:encode value="${properties.button}" mode="HTML_ATTR" />">
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/dictionaries.json
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/dictionaries.json
new file mode 100644
index 0000000..7ce89c1
--- /dev/null
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/dictionaries.json
@@ -0,0 +1,104 @@
+{
+       "jcr:primaryType": "sling:Page",
+       "jcr:content": {
+               "sling:resourceType": "sling-cms/components/pages/base",
+               "jcr:title": "i18n Dictionarties",
+               "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>i18n Dictionarties</h3>"
+                       },
+                       "contentactions": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/cms/contentactions",
+                               "actions": {
+                                       "dictionary": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "label": "i18n Dictionary",
+                                               "prefix": 
"/cms/folder/create.html"
+                                       }
+                               }
+                       },
+                       "contenttable": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/cms/contenttable",
+                               "columns": {
+                                       "jcr:primaryType": "nt:unstructured",
+                                       "name": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Name"
+                                       },
+                                       "title": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Title"
+                                       },
+                                       "lastModified": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Last Modified"
+                                       },
+                                       "lastModifiedBy": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Last Modified By"
+                                       },
+                                       "actions": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Actions"
+                                       }
+                               },
+                               "types": {
+                                       "jcr:primaryType": "nt:unstructured",
+                                       "sling:OrderedFolder": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "columns": {
+                                                       "jcr:primaryType": 
"nt:unstructured",
+                                                       "name": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "link": true,
+                                                               "type": "Name",
+                                                               "prefix": 
"/cms/i18n/dictionary.html"
+                                                       },
+                                                       "title": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "property": 
"jcr:content/jcr:title",
+                                                               "type": "String"
+                                                       },
+                                                       "lastModified": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "property": 
"jcr:content/jcr:lastModified",
+                                                               "type": "Date"
+                                                       },
+                                                       "lastModifiedBy": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "property": 
"jcr:content/jcr:lastModifiedBy",
+                                                               "type": "String"
+                                                       },
+                                                       "actions": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "type": 
"Actions",
+                                                               "edit": {
+                                                                       
"jcr:primaryType": "nt:unstructured",
+                                                                       
"modal": true,
+                                                                       "new": 
false,
+                                                                       
"title": "Edit Dictionary",
+                                                                       "text": 
"&#x270f;",
+                                                                       
"prefix": "/cms/folder/edit.html"
+                                                               },
+                                                               "delete": {
+                                                                       
"jcr:primaryType": "nt:unstructured",
+                                                                       
"modal": true,
+                                                                       
"title": "Delete i18n Dictionary",
+                                                                       "text": 
"&times;",
+                                                                       
"prefix": "/cms/shared/delete.html"
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/dictionary.json
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/dictionary.json
new file mode 100644
index 0000000..7198e29
--- /dev/null
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/dictionary.json
@@ -0,0 +1,94 @@
+{
+       "jcr:primaryType": "sling:Page",
+       "jcr:content": {
+               "sling:resourceType": "sling-cms/components/pages/base",
+               "jcr:title": "i18n Dictionarties",
+               "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>i18n Dictionary</h3>"
+                       },
+                       "contentactions": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/cms/contentactions",
+                               "actions": {
+                                       "language": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "label": "Language",
+                                               "prefix": 
"/cms/i18n/language/create.html"
+                                       }
+                               }
+                       },
+                       "contenttable": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/cms/contenttable",
+                               "columns": {
+                                       "jcr:primaryType": "nt:unstructured",
+                                       "title": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Title"
+                                       },
+                                       "language": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Language"
+                                       },
+                                       "actions": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "title": "Actions"
+                                       }
+                               },
+                               "types": {
+                                       "jcr:primaryType": "nt:unstructured",
+                                       "sling:Folder": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "columns": {
+                                                       "jcr:primaryType": 
"nt:unstructured",
+                                                       "title": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "property": 
"jcr:content/jcr:title",
+                                                               "type": "String"
+                                                       },
+                                                       "Language": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "property": 
"jcr:language",
+                                                               "type": "String"
+                                                       },
+                                                       "actions": {
+                                                               
"jcr:primaryType": "nt:unstructured",
+                                                               "type": 
"Actions",
+                                                               "edit": {
+                                                                       
"jcr:primaryType": "nt:unstructured",
+                                                                       
"modal": true,
+                                                                       "new": 
false,
+                                                                       
"title": "Edit Language",
+                                                                       "text": 
"&#x270f;",
+                                                                       
"prefix": "/cms/i18n/language/edit.html"
+                                                               },
+                                                               "delete": {
+                                                                       
"jcr:primaryType": "nt:unstructured",
+                                                                       
"modal": true,
+                                                                       
"title": "Delete i18n Dictionary",
+                                                                       "text": 
"&times;",
+                                                                       
"prefix": "/cms/shared/delete.html"
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       },
+                       "richtext_1": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/general/richtext",
+                               "text": "<h3>i18n Dictionary Entries</h3>"
+                       },
+                       "i18ntable": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/cms/i18ntable"
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/entry/create.json
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/entry/create.json
new file mode 100644
index 0000000..cc1d08c
--- /dev/null
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/entry/create.json
@@ -0,0 +1,54 @@
+{
+       "jcr:primaryType": "sling:Page",
+       "jcr:content": {
+               "sling:resourceType": "sling-cms/components/pages/base",
+               "jcr:title": "Create i18n Entry",
+               "jcr:primaryType": "nt:unstructured",
+               "container": {
+                       "jcr:primaryType": "nt:unstructured",
+                       "sling:resourceType": 
"sling-cms/components/general/container",
+                       "richtext": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/general/richtext",
+                               "text": "<h3>Create Entry</h3>"
+                       },
+                       "slingform": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/editor/slingform",
+                               "actionSuffix": "/*",
+                               "addDate": false,
+                               "button": "Create Language",
+                               "successPrepend": 
"/libs/sling-cms/content/site/content.html",
+                               "fields": {
+                                       "jcr:primaryType": "nt:unstructured",
+                                       "sling:resourceType": 
"sling-cms/components/general/container",
+                                       "key": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/text",
+                                               "label": "Key",
+                                               "name": "sling:key",
+                                               "required": true
+                                       },
+                                       "value": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "name": "sling:message",
+                                               "value": ""
+                                       },
+                                       "nameHint": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "value": "entry",
+                                               "name": ":nameHint"
+                                       },
+                                       "primaryType": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "name": "jcr:primaryType",
+                                               "value": "sling:MessageEntry"
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/language/create.json
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/language/create.json
new file mode 100644
index 0000000..e010b62
--- /dev/null
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/language/create.json
@@ -0,0 +1,81 @@
+{
+       "jcr:primaryType": "sling:Page",
+       "jcr:content": {
+               "sling:resourceType": "sling-cms/components/pages/base",
+               "jcr:title": "Create Language",
+               "jcr:primaryType": "nt:unstructured",
+               "container": {
+                       "jcr:primaryType": "nt:unstructured",
+                       "sling:resourceType": 
"sling-cms/components/general/container",
+                       "richtext": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/general/richtext",
+                               "text": "<h3>Create Language</h3>"
+                       },
+                       "slingform": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/editor/slingform",
+                               "actionSuffix": "/*",
+                               "button": "Create Language",
+                               "successPrepend": 
"/libs/sling-cms/content/site/content.html",
+                               "fields": {
+                                       "jcr:primaryType": "nt:unstructured",
+                                       "sling:resourceType": 
"sling-cms/components/general/container",
+                                       "title": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/text",
+                                               "label": "Title",
+                                               "name": "jcr:content/jcr:title",
+                                               "required": true
+                                       },
+                                       "language": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/text",
+                                               "label": "Language",
+                                               "name": "jcr:language",
+                                               "required": true
+                                       },
+                                       "name": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/text",
+                                               "label": "Name",
+                                               "name": ":name",
+                                               "required": true
+                                       },
+                                       "primaryType": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "name": "jcr:primaryType",
+                                               "value": "sling:Folder"
+                                       },
+                                       "contentPrimaryType": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "name": 
"jcr:content/jcr:primaryType",
+                                               "value": "nt:unstructured"
+                                       },
+                                       "contentResourceType": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "name": 
"jcr:content/sling:resourceType",
+                                               "value": 
"sling-cms/components/cms/blank"
+                                       },
+                                       "mixin": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "name": "jcr:mixinTypes",
+                                               "value": "mix:language"
+                                       },
+                                       "mixinTypeHint": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/hidden",
+                                               "name": 
"jcr:mixinTypes@TypeHint",
+                                               "value": [
+                                                       "Name[]"
+                                               ]
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/language/edit.json
 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/language/edit.json
new file mode 100644
index 0000000..169b3f9
--- /dev/null
+++ 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/i18n/language/edit.json
@@ -0,0 +1,41 @@
+{
+       "jcr:primaryType": "sling:Page",
+       "jcr:content": {
+               "sling:resourceType": "sling-cms/components/pages/base",
+               "jcr:title": "Edit Language",
+               "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 Language</h3>"
+                       },
+                       "slingform": {
+                               "jcr:primaryType": "nt:unstructured",
+                               "sling:resourceType": 
"sling-cms/components/editor/slingform",
+                               "button": "Save Language",
+                               
"successPrepend":"/libs/sling-cms/content/site/content.html",
+                               "fields": {
+                                       "jcr:primaryType": "nt:unstructured",
+                                       "sling:resourceType": 
"sling-cms/components/general/container",
+                                       "title": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/text",
+                                               "label": "Title",
+                                               "name": "jcr:content/jcr:title",
+                                               "required": true
+                                       },
+                                       "language": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "sling:resourceType": 
"sling-cms/components/editor/fields/text",
+                                               "label": "Language",
+                                               "name": "jcr:language",
+                                               "required": true
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/start.json 
b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/start.json
index a7c9544..35c9044 100644
--- a/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/start.json
+++ b/cms/ui/src/main/resources/jcr_root/libs/sling-cms/content/start.json
@@ -52,6 +52,11 @@
                                                "link": 
"/cms/file/editors.html/etc/fileeditors",
                                                "text": "File Editors"
                                        },
+                                       "i18n": {
+                                               "jcr:primaryType": 
"nt:unstructured",
+                                               "link": 
"/cms/i18n/dictionaries.html/etc/i18n",
+                                               "text": "Internationalization 
(i18n)"
+                                       },
                                        "nodebrowser": {
                                                "jcr:primaryType": 
"nt:unstructured",
                                                "link": "/bin/browser.html",
@@ -60,7 +65,7 @@
                                        "siteconfig": {
                                                "jcr:primaryType": 
"nt:unstructured",
                                                "link": 
"/cms/config/list.html/etc/config",
-                                               "text": "Site Configs"
+                                               "text": "Site Configurations"
                                        },
                                        "systemconsole": {
                                                "jcr:primaryType": 
"nt:unstructured",

-- 
To stop receiving notification emails like this one, please contact
dk...@apache.org.

Reply via email to