forked from bofh/fetsite
47 lines
1.6 KiB
Ruby
47 lines
1.6 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: themen
|
|
#
|
|
# id :integer not null, primary key
|
|
# title :string(255)
|
|
# text :text
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# themengruppe_id :integer
|
|
#
|
|
require 'uri'
|
|
class Thema < ActiveRecord::Base
|
|
include Rails.application.routes.url_helpers
|
|
attr_accessible :text, :title, :themengruppe_id
|
|
has_many :fragen
|
|
has_many :attachments
|
|
belongs_to :themengruppe, :foreign_key => "themengruppe_id"
|
|
has_one :gremium
|
|
has_many :nlinks, as: :link
|
|
validates :themengruppe, :presence => true
|
|
validates :title, :presence => true
|
|
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.nil? || wikiname.empty?)
|
|
end
|
|
def text_first_words
|
|
md = /<p>(?<text>[^\<\>]*)/.match Sanitize.clean(self.text,:elements=>['p'])
|
|
words=md[:text].split(" ") unless md.nil?
|
|
if words.nil? || words.empty?
|
|
"...."
|
|
else
|
|
words[0..100].join(" ")+ " ..." unless words.nil?
|
|
|
|
end
|
|
end
|
|
|
|
def fix_links(host)
|
|
full_url= URI.parse(root_url(:host=>host))
|
|
self.text.gsub!(/src="[^"]*attachment\/datei\/(\d+)[^"]*"/){|s| full_url.path=Attachment.find($1.to_i).datei.url; 'src="'+full_url.to_s+'"'}
|
|
self.text.gsub!(/href="[^"]*themen\/(\d+)[^"]*"/){|s| full_url.path=thema_path(Thema.find($1.to_i)); 'href="'+full_url.to_s+'"'}
|
|
|
|
end
|
|
end
|