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}}
+
+
\ 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}}
+
+
\ 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" : [