Module: Nesta::View::Helpers
- Defined in:
- lib/nesta/helpers.rb
Instance Method Summary collapse
- #absolute_urls(text) ⇒ Object
- #article_summaries(articles) ⇒ Object
- #articles_heading ⇒ Object
- #atom_id(page = nil) ⇒ Object
- #format_date(date) ⇒ Object
-
#heading_or_site_title ⇒ Object
Returns the current page's heading or the site's title, if we don't have a current page, or the page doesn't have a heading defined.
- #latest_articles(count = 8) ⇒ Object
- #local_stylesheet_link_tag(name) ⇒ Object
- #nesta_atom_id_for_page(page) ⇒ Object
- #no_widow(text) ⇒ Object
-
#path_to(page_path, options = {}) ⇒ Object
Generates the full path to a given page, taking Rack routers and reverse proxies into account.
- #set_common_variables ⇒ Object
- #set_from_config(*variables) ⇒ Object
- #set_from_page(*variables) ⇒ Object
Instance Method Details
#absolute_urls(text) ⇒ Object
27 28 29 30 |
# File 'lib/nesta/helpers.rb', line 27 def absolute_urls(text) text.gsub!(/(<a href=['"])\//, '\1' + path_to('/', uri: true)) text end |
#article_summaries(articles) ⇒ Object
74 75 76 |
# File 'lib/nesta/helpers.rb', line 74 def article_summaries(articles) haml(:summaries, layout: false, locals: { pages: articles }) end |
#articles_heading ⇒ Object
78 79 80 |
# File 'lib/nesta/helpers.rb', line 78 def articles_heading @page.('articles heading') || "Articles on #{@page.heading}" end |
#atom_id(page = nil) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/nesta/helpers.rb', line 37 def atom_id(page = nil) if page page.atom_id || nesta_atom_id_for_page(page) else "tag:#{request.host},2009:/" end end |
#format_date(date) ⇒ Object
59 60 61 |
# File 'lib/nesta/helpers.rb', line 59 def format_date(date) date.strftime("%d %B %Y") end |
#heading_or_site_title ⇒ Object
Returns the current page's heading or the site's title, if we don't have a current page, or the page doesn't have a heading defined.
Useful in templates that generate links to social sharing sites, which need a suitable description for the page being shared or bookmarked.
53 54 55 56 57 |
# File 'lib/nesta/helpers.rb', line 53 def heading_or_site_title @page && @page.heading rescue Nesta::HeadingNotSet @title end |
#latest_articles(count = 8) ⇒ Object
70 71 72 |
# File 'lib/nesta/helpers.rb', line 70 def latest_articles(count = 8) Nesta::Page.find_articles[0..count - 1] end |
#local_stylesheet_link_tag(name) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/nesta/helpers.rb', line 63 def local_stylesheet_link_tag(name) pattern = File.("views/#{name}.s{a,c}ss", Nesta::App.root) if Dir.glob(pattern).size > 0 haml_tag :link, href: path_to("/css/#{name}.css"), rel: "stylesheet" end end |
#nesta_atom_id_for_page(page) ⇒ Object
32 33 34 35 |
# File 'lib/nesta/helpers.rb', line 32 def nesta_atom_id_for_page(page) published = page.date.strftime('%Y-%m-%d') "tag:#{request.host},#{published}:#{page.abspath}" end |
#no_widow(text) ⇒ Object
16 17 18 |
# File 'lib/nesta/helpers.rb', line 16 def no_widow(text) text.split[0...-1].join(" ") + " #{text.split[-1]}" end |
#path_to(page_path, options = {}) ⇒ Object
Generates the full path to a given page, taking Rack routers and reverse proxies into account.
Takes an options hash with a single option called uri. Set it
to true if you'd like the publicly accessible URI for the
path, rather than just the path relative to the site's root URI.
The default is false.
path_to(page.abspath, uri: true)
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/nesta/helpers.rb', line 92 def path_to(page_path, = {}) host = [] if [:uri] host << "http#{'s' if request.ssl?}://" if (request.env.include?("HTTP_X_FORWARDED_HOST") or request.port != (request.ssl? ? 443 : 80)) host << request.host_with_port else host << request.host end end uri_parts = [host.join('')] uri_parts << request.script_name.to_s if request.script_name uri_parts << page_path File.join(uri_parts) end |
#set_common_variables ⇒ Object
20 21 22 23 24 25 |
# File 'lib/nesta/helpers.rb', line 20 def set_common_variables @menu_items = Nesta::Menu.for_path('/') @site_title = Nesta::Config.title set_from_config(:title, :subtitle, :google_analytics_code) @heading = @title end |
#set_from_config(*variables) ⇒ Object
4 5 6 7 8 |
# File 'lib/nesta/helpers.rb', line 4 def set_from_config(*variables) variables.each do |var| instance_variable_set("@#{var}", Nesta::Config.send(var)) end end |
#set_from_page(*variables) ⇒ Object
10 11 12 13 14 |
# File 'lib/nesta/helpers.rb', line 10 def set_from_page(*variables) variables.each do |var| instance_variable_set("@#{var}", @page.send(var)) end end |