Merge branch 'wiki'

This commit is contained in:
2014-06-04 23:09:26 +05:30
18 changed files with 309 additions and 30 deletions

View File

@@ -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?

View File

@@ -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
View 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