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','h3','h4','a','th','img','ul','li','i','b','em'],: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 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 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