activescaffold/active_scaffold

View on GitHub
app/views/active_scaffold_overrides/_field_search.html.erb

Summary

Maintainability
Test Coverage
<%
  url_options ||= params_for(action: :index, id: nil, search: nil)
  submit_text ||= :search
  xhr ||= request.xhr?
  options = {
    id: element_form_id(action: 'search'),
    class: "as_form search",
    remote: xhr,
    data: {loading: true},
    method: :get
  }
  options[:class] << ' floating-footer' if active_scaffold_config.field_search.floating_footer
  
  hidden_params = url_options.except(:controller, :action, :id, :search).to_query.split(Rack::Utils::DEFAULT_SEP)
-%>

<%= form_tag url_options, options %>
  <% hidden_params.each do |pair| -%>
    <% key, value = pair.split('=', 2).map { |str| Rack::Utils.unescape(str) } -%>
    <%= hidden_field_tag(key, value) %>
  <% end -%>
  
  <ol class="form">
    <% visibles, hiddens = visibles_and_hiddens(active_scaffold_config.field_search) %>
    <% visibles.each do |column| -%>
      <li class="form-element <%= column.css_class unless column.css_class.is_a?(Proc) %>"><%= search_attribute(column, @record) %></li>
    <% end -%>
    <% unless hiddens.empty?  -%>
      <li class="sub-section">
      <% further_options_id = sub_section_id(:sub_section => 'further_options') %>
      <h5>
        <%= as_(:optional_attributes) %>
        <%= link_to_visibility_toggle(further_options_id, {:default_visible => false}) %>
      </h5>
      <ol id ="<%= further_options_id %>" class="form" style="display:none;">
      <% hiddens.each do |column| -%>
        <li class="form-element <%= column.css_class unless column.css_class.is_a?(Proc) %>"><%= search_attribute(column, @record) %></li>
      <% end -%>
      </ol>
      </li>
  <% end -%>
  </ol>
  <p class="form-footer">
    <%
      reset_attrs = {class: 'reset'}
      if active_scaffold_config.field_search.reset_form
        reset_attrs[:data] = {reset: true}
      else
        reset_attrs[:class] << ' as_cancel'
        reset_attrs.merge! remote: true, data: {refresh: true}
      end
    %>
    <%= submit_tag as_(submit_text), :class => "submit" %>
    <%= link_to as_(:reset), url_for(url_options.merge(:search => '')), reset_attrs unless local_assigns[:skip_reset] %>
    <%= loading_indicator_tag(:action => :search) %>
  </p>
</form>