diff --git a/app/assets/javascripts/calendar.js b/app/assets/javascripts/calendar.js index b4f7767..5c8054a 100644 --- a/app/assets/javascripts/calendar.js +++ b/app/assets/javascripts/calendar.js @@ -154,7 +154,7 @@ var Calendar = function(dom){ c.calendar.fullCalendar({ editable: true, selectable: true, - events: "/admin/calendars/", + events: window.location.href, eventResize: change_event, eventDrop: change_event , header: false, diff --git a/app/controllers/admin/calendars_controller.rb b/app/controllers/admin/calendars_controller.rb index ee5c2a6..d333c31 100644 --- a/app/controllers/admin/calendars_controller.rb +++ b/app/controllers/admin/calendars_controller.rb @@ -4,11 +4,18 @@ class Admin::CalendarsController < OrbitAdminController 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) - @re = Event.recurring_event(sdt,edt) + @monthly_events = Event.monthly_event(sdt,edt).with_categories(filters("category")) + .with_tags(filters("tag")) + @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) @@ -17,9 +24,16 @@ class Admin::CalendarsController < OrbitAdminController @events << e end end - respond_to do |format| - format.html # index.html.erb - format.json { render json: @events.to_json } + 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 diff --git a/app/models/event.rb b/app/models/event.rb index 0d1e310..15f2689 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -23,6 +23,14 @@ class Event validates_presence_of :title, :message => "Please fill the title of the Event" + def self.with_categories(cat_ids=[]) + if cat_ids.blank? + self.all + else + type_ids = CalendarType.where(:category_id.in=>cat_ids).pluck(:id) + self.where(:calendar_type_id.in => type_ids) + end + end def bulletin Bulletin.find(self.bulletin_id) rescue nil end diff --git a/app/views/admin/calendars/_form.html.erb b/app/views/admin/calendars/_form.html.erb index 43df93b..95c52cb 100644 --- a/app/views/admin/calendars/_form.html.erb +++ b/app/views/admin/calendars/_form.html.erb @@ -1,3 +1,16 @@ + <% if @event.errors.any? %>

<%= pluralize(@event.errors.count, "error") %> prohibited this event from being saved:

@@ -65,6 +78,12 @@ <%= f.select :calendar_type_id, @categories.collect{|t| [ t.title, t.id ]} %>
+ +
+ + <%= select_tags(f, @module_app) %> +
+
diff --git a/app/views/admin/calendars/_index.html.erb b/app/views/admin/calendars/_index.html.erb new file mode 100644 index 0000000..912537e --- /dev/null +++ b/app/views/admin/calendars/_index.html.erb @@ -0,0 +1,8 @@ +
+
+ \ No newline at end of file diff --git a/app/views/admin/calendars/index.html.erb b/app/views/admin/calendars/index.html.erb index 9deb6e1..9eed37e 100644 --- a/app/views/admin/calendars/index.html.erb +++ b/app/views/admin/calendars/index.html.erb @@ -6,6 +6,7 @@ <%= stylesheet_link_tag "fullcalendar"%> <%= stylesheet_link_tag "calendar"%> +<%= render_filter @filter_fields, "orbit_calendar" %>
@@ -46,16 +47,11 @@
-
-
+ <%= render partial: 'index' %>
<%= link_to "Add", new_admin_calendar_path, :class => "btn btn-primary", :id=>"create_event_btn", :ref=>"add-btn" %> -
- - \ No newline at end of file +
\ No newline at end of file