event_calendar testing
This commit is contained in:
parent
90ae361dc3
commit
29ea95b4c6
2
Gemfile
2
Gemfile
|
@ -50,6 +50,8 @@ gem 'rb-readline' if RUBY_PLATFORM.downcase.include?("linux")
|
||||||
|
|
||||||
|
|
||||||
gem "impressionist", :git => 'git://github.com/charlotte-ruby/impressionist.git'
|
gem "impressionist", :git => 'git://github.com/charlotte-ruby/impressionist.git'
|
||||||
|
#gem 'contacts'
|
||||||
|
gem 'event-calendar', :require => 'event_calendar'
|
||||||
|
|
||||||
gem 'redis','>= 2.1.1'
|
gem 'redis','>= 2.1.1'
|
||||||
gem 'chinese_pinyin', '0.4.1'
|
gem 'chinese_pinyin', '0.4.1'
|
||||||
|
|
|
@ -88,6 +88,7 @@ GEM
|
||||||
diff-lcs (1.1.3)
|
diff-lcs (1.1.3)
|
||||||
encrypted_strings (0.3.3)
|
encrypted_strings (0.3.3)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
|
event-calendar (2.3.3)
|
||||||
exception_notification (2.5.2)
|
exception_notification (2.5.2)
|
||||||
actionmailer (>= 3.0.4)
|
actionmailer (>= 3.0.4)
|
||||||
execjs (1.3.0)
|
execjs (1.3.0)
|
||||||
|
@ -322,6 +323,7 @@ DEPENDENCIES
|
||||||
database_cleaner
|
database_cleaner
|
||||||
delorean
|
delorean
|
||||||
devise (= 1.5.3)
|
devise (= 1.5.3)
|
||||||
|
event-calendar
|
||||||
exception_notification
|
exception_notification
|
||||||
execjs
|
execjs
|
||||||
factory_girl_rails
|
factory_girl_rails
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
module CalendarHelper
|
||||||
|
def month_link(month_date)
|
||||||
|
link_to(I18n.localize(month_date, :format => "%B"), {:month => month_date.month, :year => month_date.year})
|
||||||
|
end
|
||||||
|
|
||||||
|
# custom options for this calendar
|
||||||
|
def event_calendar_opts
|
||||||
|
{
|
||||||
|
:year => @year,
|
||||||
|
:month => @month,
|
||||||
|
:event_strips => @event_strips,
|
||||||
|
:month_name_text => I18n.localize(@shown_month, :format => "%B %Y"),
|
||||||
|
:previous_month_text => "<< " + month_link(@shown_month.prev_month),
|
||||||
|
:next_month_text => month_link(@shown_month.next_month) + " >>" }
|
||||||
|
end
|
||||||
|
|
||||||
|
def event_calendar
|
||||||
|
# args is an argument hash containing :event, :day, and :options
|
||||||
|
calendar event_calendar_opts do |args|
|
||||||
|
event = args[:event]
|
||||||
|
%(<a href="/events/#{event.id}" title="#{h(event.name)}">#{h(event.name)}</a>)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* Smart event highlighting
|
||||||
|
* Handles when events span rows, or don't have a background color
|
||||||
|
*/
|
||||||
|
jQuery(document).ready(function($) {
|
||||||
|
var highlight_color = "#2EAC6A";
|
||||||
|
|
||||||
|
// highlight events that have a background color
|
||||||
|
$(".ec-event-bg").live("mouseover", function() {
|
||||||
|
event_id = $(this).attr("data-event-id");
|
||||||
|
event_class_name = $(this).attr("data-event-class");
|
||||||
|
$(".ec-"+event_class_name+"-"+event_id).css("background-color", highlight_color);
|
||||||
|
});
|
||||||
|
$(".ec-event-bg").live("mouseout", function() {
|
||||||
|
event_id = $(this).attr("data-event-id");
|
||||||
|
event_class_name = $(this).attr("data-event-class");
|
||||||
|
event_color = $(this).attr("data-color");
|
||||||
|
$(".ec-"+event_class_name+"-"+event_id).css("background-color", event_color);
|
||||||
|
});
|
||||||
|
|
||||||
|
// highlight events that don't have a background color
|
||||||
|
$(".ec-event-no-bg").live("mouseover", function() {
|
||||||
|
ele = $(this);
|
||||||
|
ele.css("color", "white");
|
||||||
|
ele.find("a").css("color", "white");
|
||||||
|
ele.find(".ec-bullet").css("background-color", "white");
|
||||||
|
ele.css("background-color", highlight_color);
|
||||||
|
});
|
||||||
|
$(".ec-event-no-bg").live("mouseout", function() {
|
||||||
|
ele = $(this);
|
||||||
|
event_color = $(this).attr("data-color");
|
||||||
|
ele.css("color", event_color);
|
||||||
|
ele.find("a").css("color", event_color);
|
||||||
|
ele.find(".ec-bullet").css("background-color", event_color);
|
||||||
|
ele.css("background-color", "transparent");
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,237 @@
|
||||||
|
/*
|
||||||
|
Event Calendar stylesheet
|
||||||
|
|
||||||
|
Colors:
|
||||||
|
#d5d5d5 - border (gray)
|
||||||
|
#303030 - day names bg (gray)
|
||||||
|
#444 - number (gray)
|
||||||
|
#ecede2 - day header bg (light tan)
|
||||||
|
##d7d7ba - today header bg (tan)
|
||||||
|
#ffffdd - today bg light (yellow)
|
||||||
|
#777 - other month number (gray)
|
||||||
|
#efefef - other month day header (gray)
|
||||||
|
#2eac6a - hover (green)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Outer most container */
|
||||||
|
.ec-calendar {
|
||||||
|
font-family: verdana, arial, helvetica, sans-serif;
|
||||||
|
font-size: 11px;
|
||||||
|
line-height: 14px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border-bottom: 1px solid #d5d5d5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Month name header & links */
|
||||||
|
.ec-calendar-header {
|
||||||
|
padding: 5px 0;
|
||||||
|
width: 100%;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-month-name {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-month-nav {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Containers */
|
||||||
|
.ec-body {
|
||||||
|
position: relative;
|
||||||
|
border-right: 1px solid #303030;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Day names */
|
||||||
|
.ec-day-names {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
table-layout: fixed;
|
||||||
|
padding: 2px 0;
|
||||||
|
background: #303030;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-day-name {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Rows container and Row */
|
||||||
|
.ec-rows {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
background: white;
|
||||||
|
overflow: hidden;
|
||||||
|
border-right: 1px solid #d5d5d5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-row {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Background */
|
||||||
|
.ec-row-bg {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-day-bg {
|
||||||
|
border-left: 1px solid #d5d5d5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-today-bg {
|
||||||
|
background-color: #ffffdd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-row-table {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Day header */
|
||||||
|
.ec-day-header {
|
||||||
|
color: #444;
|
||||||
|
text-align: right;
|
||||||
|
padding: 0 5px;
|
||||||
|
line-height: 16px;
|
||||||
|
border-top: 1px solid #d5d5d5;
|
||||||
|
border-left: 1px solid #d5d5d5;
|
||||||
|
border-bottom: 1px dotted #bbbbbb;
|
||||||
|
background-color: #ecede2;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.ec-day-link {
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-today-header {
|
||||||
|
background-color: #d7d7ba;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-weekend-day-header {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-other-month-header {
|
||||||
|
background-color: #efefef;
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-other-month-bg {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Event cell and container */
|
||||||
|
.ec-event-cell {
|
||||||
|
cursor: pointer;
|
||||||
|
vertical-align: top;
|
||||||
|
padding-right: 1px;
|
||||||
|
padding-left: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-event-cell a {
|
||||||
|
text-decoration: none;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-no-event-cell {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-event {
|
||||||
|
color: white;
|
||||||
|
padding-right: 1px;
|
||||||
|
padding-left: 11px;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
-khtml-border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-event :hover {
|
||||||
|
/* doesn't look as good as js highlighting */
|
||||||
|
/* background-color: #2eac6a; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-event-bg a {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* used to distinguish non-all_day events */
|
||||||
|
.ec-event-no-bg {
|
||||||
|
position: relative;
|
||||||
|
/* padding-left: 5px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-event-no-bg a {
|
||||||
|
/* isn't implemented in all browsers */
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-event-time {
|
||||||
|
font-size: 85%;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-right: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Left and right arrows */
|
||||||
|
/* Doesn't work in IE6, use bg images instead */
|
||||||
|
.ec-left-arrow, .ec-right-arrow {
|
||||||
|
position: relative;
|
||||||
|
top: 3px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
margin-bottom: -8px;
|
||||||
|
border-top: 4px solid transparent;
|
||||||
|
border-bottom: 4px solid transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-left-arrow {
|
||||||
|
margin-left: -7px;
|
||||||
|
margin-right: auto;
|
||||||
|
border-right: 4px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ec-right-arrow {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: 3px;
|
||||||
|
border-left: 4px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove this to not have a bullet */
|
||||||
|
/* don't look as good in ie */
|
||||||
|
.ec-bullet {
|
||||||
|
position: absolute;
|
||||||
|
top: 7px;
|
||||||
|
width: 4px;
|
||||||
|
height: 4px;
|
||||||
|
margin-left: -7px;
|
||||||
|
margin-right: auto;
|
||||||
|
-webkit-border-radius: 2px;
|
||||||
|
-khtml-border-radius: 2px;
|
||||||
|
-moz-border-radius: 2px;
|
||||||
|
}
|
|
@ -0,0 +1,99 @@
|
||||||
|
PATH
|
||||||
|
remote: .
|
||||||
|
specs:
|
||||||
|
calendar (0.0.1)
|
||||||
|
rails (~> 3.1.4)
|
||||||
|
|
||||||
|
GEM
|
||||||
|
remote: http://rubygems.org/
|
||||||
|
specs:
|
||||||
|
actionmailer (3.1.8)
|
||||||
|
actionpack (= 3.1.8)
|
||||||
|
mail (~> 2.3.3)
|
||||||
|
actionpack (3.1.8)
|
||||||
|
activemodel (= 3.1.8)
|
||||||
|
activesupport (= 3.1.8)
|
||||||
|
builder (~> 3.0.0)
|
||||||
|
erubis (~> 2.7.0)
|
||||||
|
i18n (~> 0.6)
|
||||||
|
rack (~> 1.3.6)
|
||||||
|
rack-cache (~> 1.2)
|
||||||
|
rack-mount (~> 0.8.2)
|
||||||
|
rack-test (~> 0.6.1)
|
||||||
|
sprockets (~> 2.0.4)
|
||||||
|
activemodel (3.1.8)
|
||||||
|
activesupport (= 3.1.8)
|
||||||
|
builder (~> 3.0.0)
|
||||||
|
i18n (~> 0.6)
|
||||||
|
activerecord (3.1.8)
|
||||||
|
activemodel (= 3.1.8)
|
||||||
|
activesupport (= 3.1.8)
|
||||||
|
arel (~> 2.2.3)
|
||||||
|
tzinfo (~> 0.3.29)
|
||||||
|
activeresource (3.1.8)
|
||||||
|
activemodel (= 3.1.8)
|
||||||
|
activesupport (= 3.1.8)
|
||||||
|
activesupport (3.1.8)
|
||||||
|
multi_json (>= 1.0, < 1.3)
|
||||||
|
arel (2.2.3)
|
||||||
|
builder (3.0.3)
|
||||||
|
erubis (2.7.0)
|
||||||
|
hike (1.2.1)
|
||||||
|
i18n (0.6.1)
|
||||||
|
jquery-rails (2.1.2)
|
||||||
|
railties (>= 3.1.0, < 5.0)
|
||||||
|
thor (~> 0.14)
|
||||||
|
json (1.7.5)
|
||||||
|
mail (2.3.3)
|
||||||
|
i18n (>= 0.4.0)
|
||||||
|
mime-types (~> 1.16)
|
||||||
|
treetop (~> 1.4.8)
|
||||||
|
mime-types (1.19)
|
||||||
|
multi_json (1.2.0)
|
||||||
|
polyglot (0.3.3)
|
||||||
|
rack (1.3.6)
|
||||||
|
rack-cache (1.2)
|
||||||
|
rack (>= 0.4)
|
||||||
|
rack-mount (0.8.3)
|
||||||
|
rack (>= 1.0.0)
|
||||||
|
rack-ssl (1.3.2)
|
||||||
|
rack
|
||||||
|
rack-test (0.6.1)
|
||||||
|
rack (>= 1.0)
|
||||||
|
rails (3.1.8)
|
||||||
|
actionmailer (= 3.1.8)
|
||||||
|
actionpack (= 3.1.8)
|
||||||
|
activerecord (= 3.1.8)
|
||||||
|
activeresource (= 3.1.8)
|
||||||
|
activesupport (= 3.1.8)
|
||||||
|
bundler (~> 1.0)
|
||||||
|
railties (= 3.1.8)
|
||||||
|
railties (3.1.8)
|
||||||
|
actionpack (= 3.1.8)
|
||||||
|
activesupport (= 3.1.8)
|
||||||
|
rack-ssl (~> 1.3.2)
|
||||||
|
rake (>= 0.8.7)
|
||||||
|
rdoc (~> 3.4)
|
||||||
|
thor (~> 0.14.6)
|
||||||
|
rake (0.9.2.2)
|
||||||
|
rdoc (3.12)
|
||||||
|
json (~> 1.4)
|
||||||
|
sprockets (2.0.4)
|
||||||
|
hike (~> 1.2)
|
||||||
|
rack (~> 1.0)
|
||||||
|
tilt (~> 1.1, != 1.3.0)
|
||||||
|
sqlite3 (1.3.6)
|
||||||
|
thor (0.14.6)
|
||||||
|
tilt (1.3.3)
|
||||||
|
treetop (1.4.10)
|
||||||
|
polyglot
|
||||||
|
polyglot (>= 0.3.1)
|
||||||
|
tzinfo (0.3.33)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
calendar!
|
||||||
|
jquery-rails
|
||||||
|
sqlite3
|
|
@ -0,0 +1,12 @@
|
||||||
|
class Panel::Orbitcalendar::BackEnd::CalendarController < ApplicationController
|
||||||
|
|
||||||
|
def index
|
||||||
|
@month = (params[:month] || (Time.zone || Time).now.month).to_i
|
||||||
|
@year = (params[:year] || (Time.zone || Time).now.year).to_i
|
||||||
|
|
||||||
|
@shown_month = Date.civil(@year, @month)
|
||||||
|
|
||||||
|
@event_strips = Event.event_strips_for_month(@shown_month)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
24
vendor/built_in_modules/calendar/app/helpers/panel/orbitcalendar/back_end/calendar_helper.rb
vendored
Normal file
24
vendor/built_in_modules/calendar/app/helpers/panel/orbitcalendar/back_end/calendar_helper.rb
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
module Panel::Orbitcalendar::BackEnd::CalendarHelper
|
||||||
|
def month_link(month_date)
|
||||||
|
link_to(I18n.localize(month_date, :format => "%B"), {:month => month_date.month, :year => month_date.year})
|
||||||
|
end
|
||||||
|
|
||||||
|
# custom options for this calendar
|
||||||
|
def event_calendar_opts
|
||||||
|
{
|
||||||
|
:year => @year,
|
||||||
|
:month => @month,
|
||||||
|
:event_strips => @event_strips,
|
||||||
|
:month_name_text => I18n.localize(@shown_month, :format => "%B %Y"),
|
||||||
|
:previous_month_text => "<< " + month_link(@shown_month.prev_month),
|
||||||
|
:next_month_text => month_link(@shown_month.next_month) + " >>" }
|
||||||
|
end
|
||||||
|
|
||||||
|
def event_calendar
|
||||||
|
# args is an argument hash containing :event, :day, and :options
|
||||||
|
calendar event_calendar_opts do |args|
|
||||||
|
event = args[:event]
|
||||||
|
%(<a href="/events/#{event.id}" title="#{h(event.name)}">#{h(event.name)}</a>)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
class Event
|
||||||
|
include Mongoid::Document
|
||||||
|
has_event_calendar
|
||||||
|
end
|
|
@ -0,0 +1,6 @@
|
||||||
|
<!-- Probably move the stylesheet to you layout. Also make sure you include the javascript. -->
|
||||||
|
<%= stylesheet_link_tag "event_calendar" %>
|
||||||
|
|
||||||
|
<h1>Calendar</h1>
|
||||||
|
|
||||||
|
<%= raw(event_calendar) %>
|
|
@ -1,9 +1,9 @@
|
||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
namespace :panel do
|
namespace :panel do
|
||||||
namespace :calendar do
|
namespace :orbitcalendar do
|
||||||
namespace :back_end do
|
namespace :back_end do
|
||||||
|
|
||||||
resources :cals
|
match '/calendar(/:year(/:month))' => 'calendar#index', :as => :calendar, :constraints => {:year => /\d{4}/, :month => /\d{1,2}/}
|
||||||
resources :calendar_categories
|
resources :calendar_categories
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue