From e9e68d6d99d44afbdff859a379ba65922c9e95ca Mon Sep 17 00:00:00 2001 From: Tom Rees Date: Fri, 20 Jan 2012 00:58:38 +0000 Subject: [PATCH] [#1521][m]: First pass at search-within-groups: Simple title-matching search implementation. --- ckan/controllers/group.py | 5 ++++- ckan/public/css/style.css | 9 ++++++++- ckan/templates/group/read.html | 11 +++++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ckan/controllers/group.py b/ckan/controllers/group.py index 4af61cc2e97..6fc09a0036a 100644 --- a/ckan/controllers/group.py +++ b/ckan/controllers/group.py @@ -74,6 +74,7 @@ def read(self, id): 'user': c.user or c.author, 'schema': self._form_to_db_schema()} data_dict = {'id': id} + q = c.q = request.params.get('q') # unicode format (decoded from utf8) try: c.group_dict = get_action('group_show')(context, data_dict) c.group = context['group'] @@ -108,7 +109,9 @@ def read(self, id): result = [] for pkg_rev in c.page.items: - result.append(package_dictize(pkg_rev, context)) + pkg_dict = package_dictize(pkg_rev, context) + if (not q) or (q in pkg_dict['title']): + result.append(pkg_dict) c.page.items = result return render('group/read.html') diff --git a/ckan/public/css/style.css b/ckan/public/css/style.css index f9b434e1699..41892725d0b 100644 --- a/ckan/public/css/style.css +++ b/ckan/public/css/style.css @@ -598,6 +598,13 @@ form.simple-form input[type=password] { margin: 2em 0; } +.group-search-box { + float: right; +} +.group-search-box input[type="search"] { + width: 300px; +} + /* ============== */ /* = User Index = */ @@ -674,7 +681,7 @@ body.package.search #menusearch { .dataset-search { margin-bottom: 35px; } -.dataset-search input.search { +input.search { width: 100%; font-size: 1.2em; margin: 0px; diff --git a/ckan/templates/group/read.html b/ckan/templates/group/read.html index cc52728e4f5..0f5479b8b01 100644 --- a/ckan/templates/group/read.html +++ b/ckan/templates/group/read.html @@ -28,8 +28,15 @@

State: ${c.group['state']}

${c.group_description_formatted}
-

Datasets:

-

There are ${c.page.item_count} datasets in this group.

+ +

Datasets

+

There are ${c.page.item_count} datasets in this group.

+

You searched for "${c.q}". Matched ${len(c.page.items)} out of ${c.page.item_count} datasets.

${c.page.pager()} ${package_list_from_dict(c.page.items)} ${c.page.pager()}