simple and advanced versions of pfb search
This commit is contained in:
parent
d936015d1d
commit
51dca56f4a
|
@ -0,0 +1,138 @@
|
|||
<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;
|
||||
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;">
|
||||
|
||||
|
||||
<h1 class="documentFirstHeading">Recherche avancée</h1>
|
||||
<a id="other-search" href="pfbsearch">Recherche</a>
|
||||
|
||||
|
||||
<div id="deputies-results" class="advbox">
|
||||
<h2 id="b_deputy_start">Députés</h2>
|
||||
<form>
|
||||
...
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="docs-results" class="advbox">
|
||||
<h2 id="b_doc_start">Documents</h2>
|
||||
<form method="post" tal:attributes="action string:${view/pfbdocform_url}#resultsbox">
|
||||
<div tal:replace="structure view/document_pfb_search_form"/>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="events-results" class="advbox">
|
||||
<h2 id="b_event_start">Événements</h2>
|
||||
<form>
|
||||
...
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="pages-results" class="advbox">
|
||||
<h2 id="b_page_start">Ailleurs sur le site</h2>
|
||||
<form>
|
||||
...
|
||||
</form>
|
||||
</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_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 sync_from_checkboxes(elem, dummyinput)
|
||||
{
|
||||
t = '';
|
||||
$(elem).find('span.option').each(function(idx, el) {
|
||||
if ($(el).find('input').attr('checked')) {
|
||||
if (t.length > 0) {
|
||||
t = t + ', ';
|
||||
}
|
||||
t = t + $(el).find('label span').text();
|
||||
}
|
||||
});
|
||||
$(dummyinput).attr('value', t);
|
||||
}
|
||||
|
||||
function setup_appearance(index, elem)
|
||||
{
|
||||
var dummyinput = $('<input type="text" readonly="readonly"/>');
|
||||
sync_from_checkboxes(elem, dummyinput);
|
||||
dummyinput.click(function() {
|
||||
$(elem).find('div.droppedcheckboxes').toggle();
|
||||
});
|
||||
$(elem).find('.fieldErrorBox').after(dummyinput);
|
||||
$(elem).find('span.option').wrapAll('<div class="droppedcheckboxes">').click(function() {
|
||||
sync_from_checkboxes(elem, dummyinput);
|
||||
});
|
||||
$(elem).find('div.droppedcheckboxes').hide();
|
||||
}
|
||||
|
||||
function setup_sort_on(index, elem)
|
||||
{
|
||||
$(elem).find('label.horizontal').click(function() {
|
||||
$(elem).find('div.droppedradios').toggle();
|
||||
});
|
||||
$(elem).find('span.option').wrapAll('<div class="droppedradios">');
|
||||
$(elem).find('div.droppedradios').hide();
|
||||
}
|
||||
|
||||
(function($) {
|
||||
$().ready(function() {
|
||||
$('.author-autocomplete').autocomplete(PORTAL_URL+'/listAuthors', {
|
||||
}).result(author_autocomplete_ready);
|
||||
$('#formfield-document-widgets-l_doctypes').each(setup_appearance);
|
||||
$('#formfield-document-widgets-l_topics').each(setup_appearance);
|
||||
$('#formfield-document-widgets-l_polgroups').each(setup_appearance);
|
||||
$('#formfield-document-widgets-sort_on').each(setup_sort_on);
|
||||
$('div.advbox form').hide();
|
||||
$('div.advbox h2').click(function() { $(this).parent().find('form').toggle(); });
|
||||
});
|
||||
})(jQuery);
|
||||
</script>
|
||||
|
||||
|
||||
</tal:block>
|
||||
</tal:main-macro>
|
||||
</metal:main>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -72,6 +72,13 @@
|
|||
permission="zope2.View"
|
||||
template="simple-pfb.pt"/>
|
||||
|
||||
<browser:page
|
||||
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
|
||||
name="pfbadvsearch"
|
||||
class=".form.SearchView"
|
||||
permission="zope2.View"
|
||||
template="advsearch-pfb.pt"/>
|
||||
|
||||
<browser:page
|
||||
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
|
||||
name="guided-search"
|
||||
|
|
|
@ -667,6 +667,16 @@ class SearchView(BrowserView):
|
|||
def question_search_results(self):
|
||||
return self.search_results(search_type='question')
|
||||
|
||||
def pfbdocform_url(self):
|
||||
catalog = getToolByName(self.context, 'portal_catalog')
|
||||
try:
|
||||
return catalog(
|
||||
portal_type='Folder',
|
||||
object_provides='tabellio.searchform.form.IFolderWithPfbDocuments',
|
||||
limit=1)[0].getObject().absolute_url()
|
||||
except IndexError:
|
||||
return '#'
|
||||
|
||||
|
||||
class Reflex(BrowserView):
|
||||
def __call__(self):
|
||||
|
@ -688,3 +698,4 @@ class Reflex(BrowserView):
|
|||
if not rs:
|
||||
return self.request.response.redirect('.')
|
||||
return self.request.response.redirect(rs[0].getURL())
|
||||
|
||||
|
|
|
@ -0,0 +1,145 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:tal="http://xml.zope.org/namespaces/tal"
|
||||
xmlns:metal="http://xml.zope.org/namespaces/metal"
|
||||
metal:use-macro="context/main_template/macros/master">
|
||||
<body>
|
||||
|
||||
|
||||
<metal:main fill-slot="main">
|
||||
<tal:main-macro metal:define-macro="main">
|
||||
|
||||
<h1 class="documentFirstHeading">Page de résultats</h1>
|
||||
<a id="other-search" href="pfbadvsearch">Recherche avancée</a>
|
||||
|
||||
<div id="simplesearch"
|
||||
tal:define="Batch python:modules['Products.CMFPlone'].Batch;
|
||||
mq python:modules['ZTUtils'].make_query;
|
||||
url batch_base_url | request/ACTUAL_URL;
|
||||
batchformkeys batchformkeys|nothing;
|
||||
deputy_results view/deputy_results;
|
||||
page_results view/page_results;
|
||||
doc_results view/doc_results;
|
||||
event_results view/event_results;
|
||||
b_size python:5; b_size request/b_size | b_size;
|
||||
b_start python:0;
|
||||
b_deputy_start python:0;b_deputy_start request/b_deputy_start | b_start;
|
||||
b_page_start python:0;b_page_start request/b_page_start | b_start;
|
||||
b_doc_start python:0;b_doc_start request/b_doc_start | b_start;
|
||||
b_event_start python:0;b_event_start request/b_event_start | b_start;
|
||||
deputy_batch python:Batch(list(deputy_results), b_size, int(b_deputy_start), orphan=1, b_start_str='b_deputy_start');
|
||||
page_batch python:Batch(list(page_results), b_size, int(b_page_start), orphan=1, b_start_str='b_page_start');
|
||||
doc_batch python:Batch(list(doc_results), b_size, int(b_doc_start), orphan=1, b_start_str='b_doc_start');
|
||||
event_batch python:Batch(list(event_results), b_size, int(b_event_start), orphan=1, b_start_str='b_event_start');
|
||||
">
|
||||
|
||||
<div id="deputies-results" tal:condition="python:len(deputy_results)">
|
||||
<h2 id="b_deputy_start">Députés</h2>
|
||||
<div class="resultsinfobox">
|
||||
<span>Nombre de résultats : <span tal:replace="python:len(deputy_results)"/></span>
|
||||
<a class="button" tal:attributes="href view/deputy_form_url">Filtre avancé</a>
|
||||
</div>
|
||||
|
||||
<div class="results">
|
||||
<ul>
|
||||
<tal:entry tal:repeat="deputy python: deputy_batch">
|
||||
<li tal:define="oddrow repeat/deputy/odd;" tal:attributes="class python: oddrow and 'odd' or 'even'"><div>
|
||||
<h4><a href="#" tal:attributes="href deputy/getURL" tal:content="deputy/Title">Véronique Salvi</a></h4>
|
||||
<p class="intitule" tal:define="deputy_object python: deputy.getObject()">
|
||||
Groupe politique : <span tal:content="deputy_object/polgroup/to_object/title"/>
|
||||
<tal:block tal:condition="deputy_object/district">
|
||||
-
|
||||
Arrondissement : <span tal:content="deputy_object/district"/>
|
||||
</tal:block>
|
||||
<tal:block tal:condition="not: deputy_object/active">
|
||||
-
|
||||
<i>Ce député ne siège plus.</i>
|
||||
</tal:block>
|
||||
</p>
|
||||
</div></li>
|
||||
</tal:entry>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div tal:define="batch deputy_batch">
|
||||
<div metal:use-macro="view/batch_macros/macros/navigation" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="docs-results" tal:condition="python:len(doc_results)">
|
||||
<h2 id="b_doc_start">Documents et dossiers</h2>
|
||||
<div class="resultsinfobox">
|
||||
<span>Nombre de résultats : <span tal:replace="python:len(doc_results)"/></span>
|
||||
<a class="button" tal:attributes="href view/docdos_form_url">Filtre avancé</a>
|
||||
</div>
|
||||
|
||||
<div class="results">
|
||||
<ul>
|
||||
<tal:entry tal:repeat="doc doc_batch">
|
||||
<li tal:define="oddrow repeat/doc/odd;" tal:attributes="class python: oddrow and 'odd' or 'even'"><div>
|
||||
<h4><a href="#" tal:attributes="href doc/getURL" tal:content="python: doc.getObject().reftitle">Véronique Salvi</a></h4>
|
||||
<p class="intitule" tal:content="doc/Title"/>
|
||||
</div></li>
|
||||
</tal:entry>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div tal:define="batch doc_batch">
|
||||
<div metal:use-macro="view/batch_macros/macros/navigation" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="events-results" tal:condition="python:len(event_results)">
|
||||
<h2 id="b_event_start">Événements</h2>
|
||||
<div class="resultsinfobox">
|
||||
<span>Nombre de résultats : <span tal:replace="python:len(event_results)"/></span>
|
||||
<a class="button" tal:attributes="href view/event_form_url">Filtre avancé</a>
|
||||
</div>
|
||||
|
||||
<div class="results">
|
||||
<ul>
|
||||
<tal:entry tal:repeat="event event_batch">
|
||||
<li tal:define="oddrow repeat/event/odd;" tal:attributes="class python: oddrow and 'odd' or 'even'"><div>
|
||||
<h4><a href="#" tal:attributes="href event/getURL" tal:content="event/Title">Véronique Salvi</a></h4>
|
||||
</div></li>
|
||||
</tal:entry>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div tal:define="batch event_batch">
|
||||
<div metal:use-macro="view/batch_macros/macros/navigation" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="pages-results" tal:condition="python:len(page_results)">
|
||||
<h2 id="b_page_start">Ailleurs sur le site</h2>
|
||||
<div class="resultsinfobox">
|
||||
<span>Nombre de résultats : <span tal:replace="python:len(page_results)"/></span>
|
||||
</div>
|
||||
|
||||
<div class="results">
|
||||
<ul>
|
||||
<tal:entry tal:repeat="page page_batch">
|
||||
<li tal:define="oddrow repeat/page/odd;" tal:attributes="class python: oddrow and 'odd' or 'even'"><div>
|
||||
<h4><a href="#" tal:attributes="href page/getURL" tal:content="python: page.Title or page.id">Communiqué de presse</a></h4>
|
||||
<p tal:content="page/Description">bla</p>
|
||||
</div></li>
|
||||
</tal:entry>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div tal:define="batch page_batch">
|
||||
<div metal:use-macro="view/batch_macros/macros/navigation" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</tal:main-macro>
|
||||
</metal:main>
|
||||
|
||||
</body>
|
||||
</html>
|
Reference in New Issue