From 8f869c8e4dc280e540dee9aa58ebc806b555f98a Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Wed, 17 Dec 2014 17:08:50 +0800 Subject: [PATCH] fixed authorizations and also can edit calendar names --- app/assets/javascripts/calendar.js | 5 +++- app/assets/javascripts/category_type.js | 25 +++++++++++++++++++ .../admin/calendar_types_controller.rb | 13 ++++++++++ app/controllers/admin/calendars_controller.rb | 21 ++++++++++++---- app/models/event.rb | 2 ++ .../calendar_types/_calendar_type.html.erb | 2 +- app/views/admin/calendar_types/index.html.erb | 1 + app/views/admin/calendar_types/update.js.erb | 16 +----------- 8 files changed, 63 insertions(+), 22 deletions(-) create mode 100644 app/assets/javascripts/category_type.js diff --git a/app/assets/javascripts/calendar.js b/app/assets/javascripts/calendar.js index 0bf80e3..3b3447d 100644 --- a/app/assets/javascripts/calendar.js +++ b/app/assets/javascripts/calendar.js @@ -360,7 +360,10 @@ var EventDialog = function(calendar,event){ time_string = (start_time === end_time ? start_time + " " + stime + " - " + etime : start_time + " " + stime + " - " + end_time + " " +etime ); } event_quick_view = $(''); - template = ''; + template = ''; + if(_event.can_edit){ + template+=''; + } } this.show = function(pos){ diff --git a/app/assets/javascripts/category_type.js b/app/assets/javascripts/category_type.js new file mode 100644 index 0000000..98d1b8d --- /dev/null +++ b/app/assets/javascripts/category_type.js @@ -0,0 +1,25 @@ +$(function() { + $.pageslide.closeCallback(function(pageslide, item) { + $('.filter-item').removeClass("active"); + }); + $.pageslide.loadComplete(function(pageslide, item) { + $('.filter-item').removeClass("active"); + item.closest('li').addClass('active'); + if(item.data('id') == 'new') { + resetForm(); + pageslide.find('form').attr('method', 'post'); + $("#update_patch").remove(); + } + else { + $('.color-picker').miniColors("destroy"); + setForm(item.data('form')); + pageslide.find('form').attr("action",item.data("href")); + if($("#update_patch").length == 0){ + pageslide.find("form").append(""); + } + pageslide.find('input[type="checkbox"]').prop( 'checked', item.data('disable') ); + $('.color-picker').miniColors(); + $('.miniColors-trigger').addClass('btn'); + } + }); +}) \ No newline at end of file diff --git a/app/controllers/admin/calendar_types_controller.rb b/app/controllers/admin/calendar_types_controller.rb index cd92c2c..9ee137b 100644 --- a/app/controllers/admin/calendar_types_controller.rb +++ b/app/controllers/admin/calendar_types_controller.rb @@ -34,6 +34,19 @@ class Admin::CalendarTypesController < OrbitAdminController redirect_to admin_calendar_types_path end + def update + calendar = CalendarType.find(params[:id]) rescue nil + if !calendar.nil? + calendar.update_attributes(calendar_type_params) + calendar.save + category = calendar.category + category.title_translations = calendar_type_params["title_translations"] + category.save + end + redirect_to admin_calendar_types_path + + end + def list @module_app_id = @module_app.id rescue nil diff --git a/app/controllers/admin/calendars_controller.rb b/app/controllers/admin/calendars_controller.rb index c65ee68..83514e9 100644 --- a/app/controllers/admin/calendars_controller.rb +++ b/app/controllers/admin/calendars_controller.rb @@ -3,17 +3,23 @@ class Admin::CalendarsController < OrbitAdminController # GET /events.json def index - + @events = [] 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) - events = @monthly_events.inject(@re, :<<) + 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 respond_to do |format| format.html # index.html.erb - format.json { render json: events.to_json } + format.json { render json: @events.to_json } end end @@ -88,7 +94,10 @@ class Admin::CalendarsController < OrbitAdminController # POST /events # POST /events.json def create - @event = Event.new(event_page_params) + 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 render json: @event.to_json @@ -104,7 +113,9 @@ class Admin::CalendarsController < OrbitAdminController # PUT /events/1.json def update @event = Event.find(params[:id]) - if @event.update_attributes(event_page_params) + p = event_page_params + p["update_user_id"] = current_user.id + if @event.update_attributes(p) render json: @event.to_json else respond_to do |format| diff --git a/app/models/event.rb b/app/models/event.rb index 3476b36..05ea7f0 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -15,6 +15,8 @@ class Event field :recurring, type: Boolean field :frequency field :period + field :create_user_id + field :update_user_id belongs_to :calendar_type attr_accessor :agenda_start, :agenda_end, :get_agenda_events diff --git a/app/views/admin/calendar_types/_calendar_type.html.erb b/app/views/admin/calendar_types/_calendar_type.html.erb index 06277f9..fbcb338 100644 --- a/app/views/admin/calendar_types/_calendar_type.html.erb +++ b/app/views/admin/calendar_types/_calendar_type.html.erb @@ -4,7 +4,7 @@
diff --git a/app/views/admin/calendar_types/index.html.erb b/app/views/admin/calendar_types/index.html.erb index 5d20261..88fc321 100644 --- a/app/views/admin/calendar_types/index.html.erb +++ b/app/views/admin/calendar_types/index.html.erb @@ -1,6 +1,7 @@ <%= stylesheet_link_tag "jquery.miniColors" %> <%= javascript_include_tag "jquery.miniColors.min" %> +<%= javascript_include_tag "category_type" %>
diff --git a/app/views/admin/calendar_types/update.js.erb b/app/views/admin/calendar_types/update.js.erb index 8875d21..bac3cb1 100644 --- a/app/views/admin/calendar_types/update.js.erb +++ b/app/views/admin/calendar_types/update.js.erb @@ -1,15 +1 @@ -$("#event_create").empty().hide(); -$("#create_event_btn").removeClass("active"); -$(".destroy").remove(); -$("#create_event_btn").show(); -switch (c.view){ - case "week": - c.loadWeekView(c.cur_week,c.cur_year); - break; - case "month": - c.loadMonthView(c.cur_month,c.cur_year); - break; - case "day": - c.loadDayView(c.cur_date,c.cur_month,c.cur_year); - break; -} +$.pageslide.close(); \ No newline at end of file