fix off-by-one with search paginate, and implement basic pagination for channel_date
<%inherit file="layout.tmpl" />
<div id="title">Edit Preferences</div>
<form action="${urls.preferences.build(req)}" method="POST">
<fieldset>
<legend>Dates / Times</legend>
<p>
<label for="timezone">Timezone:</label>
<select name="timezone">
% for tz_name in timezones :
<option${' selected="selected"' if tz_name == prefs['timezone'].zone else ''}>${tz_name}</option>
% endfor
</select>
<span class="example">(${h.tz_name(prefs['timezone'])})</span>
</p>
<p>
<label for="date_format">Date format:</label>
<input type="text" name="date_format" value="${prefs['date_format']}" />
<span class="example">(${h.fmt_date()})</span>
</p>
<p>
<label for="time_format">Time format:</label>
<input type="text" name="time_format" value="${prefs['time_format']}" />
<span class="example">(${h.fmt_time()})</span>
</p>
</fieldset>
<fieldset>
<legend>Log Output</legend>
<p>
<label for="formatter">Formatter:</label>
<select name="formatter">
% for fmt_name, fmt in preferences.formatter.formatters.iteritems() :
<option value="${fmt_name}">${fmt.title}</option>
% endfor
</select>
</p>
<p>
<label for="count">Lines / Page:</label>
<input type="text" name="count" value="${prefs['count']}" />
<span class="example">(Blank for infinite)</span>
</p>
</fieldset>
<input type="submit" value="Save" />
</form>