Module: RegionsHelper

Defined in:
app/helpers/regions_helper.rb

Overview

Helper methods for handling regions

Instance Method Summary collapse

Instance Method Details

Parameters:

  • entity (Region)
  • text (String) (defaults to: entity.name)
  • options (Hash) (defaults to: {})


8
9
10
# File 'app/helpers/regions_helper.rb', line 8

def admin_region_link(entity, text = entity.name, options = {})
  link_to(text, admin_region_path(id: entity.id), options)
end

#child_regions_for_select(region_id, selected_id = 0, slug = '') ⇒ Object

Parameters:

  • region_id (Integer)
  • selected_id (Integer) (defaults to: 0)


55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/helpers/regions_helper.rb', line 55

def child_regions_for_select(region_id, selected_id = 0, slug = '')
  options = []
  if region_id.to_i < 1
    options << ['Центр', '', { data: { url: root_path } }]
  else
    options << ['Все', '', { data: { url: regional_index_path(region_slug: slug) } }]
  end
  Region.visible.with_posts.for_tree(nil, region_id).each do |region|
    url = regional_index_path(region_slug: region.long_slug)
    options << [region.short_name, region.id, { data: { url: url } }]
  end

  options_for_select(options, selected_id)
end

#current_region_for_select(selected_id = 0) ⇒ Object

Parameters:

  • selected_id (Integer) (defaults to: 0)


43
44
45
46
47
48
49
50
51
# File 'app/helpers/regions_helper.rb', line 43

def current_region_for_select(selected_id = 0)
  options = [['Центр', '', { data: { url: root_path } }]]
  Region.visible.with_posts.for_tree.each do |region|
    url = regional_index_path(region_slug: region.long_slug)
    options << [region.short_name, region.id, { data: { url: url } }]
  end

  options_for_select(options, selected_id)
end

#region_image_medium(entity) ⇒ Object

Parameters:



71
72
73
74
75
76
# File 'app/helpers/regions_helper.rb', line 71

def region_image_medium(entity)
  unless entity.image.blank?
    versions = "#{entity.image.medium_2x.url} 2x"
    image_tag(entity.image.medium.url, alt: entity.name, srcset: versions)
  end
end

#region_image_preview(entity, options = {}) ⇒ Object

Parameters:

  • entity (Region)
  • options (Hash) (defaults to: {})


14
15
16
17
18
19
20
21
22
23
24
# File 'app/helpers/regions_helper.rb', line 14

def region_image_preview(entity, options = {})
  return '' if entity&.id.nil?

  image_url = entity.data.dig('image', 'preview')

  return '' if image_url.nil?

  default_options = { alt: entity.name }

  image_tag(image_url, default_options.merge(options))
end

#regions_for_select(user = nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/helpers/regions_helper.rb', line 26

def regions_for_select(user = nil)
  options = [[t(:not_set), '']]
  if user.is_a?(User)
    allowed_ids = UserPrivilege.where(user: user).pluck(:region_id).uniq
    if allowed_ids.any?
      selection = Region.where(id: allowed_ids).for_tree
    else
      selection = Region.for_tree
    end
  else
    selection = Region.for_tree
  end
  selection.each { |r| options << [r.name, r.id] }
  options
end