[% close_facets = CGI.param('close_facet') || []; selected_facets = CGI.param('facet') || []; # collect facet type labels for easier sorting labels = []; FOR facet IN ctx.search_facets.values; labels.push(facet.cmf.label); END; FOR facet_label IN labels.sort; FOR facet IN ctx.search_facets.values; IF facet.cmf.label == facet_label; fclass = facet.cmf.field_class; fname = facet.cmf.name; close_key = fclass _ fname %]
[% facet.cmf.label %]
[% IF close_facets.grep(close_key).0; new_close = []; FOR fct IN close_facets; IF fct != close_key; new_close.push(fct); END; END; expand_url = mkurl('', {close_facet => new_close}); IF new_close.size == 0; expand_url = mkurl('', {}, ['close_facet']); END; %] [% l('Expand') %] [% ELSE %] [% l('Collapse') %] [% END %]
 
[% IF !close_facets.grep(close_key).0 %]
[% FOR facet_data IN facet.data; display_value = facet_data.value | html; param_string = fclass _ '|' _ fname _ '[' _ facet_data.value _ ']'; new_facets = []; this_selected = 0; FOR selected IN selected_facets; IF selected == param_string; this_selected = 1; ELSE; new_facets.push(selected); END; END; IF this_selected; # This facet is already selected by the user. # Link removes the facet from the set of selected facets. %]
[% IF new_facets.size == 0 %] [% display_value %] [% ELSE %] [% display_value %] [% END %]
([% facet_data.count %])
 
[% ELSE; # This facet is not currently selected. If selected, # append this facet to the list of currently active facets. %] [% END %] [% END %]
 
[% END %]
[% END %] [% END %] [% END %]