#-- # Copyright (C) 2007 Dimitrij Denissenko # Please read LICENSE document for more information. #++ module TicketFilterHelper def ticket_filter_selector(filter_set) filter_set.filters.collect do |filter| title = content_tag(:dt, h(filter.category_name)) links = content_tag(:dd, links_for_ticket_filter(filter)) content_tag(:dl, title + links) end.join("\n") + search_filter end protected def search_filter title = content_tag(:dt, _('Search')) links = content_tag(:dd, text_field_tag(:search_filter)) content_tag(:dl, title + links) + search_filter_observer end def search_filter_observer observe_field :search_filter, rl_ajax_options.merge(:frequency => 0.5, :with => 'search') end def links_for_ticket_filter(filter) filter.values.collect do |record| excl = exclusive_filter_link(filter, record) incl = inclusive_filter_link(filter, record) content_tag(:div, excl + ' ' + incl, :class => 'option') end.join("\n") end def link_to_ticket_filter(caption, options, html_options = {}) link_to(caption, options.merge(:report => nil), html_options) end def exclusive_filter_link(filter, record) caption = record.send(filter.name_method) options = { :title => _('Select filter') } options[:class] = 'active' if filter.include?(record.id) link_to_ticket_filter(h(caption), filter.to_params(record.id), options) end def inclusive_filter_link(filter, record) caption = filter.include?(record.id) ? image_tag('minus.png', :alt => _('Remove filter'), :title => _('Remove filter')) : image_tag('plus.png', :alt => _('Add filter'), :title => _('Add filter')) link_to_ticket_filter(caption, filter.to_params(record.id, false)) end end