Class: SakaiInfo::Page

Inherits:
SakaiObject show all
Defined in:
lib/sakai-info/page.rb

Constant Summary collapse

@@cache =
{}

Instance Attribute Summary collapse

Attributes inherited from SakaiObject

#id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SakaiObject

all_serializations, #dbrow_only_serialization, #dbrow_serialization, #object_type_serialization, #serialize, #to_json, #to_yaml

Constructor Details

#initialize(dbrow) ⇒ Page

Returns a new instance of Page.



42
43
44
45
46
47
48
49
50
# File 'lib/sakai-info/page.rb', line 42

def initialize(dbrow)
  @dbrow = dbrow

  @id = dbrow[:page_id]
  @title = dbrow[:title]
  @order = dbrow[:site_order].to_i
  @layout = dbrow[:layout]
  @site_id = dbrow[:site_id]
end

Instance Attribute Details

#dbrowObject (readonly)

Returns the value of attribute dbrow.



14
15
16
# File 'lib/sakai-info/page.rb', line 14

def dbrow
  @dbrow
end

#layoutObject (readonly)

Returns the value of attribute layout.



14
15
16
# File 'lib/sakai-info/page.rb', line 14

def layout
  @layout
end

#orderObject (readonly)

Returns the value of attribute order.



14
15
16
# File 'lib/sakai-info/page.rb', line 14

def order
  @order
end

#site_idObject (readonly)

Returns the value of attribute site_id.



14
15
16
# File 'lib/sakai-info/page.rb', line 14

def site_id
  @site_id
end

#titleObject (readonly)

Returns the value of attribute title.



14
15
16
# File 'lib/sakai-info/page.rb', line 14

def title
  @title
end

Class Method Details

.count_by_site_id(site_id) ⇒ Object



33
34
35
# File 'lib/sakai-info/page.rb', line 33

def self.count_by_site_id(site_id)
  Page.query_by_site_id(site_id).count
end

.find(id) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/sakai-info/page.rb', line 17

def self.find(id)
  if @@cache[id].nil?
    row = DB.connect[:sakai_site_page].where(:page_id => id).first
    if row.nil?
      raise ObjectNotFoundException.new(Page, id)
    end

    @@cache[id] = Page.new(row)
  end
  @@cache[id]
end

.find_by_site_id(site_id) ⇒ Object



37
38
39
40
# File 'lib/sakai-info/page.rb', line 37

def self.find_by_site_id(site_id)
  Page.query_by_site_id(site_id).order(:site_order).all.
    collect { |row| @@cache[row[:page_id]] = Page.new(row) }
end

.query_by_site_id(site_id) ⇒ Object



29
30
31
# File 'lib/sakai-info/page.rb', line 29

def self.query_by_site_id(site_id)
  DB.connect[:sakai_site_page].where(:site_id => site_id)
end

Instance Method Details

#default_serializationObject



84
85
86
87
88
# File 'lib/sakai-info/page.rb', line 84

def default_serialization
  result = site_summary_serialization
  result["site"] = self.site.serialize(:summary)
  result
end

#propertiesObject



56
57
58
# File 'lib/sakai-info/page.rb', line 56

def properties
  @properties ||= PageProperty.find_by_page_id(@id)
end

#siteObject



52
53
54
# File 'lib/sakai-info/page.rb', line 52

def site
  @site ||= Site.find(@site_id)
end

#site_summary_serializationObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/sakai-info/page.rb', line 73

def site_summary_serialization
  result = summary_serialization
  result.delete("site_id")
  result["order"] = self.order
  result["tools"] = self.tools.collect { |tool| tool.serialize(:summary) }
  if not self.properties.nil? and self.properties != {}
    result["properties"] = self.properties
  end
  result
end

#summary_serializationObject

serialization



65
66
67
68
69
70
71
# File 'lib/sakai-info/page.rb', line 65

def summary_serialization
  {
    "id" => self.id,
    "title" => self.title,
    "site_id" => self.site_id
  }
end

#toolsObject



60
61
62
# File 'lib/sakai-info/page.rb', line 60

def tools
  @tools ||= Tool.find_by_page_id(@id)
end