incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Sling > GSoC 2010 mini-CMS project
Date Fri, 06 Aug 2010 11:05:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/1810/9/1/_/styles/combined.css?spaceKey=SLING&amp;forWysiwyg=true"
type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/SLING/GSoC+2010+mini-CMS+project">GSoC
2010 mini-CMS project</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~fpaparoni">Federico
Paparoni</a>
    </h4>
        <br/>
                         <h4>Changes (1)</h4>
                                 
    
<div id="page-diffs">
            <table class="diff" cellpadding="0" cellspacing="0">
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >The repository for this project can
be found at&amp;nbsp;[http://code.google.com/p/davidgsoc2010/|http://code.google.com/p/davidgsoc2010/].
<br> <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h1.
{color:#003366}{*}Some words about David Mini CMS{*}{color} <br> <br>{color:#000000}{*}This
project shows some features of Apache Sling and can be used for educational purpose to move
your first steps with this framework.*{color} <br> <br>{color:#000000}David uses
the following opensource library/technologies:{color} <br> <br>{color:#000000}&amp;nbsp;{color}
<br>* {color:#003366}[{color:#003366}jQuery&amp;nbsp;{color}|http://jquery.com/]{color}1.4.2
<br>* {color:#003366}[{color:#003366}jQueryUI{color}|http://jqueryui.com/]{color}&amp;nbsp;1.8
<br>* {color:#003366}[{color:#003366}LavaLamp - A menu plugin for jQuery with cool hover
effects{color}|http://gmarwaha.com/blog/?p=7]{color}&amp;nbsp; <br>* {color:#003366}[{color:#003366}WP-Cumulus
SWF{color}|http://www.roytanck.com/2008/03/06/wordpress-plugin-wp-cumulus-flash-based-tag-cloud/]{color}&amp;nbsp;used
to display tag cloud <br>* {color:#003366}[{color:#003366}iText{color}|http://itextpdf.com/]{color}
<br>* {color:#003366}[{color:#003366}CKEditor&amp;nbsp;{color}|http://ckeditor.com/]{color}\\
<br>The available features are <br>* CRUD (Create, Read, Update and Delete) for
the content <br>* Full HTML creation of article <br>* Creation of PDF rappresentation
of a single post or the entire list of contents available <br>* Tagging system <br>*
Search by title,text,tag <br>* Send email to someone with the link of article <br>*
Background service that checks number of articles/tags in the repository <br> <br>These
aren&#39;t space age features, but are useful to understand how to create an application
using Apache Sling <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h1. {color:#003366}{*}First steps
into Sling{*}{color} <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >Open a console and simply launch the
next command: <br> <br></td></tr>
            <tr><td class="diff-unchanged" >curl \-F&quot;sling:resourceType=foo/bar&quot;
\-F&quot;title=Hello world&quot; [http://admin:admin@localhost:8080/content/myfirstnode]
<br></td></tr>
            <tr><td class="diff-unchanged" > <br>{code} <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
        </table>
</div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h1><a name="GSoC2010mini-CMSproject-Overview%28fromSLING1438%29"></a>Overview
(from SLING-1438)</h1>

<p>This is a Google Summer of Code 2010, Federico Paparoni has been accepted as a student
to work on it, mentored by Bertrand Delacretaz</p>

<p>The goal is to create a mini-CMS with Sling, that demonstrates Sling best practices.</p>

<p>See <a href="http://tinyurl.com/asfgsoc" class="external-link" rel="nofollow">http://tinyurl.com/asfgsoc</a>
for the full list of GSoC 2010 projects at the ASF, and <a href="http://community.apache.org/gsoc"
class="external-link" rel="nofollow">http://community.apache.org/gsoc</a> for general
GSoC information.</p>


<h1><a name="GSoC2010mini-CMSproject-"></a><font color="#003366"><b>Introduction</b></font></h1>

<p>Apache Sling is an opensource project with a lot of technologies and features. The
goal of this project is to create a mini-CMS, that developers can use to understand how to
develop a simple application with Sling.&nbsp;</p>

<p>So it is necessary to know a little about two main topics: OSGi and JCR. The following
links are useful resources to read something about these technologies.</p>

<p><b><em>OSGi</em></b></p>
<ul>
	<li><a href="http://en.wikipedia.org/wiki/OSGi" class="external-link" rel="nofollow">http://en.wikipedia.org/wiki/OSGi</a></li>
	<li><a href="http://felix.apache.org/" class="external-link" rel="nofollow">http://felix.apache.org/</a></li>
	<li><a href="http://www.osgi.org/Links/BasicEducation" class="external-link" rel="nofollow">http://www.osgi.org/Links/BasicEducation</a></li>
</ul>


<p><b><em>JCR</em></b></p>
<ul>
	<li><a href="http://jackrabbit.apache.org/" class="external-link" rel="nofollow">http://jackrabbit.apache.org/</a></li>
	<li><a href="http://www.ibm.com/developerworks/java/library/j-jcr/" class="external-link"
rel="nofollow">http://www.ibm.com/developerworks/java/library/j-jcr/</a></li>
	<li><a href="http://wiki.apache.org/jackrabbit/DavidsModel" class="external-link"
rel="nofollow">http://wiki.apache.org/jackrabbit/DavidsModel</a></li>
</ul>


<p>The repository for this project can be found at&nbsp;<a href="http://code.google.com/p/davidgsoc2010/"
class="external-link" rel="nofollow">http://code.google.com/p/davidgsoc2010/</a>.</p>

<h1><a name="GSoC2010mini-CMSproject-"></a><font color="#003366"><b>Some
words about David Mini CMS</b></font></h1>

<p><font color="#000000"><b>This project shows some features of Apache Sling
and can be used for educational purpose to move your first steps with this framework.</b></font></p>

<p><font color="#000000">David uses the following opensource library/technologies:</font></p>

<p><font color="#000000">&nbsp;</font></p>
<ul>
	<li><font color="#003366">[<font color="#003366"></font>jQuery&nbsp;</font>|http://jquery.com/]<font
color="">1.4.2<br/>
* <font color="#003366"></font>[<font color="#003366"></font>jQueryUI</font>|http://jqueryui.com/]<font
color="">&nbsp;1.8<br/>
* <font color="#003366"></font>[<font color="#003366"></font>LavaLamp
- A menu plugin for jQuery with cool hover effects</font>|http://gmarwaha.com/blog/?p=7]<font
color="">&nbsp;<br/>
* <font color="#003366"></font>[<font color="#003366"></font>WP-Cumulus
SWF</font>|http://www.roytanck.com/2008/03/06/wordpress-plugin-wp-cumulus-flash-based-tag-cloud/]<font
color="">&nbsp;used to display tag cloud<br/>
* <font color="#003366"></font>[<font color="#003366"></font>iText</font>|http://itextpdf.com/]<font
color=""><br/>
* <font color="#003366"></font>[<font color="#003366"></font>CKEditor&nbsp;</font>|http://ckeditor.com/]<font
color=""><br class="atl-forced-newline" />
The available features are<br/>
* CRUD (Create, Read, Update and Delete) for the content<br/>
* Full HTML creation of article<br/>
* Creation of PDF rappresentation of a single post or the entire list of contents available<br/>
* Tagging system<br/>
* Search by title,text,tag<br/>
* Send email to someone with the link of article<br/>
* Background service that checks number of articles/tags in the repository<br/>
<br/>
These aren't space age features, but are useful to understand how to create an application
using Apache Sling<br/>
<br/>
h1. <font color="#003366"></font><b>First steps into Sling</b></font></li>
</ul>


<p>Firstly you must setup the environment for Sling, so you can follow the guide at&nbsp;<a
href="http://sling.apache.org/site/getting-and-building-sling.html" class="external-link"
rel="nofollow">http://sling.apache.org/site/getting-and-building-sling.html</a>.</p>

<p>Now that you created your environment, you can setup some other tools that can be
useful during the development:</p>
<ul>
	<li><a href="http://curl.haxx.se/" class="external-link" rel="nofollow">cURL</a>
: Command line tool to send HTTP request</li>
	<li><a href="http://svn.apache.org/repos/asf/sling/trunk/contrib/explorers/jquery/"
class="external-link" rel="nofollow">JCR Explorer</a> : Extension that create a useful
explorer for the JCR repository you are working in</li>
	<li><a href="http://www.bitkinex.com/" class="external-link" rel="nofollow">BitKinex</a>
:&nbsp;FTP/SFTP/HTTP/WebDAV Client that can be used to manage the files you uploaded in
Sling</li>
</ul>


<p>It's time to make our "Hello world" in Apache Sling.&nbsp;<br/>
Open a console and simply launch the next command:</p>

<p>curl &#45;F"sling:resourceType=foo/bar" &#45;F"title=Hello world" <a href="http://admin:admin@localhost:8080/content/myfirstnode"
class="external-link" rel="nofollow">http://admin:admin@localhost:8080/content/myfirstnode</a></p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">curl -F<span class="code-quote">"sling:resourceType=foo/bar"</span>
-F<span class="code-quote">"title=Hello world"</span> http:<span class="code-comment">//admin:admin@localhost:8080/content/myfirstnode</span>
</pre>
</div></div>

<p>This is a simple HTTP request, where you pass some parameters and values. Using it
you have created a first resource under Sling.&nbsp;<br/>
The resource is a JCR node, as every resource in Sling, put under folder /content. This node
has two parameters, title and sling:resourceType.&nbsp;</p>

<p>Node creation is a simple task, but you must understand how you can render the information
stored in the nodes using Sling.<br/>
The first document you can read is the next one:&nbsp;<a href="http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file.res/cheatsheet.pdf"
class="external-link" rel="nofollow">http://dev.day.com/content/ddc/blog/2008/07/cheatsheet/_jcr_content/par/download/file.res/cheatsheet.pdf</a><br/>
It simply describes how content resolution works in Sling.&nbsp;</p>

<p>Another important information to better understand Sling, is that a resource is rendered
by a script.<br/>
Script files are stored under the folders /apps or /libs and there is a wide choice of possible
scripting engine:&nbsp;</p>
<ul>
	<li>ESP</li>
	<li>JSP</li>
	<li>Java Servlet</li>
	<li>Scala</li>
	<li>Python</li>
	<li>Groovy</li>
	<li>Ruby</li>
</ul>


<p>To select a script, Sling uses the node's sling:resourceType property. So if we say
that&nbsp;sling:resourceType is foo/bar, Sling will search under the /apps/foo/bar/ folder.<br/>
The following links describes how the scripts work and what type of variables we have during
the script execution:</p>
<ul>
	<li><a href="https://cwiki.apache.org/SLING/scripting-variables.html" class="external-link"
rel="nofollow">https://cwiki.apache.org/SLING/scripting-variables.html</a></li>
	<li><a href="https://cwiki.apache.org/SLING/url-to-script-resolution.html" class="external-link"
rel="nofollow">https://cwiki.apache.org/SLING/url-to-script-resolution.html</a></li>
</ul>

    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/SLING/GSoC+2010+mini-CMS+project">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=20316370&revisedVersion=3&originalVersion=2">View
Changes</a>
                |
        <a href="https://cwiki.apache.org/confluence/display/SLING/GSoC+2010+mini-CMS+project?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message