Module: SearchHelper
- Defined in:
- frontend/app/helpers/search_helper.rb
Defined Under Namespace
Classes: ExtraColumn
Instance Method Summary (collapse)
-
- (Object) add_browse_columns(model, enum_locales = {})
-
- (Object) add_column(label, block, opts = {})
-
- (Object) add_identifier_column
-
- (Boolean) allow_multi_select?
-
- (Object) build_search_params(opts = {})
-
- (Boolean) can_edit_search_result?(record)
-
- (Object) extra_columns
-
- (Boolean) extra_columns?
-
- (Object) identifier_column_header_label
-
- (Object) no_title!
in case the title needs to be handled among other columns.
-
- (Boolean) show_identifier_column?
-
- (Boolean) show_record_type?
-
- (Boolean) show_title_column?
-
- (Object) title_column_header(title_header)
-
- (Object) title_column_header_label
-
- (Object) title_sort_label
Instance Method Details
- (Object) add_browse_columns(model, enum_locales = {})
[View source]
141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'frontend/app/helpers/search_helper.rb', line 141 def add_browse_columns(model, enum_locales = {}) (1..5).to_a.each do |n| prop = user_prefs["#{model}_browse_column_#{n}"] if prop && prop != 'no_value' enum_locale_key = enum_locales.has_key?(prop) ? enum_locales[prop] : "#{model}_#{prop}" add_column(I18n.t("#{model}.#{prop}"), proc { |record| v = record[prop] || ASUtils.json_parse(record['json'])[prop] I18n.t("enumerations.#{enum_locale_key}.#{v}", :default => v.to_s) }, :sortable => true, :sort_by => prop) end end end |
- (Object) add_column(label, block, opts = {})
[View source]
121 122 123 124 125 126 127 128 129 130 |
# File 'frontend/app/helpers/search_helper.rb', line 121 def add_column(label, block, opts = {}) @extra_columns ||= [] if opts[:sortable] && opts[:sort_by] @search_data.sort_fields << opts[:sort_by] end col = ExtraColumn.new(label, block, opts, @search_data) @extra_columns.push(col) end |
- (Object) add_identifier_column
[View source]
132 133 134 135 136 137 138 139 |
# File 'frontend/app/helpers/search_helper.rb', line 132 def add_identifier_column prop = "identifier" add_column(identifier_column_header_label, proc { |record| record[prop] || ASUtils.json_parse(record['json'])[prop] }, :sortable => true, :sort_by => prop) end |
- (Boolean) allow_multi_select?
64 65 66 |
# File 'frontend/app/helpers/search_helper.rb', line 64 def allow_multi_select? @show_multiselect_column end |
- (Object) build_search_params(opts = {})
[View source]
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'frontend/app/helpers/search_helper.rb', line 3 def build_search_params(opts = {}) search_params = {} search_params["filter_term"] = Array(opts["filter_term"] || params["filter_term"]).clone search_params["filter_term"].concat(Array(opts["add_filter_term"])) if opts["add_filter_term"] search_params["filter_term"] = search_params["filter_term"].reject{|f| Array(opts["remove_filter_term"]).include?(f)} if opts["remove_filter_term"] search_params["simple_filters"] = Array(opts["simple_filters"] || params["simple_filters"]).clone if params["multiplicity"] search_params["multiplicity"] = params["multiplicity"] end sort = (opts["sort"] || params["sort"]) if show_identifier_column? search_params["display_identifier"] = true end # if the browse list was sorted by default if sort.nil? && !@search_data.nil? && @search_data.sorted? sort = @search_data[:criteria]["sort"] end if sort sort = sort.split(', ') sort[1] = opts["sort2"] if opts["sort2"] search_params["sort"] = sort.uniq.join(', ') end if (opts["format"] || params["format"]).blank? search_params.delete("format") else search_params["format"] = opts["format"] || params["format"] end search_params["linker"] = opts["linker"] || params["linker"] || false search_params["type"] = opts["type"] || params["type"] search_params["facets"] = opts["facets"] || params["facets"] search_params["exclude"] = opts["exclude"] || params["exclude"] search_params["listing_only"] = true if params["listing_only"] search_params["include_components"] = opts.has_key?("include_components") ? opts["include_components"] : params["include_components"] search_params["q"] = opts["q"] || params["q"] # retain advanced search params if params["advanced"] search_params["advanced"] = params["advanced"] params.keys.each do |param_key| ["op", "f", "v", "dop", "t"].each do |adv_search_prefix| if param_key =~ /^#{adv_search_prefix}\d+/ search_params[param_key] = params[param_key] end end end end search_params.reject{|k,v| k.blank? or v.blank?} end |
- (Boolean) can_edit_search_result?(record)
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'frontend/app/helpers/search_helper.rb', line 107 def can_edit_search_result?(record) return user_can?('update_container_record', record['id']) if record['primary_type'] === "top_container" return user_can?('manage_repository', record['id']) if record['primary_type'] === "repository" return user_can?('update_location_record') if record['primary_type'] === "location" return user_can?('update_subject_record') if record['primary_type'] === "subject" return user_can?('update_classification_record') if ["classification", "classification_term"].include?(record['primary_type']) return user_can?('update_agent_record') if Array(record['types']).include?("agent") return user_can?('update_accession_record') if record['primary_type'] === "accession" return user_can?('update_resource_record') if ["resource", "archival_object"].include?(record['primary_type']) return user_can?('update_digital_object_record') if ["digital_object", "digital_object_component"].include?(record['primary_type']) end |
- (Object) extra_columns
[View source]
156 157 158 |
# File 'frontend/app/helpers/search_helper.rb', line 156 def extra_columns @extra_columns end |
- (Boolean) extra_columns?
161 162 163 164 165 |
# File 'frontend/app/helpers/search_helper.rb', line 161 def extra_columns? return false if @extra_columns == nil !@extra_columns.empty? end |
- (Object) identifier_column_header_label
[View source]
102 103 104 |
# File 'frontend/app/helpers/search_helper.rb', line 102 def identifier_column_header_label I18n.t("search_results.result_identifier") end |
- (Object) no_title!
in case the title needs to be handled among other columns
75 76 77 |
# File 'frontend/app/helpers/search_helper.rb', line 75 def no_title! @no_title = true end |
- (Boolean) show_identifier_column?
79 80 81 |
# File 'frontend/app/helpers/search_helper.rb', line 79 def show_identifier_column? @display_identifier end |
- (Boolean) show_record_type?
69 70 71 |
# File 'frontend/app/helpers/search_helper.rb', line 69 def show_record_type? !@search_data.single_type? || (@search_data[:criteria].has_key?("type[]") && @search_data[:criteria]["type[]"].include?("agent")) end |
- (Boolean) show_title_column?
83 84 85 |
# File 'frontend/app/helpers/search_helper.rb', line 83 def show_title_column? @search_data.has_titles? && !@no_title end |
- (Object) title_column_header(title_header)
[View source]
88 89 90 |
# File 'frontend/app/helpers/search_helper.rb', line 88 def title_column_header(title_header) @title_column_header = title_header end |
- (Object) title_column_header_label
[View source]
93 94 95 |
# File 'frontend/app/helpers/search_helper.rb', line 93 def title_column_header_label @title_column_header or I18n.t("search_results.result_title") end |
- (Object) title_sort_label
[View source]
98 99 100 |
# File 'frontend/app/helpers/search_helper.rb', line 98 def title_sort_label @title_column_header or I18n.t("search_sorting.title_sort") end |