Class: Hobix::Page

Inherits:
Object
  • Object
show all
Defined in:
lib/hobix/weblog.rb

Overview

The Page class is very simple class which contains information specific to a template.

Introduction

The id, next and prev accessors provide ids for the current page and its neighbors (for example, in the case of monthly archives, which may have surrounding months.)

To get complete URLs for each of the above, use: link, next_link, and prev_link.

The timestamp accessor contains the earliest date pertinent to the page. For example, in the case of a monthly archive, it will contain a Time object for the first day of the month. In the case of the ‘index’ page, you’ll get a Time object for the earliest entry on the page.

The updated accessor contains the latest date pertinent to the page. Usually this would be the most recent modification time among entries on the page. This accessor is used by the regeneration system to determine if a page needs regeneration. See Hobix::Weblog#regenerate for more.

Context in Hobix

There are only two places you’ll encounter this class in Hobix.

If you are writing an output plugin, a Page class is passed in the vars hash to the BaseOutput#load method. You’ll find the class in vars.

If you are writing ERB or RedRum templates, these vars are passed into the templates. The Page class is accessible as a variable called ‘page’.

Examples

Example 1: Pagination in a Template

Let’s say we want every entry in our site to contain links to the entries which are chronologically nearby.

If we’re using RedRum templates, we could do the following in entry.html.redrum:

<% if page.prev %>"last":<%= page.prev_link %><% end %>
<% if page.next %>"next":<%= page.next_link %><% end %>

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id) ⇒ Page

Returns a new instance of Page.



96
97
98
# File 'lib/hobix/weblog.rb', line 96

def initialize( id )
    @id = id
end

Instance Attribute Details

Returns the value of attribute link.



95
96
97
# File 'lib/hobix/weblog.rb', line 95

def link
  @link
end

#nextObject

Returns the value of attribute next.



95
96
97
# File 'lib/hobix/weblog.rb', line 95

def next
  @next
end

#prevObject

Returns the value of attribute prev.



95
96
97
# File 'lib/hobix/weblog.rb', line 95

def prev
  @prev
end

#timestampObject

Returns the value of attribute timestamp.



95
96
97
# File 'lib/hobix/weblog.rb', line 95

def timestamp
  @timestamp
end

#updatedObject

Returns the value of attribute updated.



95
96
97
# File 'lib/hobix/weblog.rb', line 95

def updated
  @updated
end

Instance Method Details

#add_path(dir, ext) ⇒ Object

:nodoc:



109
110
111
# File 'lib/hobix/weblog.rb', line 109

def add_path( dir, ext ) #:nodoc:
    @dir, @ext = dir, ext
end

#dirj(dir, link) ⇒ Object

:nodoc:



103
104
105
106
107
108
# File 'lib/hobix/weblog.rb', line 103

def dirj( dir, link ) #:nodoc:
    if link[0] != ?/ and link != '.' 
        link = File.join( dir == '.' ? "/" : dir, link )
    end
    link
end

#idObject



99
# File 'lib/hobix/weblog.rb', line 99

def id; dirj( @dir, @id ).gsub( /^\/+/, '' ); end


101
# File 'lib/hobix/weblog.rb', line 101

def next_link; dirj( @dir, @next ) + @ext if @next; end


102
# File 'lib/hobix/weblog.rb', line 102

def prev_link; dirj( @dir, @prev ) + @ext if @prev; end

#reference_fieldsObject



112
# File 'lib/hobix/weblog.rb', line 112

def reference_fields; [:next, :prev]; end

#referencesObject



113
# File 'lib/hobix/weblog.rb', line 113

def references; reference_fields.map { |f| self.send f }.compact; end