templates/channel_search.tmpl
author Tero Marttila <terom@fixme.fi>
Mon, 09 Feb 2009 23:49:57 +0200
changeset 73 5a7188bf2894
parent 69 1f182913b1f2
child 74 1ab95857d584
permissions -rw-r--r--
split defined configuration constants into config, and implement search result pagination
<%inherit file="channel.tmpl" />

<%def name="paginate(url, count, skip, max, **args)">
    ## update max?
    <% max = h.max(max, skip) %>
    ## number of pages
    <% page_count = max / count + 1 %>
    <div class="paginate">
        <ul>
            <li>
            % if skip :
                <a href="${h.build_url(url, count=count, skip=h.skip_prev(count, skip), max=max, **args)}">&laquo; Prev</a>
            % else :
                <span>&laquo; Prev</span>
            %endif
            </li>
        % for page in xrange(page_count) :
            <li>
            % if page == skip / count :
                <strong>${page + 1}</strong>
            % else :
                <a href="${h.build_url(url, count=count, skip=h.skip_page(count, page), max=max, **args)}">${page + 1}</a>
            % endif
            </li>
        % endfor
            <li>
                <a href="${h.build_url(url, count=count, skip=h.skip_next(count, max), **args)}">More &raquo;</a>
            </li>
        </ul>
    </div>
</%def>

% if not search_query :
<div id="title">${channel.title} :: Search</div>

<div id="search">
    <form action="${h.build_url(urls.channel_search, channel=channel)}" method="GET">
        <input type="text" name="q" />
        <input type="submit" value="Search" />
        
        Results/page: <select name="count">
        % for cc, cc_label in config.SEARCH_LINE_COUNT_OPTIONS :
            <option value="${cc if cc else ''}"${' selected="selected"' if cc == count else ''}>${cc_label}</option>
        % endfor
        </select>
    </form>
    
    <div id="search-help">
        <p>Search powered by <a href="http://hyperestraier.sourceforge.net/">Hyper Estraier</a>:</p>

        <ul>
            <li>Group words together using quotes: <tt>"united nations"</tt></li>
            <li>Searching for multiple words is AND: <tt>internet security</tt></li>
            <li>To exclude terms, use <strong>!</strong> : <tt>hacker ! cracker</tt></li>
            <li>Union (i.e. <q>or</q>) using <strong>|</strong> : <tt>proxy | firewall</tt></li>
            <li>Search is case-insensitive</li>
        </ul>
    </div>
</div>

% else :
<div id="title">${channel.title} :: Search '${search_query}'</div>

${paginate(urls.channel_search, count, skip, max, channel=channel, q=search_query)}
<%include file="lines.tmpl" />
${paginate(urls.channel_search, count, skip, max, channel=channel, q=search_query)}
% endif