diff --git a/tabellio/searchform/authors_input.pt b/tabellio/searchform/authors_input.pt
index 816b747..186cbc5 100644
--- a/tabellio/searchform/authors_input.pt
+++ b/tabellio/searchform/authors_input.pt
@@ -1,6 +1,6 @@
-
+
diff --git a/tabellio/searchform/docsearch.pt b/tabellio/searchform/docsearch.pt
index a183fd2..8ca5472 100644
--- a/tabellio/searchform/docsearch.pt
+++ b/tabellio/searchform/docsearch.pt
@@ -134,28 +134,58 @@ function update_input(input) {
jq(input).attr('value', s);
}
+function create_labelbox(input_box, id, value)
+{
+ labelbox = $('' + 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 = $('' + data[0] + '<' + '/span>');
+ labelbox = create_labelbox(input_box, data[1], data[0]);
$(input_box).before(labelbox);
- $(labelbox).click(function() {
- $(this).remove();
- update_input(jq(input_box).prevAll('input')[0]);
- });
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(hidden, values[i], '...');
+ $(hidden).after(labelbox);
+ $(labelbox).load(url + '?id=' + values[i]);
+ }
+ }
+}
+
+function sync_authors(index, elem) { sync_elements(index, elem, './listAuthors'); }
+function sync_polgroups(index, elem) { sync_elements(index, elem, './listPolgroups'); }
+function sync_topics(index, elem) { sync_elements(index, elem, './listTopics'); }
+
+if(typeof(String.prototype.trim) === "undefined") {
+ String.prototype.trim = function()
+ {
+ return String(this).replace(/^\s+|\s+$/g, '');
+ };
+}
+
(function($) {
$().ready(function() {
- $('.author-autocomplete').autocomplete('./listAuthors', {
+ $('.author-autocomplete').each(sync_authors).autocomplete('./listAuthors', {
}).result(autocomplete_ready);
- $('.polgroup-autocomplete').autocomplete('./listPolgroups', {
+ $('.polgroup-autocomplete').each(sync_polgroups).autocomplete('./listPolgroups', {
}).result(autocomplete_ready);
- $('.topic-autocomplete').autocomplete('./listTopics', {
+ $('.topic-autocomplete').each(sync_topics).autocomplete('./listTopics', {
}).result(autocomplete_ready);
});
})(jQuery);
diff --git a/tabellio/searchform/form.py b/tabellio/searchform/form.py
index 41f137b..5d7cf2b 100644
--- a/tabellio/searchform/form.py
+++ b/tabellio/searchform/form.py
@@ -51,8 +51,16 @@ class ListAuthorsView(BrowserView):
def __call__(self):
self.portal = getToolByName(self.context, 'portal_url').getPortalObject()
self.settings = component.getUtility(IRegistry).forInterface(ITabellioSettings, False)
-
self.request.response.setHeader('Content-type', 'text/plain')
+
+ id = self.request.form.get('id')
+ if id:
+ try:
+ t = getattr(self.deputies_folder, id)
+ except AttributeError:
+ return 'XXX'
+ return t.Title()
+
s = []
q = self.request.form.get('q').lower()
for object in self.deputies_folder.objectValues():
@@ -83,8 +91,16 @@ class ListPolgroupsView(BrowserView):
def __call__(self):
self.portal = getToolByName(self.context, 'portal_url').getPortalObject()
self.settings = component.getUtility(IRegistry).forInterface(ITabellioSettings, False)
-
self.request.response.setHeader('Content-type', 'text/plain')
+
+ id = self.request.form.get('id')
+ if id:
+ try:
+ t = getattr(self.polgroups_folder, id)
+ except AttributeError:
+ return 'XXX'
+ return t.Title()
+
s = []
q = self.request.form.get('q').lower()
for object in self.polgroups_folder.objectValues():
@@ -98,9 +114,18 @@ class ListPolgroupsView(BrowserView):
class ListTopicsView(BrowserView):
def __call__(self):
from plone.i18n.normalizer.fr import normalizer
- query_terms = [normalizer.normalize(x).lower() for x in self.request.form.get('q').split()]
topics = tabellio.config.utils.get_topics_dict()
self.request.response.setHeader('Content-type', 'text/plain')
+
+ id = self.request.form.get('id')
+ if id:
+ try:
+ return '%s' % topics.get(id, id)[0]
+ except KeyError:
+ return 'XXX'
+
+ query_terms = [normalizer.normalize(x).lower() for x in self.request.form.get('q').split()]
+
r = []
for key, value in topics.items():
for term in query_terms:
diff --git a/tabellio/searchform/polgroups_input.pt b/tabellio/searchform/polgroups_input.pt
index f0e7bfc..e5aa507 100644
--- a/tabellio/searchform/polgroups_input.pt
+++ b/tabellio/searchform/polgroups_input.pt
@@ -1,6 +1,6 @@
-
+
diff --git a/tabellio/searchform/topics_input.pt b/tabellio/searchform/topics_input.pt
index 7e71909..cee2997 100644
--- a/tabellio/searchform/topics_input.pt
+++ b/tabellio/searchform/topics_input.pt
@@ -1,6 +1,6 @@
-
+