class Admin::CalendarsController < OrbitAdminController # GET /events # GET /events.json def index @events = [] tags = @module_app.tags categories = @module_app.categories @filter_fields = { :category=>categories.map{|c| {:title=>(c.title.blank? ? " " : c.title), :id=>c.id}}, :tags=>tags.map{|tag| {:title=>(tag.name.blank? ? " " : tag.name), :id=>tag.id}} } if params[:start].present? && params[:end].present? sdt = Time.at(params[:start].to_i) edt = Time.at(params[:end].to_i) @monthly_events = Event.monthly_event(sdt,edt).with_categories(filters("category")) .with_tags(filters("tag")).convert_front @re = Event.with_categories(filters("category")).with_tags(filters("tag")).recurring_event(sdt,edt) allevents = @monthly_events.inject(@re, :<<) events = allevents.to_json events = JSON.parse(events) events.each_with_index do |e,i| e["can_edit"] = can_edit_or_delete_event?(allevents[i]) @events << e end end if request.xhr? respond_to do |format| format.html { render :partial => "index" } format.json { render json: @events.to_json } end else respond_to do |format| format.html { render "index" } format.json { render json: @events.to_json } end end end # GET /events/1 # GET /events/1.json def show @event = Event.find(params[:id]) respond_to do |format| format.html # show.html.erb format.json { render json: @event } end end def agenda agenda_start = Time.at(params[:unix_start].to_i).to_s agenda_end = Time.at(params[:unix_end].to_i).to_s @events = Event.agenda_events(agenda_start,agenda_end) # re = Event.recurring_event(Time.at(params[:unix_start].to_i), Time.at(params[:unix_end].to_i)) # @events = @events.inject(re, :<<) render :json=>@events.to_json end # GET /events/new # GET /events/new.json def new @event = Event.new(start: params[:startDate],end: params[:endDate]) categories = user_authenticated_categories rescue [] if categories.first == "all" @categories = CalendarType.all else @categories = CalendarType.where(:category_id.in => categories) rescue [] end @end_d_t = params[:endDate] @start_d_t = params[:startDate] @all_day = false; @recurring = false; if params case params[:allDay] when "true" @all_day = true when "false" @all_day = false case params[:recurring] when "true" @recurring = true when "false" @recurring = false end end end render :layout => false end # GET /events/1/edit def edit @event = Event.find(params[:id]) categories = user_authenticated_categories rescue [] if categories.first == "all" @categories = CalendarType.all else @categories = CalendarType.where(:category_id.in => categories) rescue [] end @end_d_t = @event.end.strftime("%Y/%m/%d %H:%M").to_s @start_d_t = @event.start.strftime("%Y/%m/%d %H:%M").to_s @all_day = @event.all_day @recurring = @event.recurring render :layout => false end # POST /events # POST /events.json def create p = event_page_params p["create_user_id"] = current_user.id p["update_user_id"] = current_user.id @event = Event.new(p) if @event.present? && @event.save e = @event.to_json e = JSON.parse(e) e["can_edit"] = true render json: e.to_json else respond_to do |format| format.html { render action: "new" } format.json { render json: @event.errors, status: :unprocessable_entity } end end end # PUT /events/1 # PUT /events/1.json def update @event = Event.find(params[:id]) p1 = event_page_params p1["update_user_id"] = current_user.id bulletin = @event.bulletin if !bulletin.nil? bulletin.update_attributes(calendar_start_date: p1[:start],calendar_end_date: p1[:end],calendar_all_day: p1[:all_day],calendar_type_id: p1[:calendar_type_id]) end p1['title_translations'] = @event['title_translations'].merge({I18n.locale.to_s =>p1['title']}) p1['note_translations'] = @event['title_translations'].merge({I18n.locale.to_s =>p1['note']}) if @event.update_attributes(p1) e = @event.to_json e = JSON.parse(e) e["can_edit"] = true render json: e.to_json else respond_to do |format| format.html { render action: "edit" } format.json { render json: @event.errors, status: :unprocessable_entity } #format.js end end end # DELETE /events/1 # DELETE /events/1.json def destroy @event = Event.find(params[:id]) bulletin = @event.bulletin if !bulletin.nil? bulletin.update_attributes(event_id: nil,add_to_calendar: '0') end @event.destroy render :json => {"success"=>true}.to_json # respond_to do |format| # format.html { redirect_to events } # format.json { head :no_content } # end end private def event_page_params params.require(:event).permit! end def can_edit_or_delete_event?(obj) create_user = obj.create_user_id.to_s rescue nil if @user_authenticated_categories.first == "all" return true elsif @current_user_is_sub_manager && !create_user.nil? create_user == current_user.id.to_s else @user_authenticated_categories.include?obj.calendar_type.category_id rescue (current_user.is_manager?(@module_app) rescue false) end end end