Files
fetsite/app/models/wiki.rb

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