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-org-apache-sling-app-cms.git


The following commit(s) were added to refs/heads/master by this push:
     new 4cc75f5  Adding support for path based suggestions and a search modal 
for the path field.
4cc75f5 is described below

commit 4cc75f533bdbf162d56e762b9b5c2c5bce30d25a
Author: Dan Klco <[email protected]>
AuthorDate: Thu Aug 23 00:39:01 2018 -0400

    Adding support for path based suggestions and a search modal for the path 
field.
---
 .../internal/servlets/PathSuggestionServlet.java   |  3 ++
 ui/src/main/frontend/src/js/scripts.js             | 57 ++++++++++++++++------
 ui/src/main/frontend/src/scss/styles.scss          |  9 ++++
 .../cms/contentbreadcrumb/contentbreadcrumb.jsp    |  4 +-
 .../components/cms/searchresults/searchresults.jsp |  4 +-
 .../components/editor/fields/path/field.jsp        | 18 ++++++-
 .../editor/fields/references/references.jsp        |  2 +-
 .../components/editor/fields/richtext/field.jsp    | 18 +------
 .../components/editor/fields/taxonomy/field.jsp    |  4 +-
 .../libs/sling-cms/content/shared/search.json      |  8 +--
 .../libs/sling-cms/content/site/create.json        |  3 +-
 .../libs/sling-cms/content/site/creategroup.json   |  3 +-
 .../jcr_root/libs/sling-cms/content/site/edit.json |  3 +-
 .../libs/sling-cms/content/site/editgroup.json     |  3 +-
 14 files changed, 90 insertions(+), 49 deletions(-)

diff --git 
a/core/src/main/java/org/apache/sling/cms/core/internal/servlets/PathSuggestionServlet.java
 
b/core/src/main/java/org/apache/sling/cms/core/internal/servlets/PathSuggestionServlet.java
index 3f0c15b..05ac560 100644
--- 
a/core/src/main/java/org/apache/sling/cms/core/internal/servlets/PathSuggestionServlet.java
+++ 
b/core/src/main/java/org/apache/sling/cms/core/internal/servlets/PathSuggestionServlet.java
@@ -53,6 +53,9 @@ public class PathSuggestionServlet extends 
SlingSafeMethodsServlet {
                typeMaps.put("page", new String[] { "sling:Page", "nt:folder", 
"sling:Site" });
                typeMaps.put("file", new String[] { "nt:file", "nt:folder", 
"sling:Site" });
                typeMaps.put("folder", new String[] { "nt:folder", "sling:Site" 
});
+               typeMaps.put("taxonomy", new String[] { "nt:folder", 
"sling:Taxonomy" });
+               typeMaps.put("config", new String[] { "nt:folder", 
"sling:Config" });
+               typeMaps.put("content", new String[] { "nt:hierarchyNode" });
                typeMaps.put("all", new String[] { "nt:base" });
        }
 
diff --git a/ui/src/main/frontend/src/js/scripts.js 
b/ui/src/main/frontend/src/js/scripts.js
index d9db291..ca3ecfa 100644
--- a/ui/src/main/frontend/src/js/scripts.js
+++ b/ui/src/main/frontend/src/js/scripts.js
@@ -356,21 +356,30 @@ Sling.CMS = {
        };
 
        Sling.CMS.ext['pathfield'] = {
+               suggest: function(field, type, base) {
+                       var xhr;
+                       new autoComplete({
+                               minChars: 1,
+                           selector: field,
+                           source: function(term, response){
+                               try {
+                                       xhr.abort();
+                               } catch(e){}
+                               var t = term;
+                               if(term === '/'){
+                                       term = base;
+                               }
+                               xhr = $.getJSON('/bin/cms/paths', { path: term, 
type: type }, function(data){
+                                       response(data);
+                               });
+                           }
+                       });
+               },
                decorate: function($ctx){
                        $ctx.find('input.Field-Path').each(function(){
                                var type = $(this).data('type');
-                               var xhr;
-                               new autoComplete({
-                                   selector: this,
-                                   source: function(term, response){
-                                       try {
-                                               xhr.abort();
-                                       } catch(e){}
-                                       xhr = $.getJSON('/bin/cms/paths', { 
path: term, type: type }, function(data){
-                                               response(data);
-                                       });
-                                   }
-                               });
+                               var base = $(this).data('base');
+                               Sling.CMS.ext.pathfield.suggest(this, type, 
base);
                        });
                }
        };
@@ -411,14 +420,34 @@ Sling.CMS = {
                            },
                            callbacks: {
                                onDialogShown: function(e){
-                                       
$('.note-link-url').attr('list','richtext-pages');
-                                       
$('.note-image-url').attr('list','richtext-images');
+                                               
Sling.CMS.ext.pathfield.suggest($('.note-link-url')[0], 'content', '/content');
+                                               
Sling.CMS.ext.pathfield.suggest($('.note-image-url')[0], 'content', '/content');
                                }
                            }
                        });
                }
        };
        
+       Sling.CMS.ext['searchselect'] = {
+               decorate: function($ctx) {
+                       $ctx.find('.Search-Select-Button').click(function(evt){
+                               var $btn = $(evt.target);
+                               var $active = 
Sling.CMS.ext['searchbutton'].active;
+                               $active.val($btn.data('path'));
+                               $btn.closest('.Modal').remove();
+                       });
+               }
+       }
+       
+       Sling.CMS.ext['searchbutton'] = {
+               active: null,
+               decorate: function($ctx) {
+                       $ctx.find('.Search-Button').click(function(evt){
+                               Sling.CMS.ext['searchbutton'].active = 
$(evt.target).closest('.Field-Input').find('.Field-Path');
+                       });
+               }
+       }
+       
        Sling.CMS.ext['table'] = {
                decorate: function($ctx) {
                        $ctx.find('table tr').click(function(el){
diff --git a/ui/src/main/frontend/src/scss/styles.scss 
b/ui/src/main/frontend/src/scss/styles.scss
index e23a05e..e576a4e 100644
--- a/ui/src/main/frontend/src/scss/styles.scss
+++ b/ui/src/main/frontend/src/scss/styles.scss
@@ -78,6 +78,15 @@ ul.Breadcrumb  {
     margin: 1em 0;
 }
 
+.Field-Input a.Button {
+       height: 30px;
+       padding: 8px 9px;
+}
+
+.Field-Input .jam:before {
+       font-size: 12px;
+}
+
 .Hide {
        display:none;
 }
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentbreadcrumb/contentbreadcrumb.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentbreadcrumb/contentbreadcrumb.jsp
index 6f483fe..651fc93 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentbreadcrumb/contentbreadcrumb.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/contentbreadcrumb/contentbreadcrumb.jsp
@@ -21,7 +21,7 @@
 <ul class="Breadcrumb">
        <li class="Breadcrumb-Item">
                <a href="${resource.valueMap.prefix}${root.path}">
-                       <sling:encode value="${root.valueMap['jcr:title'] != 
null ? root.valueMap['jcr:title'] : root.valueMap['jcr:content/jcr:title']}" 
mode="HTML" />
+                       <sling:encode value="${root.valueMap['jcr:title'] != 
null ? root.valueMap['jcr:title'] : root.valueMap['jcr:content/jcr:title']}" 
default="${root.name}" mode="HTML" />
                </a>
        </li>
        <c:if test="${site.path != slingRequest.requestPathInfo.suffix && 
site.path != slingRequest.requestPathInfo.suffixResource.parent.path}">
@@ -35,7 +35,7 @@
        </c:if>
        <c:if test="${root.path != slingRequest.requestPathInfo.suffix}">
                <li class="Breadcrumb-Item">
-                       <sling:encode 
value="${slingRequest.requestPathInfo.suffixResource.valueMap['jcr:title'] != 
null ? slingRequest.requestPathInfo.suffixResource.valueMap['jcr:title'] : 
slingRequest.requestPathInfo.suffixResource.valueMap['jcr:content/jcr:title']}" 
default="${slingRequest.requestPathInfo.suffix}" mode="HTML" />
+                       <sling:encode 
value="${slingRequest.requestPathInfo.suffixResource.valueMap['jcr:title'] != 
null ? slingRequest.requestPathInfo.suffixResource.valueMap['jcr:title'] : 
slingRequest.requestPathInfo.suffixResource.valueMap['jcr:content/jcr:title']}" 
default="${slingRequest.requestPathInfo.suffixResource.name}" mode="HTML" />
                </li>
        </c:if>
        <li class="Pull-Right">
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/searchresults/searchresults.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/searchresults/searchresults.jsp
index a99c4db..186358f 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/searchresults/searchresults.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/cms/searchresults/searchresults.jsp
@@ -20,7 +20,7 @@
 <div id="search-results">
        <div class="Grid">
        <sling:adaptTo adaptable="${slingRequest}" 
adaptTo="org.apache.sling.cms.core.models.SearchResults" var="results" />
-               <c:forEach var="result" items="${results.results}" begin="0" 
end="100" varStatus="status">
+               <c:forEach var="result" items="${results.results}" begin="0" 
end="20" varStatus="status">
                        <div class="Cell Search-Result Small-50">
                                <div class="Search-Result__Container">
                                        <c:choose>
@@ -56,7 +56,7 @@
                                                <em>${result.path}</em>
                                        </small><br/>
                                        <br />
-                                       <a href="#" class="Button 
Select-Button" data-path="${result.path}">Select</a>
+                                       <a href="#" class="Button 
Search-Select-Button" data-path="${result.path}">Select</a>
                                </div>
                        </div>
                </c:forEach>
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/path/field.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/path/field.jsp
index e6e8b70..baf2036 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/path/field.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/path/field.jsp
@@ -17,4 +17,20 @@
  * under the License.
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
-<input class="Field-Path" type="text" name="${properties.name}" 
value="${editProperties[properties.name]}" ${required} ${disabled} 
data-type="${type}" autocomplete="off" />
\ No newline at end of file
+<c:choose>
+       <c:when test="${properties.hidesearch != true}">
+               <div class="Grid">
+                       <div class="Cell Mobile-80">
+                               <input class="Field-Path" type="text" 
name="${properties.name}" value="${editProperties[properties.name]}" 
${required} ${disabled} data-type="${properties.type}" 
data-base="${properties.basePath}" autocomplete="off" />
+                       </div>
+                       <div class="Cell Mobile-20">
+                               <a href="/cms/shared/search.html" class="Button 
Fetch-Modal Search-Button" data-title="Search" data-path=".Main-Content > .Grid 
> .Cell > *">
+                                       <span class="jam jam-search"></span>
+                               </a>
+                       </div>
+               </div>
+       </c:when>
+       <c:otherwise>
+               <input class="Field-Path" type="text" name="${properties.name}" 
value="${editProperties[properties.name]}" ${required} ${disabled} 
data-type="${properties.type}" data-base="${properties.basePath}" 
autocomplete="off" />
+       </c:otherwise>
+</c:choose>
\ 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 2b9026a..290e267 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
@@ -37,7 +37,7 @@
                                        Replacement Path
                                </label>
                                <div class="Field-Input">
-                                       <input type="text" name=":dest" />
+                                       <input type="text" name=":dest" 
class="Field-Path" />
                                </div>
                        </div>
                </c:if>
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/richtext/field.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/richtext/field.jsp
index 518c323..45da1c3 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/richtext/field.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/richtext/field.jsp
@@ -25,20 +25,4 @@
        <c:otherwise>
                <c:set var="path" value="/content" />
        </c:otherwise>
-</c:choose>
-<c:set var="pageQuery" value="SELECT * FROM [sling:Page] AS s WHERE 
ISDESCENDANTNODE([${path}])" />
-<c:set var="imageQuery" value="SELECT * FROM [sling:File] AS s WHERE 
ISDESCENDANTNODE([${path}]) AND [jcr:content/jcr:mimeType] LIKE 'image/%'" />
-<datalist id="richtext-pages">
-       <c:forEach var="page" 
items="${sling:findResources(resourceResolver,pageQuery,'JCR-SQL2')}">
-               <option value="${page.path}.html">
-                       <sling:encode 
value="${page.valueMap['jcr:content/jcr:title']}" mode="HTML" />
-               </option>
-       </c:forEach>
-</datalist>
-<datalist id="richtext-images">
-       <c:forEach var="image" 
items="${sling:findResources(resourceResolver,imageQuery,'JCR-SQL2')}">
-               <option value="${image.path}">
-                       <sling:encode 
value="${image.valueMap['jcr:content/jcr:title']}" mode="HTML" 
default="${image.name }" />
-               </option>
-       </c:forEach>
-</datalist>
\ No newline at end of file
+</c:choose>
\ No newline at end of file
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/taxonomy/field.jsp
 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/taxonomy/field.jsp
index 6a912d3..98adb5c 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/taxonomy/field.jsp
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/editor/fields/taxonomy/field.jsp
@@ -19,7 +19,7 @@
  <%@include file="/libs/sling-cms/global.jsp"%>
  <div class="taxonomy">
        <fieldset disabled="disabled" class="taxonomy__template Hide">
-               <a class="button taxonomy__item">
+               <a class="Button taxonomy__item">
                        <input type="hidden" name="${properties.name}" value="" 
/>
                        <span class="taxonomy__title"></span>
                </a>
@@ -34,7 +34,7 @@
        </div>
        <div class="taxonomy__container">
                <c:forEach var="item" 
items="${editProperties[properties.name]}">
-                       <a class="button taxonomy__item">
+                       <a class="Button taxonomy__item">
                                <input type="hidden" name="${properties.name}" 
value="${item}" />
                                <span 
class="taxonomy__title">${sling:encode(sling:getResource(resourceResolver,item).valueMap['jcr:title'],'HTML')}</span>
                        </a>
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/search.json 
b/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/search.json
index e5dce60..63655ff 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/search.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/shared/search.json
@@ -7,11 +7,6 @@
                "container": {
                        "jcr:primaryType": "nt:unstructured",
                        "sling:resourceType": 
"sling-cms/components/general/container",
-                       "richtext": {
-                               "jcr:primaryType": "nt:unstructured",
-                               "sling:resourceType": 
"sling-cms/components/general/richtext",
-                               "text": "<h3>Search</h3>"
-                       },
                        "searchform": {
                                "jcr:primaryType": "nt:unstructured",
                                "sling:resourceType": 
"sling-cms/components/cms/getform",
@@ -44,7 +39,8 @@
                                                "jcr:primaryType": 
"nt:unstructured",
                                                "sling:resourceType": 
"sling-cms/components/editor/fields/path",
                                                "label": "Path",
-                                               "name": "path"
+                                               "name": "path",
+                                               "hidesearch": true
                                        }
                                }
                        },
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/create.json 
b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/create.json
index 70d7647..5d6c0e9 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/create.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/create.json
@@ -61,7 +61,8 @@
                                                "basePath": "/conf",
                                                "label": "Config",
                                                "name": "sling:configRef",
-                                               "required": false
+                                               "required": false,
+                                               "type": "config"
                                        },
                                        "primaryType": {
                                                "jcr:primaryType": 
"nt:unstructured",
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/creategroup.json 
b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/creategroup.json
index 05351c4..9b434ac 100644
--- 
a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/creategroup.json
+++ 
b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/creategroup.json
@@ -46,7 +46,8 @@
                                                "basePath": "/conf",
                                                "label": "Config",
                                                "name": "sling:configRef",
-                                               "required": false
+                                               "required": false,
+                                               "type": "config"
                                        },
                                        "primaryType": {
                                                "jcr:primaryType": 
"nt:unstructured",
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/edit.json 
b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/edit.json
index 3b95969..319e9a5 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/edit.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/edit.json
@@ -54,7 +54,8 @@
                                                "basePath": "/conf",
                                                "label": "Config",
                                                "name": "sling:configRef",
-                                               "required": false
+                                               "required": false,
+                                               "type": "config"
                                        }
                                }
                        }
diff --git 
a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/editgroup.json 
b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/editgroup.json
index 405bcb0..a508fc6 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/editgroup.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/site/editgroup.json
@@ -34,7 +34,8 @@
                                                "basePath": "/conf",
                                                "label": "Config",
                                                "name": "sling:configRef",
-                                               "required": false
+                                               "required": false,
+                                               "type": "config"
                                        }
                                }
                        }

Reply via email to