This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
tabellio.searchform/tabellio/searchform/eventsearch.pt

132 lines
4.9 KiB
XML

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
lang="en"
metal:use-macro="context/main_template/macros/master"
i18n:domain="tabellio.searchform">
<body>
<metal:main fill-slot="main">
<tal:main-macro metal:define-macro="main">
<tal:block tal:define="Batch python:modules['Products.CMFPlone'].Batch;
mq python:modules['ZTUtils'].make_query;
url batch_base_url | request/ACTUAL_URL;
batchformkeys batchformkeys|nothing;
b_size python:10; b_size request/b_size | b_size;
b_start python:0;b_start request/b_start | b_start;">
<div tal:replace="structure provider:plone.abovecontenttitle" />
<h1 class="documentFirstHeading">Événements</h1>
<div tal:replace="structure provider:plone.belowcontenttitle" />
<form method="post" action="./eventsearch#resultsbox">
<div tal:replace="structure view/event_search_form"/>
</form>
<div tal:define="search_results view/event_search_results;
search_batch python:Batch(list(search_results or []), b_size, int(b_start), orphan=1);"
tal:condition="python: search_results is not None">
<div id="resultsbox">
<span>Nombre de résultats : <span tal:replace="python: len(search_results)"/></span>
</div>
<div> <!-- id="results"> -->
<ul id="events-ul-list">
<tal:entry tal:repeat="item search_batch">
<li tal:define="oddrow repeat/item/odd; event python: item.getObject()" tal:attributes="class event/klass"><div>
<p class="date"><span tal:content="event/longdatetime"/>
<br/><span tal:condition="event/place" class="place" tal:content="event/place"></span>
<div class="event-data">
<h3><span class="event-type-square"></span><span tal:replace="event/title"/></h3>
<p class="description" tal:condition="event/description" tal:content="event/description"></p>
<p class="details"><a href="#" tal:attributes="href event/absolute_url">Détails</a></p>
</div>
</li>
</tal:entry>
</ul>
</div>
<div tal:define="batch search_batch">
<div metal:use-macro="view/batch_macros/macros/navigation" />
</div>
</div>
<div tal:replace="structure provider:plone.belowcontentbody" />
<script type="text/javascript" tal:content="string: var PORTAL_URL='${view/portal_url}';"/>
<script type="text/javascript">
function update_input(input) {
var s = '';
jq(input).nextAll('span.labelbox').each(function() {
s = s + ' ' + jq(this).attr('class').split(' ')[1];
});
jq(input).attr('value', s);
}
function create_labelbox(input_box, id, value)
{
labelbox = $('<span class="labelbox ' + id + '">' + value + '<' + '/span>');
$(labelbox).click(function() {
$(this).remove();
update_input(jq(input_box).prevAll('input')[0]);
});
return labelbox;
}
function autocomplete_ready(event, data, formatted) {
(function($) {
var input_box = $(event.target);
// XXX: don't insert item if it's already present
labelbox = create_labelbox(input_box, data[1], data[0]);
$(input_box).before(labelbox);
update_input(jq(input_box).prevAll('input')[0]);
$(input_box).attr('value', '');
}(jQuery));
}
function sync_elements(index, elem, url)
{
hidden = $(elem).prev();
values = $(hidden).attr('value').trim().split(' ');
for (i=0; i < values.length; i++) {
if (values[i]) {
labelbox = create_labelbox(elem, values[i], '...');
$(hidden).after(labelbox);
$(labelbox).load(url + '?id=' + values[i]);
}
}
}
function sync_authors(index, elem) { sync_elements(index, elem, PORTAL_URL+'/listAuthors'); }
function sync_polgroups(index, elem) { sync_elements(index, elem, PORTAL_URL+'/listPolgroups'); }
function sync_topics(index, elem) { sync_elements(index, elem, PORTAL_URL+'/listTopics'); }
if(typeof(String.prototype.trim) === "undefined") {
String.prototype.trim = function()
{
return String(this).replace(/^\s+|\s+$/g, '');
};
}
(function($) {
$().ready(function() {
$('.author-autocomplete').each(sync_authors).autocomplete(PORTAL_URL+'/listAuthors', {
}).result(autocomplete_ready);
$('.polgroup-autocomplete').each(sync_polgroups).autocomplete(PORTAL_URL+'/listPolgroups', {
}).result(autocomplete_ready);
$('.topic-autocomplete').each(sync_topics).autocomplete(PORTAL_URL+'/listTopics', {
}).result(autocomplete_ready);
});
})(jQuery);
</script>
</tal:block>
</tal:main-macro>
</metal:main>
</body>
</html>