169 lines
5.2 KiB
Ruby
169 lines
5.2 KiB
Ruby
|
|
class ThemenController < ApplicationController
|
|
# GET /themen
|
|
# GET /themen.json
|
|
load_and_authorize_resource
|
|
|
|
def show
|
|
@thema = Thema.find(params[:id])
|
|
@fragen=@thema.fragen
|
|
|
|
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("thema.manage"), :path=>verwalten_thema_path(@thema)}]
|
|
@toolbar_elements << [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
|
|
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
|
|
|
|
respond_to do |format|
|
|
format.html {
|
|
redirect_to :controller=>'themengruppen', :id=>@thema.themengruppe.id, :action=>:show, :anchor=> "thema_"+params[:id].to_s
|
|
}
|
|
format.js
|
|
end
|
|
end
|
|
def sanitize
|
|
require 'sanitize'
|
|
@thema = Thema.find(params[:id])
|
|
@fragen = @thema.fragen
|
|
trans_icons= lambda do |env|
|
|
node=env[:node]
|
|
node_name=env[:node_name]
|
|
return if env[:is_whitelisted] || !node.element?
|
|
return unless node_name == 'span'
|
|
# return unless node["class"] =~ /.*ffi.*/
|
|
Sanitize.node!(node,{:elements=>["span"],:attributes=>{"span"=>["class","style"]},:css=>{:properties=>["color"]}})
|
|
{:node_whitelist=>[node]}
|
|
end
|
|
@thema.text = Sanitize.fragment(@thema.text, {:elements=>['table','tr','td','p','h1','h2','h3','h4','h5','a','th','img','ul','li','i','b','em','pre','code'],:attributes=>{'p'=>['class'],'table'=>['class'],'a'=>['href','data'],'img'=>['src','width','height'],:all=>['class']},:css=>{:properties=>['float']},:transformers=>[trans_icons]})
|
|
# # #
|
|
# #
|
|
# #
|
|
#
|
|
# @thema.text = @thema.text.sanitize
|
|
render :edit
|
|
end
|
|
def version
|
|
@thema = Thema.find(params[:id])
|
|
|
|
end
|
|
|
|
def verwalten
|
|
@thema = Thema.find(params[:id])
|
|
@attachment=Attachment.new
|
|
@fragen=@thema.fragen
|
|
|
|
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
|
|
@toolbar_elements <<{ :hicon=>'icon-leaf', :text=>"Sanitize", :path=>sanitize_thema_path(@thema)}
|
|
|
|
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
|
|
|
|
end
|
|
# GET /themen/new
|
|
# GET /themen/new.json
|
|
def new
|
|
@thema = Thema.new
|
|
@thema.themengruppe = Themengruppe.find(params[:themengruppe_id]) unless params[:themengruppe_id].nil?
|
|
respond_to do |format|
|
|
format.html # new.html.erb
|
|
format.json { render json: @thema }
|
|
format.js { render action: "edit" }
|
|
end
|
|
end
|
|
|
|
# GET /themen/1/edit
|
|
def edit
|
|
@thema = Thema.find(params[:id])
|
|
|
|
|
|
respond_to do |format|
|
|
format.html
|
|
format.js { @themen= @thema.themengruppe.themen }
|
|
end
|
|
end
|
|
|
|
# POST /themen
|
|
# POST /themen.json
|
|
def create
|
|
@thema = Thema.new(params[:thema])
|
|
@themen = @thema.themengruppe.themen.order(:priority).reverse
|
|
|
|
respond_to do |format|
|
|
if @thema.save
|
|
@themen = @thema.themengruppe.themen.order(:priority).reverse
|
|
format.html { redirect_to @thema, notice: I18n.t("thema.created") }
|
|
format.json { render json: @thema, status: :created, location: @thema }
|
|
format.js {render action: "update"}
|
|
else
|
|
@themen = @thema.themengruppe.themen.order(:priority).reverse
|
|
format.html { render action: "new" }
|
|
format.json { render json: @thema.errors, status: :unprocessable_entity }
|
|
format.js { render action: "edit" }
|
|
end
|
|
end
|
|
end
|
|
def is_updated
|
|
@thema = Thema.find(params[:id])
|
|
@thema.translation.touch
|
|
|
|
redirect_to @thema
|
|
end
|
|
def fragen
|
|
@thema = Thema.find(params[:id])
|
|
@fragen=@thema.fragen
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
def documents
|
|
@thema = Thema.find(params[:id])
|
|
@documents=@thema.documents
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
def attachments
|
|
@thema = Thema.find(params[:id])
|
|
@attachments=@thema.attachments
|
|
@attachment=Attachment.new
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
# PUT /themen/1
|
|
# PUT /themen/1.json
|
|
def update
|
|
@thema = Thema.find(params[:id])
|
|
@themen = @thema.themengruppe.themen.order(:priority).reverse
|
|
@thema.assign_attributes(params[:thema])
|
|
@thema.fix_links(request.host_with_port)
|
|
|
|
respond_to do |format|
|
|
if @thema.save
|
|
format.html {
|
|
if params["button"]=="continue"
|
|
render action: "edit", notice: I18n.t("thema.updated")
|
|
else
|
|
redirect_to @thema, notice: I18n.t("thema.updated")
|
|
end
|
|
}
|
|
format.json { head :no_content }
|
|
format.js
|
|
else
|
|
format.html { render action: "edit" }
|
|
format.json { render json: @thema.errors, status: :unprocessable_entity }
|
|
format.js { render action: "edit" }
|
|
end
|
|
end
|
|
end
|
|
|
|
# DELETE /themen/1
|
|
# DELETE /themen/1.json
|
|
def destroy
|
|
@thema = Thema.find(params[:id])
|
|
@thema.destroy
|
|
@themen = @thema.themengruppe.themen.order(:priority).reverse
|
|
respond_to do |format|
|
|
format.html { redirect_to themengruppe_path(@thema.themengruppe) }
|
|
format.json { head :no_content }
|
|
end
|
|
end
|
|
end
|