瀏覽代碼

[search] Support facets with spaces

Spaces and some special characters are supported (ie: 'abudhabi(bb:291c3cef)' or 'kuwait ;*')
Enrico Berti 12 年之前
父節點
當前提交
3d97636
共有 1 個文件被更改,包括 6 次插入5 次删除
  1. 6 5
      apps/search/src/search/templates/index.mako

+ 6 - 5
apps/search/src/search/templates/index.mako

@@ -17,6 +17,7 @@
 <%!
 from desktop.views import commonheader, commonfooter
 from django.utils.translation import ugettext as _
+import urllib
 %>
 
 <%namespace name="macros" file="macros.mako" />
@@ -78,27 +79,27 @@ ${ commonheader(_('Search'), "search", user, "40px") | n,unicode }
           found_value = ""
           for fq in solr_query['fq'].split('|'):
             if fq and fq.split(':')[0] == fld['field']:
-              found_value = fq.split(':')[1]
+              found_value = fq[fq.find(":")+1:]
               remove_list = solr_query['fq'].split('|')
               remove_list.remove(fq)
         %>
           % for group, count in macros.pairwise(fld['counts']):
             %if count > 0 and group != "" and found_value == "":
               % if fld['type'] == 'field':
-                <li><a href="?cores=${ current_cores }&query=${ solr_query['q'] }&fq=${ solr_query['fq'] }|${ fld['field'] }:${ group }${solr_query.get("sort") and '&sort=' + solr_query.get("sort") or ''}">${group}</a> <span class="counter">(${ count })</span></li>
+                <li><a href='?cores=${ current_cores }&query=${ solr_query['q'] }&fq=${ solr_query['fq'] }|${ fld['field'] }:"${ urllib.quote_plus(group.encode('ascii', 'xmlcharrefreplace')) }"${solr_query.get("sort") and '&sort=' + solr_query.get("sort") or ''}'>${group}</a> <span class="counter">(${ count })</span></li>
               % endif
               % if fld['type'] == 'range':
-                <li><a href="?cores=${ current_cores }&query=${ solr_query['q'] }&fq=${ solr_query['fq'] }|${ fld['field'] }:[${ group } TO ${ str(int(group) + int(fld['gap']) - 1) }]${solr_query.get("sort") and '&sort=' + solr_query.get("sort") or ''}">${ group } (${ count })</a></li>
+                <li><a href='?cores=${ current_cores }&query=${ solr_query['q'] }&fq=${ solr_query['fq'] }|${ fld['field'] }:["${ group }" TO "${ str(int(group) + int(fld['gap']) - 1) }"]${solr_query.get("sort") and '&sort=' + solr_query.get("sort") or ''}'>${ group } (${ count })</a></li>
               % endif
               % if fld['type'] == 'date':
                 <li class="dateFacetItem"><a href='?cores=${ current_cores }&query=${ solr_query['q'] }&fq=${ solr_query['fq'] }|${ fld['field'] }:"${ group }"${solr_query.get("sort") and '&sort=' + solr_query.get("sort") or ''}'><span class="dateFacet">${ group }</span> (${ count })</a></li>
               % endif
             %endif
             % if found_value != "":
-              % if fld['type'] == 'field' and group == found_value:
+              % if fld['type'] == 'field' and '"' + group + '"' == found_value:
                 <li><strong>${ group }</strong> <a href="?cores=${ current_cores }&query=${ solr_query['q'] }&fq=${'|'.join(remove_list)}${solr_query.get("sort") and '&sort=' + solr_query.get("sort") or ''}"><i class="icon-remove"></i></a></li>
               %endif
-              % if fld['type'] == 'range' and "[" + group + " TO " + str(int(group) + int(fld['gap']) - 1) + "]" == found_value:
+              % if fld['type'] == 'range' and '["' + group + '" TO "' + str(int(group) + int(fld['gap']) - 1) + '"]' == found_value:
                 <li><strong>${ group }</strong> <a href="?cores=${ current_cores }&query=${ solr_query['q'] }&fq=${'|'.join(remove_list)}${solr_query.get("sort") and '&sort=' + solr_query.get("sort") or ''}"><i class="icon-remove"></i></a></li>
               %endif
               % if fld['type'] == 'date' and '"' + group + '"' == found_value: