sync pfb doc search

This commit is contained in:
Frédéric Péters 2011-11-10 20:57:50 +01:00
parent 3cf27379a3
commit 23f9f9e182
2 changed files with 88 additions and 20 deletions

View File

@ -33,6 +33,12 @@
template="docsearchpfb.pt"
permission="zope2.View"/>
<browser:page
for=".form.IFolderWithPfbDocuments"
name="listAuthors"
class=".form.ListAuthorsView"
permission="zope2.View"/>
<browser:page
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
name="search2"

View File

@ -9,6 +9,14 @@
<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;
batchlinkparams python:batchformkeys and dict([(key, unicode(request.form[key]).encode('utf-8')) for key in batchformkeys if key in request]) or dict([(key, unicode(request.form[key]).encode('utf-8')) for key in request.form]);
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" tal:content="context/title" />
@ -19,17 +27,9 @@
<dd id="fieldset-documents">
<div tal:replace="structure view/document_pfb_search_form"/>
<div tal:define="Batch python:modules['Products.CMFPlone'].Batch;
mq python:modules['ZTUtils'].make_query;
url batch_base_url | request/ACTUAL_URL;
batchformkeys batchformkeys|nothing;
batchlinkparams python:batchformkeys and dict([(key, unicode(request.form[key]).encode('utf-8')) for key in batchformkeys if key in request]) or dict([(key, unicode(request.form[key]).encode('utf-8')) for key in request.form]);
doc_results view/document_results;
b_size python:10; b_size request/b_size | b_size;
b_start python:0;b_start request/b_start | b_start;
doc_batch python:Batch(doc_results, b_size,
int(b_start), orphan=1);"
tal:condition="doc_results">
<div tal:define="search_results view/document_search_results;
search_batch python:Batch(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:content="python: len(doc_results)"/></span>
@ -37,28 +37,56 @@
<div id="results">
<ul>
<tal:entry tal:repeat="doc doc_batch">
<tal:entry tal:repeat="item search_batch">
<li tal:define="oddrow repeat/doc/odd; object python: doc.getObject()" tal:attributes="class python: oddrow and 'odd' or 'even'"><div>
<h4><a href="#" tal:attributes="href doc/getURL" tal:content="python: object.doctype">Véronique Salvi</a> / <span class="session" tal:content="python: object.session"/></h4>
<p class="intitule" tal:content="doc/Title"/>
<h4><a href="#" tal:attributes="href item/getURL" tal:content="python: object.doctype">Véronique Salvi</a> / <span class="session" tal:content="python: object.session"/></h4>
<p class="intitule" tal:content="item/Title"/>
<p class="authors" tal:content="python: object.get_authors_as_string()" tal:condition="python: object.authors" />
</div></li>
</tal:entry>
</ul>
</div>
<div id="results-nav" tal:define="p doc_batch/previous | nothing;
n doc_batch/next | nothing">
<a tal:condition="p" id="results-nav-prev" href="#">Précédent</a>
<a tal:condition="n" id="results-nav-next" href="#">Suivant</a>
</div>
<div tal:define="batch search_batch">
<div metal:use-macro="view/batch_macros/macros/navigation" />
</div>
</div>
</dd>
<dt id="fieldset-legend-questions">Questions &amp; interpellations</dt>
<dd id="fieldset-questions">
<div tal:replace="structure view/question_search_form"/>
<div tal:define="search_results view/question_search_results;
search_batch python:Batch(search_results or [], b_size, int(b_start), orphan=1);"
tal:condition="python: search_results is not None">
<input name="fieldset.current" type="hidden" value="#fieldset-questions"/>
<div id="resultsbox">
<span>Nombre de résultats : <span tal:replace="python: len(search_results)"/></span>
</div>
<div id="results">
<ul>
<tal:entry tal:repeat="item search_batch">
<li tal:define="oddrow repeat/item/odd; object python: item.getObject()" tal:attributes="class python: oddrow and 'odd' or 'even'"><div>
<h4><a href="#" tal:attributes="href item/getURL" tal:content="python: object.reftitle">Véronique Salvi</a></h4>
<p class="intitule" tal:content="item/Title"/>
<p class="authors" tal:condition="python: object.authors">Auteur(s) : <span tal:replace="python: object.get_authors_as_string()" tal:condition="python: object.authors" /></p>
</div></li>
</tal:entry>
</ul>
</div>
<div tal:define="batch search_batch">
<div metal:use-macro="view/batch_macros/macros/navigation" />
</div>
</div>
</dd>
<dt id="fieldset-legend-textes">Textes adoptés</dt>
<dd id="fieldset-textes">
@ -67,6 +95,40 @@
<div tal:replace="structure provider:plone.belowcontentbody" />
<script type="text/javascript">
function update_authors_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 author_autocomplete_ready(event, data, formatted) {
(function($) {
var input_box = $(event.target);
// XXX: don't insert item if it's already present
labelbox = $('<span class="labelbox ' + data[1] + '">' + data[0] + '<' + '/span>');
$(input_box).before(labelbox);
$(labelbox).click(function() {
$(this).remove();
update_authors_input(jq(input_box).prevAll('input')[0]);
});
update_authors_input(jq(input_box).prevAll('input')[0]);
$(input_box).attr('value', '');
}(jQuery));
}
(function($) {
$().ready(function() {
$('.author-autocomplete').autocomplete('./listAuthors', {
}).result(author_autocomplete_ready);
});
})(jQuery);
</script>
</tal:block>
</tal:main-macro>
</metal:main>