Module: PageLayoutHelper

Included in:
ApplicationController, Oauth::ApplicationsController, Oauth::AuthorizedApplicationsController
Defined in:
app/helpers/page_layout_helper.rb

Instance Method Summary collapse

Instance Method Details

#blank_container(enabled = false) ⇒ Object


121
122
123
124
125
126
127
# File 'app/helpers/page_layout_helper.rb', line 121

def blank_container(enabled = false)
  if @blank_container.nil?
    @blank_container = enabled
  else
    @blank_container
  end
end

#container_classObject


129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'app/helpers/page_layout_helper.rb', line 129

def container_class
  css_class = ["container-fluid"]

  unless fluid_layout
    css_class << "container-limited"
  end

  if blank_container
    css_class << "container-blank"
  end

  css_class.join(' ')
end

#faviconObject


43
44
45
# File 'app/helpers/page_layout_helper.rb', line 43

def favicon
  Gitlab::Favicon.main
end

#fluid_layoutObject


117
118
119
# File 'app/helpers/page_layout_helper.rb', line 117

def fluid_layout
  current_user && current_user.layout == "fluid"
end

#header_title(title = nil, title_url = nil) ⇒ Object


80
81
82
83
84
85
86
87
88
89
# File 'app/helpers/page_layout_helper.rb', line 80

def header_title(title = nil, title_url = nil)
  if title
    @header_title     = title
    @header_title_url = title_url
  else
    return @header_title unless @header_title_url

    breadcrumb_list_item(link_to(@header_title, @header_title_url))
  end
end

99
100
101
102
103
104
105
# File 'app/helpers/page_layout_helper.rb', line 99

def nav(name = nil)
  if name
    @nav = name
  else
    @nav
  end
end

#page_card_attributes(map = {}) ⇒ Object

Define or get attributes to be used as Twitter card metadata

map - Hash of label => data pairs. Keys become labels, values become data

Raises ArgumentError if given more than two attributes

Raises:

  • (ArgumentError)

61
62
63
64
65
66
67
# File 'app/helpers/page_layout_helper.rb', line 61

def page_card_attributes(map = {})
  raise ArgumentError, 'cannot provide more than two attributes' if map.length > 2

  @page_card_attributes ||= {}
  @page_card_attributes = map.reject { |_, v| v.blank? } if map.present?
  @page_card_attributes
end

#page_card_meta_tagsObject


69
70
71
72
73
74
75
76
77
78
# File 'app/helpers/page_layout_helper.rb', line 69

def page_card_meta_tags
  tags = []

  page_card_attributes.each_with_index do |pair, i|
    tags << tag(:meta, property: "twitter:label#{i + 1}", content: pair[0])
    tags << tag(:meta, property: "twitter:data#{i + 1}",  content: pair[1])
  end

  tags.join.html_safe
end

#page_description(description = nil) ⇒ Object

Define or get a description for the current page

description - String (default: nil)

If this helper is called multiple times with an argument, only the last description will be returned when called without an argument. Descriptions have newlines replaced with spaces and all HTML tags are sanitized.

Examples:

page_description # => "GitLab Community Edition"
page_description("Foo")
page_description # => "Foo"

page_description("<b>Bar</b>\nBaz")
page_description # => "Bar Baz"

Returns an HTML-safe String.


35
36
37
38
39
40
41
# File 'app/helpers/page_layout_helper.rb', line 35

def page_description(description = nil)
  if description.present?
    @page_description = description.squish
  elsif @page_description.present?
    sanitize(@page_description.truncate_words(30), tags: [])
  end
end

#page_imageObject


47
48
49
50
51
52
53
54
# File 'app/helpers/page_layout_helper.rb', line 47

def page_image
  default = image_url('gitlab_logo.png')

  subject = @project || @user || @group

  image = subject.avatar_url if subject.present?
  image || default
end

#page_title(*titles) ⇒ Object


4
5
6
7
8
9
10
11
12
13
14
15
# File 'app/helpers/page_layout_helper.rb', line 4

def page_title(*titles)
  @page_title ||= []

  @page_title.push(*titles.compact) if titles.any?

  if titles.any? && !defined?(@breadcrumb_title)
    @breadcrumb_title = @page_title.last
  end

  # Segments are separated by middot
  @page_title.join(" ยท ")
end

#search_contextObject

This helper ensures there is always a default `Gitlab::SearchContext` available to all controller that use the application layout.


109
110
111
112
113
114
115
# File 'app/helpers/page_layout_helper.rb', line 109

def search_context
  strong_memoize(:search_context) do
    next super if defined?(super)

    Gitlab::SearchContext::Builder.new(controller.view_context).build!
  end
end

91
92
93
94
95
96
97
# File 'app/helpers/page_layout_helper.rb', line 91

def sidebar(name = nil)
  if name
    @sidebar = name
  else
    @sidebar
  end
end