190 lines
5.6 KiB
Ruby
190 lines
5.6 KiB
Ruby
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
|
|
|
|
|