class EventsController < ApplicationController include PinnedToDefaultLocale # Private before_action :login_required layout 'admin' # GET /events # GET /events.xml def index scope = Event.order(Arel.sql("start_time DESC NULLS LAST")) scope = scope.merge(Event.editor_search(params[:q])) if params[:q].present? respond_to do |format| format.html { @events = scope.paginate(:page => params[:page], :per_page => 25) } format.xml { render :xml => scope } end end # GET /events/1 # GET /events/1.xml def show @event = Event.find(params[:id]) @return_to = params[:return_to] || events_path respond_to do |format| format.html # show.html.erb format.xml { render :xml => @event } end end # GET /events/new # GET /events/new.xml def new @event = Event.new( node_id: params[:node_id], tag_list: params[:tag_list] ) if params[:tag_list].present? && params[:auto_tag_source].present? flash.now[:notice] = t("flash.events.tag_prefilled", :tag => params[:tag_list], :source => params[:auto_tag_source]) end respond_to do |format| format.html # new.html.erb format.xml { render :xml => @event } end end # GET /events/1/edit def edit @event = Event.find(params[:id]) @return_to = params[:return_to] || events_path end # POST /events # POST /events.xml def create @event = Event.new(event_params) respond_to do |format| if @event.save_witnessed(:actor => current_user) flash[:notice] = t("flash.events.created") format.html { redirect_to(safe_return_to(params[:return_to] || (@event.node ? edit_node_path(@event.node) : edit_event_path(@event)))) } format.xml { render :xml => @event, :status => :created, :location => @event } else format.html { render :action => "new" } format.xml { render :xml => @event.errors, :status => :unprocessable_entity } end end end # PUT /events/1 # PUT /events/1.xml def update @event = Event.find(params[:id]) respond_to do |format| if @event.update_witnessed(event_params, :actor => current_user) flash[:notice] = t("flash.events.updated") format.html { redirect_to(safe_return_to(params[:return_to] || events_path)) } format.xml { head :ok } else format.html { render :action => "edit" } format.xml { render :xml => @event.errors, :status => :unprocessable_entity } end end end # DELETE /events/1 # DELETE /events/1.xml def destroy @event = Event.find(params[:id]) @event.destroy_witnessed(:actor => current_user) respond_to do |format| format.html { redirect_to(events_url) } format.xml { head :ok } end end private def event_params params.require(:event).permit(:title, :description, :start_time, :end_time, :rrule, :allday, :url, :latitude, :longitude, :node_id, :location, :tag_list) end end