forked from bofh/fetsite
Merge branch 'wiki'
This commit is contained in:
@@ -22,7 +22,9 @@ class Thema < ActiveRecord::Base
|
||||
validates :text, :presence => true
|
||||
scope :search, ->(query) {where("text like ? or title like ?", "%#{query}%", "%#{query}%")}
|
||||
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
|
||||
|
||||
def is_wiki?
|
||||
wikiname.empty? || wikiname.nil?
|
||||
end
|
||||
def text_first_words
|
||||
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
|
||||
words=md[:text].split(" ") unless md.nil?
|
||||
|
||||
@@ -20,4 +20,17 @@ class Themengruppe < ActiveRecord::Base
|
||||
validates :text, :presence => true
|
||||
|
||||
translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true
|
||||
|
||||
scope :intern,-> {where(:public=>false)}
|
||||
|
||||
def self.find_wiki_default
|
||||
where(:wiki_default=>true).first
|
||||
end
|
||||
|
||||
def make_wiki_default
|
||||
Themengruppe.where(:wiki_default=>:true).update_all(:wiki_default=>:false)
|
||||
self.wiki_default=true;
|
||||
self.save;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
73
app/models/wiki.rb
Normal file
73
app/models/wiki.rb
Normal file
@@ -0,0 +1,73 @@
|
||||
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
|
||||
Reference in New Issue
Block a user