From cf9c46a54398777c3c2074a284dfe2307c08141c Mon Sep 17 00:00:00 2001 From: chiu Date: Sat, 15 Aug 2020 21:42:57 +0800 Subject: [PATCH] add new index template and fix some error --- app/assets/javascripts/calendar.js | 2 +- app/assets/javascripts/calendar_frontend.js | 2 +- app/assets/javascripts/calendar_widget.js | 4 +- app/assets/javascripts/calendar_widget2.js | 4 +- app/assets/javascripts/fullcalendar.js | 4 +- app/controllers/calendars_controller.rb | 34 +++++++++- app/models/event.rb | 2 +- config/routes.rb | 2 + modules/calendar/_calendar_widget1.html.erb | 2 +- modules/calendar/_calendar_widget2.html.erb | 2 +- modules/calendar/index2.html.erb | 59 ++++++++++++++++ modules/calendar/index3.html.erb | 75 +++++++++++++++++++++ modules/calendar/info.json | 16 +++++ 13 files changed, 194 insertions(+), 14 deletions(-) create mode 100644 modules/calendar/index2.html.erb create mode 100644 modules/calendar/index3.html.erb diff --git a/app/assets/javascripts/calendar.js b/app/assets/javascripts/calendar.js index 67692b3..54017e9 100644 --- a/app/assets/javascripts/calendar.js +++ b/app/assets/javascripts/calendar.js @@ -635,7 +635,7 @@ var AgendaView = function(calendar){ dateFormat = $.fullCalendar.formatDates(s, e, "ddd dd, MMM - {ddd dd, MMM}"); e_t.find("td:first").text(dateFormat); e_t.find("td.event_time").text((event.allDay ? "All Day" : $.fullCalendar.formatDate(s, "hh:mm"))); - e_t.find("div.event").text(event.title).css("color",event.color); + e_t.find("div.event").html(event.title).css("color",event.color); return e_t; } diff --git a/app/assets/javascripts/calendar_frontend.js b/app/assets/javascripts/calendar_frontend.js index 4035437..67b34a6 100644 --- a/app/assets/javascripts/calendar_frontend.js +++ b/app/assets/javascripts/calendar_frontend.js @@ -431,7 +431,7 @@ var AgendaView = function(calendar){ dateFormat = $.fullCalendar.formatDates(s, e, "ddd dd, MMM - {ddd dd, MMM}"); e_t.find("td:first").text(dateFormat); e_t.find("td.event_time").text((event.allDay ? "All Day" : $.fullCalendar.formatDate(s, "hh:mm"))); - e_t.find("div.event").text(event.title).css("color",event.color); + e_t.find("div.event").html(event.title).css("color",event.color); return e_t; } diff --git a/app/assets/javascripts/calendar_widget.js b/app/assets/javascripts/calendar_widget.js index c2de600..a22638b 100644 --- a/app/assets/javascripts/calendar_widget.js +++ b/app/assets/javascripts/calendar_widget.js @@ -1,4 +1,4 @@ - var CalendarModuleMonth = function(date,dom,subpart,url){ + var CalendarModuleMonth1 = function(date,dom,subpart,url,index_flag){ _this = this; var events = {} var template = dom.find(".month_template"), @@ -317,7 +317,7 @@ usd_target = Math.round(first_target_day/1000), ued_target = Math.round(last_target_day/1000); $.ajax({ - url : "/xhr/calendars/agenda", + url : (index_flag ? "/xhr/calendars/index_agenda" : "/xhr/calendars/agenda"), data : {"month_start" : usd,"unix_start" : usd_target, "unix_end" : ued_target, "subpart_id" : subpartid, "locale" : $('html').attr('lang')}, dataType : "json", type : "get" diff --git a/app/assets/javascripts/calendar_widget2.js b/app/assets/javascripts/calendar_widget2.js index 3dfa9d7..eff96bc 100644 --- a/app/assets/javascripts/calendar_widget2.js +++ b/app/assets/javascripts/calendar_widget2.js @@ -1,4 +1,4 @@ - var CalendarModuleMonth = function(date,dom,subpart,url){ + var CalendarModuleMonth2 = function(date,dom,subpart,url,index_flag){ _this = this; var events = {} var template = dom.find(".month_template"), @@ -456,7 +456,7 @@ usd_target = Math.round(first_target_day/1000), ued_target = Math.round(last_target_day/1000); $.ajax({ - url : "/xhr/calendars/agenda", + url : (index_flag ? "/xhr/calendars/index_agenda" : "/xhr/calendars/agenda"), data : {"month_start" : usd,"unix_start" : usd_target, "unix_end" : ued_target, "subpart_id" : subpartid, "locale" : $('html').attr('lang')}, dataType : "json", type : "get" diff --git a/app/assets/javascripts/fullcalendar.js b/app/assets/javascripts/fullcalendar.js index eb4cd2f..3717f03 100644 --- a/app/assets/javascripts/fullcalendar.js +++ b/app/assets/javascripts/fullcalendar.js @@ -4062,7 +4062,7 @@ function AgendaEventRenderer() { htmlEscape(formatDates(event.start, event.end, opt('timeFormat'))) + "" + "
" + - htmlEscape(event.title) + + event.title + "
" + "" + "
"; @@ -4807,7 +4807,7 @@ function DayEventRenderer() { ""; } html += - "" + htmlEscape(event.title) + "" + + "" + event.title + "" + ""; if (seg.isEnd && isEventResizable(event)) { html += diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb index 0e58593..f0e29c8 100644 --- a/app/controllers/calendars_controller.rb +++ b/app/controllers/calendars_controller.rb @@ -1,12 +1,17 @@ class CalendarsController < ApplicationController # GET /events # GET /events.json - + include ActionView::Helpers::AssetTagHelper def index + page = Page.where(page_id: OrbitHelper.params[:page_id]).first + style_file = page.layout=='index3' ? 'calendar_widget2' : 'calendar_widget1' { "extras" => { - "page_id" => OrbitHelper.params[:page_id] + "page_id" => OrbitHelper.params[:page_id], + 'widget_title' => page.name, + 'calendar_title' => get_calendar_title, + 'style_tag' => stylesheet_link_tag(style_file) } } end @@ -48,7 +53,30 @@ class CalendarsController < ApplicationController end end - def agenda + + def index_agenda + I18n.with_locale(params[:locale]||I18n.locale) do + if !params[:subpart_id].nil? + subpartid = params[:subpart_id] + page = Page.where(page_id: subpartid).first + calendar_types = page.categories + else + calendar_types = [] + end + if params[:unix_start].present? && params[:unix_end].present? + agenda_start = Time.at(params[:unix_start].to_i).to_s + agenda_end = Time.at(params[:unix_end].to_i).to_s + if !calendar_types.blank? + events = Event.where(:calendar_type_id.in => calendar_types).agenda_events(agenda_start,agenda_end) + else + events = Event.agenda_events(agenda_start,agenda_end) + end + end + render json: {"events" => events,"calendar_title"=>get_calendar_title(Time.at(params[:month_start].to_i))}.to_json({"frontend" => true}) + end + end + + def agenda I18n.with_locale(params[:locale]||I18n.locale) do if !params[:subpart_id].nil? subpartid = params[:subpart_id] diff --git a/app/models/event.rb b/app/models/event.rb index 6da5f2c..7d6d0a5 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -27,7 +27,7 @@ class Event field :url def get_module_url page = !self.model_page_id.blank? ? Page.find(self.model_page_id): Page.where(:module => self.module_key).where(:categories.in => Array(self.model_cat)+[[]],:tags.in=>Array(self.model_tags)+[[]]).first - page.nil? ? '' : (page.url+'/'+eval(self.model_class).where(:id=>self.model_id).first.to_param) + page.nil? ? '' : (page.url+'/'+eval(self.model_class).where(:id=>self.model_id).first.to_calendar_param) end def url_to_fronted self.url.blank? ? (self.model_class.blank? ? '' : self.get_module_url) : self.url diff --git a/config/routes.rb b/config/routes.rb index 697eb60..322d678 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,6 +11,8 @@ Rails.application.routes.draw do get "/xhr/calendars/events" => "calendars#events" get "/xhr/calendars/agenda" => "calendars#agenda" + get "/xhr/calendars/index_agenda" => "calendars#index_agenda" + end end diff --git a/modules/calendar/_calendar_widget1.html.erb b/modules/calendar/_calendar_widget1.html.erb index 51251b7..bd6d006 100644 --- a/modules/calendar/_calendar_widget1.html.erb +++ b/modules/calendar/_calendar_widget1.html.erb @@ -46,7 +46,7 @@ tag.onload = function(){ $("div.widget-calendar-1[data-module=calendar]").each(function(index){ var calendar = $(this), - cmi = new CalendarModuleMonth(new Date(), calendar,calendar.data("subpart-id"),"{{more_url}}"); + cmi = new CalendarModuleMonth1(new Date(), calendar,calendar.data("subpart-id"),"{{more_url}}",false); cmi.currentMonth(); calendar.find("div.w-calendar-nav a").on("click",function(){ var el = $(this); diff --git a/modules/calendar/_calendar_widget2.html.erb b/modules/calendar/_calendar_widget2.html.erb index 9cbabb0..f5ffada 100644 --- a/modules/calendar/_calendar_widget2.html.erb +++ b/modules/calendar/_calendar_widget2.html.erb @@ -62,7 +62,7 @@ tag.onload = function(){ $("div.widget-calendar-2[data-module=calendar]").each(function(index){ var calendar = $(this), - cmi = new CalendarModuleMonth(new Date(), calendar,calendar.data("subpart-id"),"{{more_url}}"); + cmi = new CalendarModuleMonth2(new Date(), calendar,calendar.data("subpart-id"),"{{more_url}}",false); cmi.currentMonth(); calendar.find("div.w-calendar-nav a").on("click",function(){ var el = $(this); diff --git a/modules/calendar/index2.html.erb b/modules/calendar/index2.html.erb new file mode 100644 index 0000000..6c9f015 --- /dev/null +++ b/modules/calendar/index2.html.erb @@ -0,0 +1,59 @@ + +{{style_tag}} +
+
+

+ + +

+ + + + + + + + + + + + + + +
SunMonTueWedThuFriSat
+
+ +
+ \ No newline at end of file diff --git a/modules/calendar/index3.html.erb b/modules/calendar/index3.html.erb new file mode 100644 index 0000000..aa6bb89 --- /dev/null +++ b/modules/calendar/index3.html.erb @@ -0,0 +1,75 @@ + +{{style_tag}} +
+
+ {{widget_title}} + {{calendar_title}} +
+
+

+ + +

+ + + + + + + + + + + + + + +
SunMonTueWedThuFriSat
+
+ +
+ \ No newline at end of file diff --git a/modules/calendar/info.json b/modules/calendar/info.json index 488ec68..b189381 100644 --- a/modules/calendar/info.json +++ b/modules/calendar/info.json @@ -7,6 +7,22 @@ "en" : "1. Calendar" }, "thumbnail" : "thumb.png" + }, + { + "filename" : "index2", + "name" : { + "zh_tw" : "2. 行事曆(和widget樣式1同)", + "en" : "2. Calendar(same as widget style 1)" + }, + "thumbnail" : "thumb.png" + }, + { + "filename" : "index3", + "name" : { + "zh_tw" : "3. 行事曆加公告", + "en" : "3. Calendar with announcement" + }, + "thumbnail" : "thumb.png" } ], "widgets" : [