I suspect another source of fresh faces is the appengine community,
although that probably overlaps with the Play community.
Jeff
We are all developers here, don't kid yourself about 1.x living on. As soon as the next big thing comes, we love to jump to it like rabid monkeys. ;-)
I'm happy to show whatever you want. What would you like to see? A template file or some Java code? For the templates, there really is not much there other than a whole bunch of html. At this point, most of the dynamic rendering is done with CoffeeScript + Handlebars. Sometimes I'll render first with cambridge and then when I have the design looking good, I'll move the code into Handlebars.
Sometimes I'll do little stuff like this (JEXL based):
<!--$set tabindex=1 -->
<td><input id="name" name="name" type="text" tabindex="${tabindex = tabindex + 1}" /></td>
We use the cambridge $extends a fair bit which is nice and a must have feature of any template system.
It's really hard to pick out "just one" because (as Jon mentioned) we
use template inheritance a lot, plus a significant part of the app is
rendered in javascript (coffeescript) with handlebars.js. Cambridge
provides the structure of the page + we use it more heavily for pages
with a significant SEO footprint.
FWIW, here's the page about an event (event_about.html):
-----
<!--$extends _event.html -->
<!--$set page="about" -->
<div id="eventContent">
<script type="text/javascript"
src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var regTimeline = %{tool.jsonify(model.event.regTimeline)};
var pagecode = function(lab) {
lab.script(socialRefs['google']).script(socialRefs['twitter'])
.script('${tool.jsbuilder(['gen/event_about'])}');
}
</script>
<div class="startmain"></div>
<div class="main">
<div class="inner_main second_block">
<div class="container_alpha_nogradients">
<!--$ Here we show the categories -->
<div class="gs_9 products">
<div class="productGroup" a:foreach="model.event.productGroups"
a:as="group">
<div a:if="!empty(group.products)">
<h3 a:if="!empty(group.name)">${group.name}</h3>
<table class="bootstrap bordered-table">
<thead>
<tr>
<th class="categoryField">Category</th>
<th>Distance</th>
<th>Start</th>
<th>Prizes</th>
<th>Registered</th>
<th>Fee</th>
</tr>
</thead>
<tbody>
<tr a:foreach="group.products" a:as="prod">
<td class="categoryField">${prod.name}</td>
<td>${prod.distance}</td>
<td>${prod.start}</td>
<td>${prod.prizes}</td>
<td>${prod.count}${if (prod.limit != null) " / " + prod.limit}</td>
<td>${prod.pricePretty}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="gs_3 omega">
<div class="top_sidebar_mask"></div>
<div class="sidebar">
<div class="widget">
<div id="regDetails">
<p class="confirmation" a:if="!empty(model.you.ticketGroup)">
Congratulations, you are signed up for this event.
<br/>
<a href="/event/${model.event.shortKey}/you">details</a>
</p>
<div id="regOpen" style="display:none;">
<a href="/event/${model.event.shortKey}/register" class="btn
orange xlarge">Register</a>
<p>Closes in</p>
<div id="countDownCloses" class="countDown"></div>
</div>
<div id="regFuture" class="information" style="display: none;">
<p>Registration opens in</p>
<div id="countDownOpens" class="countDown"></div>
</div>
<p id="notFutureOrOpen" class="error" style="display: none;">
Sorry, registration<br />has closed.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="endmain png_bg"></div>
<div class="startmain"></div>
<div class="main">
<div class="inner_main second_block">
<div class="container_alpha_nogradients">
<span id="description">%{model.event.descriptionHtml}</span>
</div>
</div>
</div>
<div class="endmain"></div>
<div class="startmain"></div>
<div class="main">
<div class="inner_main second_block">
<div class="container_alpha_nogradients">
<h3>${model.event.location.full}</h3>
<div id="directionsMap" class="gs_12 omega">
<a href="http://maps.google.com/maps?q=${model.event.location.full}"
target="_blank">
<img src="%{model.event.location.fullWidthMap}" alt="Map of location"/>
</a>
</div>
<div id="mapLink">
<a href="http://maps.google.com/maps?q=${model.event.location.full}"
target="_blank">Click to view full-size map</a>
</div>
<div id="directions">%{model.event.directionsHtml}</div>
</div>
</div>
</div>
<div class="endmain"></div>
</div>
Makes a lot of sense.... but why not jump straight in with Handlebars at the start?
Seem nice and clean.