diff options
| -rw-r--r-- | data/templates/search/hit.htm | 28 | ||||
| -rw-r--r-- | data/templates/search/sidebar-filter.htm | 21 | ||||
| -rw-r--r-- | data/templates/search/sidebar.htm | 49 | ||||
| -rw-r--r-- | www/css/phinde.css | 12 | ||||
| -rw-r--r-- | www/index.php | 33 | ||||
| -rw-r--r-- | www/www-header.php | 8 |
6 files changed, 94 insertions, 57 deletions
diff --git a/data/templates/search/hit.htm b/data/templates/search/hit.htm index 3d8f633..4981017 100644 --- a/data/templates/search/hit.htm +++ b/data/templates/search/hit.htm @@ -1,11 +1,23 @@ {% set doc = hit._source %} <li class="hit"> - <a href="{{doc.url}}">{{doc.title}}</a> - {% if doc.author.name %} - by <a href="{{doc.author.url}}">{{doc.author.name}}</a> - {% endif %} - <br/><tt>{{doc.extra.cleanUrl}}</tt> - {% if doc.modate %} - <br/>Changed: {{doc.extra.day}} - {% endif %} + <span class="title"> + <a href="{{doc.url}}">{{doc.title}}</a> + {% if doc.author.name %} + by + <em> + {% if doc.author.url %} + <a href="{{doc.author.url}}">{{doc.author.name}}</a> + {% else %} + {{doc.author.name}} + {% endif %} + </em> + {% endif %} + </span> + <br/><tt class="url" title="{{doc.extra.cleanUrl}}">{{ellipsis(doc.extra.cleanUrl, 60)}}</tt> + <span class="extract"> + <br/> + {% if doc.modate %} + <span class="date">{{doc.extra.day|date("Y-m-d")}}</span> + {% endif %} + </span> </li> diff --git a/data/templates/search/sidebar-filter.htm b/data/templates/search/sidebar-filter.htm new file mode 100644 index 0000000..6c4bc81 --- /dev/null +++ b/data/templates/search/sidebar-filter.htm @@ -0,0 +1,21 @@ +{% if attribute(activeFilters, type) %} + <b>{{title}}</b> + <ul class="nav nav-pills"> + <li class="active"> + <a href="{{attribute(activeFilters, type).removeUrl}}"> + {{activeFilters[type].label|default('unknown')}} ❌ + </a> + </li> + </ul> +{% elseif attribute(aggregations, type).buckets|length > 1 %} +<b>{{title}}</b> +<ul class="nav nav-pills"> +{% for bucket in attribute(aggregations, type).buckets|slice(0, 10) %} + <li> + <a href="{{bucket.url}}"> + {{bucket.key|default('unknown')}} ({{bucket.doc_count}}) + </a> + </li> +{% endfor %} +</ul> +{% endif %} diff --git a/data/templates/search/sidebar.htm b/data/templates/search/sidebar.htm index 619301e..eaddaeb 100644 --- a/data/templates/search/sidebar.htm +++ b/data/templates/search/sidebar.htm @@ -1,48 +1,7 @@ <p> Filter results by: </p> -{% if aggregations.tags.buckets|length > 1 %} -<b>Tag</b> -<ul class="nav nav-pills"> -{% for bucket in aggregations.tags.buckets|slice(0, 10) %} - <li> - <a href="{{bucket.url}}">{{bucket.key}} ({{bucket.doc_count}})</a> - </li> -{% endfor %} -</ul> -{% endif %} - -{% if aggregations.domain.buckets|length > 1 %} -<!-- FIXME: negate domain --> -<b>Domain</b> -<ul class="nav nav-pills"> -{% for bucket in aggregations.domain.buckets|slice(0, 10) %} - <li> - <a href="{{bucket.url}}">{{bucket.key}} ({{bucket.doc_count}})</a> - </li> -{% endfor %} -</ul> -{% endif %} - -{% if aggregations.language.buckets|length > 1 %} -<b>Language</b> -<ul class="nav nav-pills"> -{% for bucket in aggregations.language.buckets|slice(0, 10) %} - <li> - <a href="{{bucket.url}}">{{bucket.key}} ({{bucket.doc_count}})</a> - </li> -{% endfor %} -</ul> -{% endif %} - -{% if aggregations.type.buckets|length > 1 %} -<b>Type</b> -<ul class="nav nav-pills"> -{% for bucket in aggregations.type.buckets|slice(0, 10) %} - <li> - <a href="{{bucket.url}}">{{bucket.key}} ({{bucket.doc_count}})</a> - </li> -{% endfor %} -</ul> -{% endif %} - +{% include 'search/sidebar-filter.htm' with {'type': 'tags', 'title': 'Tag'} %} +{% include 'search/sidebar-filter.htm' with {'type': 'domain', 'title': 'Domain'} %} +{% include 'search/sidebar-filter.htm' with {'type': 'language', 'title': 'Language'} %} +{% include 'search/sidebar-filter.htm' with {'type': 'type', 'title': 'Type'} %} diff --git a/www/css/phinde.css b/www/css/phinde.css index 1e34fcf..a3d593e 100644 --- a/www/css/phinde.css +++ b/www/css/phinde.css @@ -12,4 +12,16 @@ } .hit { margin-bottom: 2ex; +} +.hit .title { + font-size: 120%; +} +.hit .url { + color: #070; +} +.hit .extract { + font-size: 95%; +} +.hit .date { + color: #666; }
\ No newline at end of file diff --git a/www/index.php b/www/index.php index 8cdca41..257ad87 100644 --- a/www/index.php +++ b/www/index.php @@ -18,6 +18,8 @@ if (isset($_GET['page'])) { } $perPage = 10;//$GLOBALS['phinde']['perPage']; +$baseLink = '?q=' . urlencode($query); + $filters = array(); if (isset($_GET['filter'])) { $allowedFilter = array('domain', 'language', 'tags', 'term'); @@ -27,13 +29,37 @@ if (isset($_GET['filter'])) { } } } +$activeFilters = array(); +foreach ($filters as $type => $value) { + $activeFilters[$type] = array( + 'label' => $value, + 'removeUrl' => buildLink($baseLink, $filters, $type, null), + ); +} + +function buildLink($baseLink, $filters, $addFilterType, $addFilterValue) +{ + if ($addFilterValue === null) { + if (array_key_exists($addFilterType, $filters)) { + unset($filters[$addFilterType]); + } + } else { + $filters[$addFilterType] = $addFilterValue; + } + + $params = http_build_query(array('filter' => $filters)); + if (strlen($params)) { + return $baseLink . '&' . $params; + } + return $baseLink; +} $es = new Elasticsearch($GLOBALS['phinde']['elasticsearch']); $res = $es->search($query, $filters, $page, $perPage); $pager = new Html_Pager( $res->hits->total, $perPage, $page + 1, - '?q=' . $query + $baseLink ); foreach ($res->hits->hits as &$hit) { @@ -48,11 +74,9 @@ foreach ($res->hits->hits as &$hit) { } } -$baseLink = '?q=' . urlencode($query); foreach ($res->aggregations as $key => &$aggregation) { foreach ($aggregation->buckets as &$bucket) { - $bucket->url = $baseLink - . '&filter[' . urlencode($key) . ']=' . urlencode($bucket->key); + $bucket->url = buildLink($baseLink, $filters, $key, $bucket->key); } } //var_dump($res->aggregations); @@ -64,6 +88,7 @@ render( 'hitcount' => $res->hits->total, 'hits' => $res->hits->hits, 'aggregations' => $res->aggregations, + 'activeFilters' => $activeFilters, 'pager' => $pager ) ); diff --git a/www/www-header.php b/www/www-header.php index 60adacf..2ec8c2f 100644 --- a/www/www-header.php +++ b/www/www-header.php @@ -12,6 +12,14 @@ $GLOBALS['twig'] = new \Twig_Environment( ); $GLOBALS['twig']->addExtension(new \Twig_Extension_Debug()); +$twig->addFunction('ellipsis', new \Twig_Function_Function('\phinde\ellipsis')); +function ellipsis($text, $maxlength) +{ + if (strlen($text) > $maxlength) { + $text = substr($text, 0, $maxlength - 1) . '…'; + } + return $text; +} function render($tplname, $vars = array(), $return = false) { |
