Module: Workarea::CurrentSegments

Extended by:
ActiveSupport::Concern
Includes:
CurrentTracking
Included in:
ApplicationController
Defined in:
app/controllers/workarea/current_segments.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CurrentTracking

#current_metrics, #current_referrer, #current_visit, #ensure_current_metrics, #update_tracking!

Methods included from HttpCaching

#cache_page, #http_caching?

Class Method Details

.has_segmented_content!Object



17
18
19
# File 'app/controllers/workarea/current_segments.rb', line 17

def self.has_segmented_content!
  Thread.current[:segmented_content] = true
end

.reset_segmented_contentObject



21
22
23
# File 'app/controllers/workarea/current_segments.rb', line 21

def self.reset_segmented_content
  Thread.current[:segmented_content] = nil
end

.segmented_content?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'app/controllers/workarea/current_segments.rb', line 13

def self.segmented_content?
  !!Thread.current[:segmented_content]
end

Instance Method Details

#apply_segmentsObject



39
40
41
# File 'app/controllers/workarea/current_segments.rb', line 39

def apply_segments
  Segment.with_current(current_visit&.applied_segments) { yield }
end

#current_segmentsObject



35
36
37
# File 'app/controllers/workarea/current_segments.rb', line 35

def current_segments
  Segment.current
end

#mark_segmented_contentObject



43
44
45
46
47
48
49
50
# File 'app/controllers/workarea/current_segments.rb', line 43

def mark_segmented_content
  if CurrentSegments.segmented_content?
    response.set_header('X-Workarea-Segmented-Content', 'true')
  end

ensure
  CurrentSegments.reset_segmented_content
end

#override_segments=(segments) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'app/controllers/workarea/current_segments.rb', line 25

def override_segments=(segments)
  if segments.blank?
    session.delete(:segment_ids)
    return
  end

  session[:segment_ids] = segments.map(&:id)
  current_visit.override_segments = segments
end