[ 
https://issues.apache.org/jira/browse/SLING-466?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12605638#action_12605638
 ] 

bdelacretaz edited comment on SLING-466 at 6/17/08 8:47 AM:
--------------------------------------------------------------------

The JST engine is much improved in revision 668714, with separate processing of 
the template's head and body elements.

Given a node with these properties:

  sling:resourceType: foo
  description: Hello, Sling world
  title: Sling JST test

And this JST template stored at /apps/foo/foo.jst:

<html>
<head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="/apps/foo/foo.css"/>
</head>
  <body style="color:blue">
<h1>currentNode test</h1>
Changed 1
<div>
This is html.jst, path=<%= currentNode.description %>.
</div>

<div>
<h1>Sling client library test</h1>
root resource type=
<b><% out.write(Sling.getContent("/")["sling:resourceType"]); %></b>.
</div> 
</body>
</html>

Requesting the node with an html extension outputs this:

<html>

<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
  
<title>Sling JST test</title>
  
<link href="/apps/foo/foo.css" rel="stylesheet" type="text/css">

<script src="/system/sling.js"></script><script language="javascript">var 
currentNode={"description":"Hello, Sling 
world","sling:resourceType":"foo","testInfiniteLoop":"true","jcr:primaryType":"nt:unstructured","title":"Sling
 JST test"};</script>
</head>
  
<body style="color:blue">
<div id="JstDefaultRendering"><h1>Node dumped by HtmlRendererServlet</h1>

<p>Node path: <b>/xx</b></p>
<p>Resource metadata: <b>{sling.resolutionPath=/xx}</b></p>
<h2>Node properties</h2>
description: <b>Hello, Sling world</b><br/>sling:resourceType: 
<b>foo</b><br/>testInfiniteLoop: <b>true</b><br/>jcr:primaryType: 
<b>nt:unstructured</b><br/>title: <b>Sling JST test</b><br/></div>

<script language="javascript">
      var e = document.getElementById("JstDefaultRendering"); 
      e.parentNode.removeChild(e);
    </script><script src="/apps/foo/foo.jst.jst.js"></script>
</body>
</html>

And the /apps/foo/foo.jst.jst.js script that's referred to above is generated 
to be:

out=document;
out.write("<h1>currentNode test</h1>\n");
out.write("Changed 1\n");
out.write("<div>\n");
out.write("This is html.jst, path=");out.write( currentNode.description 
);out.write(".\n");
out.write("</div>\n");
out.write("\n");
out.write("<div>\n");
out.write("<h1>Sling client library test</h1>\n");
out.write("root resource type=\n");
out.write("<b>"); out.write(Sling.getContent("/")["sling:resourceType"]); 
out.write("</b>.\n");
out.write("</div> \n");



      was (Author: bdelacretaz):
    The JST engine is much improved in revision 668714, with separate 
processing of the template's head and body elements.

Given a node with these properties:

  sling:resourceType: foo
  description: Hello, Sling world
  title: Sling JST test

And this JST template stored at /apps/foo/foo.jst:

<html>
<head>
  <title><%= currentNode.title %></title>
  <link rel="stylesheet" type="text/css" href="/apps/foo/foo.css"/>
</head>
  <body style="color:blue">
<h1>currentNode test</h1>
Changed 1
<div>
This is html.jst, path=<%= currentNode.description %>.
</div>

<div>
<h1>Sling client library test</h1>
root resource type=
<b><% out.write(Sling.getContent("/")["sling:resourceType"]); %></b>.
</div> 
</body>
</html>

Requesting the node with an html extension outputs this:

<html>

<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
  
<title>Sling JST test</title>
  
<link href="/apps/foo/foo.css" rel="stylesheet" type="text/css">

<script src="/system/sling.js"></script><script language="javascript">var 
currentNode={"description":"Hello, Sling 
world","sling:resourceType":"foo","testInfiniteLoop":"true","jcr:primaryType":"nt:unstructured","title":"Sling
 JST test"};</script>
</head>
  
<body style="color:blue">
<div id="JstDefaultRendering"><h1>Node dumped by HtmlRendererServlet</h1>

<p>Node path: <b>/xx</b></p>
<p>Resource metadata: <b>{sling.resolutionPath=/xx}</b></p>
<h2>Node properties</h2>
description: <b>Hello, Sling world</b><br/>sling:resourceType: 
<b>foo</b><br/>testInfiniteLoop: <b>true</b><br/>jcr:primaryType: 
<b>nt:unstructured</b><br/>title: <b>Sling JST test</b><br/></div>

<script language="javascript">
      var e = document.getElementById("JstDefaultRendering"); 
      e.parentNode.removeChild(e);
    </script><script src="/apps/foo/foo.jst.jst.js"></script>
</body>
</html>

And the /apps/foo/foo.jst.jst.js script that's referred to above is generated 
to be:

out=document;
out.write("<h1>currentNode test</h1>\n");
out.write("Changed 1\n");
out.write("<div>\n");
out.write("This is html.jst, path=");out.write( currentNode.description 
);out.write(".\n");
out.write("</div>\n");
out.write("\n");
out.write("<div>\n");
out.write("<h1>Sling client library test</h1>\n");
out.write("root resource type=\n");
out.write("<b>"); out.write(Sling.getContent("/")["sling:resourceType"]); 
out.write("</b>.\n");
out.write("</div> \n");


  
> JST scripting engine: render indexable HTML and separate javascript code
> ------------------------------------------------------------------------
>
>                 Key: SLING-466
>                 URL: https://issues.apache.org/jira/browse/SLING-466
>             Project: Sling
>          Issue Type: Improvement
>          Components: Scripting
>            Reporter: Bertrand Delacretaz
>            Priority: Minor
>
> The JST scripting engine should output a default HTML rendering, meant to be 
> indexed by search engines, with a <script> element that points to a separate 
> javascript resource to render the page.
> The idea is that the javascript code will be cached by client browsers, being 
> the same for all resources that have the same sling:resourceType.
> The HTML rendering should include a meaningful <title> element, using the 
> value of a property named "title" or "description", if present, or the node 
> name if not.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to