Module: PageLayoutHelper
- Included in:
- ApplicationController, Oauth::ApplicationsController, Oauth::AuthorizedApplicationsController
- Defined in:
- app/helpers/page_layout_helper.rb
Instance Method Summary collapse
- #blank_container(enabled = false) ⇒ Object
- #container_class ⇒ Object
- #favicon ⇒ Object
- #fluid_layout ⇒ Object
- #header_title(title = nil, title_url = nil) ⇒ Object
- #nav(name = nil) ⇒ Object
-
#page_card_attributes(map = {}) ⇒ Object
Define or get attributes to be used as Twitter card metadata.
- #page_card_meta_tags ⇒ Object
-
#page_description(description = nil) ⇒ Object
Define or get a description for the current page.
- #page_image ⇒ Object
- #page_title(*titles) ⇒ Object
-
#search_context ⇒ Object
This helper ensures there is always a default `Gitlab::SearchContext` available to all controller that use the application layout.
- #sidebar(name = nil) ⇒ Object
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_class ⇒ Object
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 |
#favicon ⇒ Object
43 44 45 |
# File 'app/helpers/page_layout_helper.rb', line 43 def favicon Gitlab::Favicon.main end |
#fluid_layout ⇒ Object
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 (link_to(@header_title, @header_title_url)) end end |
#nav(name = nil) ⇒ Object
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
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_tags ⇒ Object
69 70 71 72 73 74 75 76 77 78 |
# File 'app/helpers/page_layout_helper.rb', line 69 def = [] page_card_attributes.each_with_index do |pair, i| << tag(:meta, property: "twitter:label#{i + 1}", content: pair[0]) << tag(:meta, property: "twitter:data#{i + 1}", content: pair[1]) end .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_image ⇒ Object
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_context ⇒ Object
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 |
#sidebar(name = nil) ⇒ Object
91 92 93 94 95 96 97 |
# File 'app/helpers/page_layout_helper.rb', line 91 def (name = nil) if name @sidebar = name else @sidebar end end |