You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/06/09 05:19:20 UTC
svn commit: r189695 [54/67] - in /incubator/roller/trunk: ./ contrib/
contrib/lib/ contrib/plugins/ contrib/plugins/src/ contrib/plugins/src/org/
contrib/plugins/src/org/roller/ contrib/plugins/src/org/roller/presentation/
contrib/plugins/src/org/roller/presentation/velocity/
contrib/plugins/src/org/roller/presentation/velocity/plugins/
contrib/plugins/src/org/roller/presentation/velocity/plugins/acronyms/
contrib/plugins/src/org/roller/presentation/velocity/plugins/bookmarks/
contrib/plugins/src/org/roller/presentation/velocity/plugins/email/
contrib/plugins/src/org/roller/presentation/velocity/plugins/jspwiki/
contrib/plugins/src/org/roller/presentation/velocity/plugins/radeox/
contrib/plugins/src/org/roller/presentation/velocity/plugins/readmore/
contrib/plugins/src/org/roller/presentation/velocity/plugins/smileys/
contrib/plugins/src/org/roller/presentation/velocity/plugins/textile/
contrib/plugins/src/org/roller/presentation/velocity/plugins/topictag/
custom/ custom/src/ custom/web/ docs/ docs/images/ docs/installguide/
docs/installguide/old/ docs/userguide/ docs/userguide/images/
docs/userguide/old/ metadata/ metadata/database/
metadata/database/hibernate/ metadata/xdoclet/ nbproject/ personal/
personal/eclipse/ personal/testing/ sandbox/ sandbox/planetroller/
sandbox/planetroller/metadata/ sandbox/planetroller/metadata/database/
sandbox/planetroller/src/ sandbox/planetroller/src/org/
sandbox/planetroller/src/org/roller/
sandbox/planetroller/src/org/roller/tools/
sandbox/planetroller/src/org/roller/tools/planet/
sandbox/planetroller/templates/ sandbox/planetroller/test/
sandbox/planetroller/test/org/ sandbox/planetroller/test/org/roller/
sandbox/planetroller/test/org/roller/model/
sandbox/planetroller/test/org/roller/tools/
sandbox/planetroller/test/org/roller/tools/planet/
sandbox/planetroller/testdata/ sandbox/planetroller/testdata/cache/
sandbox/planetroller/testdata/output/ sandbox/standalone/
sandbox/standalone/jspwiki/ sandbox/standalone/jspwiki/default/
sandbox/standalone/jspwiki/default/images/ sandbox/standalone/lib/
sandbox/standalone/src/ sandbox/standalone/src/org/
sandbox/standalone/src/org/roller/ sandbox/standalone/src/org/roller/jspwiki/
sandbox/standalone/src/org/roller/tomcat/
sandbox/standalone/src/org/roller/util/ sandbox/standalone/tests/
sandbox/standalone/tests/org/ sandbox/standalone/tests/org/roller/
sandbox/standalone/tests/org/roller/util/ sandbox/standalone/tomcat/ src/
src/org/ src/org/roller/ src/org/roller/business/
src/org/roller/business/hibernate/ src/org/roller/business/search/
src/org/roller/business/search/operations/ src/org/roller/business/utils/
src/org/roller/config/ src/org/roller/config/runtime/ src/org/roller/model/
src/org/roller/pojos/ src/org/roller/presentation/
src/org/roller/presentation/atomapi/ src/org/roller/presentation/bookmarks/
src/org/roller/presentation/bookmarks/actions/
src/org/roller/presentation/bookmarks/formbeans/
src/org/roller/presentation/bookmarks/tags/
src/org/roller/presentation/filters/ src/org/roller/presentation/forms/
src/org/roller/presentation/newsfeeds/ src/org/roller/presentation/pagecache/
src/org/roller/presentation/pagecache/rollercache/
src/org/roller/presentation/pings/ src/org/roller/presentation/planet/
src/org/roller/presentation/tags/ src/org/roller/presentation/tags/calendar/
src/org/roller/presentation/tags/menu/ src/org/roller/presentation/util/
src/org/roller/presentation/velocity/ src/org/roller/presentation/weblog/
src/org/roller/presentation/weblog/actions/
src/org/roller/presentation/weblog/formbeans/
src/org/roller/presentation/weblog/tags/ src/org/roller/presentation/website/
src/org/roller/presentation/website/actions/
src/org/roller/presentation/website/formbeans/
src/org/roller/presentation/website/tags/
src/org/roller/presentation/xmlrpc/ src/org/roller/util/
src/org/roller/util/rome/ tests/ tests/org/ tests/org/roller/
tests/org/roller/ant/ tests/org/roller/business/
tests/org/roller/presentation/ tests/org/roller/presentation/atomapi/
tests/org/roller/presentation/bookmarks/
tests/org/roller/presentation/filters/
tests/org/roller/presentation/velocity/
tests/org/roller/presentation/velocity/plugins/
tests/org/roller/presentation/velocity/plugins/smileys/
tests/org/roller/presentation/velocity/plugins/textile/
tests/org/roller/presentation/weblog/ tests/org/roller/presentation/xmlrpc/
tests/org/roller/util/ tests/org/roller/util/rome/ tools/ tools/buildtime/
tools/buildtime/ant-1.6.2/ tools/buildtime/findbugs/
tools/buildtime/findbugs/lib/ tools/buildtime/findbugs/plugin/
tools/buildtime/mockrunner-0.3/ tools/buildtime/mockrunner-0.3/lib/
tools/buildtime/mockrunner-0.35/ tools/buildtime/mockrunner-0.35/lib/
tools/buildtime/tomcat-4.1.24/ tools/buildtime/xdoclet-1.2/
tools/buildtime/xdoclet-1.2/lib/ tools/hibernate-2.1/
tools/hibernate-2.1/lib/ tools/lib/ tools/standard-1.0.3/
tools/standard-1.0.3/lib/ tools/standard-1.0.3/tld/ tools/struts-1.2.4/
tools/struts-1.2.4/lib/ web/ web/WEB-INF/ web/WEB-INF/classes/
web/WEB-INF/classes/flavors/ web/WEB-INF/classes/themes/ web/bookmarks/
web/editor/ web/editor/images/ web/images/ web/images/editor/
web/images/midas/ web/images/preview/ web/images/smileys/ web/planet/
web/tags/ web/templates/ web/theme/ web/theme/images/ web/theme/lavender/
web/theme/scripts/ web/theme/scripts/classes/ web/themes/ web/themes/basic/
web/themes/berkley/ web/themes/berkley/images/ web/themes/brushedmetal/
web/themes/brushedmetal/images/ web/themes/cheb/ web/themes/cheb/images/
web/themes/cheb/scripts/ web/themes/clean/ web/themes/currency-i18n/
web/themes/currency-i18n/images/ web/themes/currency/
web/themes/currency/images/ web/themes/grey2/ web/themes/moonshine/
web/themes/movablemanila/ web/themes/movablemanila/images/
web/themes/pacifica/ web/themes/robot/ web/themes/rolling/
web/themes/rolling/images/ web/themes/sotto/ web/themes/sotto/images/
web/themes/sotto/styles/ web/themes/sunsets/ web/themes/sunsets/images/
web/themes/sunsets/scripts/ web/themes/sunsets/styles/ web/themes/werner/
web/themes/x2/ web/themes/x2/images/ web/themes/x2/scripts/
web/themes/x2/styles/ web/weblog/ web/website/
Added: incubator/roller/trunk/web/WEB-INF/classes/comments.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/comments.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/comments.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/comments.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,390 @@
+
+#**
+ * Display the pop-up comments link for a weblog entry.
+ * Use the URL for the href attribute for those who have disabled
+ * javascript or who desire to open the comments window in another (Mozilla) tab.
+ * @param entry WeblogEntry object.
+ *#
+#macro( showCommentsLink $entry )
+ #set( $commentCount = $pageModel.getCommentCount($entry.Id) )
+ #if (($entry.commentsStillAllowed && $website.allowComments) || $commentCount > 0)
+ #set( $link = "$ctxPath/comments/$userName/$page.link/$utilities.encode($entry.anchor)?popup=true#comments" )
+ <a href="$link " onclick="window.open('$link', 'comments',
+ 'width=480,height=480,scrollbars=yes,status=yes,resizable'); return false;"
+ class="entrycommentslink">$text.get( "macro.weblog.comments" ) [$commentCount]</a>
+ #end
+#end
+
+#**
+ * Display the in-page comments link for a weblog entry.
+ * @param entry WeblogEntry object.
+ *#
+#macro( showCommentsPageLink $entry )
+ #set( $commentCount = $pageModel.getCommentCount($entry.Id) )
+ #if (($entry.commentsStillAllowed && $website.allowComments) || $commentCount > 0)
+ #set( $link = "$ctxPath/comments/$userName/$page.link/$utilities.encode($entry.anchor)#comments" )
+ <a href="$link" class="entrycommentslink">$text.get( "macro.weblog.comments" ) [$commentCount]</a>
+ #end
+#end
+
+#**
+ * Display link for comments that renders a dynamically (DHTML) generated
+ * comments form - Matt Raible style.
+ * @param entry WeblogEntry object.
+ *#
+#macro( showCommentsDiv $entry )
+ #set( $commentCount = $pageModel.getCommentCount($entry.Id) )
+ #if (($entry.commentsStillAllowed && $website.allowComments) || $commentCount > 0)
+ <div class="comments" id="comments">
+ <div id="commentTwisty$entry.Id" class="commentTwisty"
+ onclick="toggleComments('$entry.Id', '$ctxPath/page/$userName'); return false;">
+ <a href="$ctxPath/comments/$userName/$page.link/$utilities.encode($entry.anchor)" class="plain">
+ #if($commentCount == 0)
+ $text.get( "macro.weblog.addcomment" )
+ #elseif($commentCount == 1)
+ $commentCount $text.get( "macro.weblog.comment" )
+ #else
+ $commentCount $text.get( "macro.weblog.comments" )
+ #end</a></div>
+ </div>
+ #end
+#end
+
+#**
+ * PRIVATE. Macro for displaying Comment details (not content).
+**#
+#macro( showCommentDetails $comment $showPermalink )
+ $dateFormatter.applyPattern($text.get( "macro.weblog.datepattern" ))
+ #set($email = $utilities.hexEncode($comment.email))
+ <p class="comment-details">
+ $text.get("macro.weblog.postedby")
+ #if (!$stringUtils.isEmpty($comment.name) && !$stringUtils.isEmpty($email) && !$stringUtils.isEmpty($comment.remoteHost))
+ <a href="mailto:$email" title="$comment.remoteHost">$comment.name</a>
+ #elseif (!$stringUtils.isEmpty($comment.name) && !$stringUtils.isEmpty($email))
+ <a href="mailto:$email">$comment.name</a>
+ #elseif (!$stringUtils.isEmpty($email) && !$stringUtils.isEmpty($comment.remoteHost))
+ <a href="mailto:$email">$comment.remoteHost</a>
+ #elseif (!$stringUtils.isEmpty($comment.name) && !$stringUtils.isEmpty($comment.remoteHost))
+ <b>$comment.name</b> ($comment.remoteHost)
+ #elseif (!$stringUtils.isEmpty($comment.name))
+ <b>$comment.name</b>
+ #elseif (!$stringUtils.isEmpty($comment.remoteHost))
+ <b>$comment.remoteHost</b>
+ #end
+ $text.get("macro.weblog.on") $dateFormatter.format($comment.postTime)
+ #if( $stringUtils.isNotEmpty($comment.url) )
+ $text.get( "macro.weblog.postedbywebsite", [$comment.url, $comment.url] )
+ #end
+ #if( $showPermalink )
+ <a href="${ctxPath}/comments/${userName}/${page.link}/${entry.anchor}#comment${velocityCount}"
+ class="entrypermalink"
+ title="$text.get( "macro.weblog.commentpermalink.title" )">#</a>
+ #end
+ </p>
+#end
+
+#**
+ * Display comments for an entry.
+ * @param entry WeblogEntry object.
+ *#
+#macro( showComments $entry )
+ <div class="comments" id="comments">
+ #if( $previewComments )
+ #set( $comments = $previewComments )
+ <div class="comments-head">$text.get( "macro.weblog.preview" ):</div>
+ #else
+ <div class="comments-head">$text.get( "macro.weblog.comments" ):</div>
+ #set( $comments = $entry.comments )
+ #end
+ <br/>
+ #foreach( $comment in $comments )
+ #set($content = $utilities.encodeEmail($comment.content))
+ #if($escapeHtml)
+ #set($content = $utilities.escapeHTML($content))
+ #end
+ #if($autoformat)
+ #set($content = $utilities.autoformat($content))
+ #end
+ #set($content = $utilities.addNofollow($content))
+ <div class="comment" id="comment${velocityCount}">
+ ${content}
+
+ #showCommentDetails($comment true)
+ </div>
+ #end
+ </div>
+#end
+
+#**
+ * Display recent comments for whole blog (not just one entry).
+**#
+#macro( showRecentComments $numComments )
+ #if( !$numComments ) #set( $numComments = 20 ) #end
+ #if( $numComments > 100 ) #set( $numComments = 50 ) #end
+ #set( $comments = $pageModel.getRecentComments($numComments) )
+ <div class="comments" id="comments">
+ #foreach( $comment in $comments )
+ #set($content = $utilities.encodeEmail($comment.content))
+ #if($escapeHtml)
+ #set($content = $utilities.escapeHTML($content))
+ #end
+ #if($autoformat)
+ #set($content = $stringUtils.replace($content,"\n","<br />"))
+ #end
+ #set($content = $utilities.addNofollow($content))
+ <div class="comment" style="border: 1px solid #dadada; padding-left: 3px; padding-right: 5px;" >
+ <p>Commenting on <a class="entrypermalink"
+ href="${ctxPath}${comment.weblogEntry.permaLink}">${comment.weblogEntry.title}</a>:</p>
+ ${content}
+ #showCommentDetails($comment false)
+ </div>
+ #end
+ </div>
+#end
+
+#**
+ * Display list of recent comments. $maxWidth determines the amount of text
+ * from the comment to display in the list.
+**#
+#macro( showRecentCommentsListWidth $numComments $maxWidth )
+ #if( !$numComments ) #set( $numComments = 20 ) #end
+ #if( $numComments > 100 ) #set( $numComments = 100 ) #end
+ #set( $minWidth = $maxWidth - 5 )
+ #set( $comments = $pageModel.getRecentComments($numComments) )
+ <ul class="commentsList">Recent Comments
+ #foreach( $comment in $comments )
+ #set($content = $utilities.encodeEmail($comment.content))
+ #set($content = $utilities.addNofollow($content))
+ <li class="commentsListItem"><a
+ href="${ctxPath}/comments/${userName}/${page.link}/${comment.weblogEntry.anchor}#comments"
+ class="entrypermalink"
+ title="$text.get( "macro.weblog.commentpermalink.title" ) to
+ '$utilities.removeHTML($comment.weblogEntry.title)'"
+ >$utilities.truncateNicely($utilities.removeHTML($content), $minWidth, $maxWidth, "...")</a>
+ </li>
+ #end
+ </ul>
+#end
+#**
+ * Convenience method. Show list with 25 character width.
+**#
+#macro( showRecentCommentsList $numComments )
+#showRecentCommentsListWidth( $numComments 25 )
+#end
+
+#**
+ * Display comment form for a weblog entry.
+ * @param entry WeblogEntry object.
+ *#
+#macro( showCommentForm $entry )
+ <div class="comments-form">
+ <div class="comments-head">$text.get("macro.weblog.postcommentHeader")</div><br/>
+ <form method="post" action="$ctxPath/comments" focus="name"
+ name="form" onsubmit="fixURL(this); return validateComments(this)">
+
+ #if($requestParameters.popup)
+ <input type="hidden" name="popup" value="true" />
+ #end
+
+ <!-- is this a post or a preview -->
+ <input type="hidden" name="method" value="post" />
+ <input type="hidden" name="entryid" value="$entry.id" />
+
+ <table cellspacing="0" cellpadding="1" border="0" width="95%">
+ <tr><th>$text.get( "macro.weblog.name" )</th>
+ <td><input type="text" name="name" value="$commentForm.name" size="50" maxlength="255" /></td>
+ </tr>
+
+ <tr><th>$text.get( "macro.weblog.email" )</th>
+ <td><input type="text" name="email" value="$commentForm.email" size="50" maxlength="255" /></td>
+ </tr>
+
+ <tr><th>$text.get( "macro.weblog.url" )</th>
+ <td><input type="text" name="url" value="$commentForm.url" size="50" maxlength="255" /></td>
+ </tr>
+ #if ($pageModel.emailComments)
+ <tr>
+ <td></td>
+ <td>
+ <input type="checkbox" id="notify" name="notify" />
+ <label for="notify">$text.get( "macro.weblog.notifyMeOfComments" )</label>
+ </td>
+ </tr>
+ #end
+ <tr>
+ <td></td>
+ <td>
+ <input type="checkbox" id="rememberInfo" name="rememberInfo" />
+ <label for="rememberInfo">$text.get( "macro.weblog.rememberinfo" )</label>
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+ <table>
+ <tr><th align="left">$text.get( "macro.weblog.yourcomment" )</th></tr>
+ <tr>
+ <td>
+ <textarea name="content" cols="50" rows="10">$commentForm.content</textarea><br />
+ <span style="comments-syntax-indicator">
+ $text.get( "macro.weblog.htmlsyntax" )
+ #if( $escapeHtml )
+ <span class="disabled">$text.get( "macro.weblog.htmldisabled" )</span>
+ #else
+ <span class="enabled">$text.get( "macro.weblog.htmlenabled" )</span>
+ #end
+ </span>
+ </td>
+ </tr>
+ </table>
+
+ #showStatusMessage()
+ <p class="commentAuthenticator">
+ $pageHelper.commentAuthenticatorHtml
+ </p>
+
+ <table cellspacing="0" cellpadding="1" border="0" width="95%">
+ <tr>
+ <td align="left" nowrap="nowrap">
+ <input type="button" name="post" value=" $text.get( "macro.weblog.preview" ) "
+ onClick="this.form.method.value='preview';this.form.submit()" />
+ <input type="submit" name="post" value=" $text.get( "macro.weblog.post" ) " />
+ </td>
+ <td align="right">
+ <!-- <input type="button" value=" $text.get( "macro.weblog.clear" ) " /> -->
+ </td>
+ </tr>
+ </table>
+
+ </form>
+
+ <script type="text/javascript" src="$ctxPath/theme/scripts/roller.js"></script>
+ <script type="text/javascript">
+ var author = getCookie("commentAuthor");
+ var email = getCookie("commentEmail");
+ var url = getCookie("commentUrl");
+ // check each field - IE will render "null"
+ if (author) {
+ theForm.name.value = author;
+ }
+ if (email) {
+ theForm.email.value = email;
+ }
+ if (url) {
+ theForm.url.value = url;
+ }
+
+ if (author || email || url) {
+ theForm.rememberInfo.checked = true;
+ }
+
+ function fixURL(theForm) {
+ if (theForm.url.value != "" &&
+ theForm.url.value.indexOf("http://") == -1) { //prepend http://
+ theForm.url.value = "http://"+theForm.url.value;
+ }
+ saveUserInformation(theForm);
+ }
+
+ function saveUserInformation(theForm) {
+ if (theForm.rememberInfo.checked) {
+ rememberUser(theForm);
+ } else {
+ forgetUser(theForm);
+ }
+ }
+
+ function validateComments(theForm) {
+ if (theForm.content.value == "") {
+ alert("$text.get( "macro.weblog.commentwarning" )");
+ theForm.content.focus();
+ return false;
+ }
+ }
+ </script>
+ </div>
+#end
+
+#**
+ * Display hidden comment form for a weblog entry.
+ * @param entry WeblogEntry object.
+ *#
+#macro( showHiddenCommentForm )
+ <div style="display: none" class="comments">
+ <div id="commentBoxTemplate" class="commentBox">
+ <form class="commentFormBox" id="commentForm"
+ method="post" action="$ctxPath/comments"
+ onsubmit="onSubmitComments(this.entryid.value);fixURL(this);return validateComments(this)">
+
+ <table>
+ <tr class="commentFormRow">
+ <td>$text.get( "macro.weblog.name" )</td>
+ <td>
+ <input name="name" type="text" class="commentFormInput" size="50"/>
+ <input type="hidden" name="method" value="updateFromPage" />
+ <input type="hidden" name="entryid" value="" id="entryid" />
+ </td>
+ </tr>
+ <tr class="commentFormRow">
+ <td>$text.get( "macro.weblog.email" )</td>
+ <td><input name="email" type="text" class="commentFormInput" size="50"/></td>
+ </tr>
+ <tr class="commentFormRow">
+ <td>$text.get( "macro.weblog.url" )</td>
+ <td><input name="url" type="text" class="commentFormInput" size="50"/></td>
+ </tr>
+ #if ($model.emailComments)
+ <tr>
+ <td></td>
+ <td>
+ <input type="checkbox" id="notify" name="notify" />
+ <label for="notify">$text.get( "macro.weblog.notifyMeOfComments" )</label>
+ </td>
+ </tr>
+ #end
+ <tr>
+ <td></td>
+ <td>
+ <input type="checkbox" id="rememberInfo" name="rememberInfo" />
+ <label for="rememberInfo">$text.get( "macro.weblog.rememberinfo" )</label>
+ </td>
+ </tr>
+ </table>
+ <div class="commentFormRow">
+ <textarea name="content" class="commentFormTextarea" rows="4" cols="60"></textarea>
+ <div class="htmlSyntax">
+ $text.get( "macro.weblog.htmlsyntax" )
+ #if( $escapeHtml )
+ <span class="disabled">$text.get( "macro.weblog.htmldisabled" )</span>
+ #else
+ <span class="enabled">$text.get( "macro.weblog.htmlenabled" )</span>
+ #end
+ </div>
+ </div>
+
+ $pageHelper.commentAuthenticatorHtml
+
+ <div class="commentFormRow">
+ <input type="submit" name="post" value=" $text.get( "macro.weblog.postcomment" ) " />
+ </div>
+ </form>
+ </div>
+ <script type="text/javascript">
+ // add a target to the iframe on the commentForm
+ var commentForm = document.getElementById("commentForm");
+ commentForm.target = "commentFrame";
+ </script>
+
+ <div id="commentTemplate" class="comment">
+ <div class="commentBody" id="commentBody"></div>
+ <div class="commentByline">
+ <a class="commentAuthor" id="commentAuthorLink"></a>
+ <span> on </span><span id="commentTimestamp"></span>
+ </div>
+ </div>
+
+ <iframe name="commentFrame" src="about:blank"></iframe>
+
+ <script type="text/javascript" src="$ctxPath/theme/scripts/roller.js"></script>
+ </div>
+#end
Added: incubator/roller/trunk/web/WEB-INF/classes/commons-logging.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/commons-logging.properties?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/commons-logging.properties (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/commons-logging.properties Wed Jun 8 20:18:46 2005
@@ -0,0 +1 @@
+org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/flavors/atom.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/flavors/atom.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/flavors/atom.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/flavors/atom.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,29 @@
+$pageHelper.setContentType("application/atom+xml;charset=utf-8")<?xml version="1.0" encoding='utf-8'?>
+<feed version="0.3" xmlns="http://purl.org/atom/ns#">
+ <title>$utilities.textToHTML($website.name,true)</title>
+ <tagline>$utilities.textToHTML($website.description,true)</tagline>
+ <link rel="alternate" type="text/html" href="$websiteURL" />
+ <modified>$utilities.formatIso8601Date($updateTime)</modified>
+ <generator url="http://www.rollerweblogger.org" version="#showVersion() ($rollerBuildTime:$rollerBuildUser)">Roller Weblogger</generator>
+ #if( $userName != "zzz_none_zzz" )
+ <author>
+ <name>$fullName</name>
+ <url>$websiteURL</url>
+ </author>
+ #end
+ #set( $entries = $pageModel.getRecentWeblogEntriesArray($entryCount, 'nil') )
+ #foreach( $entry in $entries )
+ <entry>
+ <title>$utilities.textToHTML($entry.title,true)</title>
+ <issued>$utilities.formatIso8601Date($entry.pubTime)</issued>
+ <created>$utilities.formatIso8601Date($entry.pubTime)</created>
+ <modified>$utilities.formatIso8601Date($entry.updateTime)</modified>
+ #if( $userName == "zzz_none_zzz" )
+ <author><name>$entry.website.user.fullName</name></author>
+ #end
+ <link rel="alternate" type="text/html" href="$absBaseURL$entry.permaLink"/>
+ <id>tag:$host,$utilities.formatIso8601Day($entry.pubTime):/$entry.website.user.userName?anchor=$entry.anchor</id>
+ <content type="text/html" mode="escaped">#showEntryDescription($entry)</content>
+ </entry>
+ #end
+</feed>
Added: incubator/roller/trunk/web/WEB-INF/classes/flavors/foaf.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/flavors/foaf.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/flavors/foaf.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/flavors/foaf.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:foaf="http://xmlns.com/foaf/0.1/">
+ <foaf:Person>
+ <foaf:name>$fullName</foaf:name>
+ #if ($shaEmail)
+ <foaf:mbox_sha1sum>$shaEmail</foaf:mbox_sha1sum>
+ #elseif ($encodedEmail)
+ <foaf:mbox rdf:resource="mailto:$encodedEmail" />
+ #end
+ <foaf:homepage rdf:resource="$websiteURL" />
+ #if ($weblog)
+ <foaf:weblog rdf:resource="$weblog" />
+ #end
+ </foaf:Person>
+</rdf:RDF>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/flavors/opml.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/flavors/opml.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/flavors/opml.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/flavors/opml.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding='utf-8'?>
+$pageHelper.setContentType("text/xml")
+<opml version="1.1">
+<head>
+<title>Roller-generated OPML</title>
+</head>
+#macro( spaces $depth )#foreach( $i in [0..$depth] ) #end#end
+#**
+* Recursive VelociMacro to render OPML for folder.
+* @param folder Folder to be rendered as OPML or null to render from top.
+*#
+#macro( genOpml $folder $depth )
+ #set( $depth = $depth + 1 )
+ #if( !$folder )
+ <outline text="Roller-generated OPML">
+ #set( $topfolders = $pageModel.getTopLevelFolders() )
+ #foreach( $topfolder in $topfolders )
+ #genOpml( $topfolder $depth )
+ #end
+ </outline>
+ #else
+ #spaces($depth)<outline text="$utilities.textToXML($folder.name)">
+ #set( $bookmarks = $folder.getBookmarks() )
+ #foreach( $bookmark in $bookmarks )
+ #if( $bookmark.feedUrl && $bookmark.feedUrl.trim().length()>0 )
+ #set($feedUrl = $bookmark.feedUrl)
+ #end
+ #spaces($depth)<outline #if($bookmark.url)text="$utilities.textToXML($bookmark.name)"#end
+ #spaces($depth) #if($feedUrl)type="rss"#end
+ #spaces($depth) #if($bookmark.url)htmlUrl="$utilities.textToXML($bookmark.url)"#end
+ #spaces($depth) #if($feedUrl)xmlUrl="$utilities.textToXML($feedUrl)"#end
+ #spaces($depth) />
+ #end
+ #set( $subfolders = $folder.getFolders() )
+ #foreach( $subfolder in $subfolders )
+ #genOpml( $subfolder $depth )
+ #end
+ #spaces($depth)</outline>
+ #end
+ #set( $depth = $depth - 1 )
+#end
+<body>
+#set( $folderPath = $pageModel.getRequestParameter("path") )
+#if( $folderPath )
+ #set( $folder = $pageModel.getFolderByPath($folderPath) )
+#end
+#genOpml( $folder 0 )
+</body>
+</opml>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/flavors/rss.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/flavors/rss.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/flavors/rss.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/flavors/rss.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,37 @@
+$pageHelper.setContentType("application/rss+xml;charset=utf-8")<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<channel>
+ <title>$utilities.textToHTML($website.name,true)</title>
+ <link>$websiteURL</link>
+ <description>$utilities.textToHTML($website.description,true)</description>
+ <language>en-us</language>
+ <copyright>Copyright #formatDate("yyyy" $now)</copyright>
+ <lastBuildDate>$utilities.formatRfc822Date($updateTime)</lastBuildDate>
+ <generator>Roller Weblogger #showVersion() ($rollerBuildTime:$rollerBuildUser)</generator>
+ #set( $entries = $pageModel.getRecentWeblogEntriesArray($entryCount, 'nil') )
+ #foreach( $entry in $entries )
+ <item>
+ <title>$utilities.textToHTML($entry.title,true)</title>
+ #if( $entry.link && !$entry.link.trim().equals("") )
+ <source url="$utilities.textToHTML($entry.link)">$utilities.textToHTML($entry.link)</source>
+ #end
+ <description>#showEntryDescription($entry)</description>
+ <category>$utilities.textToHTML($entry.category.name,true)</category>
+ <link>$absBaseURL$entry.permaLink</link>
+ <guid isPermaLink="true">$absBaseURL$entry.permaLink</guid>
+ #if( $website.allowComments )
+ <comments>$absBaseURL$utilities.textToHTML($entry.commentsLink)</comments>
+ #end
+ <pubDate>$utilities.formatRfc822Date($entry.pubTime)</pubDate>
+ <dc:creator>$utilities.textToHTML($entry.website.user.fullName,true)</dc:creator>
+ #set( $mc_url = $entry.findEntryAttribute("att_mediacast_url") )
+ #set( $mc_type = $entry.findEntryAttribute("att_mediacast_type") )
+ #set( $mc_length = $entry.findEntryAttribute("att_mediacast_length") )
+ #if( $mc_url && $mc_length && $mc_type )
+ <enclosure url="$mc_url" type="$mc_type" length="$mc_length" />
+ #set($mc_url = false) #set($mc_type = false) #set($mc_length = false)
+ #end
+ </item>
+ #end
+</channel>
+</rss>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/flavors/rss091.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/flavors/rss091.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/flavors/rss091.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/flavors/rss091.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+$pageHelper.setContentType("text/xml;charset=utf-8")
+<rss version="0.91">
+ <channel>
+ <title>$utilities.textToHTML($website.name,true)</title>
+ <link>$websiteURL</link>
+ <description>$utilities.textToHTML($website.description,true)</description>
+ <language>en-us</language>
+ <copyright>Copyright #formatDate("yyyy" $now)</copyright>
+ <managingEditor>$emailAddress</managingEditor>
+ <webMaster>$emailAddress</webMaster>
+ #set( $entries = $pageModel.getRecentWeblogEntriesArray($entryCount, 'nil') )
+ #foreach( $entry in $entries )
+ <item>
+ <title>$utilities.textToHTML($entry.title,true)</title>
+ <link>$absBaseURL$entry.permaLink</link>
+ <description>#showEntryDescription($entry)</description>
+ </item>
+ #end
+ </channel>
+</rss>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/flavors/rss092.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/flavors/rss092.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/flavors/rss092.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/flavors/rss092.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+$pageHelper.setContentType("text/xml;charset=utf-8")
+<rss version="0.92">
+ <channel>
+ <title>$utilities.textToHTML($website.name,true)</title>
+ <link>$websiteURL</link>
+ <description>$utilities.textToHTML($website.description,true)</description>
+ <lastBuildDate>#formatDate("E, dd MMM yyyy hh:mm:ss z" $updateTime)</lastBuildDate>
+ <docs>$websiteURL</docs>
+ <managingEditor>$emailAddress</managingEditor>
+ <webMaster>$emailAddress</webMaster>
+ <!-- cloud domain="" port="" path="" registerProcedure="" protocol=""/ -->
+ #set( $entries = $pageModel.getRecentWeblogEntriesArray($entryCount, 'nil') )
+ #foreach( $entry in $entries )
+ <item>
+ <description>#showEntryDescription($entry)</description>
+ <!-- source url=""></source -->
+ <!-- enclosure url="" length="" type=""/ -->
+ </item>
+ #end
+ </channel>
+</rss>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/log4j.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/log4j.properties?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/log4j.properties (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/log4j.properties Wed Jun 8 20:18:46 2005
@@ -0,0 +1,57 @@
+# Properties for configuring Log4j for this application
+# This is the configuring for logging displayed in the Application Server
+# log4j.rootCategory=INFO, stdout, R, mail
+log4j.rootCategory=INFO, stdout, R
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+# Pattern to output the caller's file name and line number.
+#log4j.appender.stdout.layout.ConversionPattern=%p [%t] [%c] %C{1}.%M(%L) | %m%n
+log4j.appender.stdout.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} | %C{1}:%M | %m%n
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=${catalina.base}/logs/roller.log
+
+# Keep two 1MB log backup files
+log4j.appender.R.MaxFileSize=1MB
+log4j.appender.R.MaxBackupIndex=2
+
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+#log4j.appender.R.layout.ConversionPattern=%5p %t %c - %m%n
+log4j.appender.R.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
+
+# If programmed properly the most messages would be at DEBUG
+# and the least at FATAL.
+
+# Options are: DEBUG, INFO, WARN, ERROR, FATAL
+log4j.category.org.roller=INFO
+log4j.category.com.ecyrd.jspwiki=ERROR
+log4j.category.com.opensymphony.oscache=ERROR
+log4j.category.net.sf.hibernate=ERROR
+log4j.category.org.roller.business.utils=INFO
+log4j.category.org.apache.struts=ERROR
+log4j.category.org.tuckey.web.filters.urlrewrite=DEBUG
+
+#log4j.category.org.roller.presentation.MainPageAction=DEBUG
+#log4j.category.org.roller.presentation.pagecache.rollercache.LRUCacheHandler=DEBUG
+#log4j.category.org.roller.presentation.filters.IfModifiedFilter=DEBUG
+#log4j.category.org.roller.persistence.hibernate.HibernateStrategy=DEBUG
+
+# Tomcat's ClientAbortExceptions cause Velocity to talk way
+# too much so by default Velocity is set to STFU mode.
+log4j.category.org.apache.velocity=FATAL
+
+# Configuration for receiving e-mails when ERROR messages occur.
+#log4j.appender.mail=org.apache.log4j.net.SMTPAppender
+#log4j.appender.mail.To=you@yours.com
+#log4j.appender.mail.From=you@yours.com
+#log4j.appender.mail.SMTPHost=127.0.0.1
+#log4j.appender.mail.Threshold=ERROR
+#log4j.appender.mail.BufferSize=1
+#log4j.appender.mail.Subject=Roller Exception
+
+#log4j.appender.mail.layout=org.apache.log4j.PatternLayout
+#log4j.appender.mail.layout.ConversionPattern=%p [%d{yyyy-MM-dd HH:mm:ss,SSS}] %C{1}.%M(%L) | %m%n
+
+
Added: incubator/roller/trunk/web/WEB-INF/classes/menu-tabbed.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/menu-tabbed.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/menu-tabbed.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/menu-tabbed.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,55 @@
+
+
+<table class="tmTabTable" cellspacing="0" >
+<tr>
+ #foreach( $menu in $menuModel.getMenus() )
+ #if( $menu.isPermitted( $req ) )
+ #if( $menu.isSelected( $req ) )
+ <td class="tmSelectedSepLeft"></td>
+ <td class="tmSelectedMenu">
+ #else
+ <td class="tmSepLeft"></td>
+ <td class="tmMenu">
+ #end
+
+ <a href="$menu.getUrl( $ctx )">$text.get( $menu.getName() )</a>
+
+ </td>
+ #if( $menu.isSelected( $req ))
+ <td class="tmSelectedSepRight"></td>
+ #else
+ <td class="tmSepRight"></td>
+ #end
+ #end
+ #end
+</tr>
+</table>
+
+<table class="tmItemTable" cellspacing="0">
+<tr>
+ <td class="tmItemLeft"></td>
+ <td class="tmItemCell">
+ #set( $count = 0 )
+ #set( $currentMenu = $menuModel.getSelectedMenu( $req ) )
+ #if( $currentMenu.isPermitted( $req ) )
+ #foreach( $item in $currentMenu.getMenuItems() )
+ #if ($item.isPermitted($req))
+ #if ( $count > 0 )
+ |
+ #end
+
+ #if ( $item.isSelected( $req ) )
+ <a class="tmItemLinkSelected" href="$item.getUrl($ctx)">$text.get( $item.getName() )</a>
+ #else
+ <a class="tmItemLink" href="$item.getUrl($ctx)">$text.get( $item.getName() )</a>
+ #end
+
+ #set( $count = $count + 1 )
+ #end
+ #end
+ #end
+ </td>
+ <td class="tmItemRight"></td>
+</tr>
+</table>
+
Added: incubator/roller/trunk/web/WEB-INF/classes/navbar-css.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/navbar-css.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/navbar-css.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/navbar-css.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,18 @@
+#if( $req.getUserPrincipal() )
+ <ul class="rMenu">
+ #foreach( $menu in $menuModel.getMenus() )
+ #if ($menu.isPermitted($req))
+ #foreach( $item in $menu.getMenuItems() )
+ #if ($menu.isPermitted($req))
+ #if( $item.isSelected( $req ) )<strong>#end
+ <li class="rMenuItem"><a
+ href="$item.getUrl( $ctx )"
+ title="$text.get( $menu.getName() ):$text.get( $item.getName() )"
+ >$text.get( $menu.getName() ):$text.get( $item.getName() )</a></li>
+ #if( $item.isSelected( $req ) )</strong>#end
+ #end
+ #end
+ #end
+ #end
+ </ul>
+#end
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/navbar-horizontal.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/navbar-horizontal.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/navbar-horizontal.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/navbar-horizontal.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,22 @@
+
+#set($count = 0)
+#foreach($menu in $menuModel.getMenus())
+ #if ($menu.isPermitted($req))
+ #foreach( $item in $menu.getMenuItems())
+ #if ($menu.isPermitted($req))
+ #if ($count > 0)
+ |
+ #end
+ #if($item.isSelected( $req ))
+ <b>
+ #end
+ <a href="$item.getUrl( $ctx )">$text.get($item.getName())</a>
+ #if($item.isSelected( $req ))
+ </b>
+ #end
+ #set($count = $count + 1)
+ #end
+ #end
+ #end
+#end
+
Added: incubator/roller/trunk/web/WEB-INF/classes/navbar-vertical.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/navbar-vertical.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/navbar-vertical.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/navbar-vertical.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,16 @@
+#foreach( $menu in $menuModel.getMenus() )
+ #if ($menu.isPermitted($req))
+ #foreach( $item in $menu.getMenuItems() )
+ #if ($menu.isPermitted($req))
+ #if( $item.isSelected( $req ) )
+ <b>
+ #end
+ <a href="$item.getUrl( $ctx )">$text.get( $menu.getName() ):$text.get( $item.getName() )</a> <br />
+ #if( $item.isSelected( $req ) )
+ </b>
+ #end
+ #end
+ #end
+ #end
+#end
+
Added: incubator/roller/trunk/web/WEB-INF/classes/navbar.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/navbar.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/navbar.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/navbar.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,128 @@
+#**
+ * Macros to display the Roller Navigation bars.
+ * @author Lance Lavandowska (conversion to Velocimacros)
+ *#
+
+#**
+ * Show menu using specified model file and Velocity template.
+ * @param $model Name of XML file in WEB-INF that contains XML for menu.
+ * @param $template Name of Velocity template to display menu.
+ *#
+#macro( showMenu $model $template )
+ $pageHelper.showMenu($model, $template)
+#end
+
+#**
+ * Show Roller Editor Navigation Bar.
+ * @param vertical True if bar is to be displayed vertically.
+ *#
+#macro( showEditorNavBar $vertical )
+ $pageHelper.showEditorNavBar($vertical)
+#end
+
+#**
+ * Show Editor navbar using CSS friendly template.
+ *#
+#macro( showEditorMenu )
+ $pageHelper.showMenu("editor-menu.xml", "/navbar-css.vm")
+#end
+
+#**
+ * Print a link for a menu item. Take into consideration:
+ * 1. Should this be particularly CSS friendly.
+ * 2. Or is this specifically a vertical menu.
+ * 3. Otherwise use the specified delimiter.
+ *
+ * @param linkUrl The URL to be used in the href attribute.
+ * @param linkValue The value used to look up the link's label.
+ * @param useCSS Use CSS based formatting.
+ * @param vertical Use "hard-formatting" to create vertical menu.
+ * @param delimiter Seperate horizontal items with this value.
+ *#
+#macro( printNavLink $linkUrl $linkValue $useCSS $vertical $delimiter )
+ #if( $useCSS )<li class="rNavItem">
+ #elseif( $vertical ) <br />
+ #else $delimiter
+ #end<a href="$linkUrl">$linkValue</a>#if ($useCSS)</li>#end
+#end
+
+#**
+ * Show Roller Page Navigation Bar, includes links to all pages
+ * except those that are hidden (because the start with "_").
+ * @param vertical True if bar is to be displayed vertically.
+ * @param delimiter Delimiter between entries in bar.
+ *#
+#macro( showNavBar2 $vertical $delimiter $useCSS)
+ #set( $container = "div" )
+ #if ( $useCSS ) #set( $container = "ul" ) #end
+ #set( $rawUrl = "$ctxPath/page/$userName" )
+ <$container class="rNavigationBar">
+ #if ($siteName=="Main")
+ #set( $mainUrl = "$ctxPath?rmk=tabbedmenu.main&rmik=tabbedmenu.main" )
+ #printNavLink( $mainUrl $text.get("navigationBar.main") $useCSS $vertical "" )
+ #else
+ #printNavLink( "$ctxPath/" $siteName $useCSS $vertical "" )
+ #end
+ #if( $website )
+ #foreach( $iPage in $pages )
+ #set( $invisible = $iPage.Name.startsWith("_") )
+ ## Again, there is no "break" in Velocity
+ #if( !$invisible )
+ #set( $isSelected = false )
+ #if( $page && $iPage.Id == $page.Id && !$editorui) #set($isSelected = true) #end
+
+ #if( !$isSelected )
+ #printNavLink( "$rawUrl/$iPage.Link" $iPage.Name $useCSS $vertical $delimiter )
+ #else
+ #if( $useCSS )<li class="rNavItem">
+ #elseif( $vertical ) <br />
+ #else $delimiter
+ #end
+ $iPage.Name
+ #end
+ #end
+ #end
+ #end
+
+ ## strutsUrlHelper( useIds, isAction, path, val1, val2)
+ #if( $model.isUserAuthorizedToEdit() )
+ #set( $editUrl = $rawUrl )
+ #set( $editUrl = $pageHelper.strutsUrlHelper(false, true, "weblogCreate", "tabbedmenu.weblog", "tabbedmenu.weblog.newEntry") )
+ #printNavLink( $editUrl $text.get("navigationBar.newEntry") $useCSS $vertical $delimiter )
+
+ #set( $editUrl = $rawUrl )
+ #set( $editUrl = $pageHelper.strutsUrlHelper(false, true, "editWebsite", "tabbedmenu.website", "tabbedmenu.website.settings") )
+ #printNavLink( $editUrl $text.get("navigationBar.settings") $useCSS $vertical $delimiter )
+
+ #set( $editUrl = $rawUrl )
+ #set( $editUrl = $pageHelper.strutsUrlHelper(false, true, "logout-redirect", "", "") )
+ #printNavLink( $editUrl $text.get("navigationBar.logout") $useCSS $vertical $delimiter )
+ #else
+ #set( $editUrl = $pageHelper.strutsUrlHelper(false, true, "login-redirect", "", "") )
+ #printNavLink( $editUrl $text.get("navigationBar.login") $useCSS $vertical $delimiter )
+ #end
+ </$container >
+#end
+
+#**
+ * Backwards compatibility version.
+ *#
+#macro( showNavBar $vertical $delimiter )
+ #showNavBar2( $vertical $delimiter false)
+#end
+
+#**
+ * Show Roller Page Navigation Bar with "|" delimiter, includes links to all pages
+ * except those that are hidden (because the start with "_").
+ * @param vertical True if bar is to be displayed vertically.
+ *#
+#macro( showBasicNavBar $vertical )
+ #showNavBar2( $vertical '|' false )
+#end
+
+#**
+ * Create CSS friendly Navigation Bar, using Unordered List and List Item tags.
+**#
+#macro( showCssNavBar )
+ #showNavBar2( false '' true)
+#end
Added: incubator/roller/trunk/web/WEB-INF/classes/newsfeed.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/newsfeed.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/newsfeed.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/newsfeed.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,63 @@
+#**
+ * Macros to display RSS Newschannels.
+ * @author Lance Lavandowska (conversion to Velocimacros)
+ * @author Dave Johnson (conversion from Digestor to Flock)
+ *#
+
+#**
+ * Display an RSS newschannel as a list that may be styled via CSS.
+ * @param feedUrl URL of RSS newschannel you wish to display.
+ * @param showDescription True to show full content for each item in channel.
+ * @param maxItems Maximum number of news items to display from newschannel.
+ * @param expandingFolders True to display channel as a folding folder.
+ *#
+#macro( showNewsfeed $feedUrl $showDescription $maxItems $expandingFolders )
+#set( $channel = $newsfeedCache.getChannel( $feedUrl ) )
+#if( $channel )
+ #set( $channelId = $utilities.stringReplace( $channel.title, " ", "_" ) )
+ #set( $channelId = $utilities.stringReplace( $channelId, "'", "_" ) )
+ #if( $expandingFolders )
+ <div class="rNewsfeedTitle">
+ <a href="javascript:toggleFolder('$channelId')">
+ <span id="i$channelId">+</span> $channel.title</a>
+ </div>
+ <div id="$channelId" style="display:none">
+ #else
+ <span class="rNewsfeedTitle">$channel.title</span>
+ #end
+ <ul>
+ #foreach( $item in $channel.entries )
+ ## NOTE: Velocity does not have "break" command
+ #if ( $maxItems == -1 || $velocityCount <= $maxItems )
+ <li>#if( $item.title && $item.title!="<No Title>" && $item.guid )
+ <a class="rNewsfeedLink" href="$item.guid.location">$item.title</a>
+ #elseif( $item.title && $item.title!="<No Title>" && $item.link )
+ <a class="rNewsfeedLink" href="$item.link">$item.title</a>
+ #elseif( $item.description && $item.guid )
+ <a class="rNewsfeedLink" href="$item.guid.location">$utilities.truncateNicely($utilities.removeHTML($item.description.value),25,30,"...")</a>
+ #elseif($item.description && $item.link)
+ <a class="rNewsfeedLink" href="$item.link">$utilities.truncateNicely($utilities.removeHTML($item.description.value),25,30,"...")</a>
+ #elseif( $item.title )
+ <span class="rNewsfeedLink">$item.title</span>
+ #else
+ <span class="rNewsfeedLink">$utilities.truncateNicely($utilities.removeHTML($item.description.value),25,30,"...")</span>
+ #end
+ #if( $showDescription && $item.description )
+ <span class="rNewsfeedDesc">$item.description</span>
+ #end</li>
+ #end
+ #end
+ </ul>
+ #if( $expandingFolders )
+ </div>
+ <script type="text/javascript">
+ <!--
+ folderPreference("$channelId");
+ // -->
+ </script>
+ #end
+#else
+ <div class="rNewsfeedTitle">Unable to display <a href="$feedUrl">feed</a></div>
+#end
+#end
+
Added: incubator/roller/trunk/web/WEB-INF/classes/planetrss.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/planetrss.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/planetrss.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/planetrss.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
+<channel>
+ <title>$utilities.textToHTML($planet.configuration.title,true)</title>
+ <description>Aggregated Feed generated by Roller Planet aggregator</description>
+ <link>$utilities.textToHTML($planet.configuration.siteUrl)</link>
+ <lastBuildDate>$utilities.formatRfc822Date($planet.lastUpdated)</lastBuildDate>
+ <generator>Roller Planet 1.1-dev</generator>
+ #if($groupName)
+ #set($entries = $planet.getAggregation($groupName,50))
+ #else
+ #set($entries = $planet.getAggregation(50))
+ #end
+ #foreach( $entry in $entries )
+ <item>
+ #if($entry.title)<title>$utilities.textToHTML($entry.title,true)</title> #end
+ #if($entry.content)
+ <description>
+ $utilities.escapeHTML($utilities.truncate($entry.content,300,320,"...")) [<a href="$utilities.textToHTML($entry.permalink,true)">Read More</a>]
+ </description>
+ #end
+ #if($entry.categories)
+ #foreach($cat in $entry.categories)
+ <category>$utilities.textToHTML($cat,true)</category>
+ #end
+ #end
+ #if($entry.permalink)<link>$utilities.textToHTML($entry.permalink)</link> #end
+ <pubDate>$utilities.formatRfc822Date($entry.published)</pubDate>
+ #if($entry.author)
+ <dc:creator>$utilities.textToHTML($entry.author,true)</dc:creator>
+ #end
+ </item>
+ #end
+</channel>
+</rss>
Added: incubator/roller/trunk/web/WEB-INF/classes/popupcomments.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/popupcomments.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/popupcomments.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/popupcomments.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>#showWebsiteTitle() :: $text.get("comments.title") ::
+ $utilities.removeHTML($entry.title)
+ </title>
+ <script type="text/javascript"
+ src="$ctxPath/theme/scripts/roller.js"></script>
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/theme/layout.css" />
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/theme/roller.css" />
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/theme/menu.css" />
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/themes/base.css" />
+ <style type="text/css">
+ body {
+ background-color: #FFFFFF;
+ background-image: none;
+ color: #000000;
+ font-family: verdana, sans-serif;
+ font-size: small;
+ }
+ h3 {
+ margin-left: auto;
+ margin-right: auto;
+ text-align: center;
+ }
+ #footer {
+ display: none;
+ }
+ th {
+ vertical-align: middle;
+ text-align: right;
+ padding-right: 5px;
+ font-size: 12px;
+ }
+ </style>
+ <!-- Edit your _css Page Template -->
+ <link rel="stylesheet" type="text/css"
+ href="$ctxPath/page/$userName/_css" />
+</head>
+<body>
+
+<div class="commentTitle">
+ $utilities.removeHTML($entry.title)
+</div>
+
+<div class="comments">
+#showComments($entry)
+#if($website.allowComments && $entry.commentsStillAllowed)
+ #showCommentForm($entry)
+#else
+ $text.get("comments.disabled")
+#end
+</div>
+
+<div id="footer">
+<a href="http://opensource.atlassian.com/projects/roller/Dashboard.jspa">
+ <fmt:message key="footer.reportIssue" /></a> |
+<a href="http://www.rollerweblogger.org/wiki/Wiki.jsp?page=UserGuide">
+ <fmt:message key="footer.userGuide" /></a> |
+<a href="http://www.rollerweblogger.org/wiki/Wiki.jsp?page=RollerMacros">
+ <fmt:message key="footer.macros" /></a> |
+<a href="http://sourceforge.net/mail/?group_id=47722">
+ <fmt:message key="footer.mailingLists" /></a>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/referer.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/referer.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/referer.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/referer.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,79 @@
+#**
+ * Macros to display referers and Linkbacks.
+ * @author Lance Lavandowska (conversion to Velocimacros)
+ *#
+
+#**
+ * Internal macro to build and display a link to a referer, use showReferers instead.
+ *#
+#macro( refererDisplayUrl $ref $maxWidth $includeHits )
+ #set( $qq = '"' )
+ #set( $url = $utilities.escapeHTML( $ref.RefererUrl ) )
+ #set( $displayUrl = $url )
+ #set( $restOfUrl = "" )
+ #set( $displayLink = "" )
+ #if ( $displayUrl.startsWith("http://") )
+ #set( $displayUrl = $displayUrl.substring( 7 ) )
+ #end
+ #if ( $displayUrl.length() > $maxWidth )
+ #set( $restOfUrl = "...$displayUrl.substring($maxWidth, $displayUrl.length())" )
+ #set( $displayUrl = $displayUrl.substring(0, $maxWidth) )
+ #end
+ #if ( $url.startsWith("http://") )
+ #set( $displayLink = "<a rel=${qq}nofollow${qq} href=${qq}$url${qq}" )
+ #if ( $restOfUrl )
+ #set( $displayLink = "$displayLink title=${qq}$restOfUrl${qq}" )
+ #end
+ #set( $displayLink = "$displayLink >" )
+ #end
+ #set( $displayLink = "$displayLink$displayUrl" )
+ #if ( $includeHits )
+ #set( $displayLink = "$displayLink ($ref.DayHits)" )
+ #end
+ #if ( $url.startsWith("http://") )
+ #set( $displayLink = "$displayLink</a>" )
+ #end
+ $displayLink
+#end
+
+#**
+ * Show top referers for today.
+ * @param max Number of referers to display.
+ * @param maxWidth Maximum width of referer text to be displayed.
+ *#
+#macro( showReferers $max $maxWidth )
+ <p>$text.get( "macro.referer.todaysHits" ) $pageModel.getDayHits()</p>
+ #set( $refs = $pageModel.getTodaysReferers() )
+ <ul class="rReferersList">
+ #foreach( $ref in $refs )
+ #if ($velocityCount <= $max)
+ <li class="rReferersListItem">#refererDisplayUrl( $ref $maxWidth true)</li>
+ #end
+ #end
+ </ul>
+#end
+
+#**
+ * Display the Linkbacks that have been extracted for a specified day.
+ * @param day Date object that specifies day (type java.util.Date).
+ *#
+#macro( showLinkbacks $day )
+ #set( $date = "#formatDate($plainFormat $day )" )
+ #set( $refs = $pageModel.getReferers($date) )
+ #if ( $refs.size() > 0 )
+ <p>
+ <b>$text.get( "macro.referer.furtherReading" )</b></p>
+ <ul>
+ #foreach( $ref in $refs )
+ #set( $url = $utilities.escapeHTML( $ref.getUrl() ) )
+ <li> $pageHelper.getToggleLinkbackDisplayHTML($ref)
+ <a class="linkback" href="$url">$ref.getTitle()</a>
+ #if( $ref.getVisible() )
+ : $utilities.removeHTML( $ref.getExcerpt() )
+ #end
+ </li>
+ #end
+ </ul>
+ #end
+#end
+
Added: incubator/roller/trunk/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/roller.properties?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/roller.properties (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/roller.properties Wed Jun 8 20:18:46 2005
@@ -0,0 +1,198 @@
+# roller.properties
+#
+# This file is for meant for Roller deployment properties
+# Any properties that don't change at runtime are defined here
+#
+# You can override the values in this file in a couple ways ..
+# 1. define a roller-custom.properties file and place it somewhere
+# at the root of one of your classpath locations.
+# for example:
+# $TOMCAT_HOME/common/classes
+# $ROLLER_LOCATION/WEB-INF/classes
+#
+# 2. specify a custom properties file via jvm option
+# example:
+# roller.custom.config=/path/to/properties/file
+#
+# **NOTE: if you run multiple instances of roller on the same server
+# then you should beware of the fact that the override options above
+# may affect *all* of you running instances. if you want to do
+# custom overrides for each instance then you must do it by
+# placing a roller-custom.properties file at WEB-INF/classes/ in
+# each of you roller installations.
+#
+# properties in this file are accessed like this ...
+# RollerConfig.getProperty("propname");
+
+#----------------------------------
+
+# upload settings
+uploads.dir=${user.home}/roller_data/uploads
+uploads.url=/resources
+
+#----------------------------------
+
+# search index settings
+search.index.dir=${user.home}/roller_data/search-index
+
+#----------------------------------
+
+# cache settings, remember ... times are in milliseconds
+
+# number of RSS feeds to cache (and timeout)
+cache.filter.rss.size=100
+cache.filter.rss.timeout=3600
+
+# number of if-modified dates to cache (and timeout)
+cache.filter.ifmodified.size=100
+cache.filter.ifmodified.timeout=1800
+
+# number of blog pages to cache (and timeout)
+cache.filter.page.size=100
+cache.filter.page.timeout=3600
+
+#----------------------------------
+
+# secure login configs
+securelogin.enabled=false
+
+# these are only used if secure login is enabled
+securelogin.http.port=80
+securelogin.https.port=443
+#securelogin.https.headername=X-SSL
+#securelogin.https.headervalue=
+
+# password security settings
+passwds.encryption.enabled=false
+passwds.encryption.algorithm=SHA
+
+#----------------------------------
+
+# enabled plugins ... remember, order does matter!!
+
+# these are plugins available for a weblog
+plugins.page=\
+org.roller.presentation.velocity.plugins.topictag.TopicTagPlugin \
+,org.roller.presentation.velocity.plugins.textile.TextilePlugin \
+,org.roller.presentation.velocity.plugins.acronyms.AcronymsPlugin \
+,org.roller.presentation.velocity.plugins.bookmarks.BookmarkPlugin \
+,org.roller.presentation.velocity.plugins.email.ObfuscateEmailPlugin \
+,org.roller.presentation.velocity.plugins.smileys.SmileysPlugin \
+,org.roller.presentation.velocity.plugins.readmore.ReadMorePlugin
+
+#----------------------------------
+
+# scheduled tasks, each is comma separated list of classes
+
+tasks.daily=org.roller.presentation.BlacklistUpdateTask\
+,org.roller.presentation.TurnoverReferersTask\
+
+#,org.roller.presentation.planet.SyncWebsitesTask
+
+tasks.hourly=\
+
+#org.roller.presentation.planet.RefreshEntriesTask
+
+#----------------------------------
+
+# velocity settings
+velocity.properties=/WEB-INF/velocity.properties
+velocity.toolbox.file=/WEB-INF/toolbox.xml
+
+# Page model implementation
+velocity.pagemodel.classname=org.roller.presentation.velocity.PageModel
+# Experimental page model that allows user's access to planet aggregations
+#velocity.pagemodel.classname=org.roller.presentation.velocity.planet.PlanetPageModel
+
+#----------------------------------
+
+# persistence settings
+persistence.roller.classname=org.roller.business.hibernate.HibernateRollerImpl
+persistence.filemanager.classname=org.roller.business.FileManagerImpl
+
+# authenticator settings (experimental)
+authenticator.classname=org.roller.presentation.DefaultAuthenticator
+
+#----------------------------------
+
+# comment settings
+comment.authenticator.classname=org.roller.presentation.velocity.DefaultCommentAuthenticator
+comment.notification.separateOwnerMessage=false
+comment.notification.hideCommenterAddresses=false
+
+#----------------------------------
+
+# ping settings
+
+# The number of attempts to try to reach a ping target before refusing to requeue it for further retrials
+# If absent, this defaults to 3.
+pings.maxPingAttempts=3
+
+# The interval between ping queue processing runs in minutes. Must be between 0 and 120.
+# If set to 0, ping queue processing is disabled on this server; this is for clustered environments.
+# Make sure it is nonzero on one host in a cluster. Don't use the value 0 here to disable ping functionality,
+# you will instead get an infinitely growing ping queue. See the documentation on the properties below
+# to disable ping functionality if you need to.
+# If absent, this defaults to 5.
+pings.queueProcessingIntervalMins=5
+
+# The set of initial common ping targets. This is used to initialize the database if there are no common
+# ping targets at startup. Ping targets are specified as a comma-separated list, each target in the form
+# {{name}{url}}. To disable initialization of common ping targets, comment this out, or set it to the
+# empty value. Common targets can be edited in the UI; this is just used to set up some typical ones.
+pings.initialCommonTargets=\
+{{Technorati}{http://rpc.technorati.com/rpc/ping}}\
+,{{Weblogs.com}{http://rpc.weblogs.com/RPC2}}\
+,{{blo.gs}{http://ping.blo.gs/}}\
+,{{java.blogs}{http://javablogs.com/xmlrpc}}\
+,{{blogrolling.com}{http://rpc.blogrolling.com/pinger/}}
+
+# This controls whether users are allowed to add custom ping targets. Set this to false to disallow adding custom
+# targets; if false, the Weblog:Custom Ping Targets menu item will not appear and associated actions will result in
+# access denied messages. Leave this false or commented for normal behavior.
+# CAUTION: Setting this to true will cause the server to remove all users' existing custom targets on startup.
+pings.disallowCustomTargets=false
+
+# This controls whether the Weblog:Pings menu item and its associated actions are enabled. Set this to false to
+# disallow users from configuring autopings and doing manual pings. If absent, this defaults to true.
+# NOTE: There is a separate runtime property (configurable from the Admin:Configuration page, that can be used to
+# suspend ping processing without disabling the UI.
+# CAUTION: Setting this to true will cause the server to remove all users' existing autoping
+# configurations on startup. Leave this false or commented for normal behavior.
+pings.disablePingUsage=false
+
+# Setting both pings.disallowCustomTarget=true and pings.disablePingUsage=true will effectively disable
+# the ping functionality.
+
+# This is used for debugging the ping mechanism in Roller. If this is set to true,
+# pings that would normally be sent will cause log messages to be sent but will
+# NOT actually result in real pings being sent. Leave this false or commented for normal behavior.
+pings.logOnly=false
+
+
+#----------------------------------
+
+# misc settings
+
+# Set to true to show the Planet tab in the Roller menu (only admins will see it)
+planet.aggregator.enabled=false
+
+loginfilter.rememberme.enabled=true
+breadcrumbs.stacksize=3
+debug.memory.enabled=false
+
+# settings for the rss aggregator (not related to planet stuff)
+aggregator.enabled=true
+aggregator.cache.enabled=true
+aggregator.cache.timeout=14400
+
+#---------------------------------
+# settings for various plugins
+
+# Optional site-wide customization settings for the TopicTag plugin.
+# n.b. these default settings match the coded default values that would be applied if these were omitted.
+org.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.defaultTopicBookmarkName=Default Topic Site
+org.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.defaultTopicSite=http://www.technorati.com/tag
+org.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.tagRegexWithBookmark=topic:\\{(.*?)\\}\\[(.*?)\\]
+org.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.tagRegexWithoutBookmark=topic:\\[(.*?)\\]
+org.roller.presentation.velocity.plugins.topictag.TopicTagPlugin.linkFormatString=<a rel=\"tag\" href=\"{0}{1}\">{2}</a>
Added: incubator/roller/trunk/web/WEB-INF/classes/roller.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/roller.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/roller.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/roller.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,96 @@
+#**
+ * General purpose, or not user-specific, macros.
+ * @author Lance Lavandowska (conversion to Velocimacros)
+ *#
+
+#**
+ * General purpose date formatter. Need to be careful of whitespace.
+ * @param dateFormat Date format to be used (see java.text.SimpleDateFormat).
+ * @param date Date object to be formatted (see java.util.Date).
+ *#
+#macro( formatDate $dateFormat $date )$dateFormatter.applyPattern($dateFormat)#if ($date)$dateFormatter.format( $date )#else$dateFormat#end#end
+
+#**
+ * Show Roller version number string.
+ *#
+#macro( showVersion )$rollerVersion#end
+
+#**
+ * Show path to common images directory.
+ *#
+#macro( showImagePath )$ctxPath/images#end
+
+#**
+ * Show path to a theme directory.
+ * @param theme Name of the theme.
+ *#
+#macro( showThemePath $theme )$ctxPath/themes/$theme#end
+
+#**
+ * Show path to a theme image.
+ * @param theme Name of the theme.
+ * @param imageName Name of the image.
+ *#
+#macro( showThemeImagePath $theme $imageName )#showThemePath($theme)/images/$imageName#end
+
+#**
+ * Shows an IMG tag for a theme image.
+ * @param theme Name of the theme.
+ * @param imageName Name of the image.
+ *#
+#macro( showThemeImage $theme $imageName )
+<img alt="$imageName" src="#showThemeImagePath($theme $imageName)" />#end
+
+#**
+ * Shows path to a file in a theme's style directory.
+ * @param theme Name of the theme.
+ * @param stylesheet Name of the file.
+ *#
+#macro( showThemeStylePath $theme $stylesheet )#showThemePath($theme)/styles/$stylesheet#end
+
+#**
+ * Shows a STYLE or LINK REL tag for a file in a theme's style directory.
+ * @param theme Name of the theme.
+ * @param stylesheet Name of the file.
+ * @param useImport true to use STYLE tag, otherwhise uses LINK REL
+ *#
+#macro( showThemeStyle $theme $stylesheet $useImport )
+#if ($useImport)
+<style type="text/css">
+@import url(#showThemeStylePath($theme $stylesheet));
+</style>
+#else
+<link rel="stylesheet" type="text/css" href="#showThemeStylePath($theme $stylesheet)" />
+#end
+#end
+
+#**
+ * Shows a STYLE tag a file in a theme's style directory.
+ * @param theme Name of the theme.
+ * @param stylesheet Name of the file.
+ * @param useImport true to use STYLE tag, otherwhise uses LINK REL
+ *#
+#macro( showThemeStyleImport $theme $stylesheet )#showThemeStyle($theme $stylesheet true)#end
+
+#**
+ * Shows path to a file in a theme's scripts directory.
+ * @param theme Name of the theme.
+ * @param scriptFile Name of the file.
+ *#
+#macro( showThemeScriptPath $theme $scriptFile )#showThemePath($theme)/scripts/$scriptFile#end
+
+#**
+ * Shows SCRIPT tag for a file in a theme's scripts directory.
+ * @param theme Name of the theme.
+ * @param scriptFile Name of the file.
+ *#
+#macro( showThemeScript $theme $scriptFile )
+<script type="text/javascript" src="#showThemeScriptPath($theme $scriptFile)"></script>
+#end
+
+#**
+ * Evaluate string as a Velocity template.
+ * @param str String to be evaluated.
+ *#
+#macro( evaluateString $str )$pageHelper.evaluateString( $str )#end
+
Added: incubator/roller/trunk/web/WEB-INF/classes/rollerRuntimeConfigDefs.xml
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/rollerRuntimeConfigDefs.xml?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/rollerRuntimeConfigDefs.xml (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/rollerRuntimeConfigDefs.xml Wed Jun 8 20:18:46 2005
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<!--
+ This file defines what properties are made available to get/set
+ during the running of the Roller application. These properties
+ are stored in the database and the code *must* be able to make
+ use of changed values during runtime.
+
+ Also included in this file is meta-data which defines what class
+ of property we are dealing with, it's default value, and information
+ on how to populate the display that allows for changing the value.
+
+ NOTE: order does matter!! the display is populated in a linear fashion
+ starting from the first display-group and moving down.
+-->
+
+<runtime-configs>
+
+ <!--
+ The global-properties represents the base set of roller runtime properties.
+ In *most* cases you should be putting your properties here and they can
+ then be changed from the admin configuration page at ...
+ /admin/rollerConfig.do
+ -->
+ <config-def name="global-properties">
+
+ <!-- Site Settings Group -->
+ <display-group name="siteSettings" key="configForm.siteSettings" >
+
+ <property-def name="site.name" key="configForm.siteName">
+ <type>string</type>
+ <default-value>Roller Site</default-value>
+ </property-def>
+ <property-def name="site.description" key="configForm.siteDescription">
+ <type>string</type>
+ <default-value>Roller Site</default-value>
+ </property-def>
+ <property-def name="site.adminemail" key="configForm.siteAdminEmail">
+ <type>string</type>
+ <default-value></default-value>
+ </property-def>
+ <property-def name="site.absoluteurl" key="configForm.absoluteUrl">
+ <type>string</type>
+ <default-value></default-value>
+ </property-def>
+ <property-def name="site.linkbacks.enabled" key="configForm.enableLinkback">
+ <type>boolean</type>
+ <default-value>false</default-value>
+ </property-def>
+ <property-def name="pings.suspendPingProcessing" key="configForm.suspendPingProcessing">
+ <type>boolean</type>
+ <default-value>false</default-value>
+ </property-def>
+
+ </display-group >
+
+ <!-- User Settings Group -->
+ <display-group name="userSettings" key="configForm.userSettings" >
+
+ <property-def name="users.registration.enabled" key="configForm.allowNewUsers">
+ <type>boolean</type>
+ <default-value>true</default-value>
+ </property-def>
+ <property-def name="users.themes.path" key="configForm.newUserThemes">
+ <type>string</type>
+ <default-value>/themes</default-value>
+ </property-def>
+ <property-def name="users.editor.pages" key="configForm.editorPages">
+ <type>text</type>
+ <default-value>editor-ekit.jsp,editor-text.jsp,editor-dhtml.jsp,editor-text-js.jsp,editor-wiki-js.jsp,editor-rte.jsp</default-value>
+ <rows>3</rows>
+ <cols>40</cols>
+ </property-def>
+ <property-def name="users.comments.autoformat" key="configForm.autoformatComments">
+ <type>boolean</type>
+ <default-value>true</default-value>
+ </property-def>
+ <property-def name="users.comments.escapehtml" key="configForm.escapeCommentHtml">
+ <type>boolean</type>
+ <default-value>false</default-value>
+ </property-def>
+ <property-def name="users.comments.emailnotify" key="configForm.emailComments">
+ <type>boolean</type>
+ <default-value>true</default-value>
+ </property-def>
+
+ </display-group >
+
+ <!-- File Upload Settings Group -->
+ <display-group name="uploadSettings" key="configForm.fileUploadSettings" >
+
+ <property-def name="uploads.enabled" key="configForm.enableFileUploads">
+ <type>boolean</type>
+ <default-value>true</default-value>
+ </property-def>
+ <property-def name="uploads.types.allowed" key="configForm.allowedExtensions">
+ <type>string</type>
+ <default-value>jpg,jpeg,gif,png</default-value>
+ </property-def>
+ <property-def name="uploads.types.forbid" key="configForm.forbiddenExtensions">
+ <type>string</type>
+ <default-value></default-value>
+ </property-def>
+ <property-def name="uploads.file.maxsize" key="configForm.maxFileSize">
+ <type>string</type>
+ <default-value>1.00</default-value>
+ </property-def>
+ <property-def name="uploads.dir.maxsize" key="configForm.maxDirSize">
+ <type>string</type>
+ <default-value>4.00</default-value>
+ </property-def>
+
+ </display-group >
+
+ <!-- Debugging Settings Group -->
+ <!--
+ <display-group name="debuggingSettings" key="configForm.debuggingSettings" >
+
+ <property-def name="debug.memory.enabled" key="configForm.enableMemoryDebugging">
+ <type>boolean</type>
+ </property-def>
+
+ </display-group >
+ -->
+
+ <!-- Spam Prevention Settings Group -->
+ <display-group name="spamSettings" key="websiteSettings.spamPrevention" >
+
+ <property-def name="spam.referers.ignorewords" key="websiteSettings.ignoreUrls">
+ <type>text</type>
+ <default-value></default-value>
+ <rows>7</rows>
+ <cols>40</cols>
+ </property-def>
+
+ </display-group >
+
+ </config-def>
+
+</runtime-configs>
Added: incubator/roller/trunk/web/WEB-INF/classes/rome.properties
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/rome.properties?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/rome.properties (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/rome.properties Wed Jun 8 20:18:46 2005
@@ -0,0 +1,43 @@
+
+# Some RSS 0.91 feeds have pubDates in items
+
+WireFeedParser.classes=org.roller.util.rome.PlanetRSS091UParser \
+ org.roller.util.rome.PlanetRSS091NParser
+
+Converter.classes =org.roller.util.rome.PlanetConverterForRSS091U \
+ org.roller.util.rome.PlanetConverterForRSS091N \
+ org.roller.util.rome.PlanetConverterForRSS20
+
+# Handle funky RSS (RSS 2.0 with <dc:date> and/or <content:encoded>)
+
+rss_2.0.feed.ModuleGenerator.classes =com.sun.syndication.io.impl.DCModuleGenerator \
+ org.roller.util.rome.ContentModuleGenerator
+
+rss_2.0.item.ModuleGenerator.classes =com.sun.syndication.io.impl.DCModuleGenerator \
+ org.roller.util.rome.ContentModuleGenerator
+
+rss_2.0.feed.ModuleParser.classes =com.sun.syndication.io.impl.DCModuleParser \
+ org.roller.util.rome.ContentModuleParser
+
+rss_2.0.item.ModuleParser.classes =com.sun.syndication.io.impl.DCModuleParser \
+ org.roller.util.rome.ContentModuleParser
+
+# Handle <content:encoded> in RSS 1.0
+
+rss_1.0.feed.ModuleParser.classes =com.sun.syndication.io.impl.DCModuleParser \
+ org.roller.util.rome.ContentModuleParser
+
+rss_1.0.item.ModuleParser.classes =com.sun.syndication.io.impl.DCModuleParser \
+ org.roller.util.rome.ContentModuleParser
+
+rss_1.0.feed.ModuleGenerator.classes =com.sun.syndication.io.impl.DCModuleGenerator \
+ org.roller.util.rome.ContentModuleGenerator
+
+rss_1.0.item.ModuleGenerator.classes =com.sun.syndication.io.impl.DCModuleGenerator \
+ org.roller.util.rome.ContentModuleGenerator
+
+
+
+
+
+
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/rssmacros.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/rssmacros.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/rssmacros.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/rssmacros.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,39 @@
+#**
+ * Macros for displaying RSS links and badges.
+ * @author Lance Lavandowska (conversion to Velocimacros)
+ *#
+
+#**
+ * Show links to category feeds for categories that are immediate children
+ * of the specified category.
+ *#
+#macro( showRSSLinksForCategory $category )
+ <a href="$ctxPath/rss/$userName">$text.get("macro.rss.all")</a>
+ [<a href="$ctxPath/rss/$userName?excerpts=true">$text.get("macro.rss.excerpts")</a>]<br />
+ #set( $categories = $pageModel.getWeblogCategories($category) )
+ #foreach( $cat in $categories )
+ <a href="$ctxPath/rss/$userName?catname=$cat.path">$cat.path</a>
+ [<a href="$ctxPath/rss/$userName?catname=$cat.path&excerpts=true">$text.get("macro.rss.excerpts")</a>]<br />
+ #end
+#end
+
+#**
+ * Show links to all available RSS feeds for your weblog.
+ *#
+#macro( showRSSLinks )#showRSSLinksForCategory("nil")#end
+
+#**
+ * Show RSS Autodiscovery link for your weblog.
+ *#
+#macro( showRSSAutodiscoveryLink )
+ <link rel="alternate" type="application/rss+xml"
+ title="RSS" href="$absBaseURL/rss/$userName" />
+#end
+
+#**
+ * Show RSS badge with link to your weblog's main RSS feed.
+ *#
+#macro( showRSSBadge )
+ <a href="$ctxPath/rss/$userName"><img class="rssbadge"
+ src="$ctxPath/images/rssbadge.gif" alt="XML" /></a>
+#end
Added: incubator/roller/trunk/web/WEB-INF/classes/searchresults.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/searchresults.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/searchresults.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/searchresults.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+## "no user" versions
+#macro( showSearchResults $dayTemplate )
+ #foreach( $day in $map.keySet() )
+ #set( $entries = $map.get($day) )
+ #parse( $dayTemplate )
+ #end
+#end
+<head>
+ <title>$siteName $text.get("macro.searchresults.results")</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script type="text/javascript"
+ src="$ctxPath/theme/scripts/roller.js"></script>
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/themes/base.css" />
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/theme/layout.css" />
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/theme/roller.css" />
+ <link rel="stylesheet" type="text/css" media="all"
+ href="$ctxPath/theme/menu.css" />
+</head>
+<body>
+<div id="header">
+ <span style="width:100%; text-align:right; margin: 3px">
+ #showBasicNavBar( false )
+ </span>
+ <span>
+ #showMenu( "editor-menu.xml" "/menu-tabbed.vm" )
+ </span>
+</div>
+
+<div id="content">
+ #showStatusMessage()
+
+ <center>
+ <h1>$siteName $text.get("macro.searchresults.results")</h1>
+ </center>
+
+ <p>
+ #set ( $siteText = "this site")
+ #set ( $inUrl = "")
+ #if ($username)
+ #set ($siteText = "$username's site")
+ #set ($inUrl = " inurl:$username" )
+ #end
+ $text.get("macro.searchresults.searchFor", [$siteText])
+ "<a href="http://dictionary.com/search?q=$utilities.encode($term)"
+ title="$text.get( "macro.searchresults.title", [$term])"
+ class="dictionary">$term</a>".
+
+ $text.get("macro.searchresults.hits_1", [$hits])
+ <a href="http://google.com/search?q=$utilities.encode($term)%20site:${absBaseURL}${inUrl}"
+ class="google">$text.get("macro.searchresults.hits_2")
+
+ <form method="get" action="$ctxPath/search"
+ style="margin: 5px">
+ <input type="text" id="q" name="q" size="31"
+ maxlength="255" value="$term"
+ style="padding-left: 1px" />
+ <input type="hidden" name="$USERNAME_KEY" value="$!{username}" />
+ #if ($categories)
+ <select name="c">
+ <option value="">- Restrict By Category -</option>
+ #foreach( $cat in $categories )
+ <option #if($cat == $req.getParameter('c'))selected="selected"#end>$cat</option>
+ #end
+ </select>
+ #end
+ <input type="submit" value="$text.get("macro.searchresults.again")" />
+ </form>
+ </p>
+ <script type="text/javascript"
+ src="$ctxPath/theme/scripts/searchhi.js"></script>
+ <br />
+
+ #if ($hits > 0)
+ #set( $map = $searchResults )
+ #showSearchSummary()
+
+ #showSearchResults("searchresults_day.vm")
+
+ #showSearchPager()
+ #end
+ <div id="footer"></div>
+
+</div> <!-- close content div -->
+
+</body>
+</html>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/searchresults_day.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/searchresults_day.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/searchresults_day.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/searchresults_day.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,39 @@
+#macro( showEntryPermalink $entry )
+<a href="$baseURL/page/$entry.website.user.userName/?anchor=$entry.Anchor"
+ title="$text.get( "macro.searchresultsday.entrypermalink.title" )"
+ class="entrypermalink">posted</a>
+#end
+
+## you have to be so damn careful with whitespace in Velocity
+#macro( showUserPermalink $entry )
+<a href="$baseURL/page/$entry.website.user.userName/"
+ title="$text.get( "macro.searchresultsday.userpermalink.title" )"
+ class="entrypermalink">$entry.website.user.userName</a>#if ($entry.category),
+in #showCategoryPermalink($entry) #end
+#end
+
+## you have to be so damn careful with whitespace in Velocity
+#macro( showCategoryPermalink $entry )
+<a href="$baseURL/page/$entry.website.user.userName/?catname=#$utilities.encode($entry.category.name)"
+ title="$text.get( "macro.searchresultsday.categorypermalink.title" )"
+ class="entrypermalink">$entry.category.name</a>,
+#end
+
+<div class="box">
+ <div class="entry">
+ <img src="$ctxPath/images/permalink.gif" alt="#formatDate( $plainFormat $day )" />
+ #showEntryDate( $day )
+ </div>
+ #foreach( $entry in $entries )
+ <p>
+ <b>$entry.title</b> $entry.text
+ #showEntryPermalink( $entry )
+ by #showUserPermalink( $entry )
+ on #showTimestamp($entry.pubTime).
+ <span style="font-size:x-small;">(<a
+ href="?q=${utilities.encode($term)}&${USERNAME_KEY}=$!{entry.website.user.userName}"
+ >restrict search</a> to just this blog)</span>
+ </p>
+ #end
+ <br />
+</div>
Added: incubator/roller/trunk/web/WEB-INF/classes/technorati.license
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/technorati.license?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/technorati.license (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/technorati.license Wed Jun 8 20:18:46 2005
@@ -0,0 +1 @@
+31fa7f1d0dad2fe1d2bc69fd200cb6d0
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/themes/css.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/themes/css.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/themes/css.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/themes/css.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,4 @@
+<link rel="stylesheet" type="text/css" href="$ctxPath/themes/base.css" />
+#if( $theme )
+ <link rel="stylesheet" type="text/css" href="#showThemePath($theme)/theme.css" />
+#end
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/themes/day.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/themes/day.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/themes/day.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/themes/day.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,16 @@
+<div class="entry">
+ #showDayPermalink( $day )
+ #showEntryDate( $day )
+</div>
+
+#foreach( $entry in $entries )
+<p>
+ <a name="$utilities.encode($entry.anchor)" id="$utilities.encode($entry.anchor)"></a>
+ <b>$entry.title</b> #showEntryText($entry)
+ <font class="date">(#showTimestamp($entry.pubTime))</font>
+ #showEntryPermalink( $entry )
+ #showCommentsPageLink( $entry )
+</p>
+#end
+
+#showLinkbacks( $day )
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/themes/new_page.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/themes/new_page.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/themes/new_page.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/themes/new_page.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,4 @@
+
+<h1>#showPageName()</h1>
+
+<p>#showPageDescription()</p>
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/themes/noop_decorator.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/themes/noop_decorator.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/themes/noop_decorator.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/themes/noop_decorator.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1 @@
+$decorator_body
\ No newline at end of file
Added: incubator/roller/trunk/web/WEB-INF/classes/user.vm
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/web/WEB-INF/classes/user.vm?rev=189695&view=auto
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/user.vm (added)
+++ incubator/roller/trunk/web/WEB-INF/classes/user.vm Wed Jun 8 20:18:46 2005
@@ -0,0 +1,37 @@
+#**
+ * Macros for displaying images and accessing uploaded files.
+ * @author Lance Lavandowska (conversion to Velocimacros)
+ *#
+
+#**
+ * Show an image IMG tag, optionally surrounded with an 'A HREF' link tag
+ * @param imageUrl URL for the image.
+ * @param linkUrl URL for the link or empty string if none.
+ * @param alt ALT text for the IMG tag.
+ * @param border BORDER for the IMG tag.
+ * @param halign HALIGN horizontal alignment for the IMG tag.
+ * @pram valign VALIGN vertical ailignment for the IMG tag.
+ *#
+#macro( showImage $imageUrl $linkUrl $alt $border $halign $valign )
+ #if ($utilities.isNotEmpty($linkUrl))
+ <a href="$linkUrl"/><img src="$imageUrl" alt="$alt"
+ border="$border" halign="$halign" valign="$valign" /></a>
+ #else
+ <img src="$imageUrl" alt="$alt" border="$border"
+ halign="$halign" valign="$valign" />
+ #end
+#end
+
+#**
+ * Show an image IMG tag for an image you have uploaded to Roller,
+ * optionally surrounded with an 'A HREF' link tag
+ *#
+#macro( showResourceImage $fileName $linkUrl $alt $border $halign $valign )
+ #set( $imageUrl = $uploadPath/$userName/$fileName )
+ #showImage( $imageUrl $linkUrl $alt $border $halign $valign )
+#end
+
+#**
+ * Show path to your file upload directory, for use in building URLs.
+ *#
+#macro( showResourcePath )$uploadPath/$userName#end
\ No newline at end of file