forked from bofh/fetsite
74 lines
1.9 KiB
Ruby
74 lines
1.9 KiB
Ruby
class Wiki < Thema
|
|
validates :wikiname, :uniqueness=>true, :presence=>true
|
|
after_initialize :load_wiki
|
|
attr_accessible :wikiname, :wikiformat, :hidelink, :raw_data
|
|
WIKIFORMATS={nil=> :textile, 0 =>:textile, 1=> :mediawiki}
|
|
|
|
def self.find_or_init(name)
|
|
w = Wiki.where(:wikiname=>name).first
|
|
page = is_file_availaible(name)
|
|
if w.nil?
|
|
unless page.nil?
|
|
w=Wiki.new(:wikiname=>name, :title=>name, :wikiformat=>Wiki::WIKIFORMATS.invert[page.format], :hidelink=>true)
|
|
else
|
|
w=Wiki.new(:wikiname=>name, :title=>name, :wikiformat=>0, :hidelink=>true)
|
|
wiki = Gollum::Wiki.new("../wiki.git", :base_path => "/wiki")
|
|
page=wiki.write_page(name, :textile, "ioi", self.commit)
|
|
w.reload_page
|
|
end
|
|
|
|
w.themengruppe = Themengruppe.find_wiki_default
|
|
w.raw_data="Neues Wiki"
|
|
w.save
|
|
end
|
|
w
|
|
end
|
|
|
|
def raw_data
|
|
self.page.raw_data
|
|
end
|
|
|
|
def raw_data=(data)
|
|
self.get_page(self.wikiname)
|
|
self.wiki.update_page(self.page, self.wikiname, Wiki::WIKIFORMATS[self.wikiformat], data, self.commit)
|
|
self.text=self.page.formatted_data
|
|
|
|
end
|
|
|
|
def page
|
|
self.get_page(wikiname) if @page.nil?
|
|
@page
|
|
end
|
|
|
|
def wiki
|
|
@wiki
|
|
end
|
|
def reload_page
|
|
self.get_page(self.wikiname)
|
|
end
|
|
protected
|
|
|
|
|
|
def self.is_file_availaible(name)
|
|
wiki = Gollum::Wiki.new("../wiki.git", :base_path => "/wiki")
|
|
wiki.page(name)
|
|
end
|
|
|
|
def load_wiki
|
|
@wiki = Gollum::Wiki.new("../wiki.git", :base_path => "/wiki")
|
|
end
|
|
|
|
def get_page(name)
|
|
@page= @wiki.page(name)
|
|
@page=self.wiki.write_page(self.wikiname, Wiki::WIKIFORMATS[self.wikiformat]," ",self.commit) if @page.nil?
|
|
@page
|
|
end
|
|
def commit
|
|
{message: "RailsUpdate", name:"SomeUser", email: "ttt@t"}
|
|
end
|
|
|
|
def self.commit
|
|
{message: "RailsUpdate", name:"SomeUser", email: "ttt@t"}
|
|
end
|
|
end
|