Module: Decidim::Initiatives::InitiativeHelper

Includes:
SanitizeHelper
Included in:
CreateInitiativeController
Defined in:
app/helpers/decidim/initiatives/initiative_helper.rb

Overview

Helper method related to initiative object and its internal state.

Instance Method Summary collapse

Instance Method Details

#humanize_admin_state(state) ⇒ Object

Public: The state of an initiative from an administration perspective in a way that a human can understand.

state - String

Returns a String



37
38
39
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 37

def humanize_admin_state(state)
  I18n.t(state, scope: "decidim.initiatives.admin_states", default: :created)
end

#humanize_state(initiative) ⇒ Object

Public: The state of an initiative in a way a human can understand.

initiative - Decidim::Initiative.

Returns a String.



25
26
27
28
29
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 25

def humanize_state(initiative)
  I18n.t(initiative.accepted? ? "accepted" : "expired",
         scope: "decidim.initiatives.states",
         default: :expired)
end

#popularity_class(initiative) ⇒ Object



54
55
56
57
58
59
60
61
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 54

def popularity_class(initiative)
  return "popularity--level1" if popularity_level1?(initiative)
  return "popularity--level2" if popularity_level2?(initiative)
  return "popularity--level3" if popularity_level3?(initiative)
  return "popularity--level4" if popularity_level4?(initiative)
  return "popularity--level5" if popularity_level5?(initiative)
  ""
end

#popularity_level1?(initiative) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 63

def popularity_level1?(initiative)
  initiative.percentage.positive? && initiative.percentage < 40
end

#popularity_level2?(initiative) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 67

def popularity_level2?(initiative)
  initiative.percentage >= 40 && initiative.percentage < 60
end

#popularity_level3?(initiative) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 71

def popularity_level3?(initiative)
  initiative.percentage >= 60 && initiative.percentage < 80
end

#popularity_level4?(initiative) ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 75

def popularity_level4?(initiative)
  initiative.percentage >= 80 && initiative.percentage < 100
end

#popularity_level5?(initiative) ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 79

def popularity_level5?(initiative)
  initiative.percentage >= 100
end

#popularity_tag(initiative) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 41

def popularity_tag(initiative)
  (:div, class: "extra__popularity popularity #{popularity_class(initiative)}".strip) do
    5.times do
      concat((:span, class: "popularity__item") {})
    end

    concat((:span, class: "popularity__desc") do
      I18n.t("decidim.initiatives.initiatives.vote_cabin.supports_required",
             total_supports: initiative.scoped_type.supports_required)
    end)
  end
end

#state_badge_css_class(initiative) ⇒ Object

Public: The css class applied based on the initiative state to

the initiative badge.

initiative - Decidim::Initiative

Returns a String.



15
16
17
18
# File 'app/helpers/decidim/initiatives/initiative_helper.rb', line 15

def state_badge_css_class(initiative)
  return "success" if initiative.accepted?
  "warning"
end