Skip to content
Snippets Groups Projects
Commit 027c34a5 authored by Dennis's avatar Dennis
Browse files

Merge branch 'autocomplete'

parents 5407174b 6da178af
No related branches found
No related tags found
No related merge requests found
......@@ -15,10 +15,15 @@ from ckan.common import c, request, config
import hashlib
import ckan.plugins.toolkit as toolkit
from ckanext.dcat.controllers import DCATController
from ckan.lib.search.common import (
make_connection, SearchError, SearchQueryError
)
import pysolr
abort = base.abort
log = logging.getLogger(__name__)
class OdshRouteController(HomeController):
def info_page(self):
h.redirect_to('http://www.schleswig-holstein.de/odpinfo')
......@@ -27,6 +32,7 @@ class OdshRouteController(HomeController):
def not_found(self):
abort(404)
class OdshUserController(UserController):
def me(self, locale=None):
if not c.user:
......@@ -63,9 +69,11 @@ class OdshUserController(UserController):
abort(404)
return super(OdshUserController,self).activity(id, offset)
class OdshPackageController(PackageController):
pass
class OdshApiController(ApiController):
def action(self, logic_function, ver=None):
try:
......@@ -91,11 +99,13 @@ class OdshApiController(ApiController):
return ApiController.action(self, logic_function, ver)
class OdshDCATController(DCATController):
def read_catalog(self, _format):
matomo.create_matomo_request()
return DCATController.read_catalog(self,_format)
class OdshFeedController(FeedController):
def custom(self):
matomo.create_matomo_request()
......@@ -153,3 +163,21 @@ class OdshFeedController(FeedController):
feed_guid=_create_atom_id(atom_url),
feed_url=feed_url,
navigation_urls=navigation_urls)
class OdshAutocompleteController(ApiController):
def autocomplete(self, q):
query = {
'spellcheck.q': q,
'wt': 'json'}
conn = make_connection(decode_dates=False)
log.debug('Suggest query: %r' % query)
try:
solr_response = conn.search('', search_handler='suggest', **query)
except pysolr.SolrError as e:
raise SearchError('SOLR returned an error running query: %r Error: %r' %
(query, e))
suggest = solr_response.raw_response.get('spellcheck')
return base.response.body_file.write(str(suggest))
'use strict';
$(function () {
// Activate search suggestions for the search bar in the header and for the
// search bar used in the body.
$('.site-search input, .search').autocomplete({
delay: 500,
html: true,
minLength: 2,
source: function (request, response) {
var url = ckan.SITE_ROOT + '/autocomplete/' + request.term;
$.getJSON(url)
.done(function (data) {
console.log(data);
response(data['result']);
});
}
});
})
......@@ -76,12 +76,23 @@ def remove_route(map,routename):
map._routenames.pop(route.name)
break
class OdshIcapPlugin(plugins.SingletonPlugin):
plugins.implements(plugins.IUploader, inherit=True)
def get_resource_uploader(self, data_dict):
return ODSHResourceUpload(data_dict)
class OdshAutocompletePlugin(plugins.SingletonPlugin):
plugins.implements(plugins.IRoutes, inherit=True)
def before_map(self, map):
controller = 'ckanext.odsh.controller:OdshAutocompleteController'
map.connect('/autocomplete/{q}', controller=controller, action='autocomplete')
return map
class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm):
plugins.implements(plugins.IConfigurer)
plugins.implements(plugins.ITemplateHelpers)
......
.ui-autocomplete .ui-menu-item a,
.ui-autocomplete .ui-menu-item a:active,
.ui-autocomplete .ui-menu-item a:focus,
.ui-autocomplete .ui-menu-item a:hover,
.ui-autocomplete .ui-menu-item a:visited {
display: block;
text-decoration: none;
}
......@@ -6,6 +6,8 @@
<link rel="stylesheet" href="/odsh.css?refresh={{ range(1,10000) | random }}" />
<link rel="stylesheet" href="/odsh_header.css?refresh={{ range(1,10000) | random }}" />
<link rel="stylesheet" href="/bootstrap-multiselect.css" />
<link rel="stylesheet" href="/autocomplete.css" />
{% resource 'odsh/autocomplete.js' %}
{% endblock %}
{% block head_extras %}
......
......@@ -84,6 +84,7 @@ setup(
odsh_icap=ckanext.odsh.plugin:OdshIcapPlugin
statistikamtnord_harvester=ckanext.odsh.harvesters:StatistikamtNordHarvester
kiel_harvester=ckanext.odsh.harvesters:KielHarvester
odsh_autocomplete=ckanext.odsh.plugin:OdshAutocompletePlugin
[paste.paster_command]
odsh_initialization = ckanext.odsh.commands.initialization:Initialization
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment