tb_events 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/app/helpers/calendars_helper.rb +1 -3
- data/app/models/spud_calendar_event.rb +10 -0
- data/app/views/spud/admin/calendar_events/_calendar.html.erb +1 -1
- data/lib/spud/events/calendar.rb +85 -0
- data/lib/spud/events/calendar_builder.rb +58 -0
- data/lib/{spud_events → spud/events}/configuration.rb +0 -0
- data/lib/{spud_events → spud/events}/engine.rb +5 -10
- data/lib/{spud_events → spud/events}/table_builder.rb +1 -1
- data/lib/{spud_events → spud/events}/version.rb +2 -2
- data/lib/tb_events.rb +2 -4
- metadata +9 -8
- data/lib/spud_events/calendar_builder.rb +0 -133
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZmMyNDc4N2IzN2I4NWVlYTlkNTM5ODM3NTQ0YTVkY2ZiZjFhYWE3NA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDgzMTViOGY5MjNkMGI1Zjg3ZDBjZDU4Y2M4ZjZiZWQwZTU5YzFkOA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDAzOWU5ZDIwNDY1NDVkNWQ0ZDg2MzliYjA0Yjg0NzgxNWIxN2RiNDhlMzI5
|
10
|
+
Y2M2ODk2ODA4Yjg2ODg1OTk3OTc0ZTVjMjIyNTNkNWQ4MzQ1ZTY0YzhhZDNl
|
11
|
+
NmIxNzc4MTdmMTJjOTRlZjYyNzI3YmQ2N2Y3Njk1MzhjOGJjMWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MzdhZWI5Yzk2NWY3ZmUyOGU5ZjNjMjliMDk3NjlhZGM0ZTU0Njk2YzBlYTA2
|
14
|
+
NGU5ZWYzOTM2ODEzZGM5MGQwYWUxZjZkNjQ0ZTU3NWU3NzVkN2IzNTgwM2Q4
|
15
|
+
NTg1NGM1NTExNDlkY2ZkODUzYTk5OTE0ZGI5Njg0ZDA1ZDg2ZDE=
|
@@ -17,9 +17,7 @@ module CalendarsHelper
|
|
17
17
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
18
18
|
html_options = options[:html]
|
19
19
|
builder = options[:builder] || Spud::Events::CalendarBuilder
|
20
|
-
|
21
|
-
|
22
|
-
content = with_output_buffer{block.call(builder.new(objects||[], self, calendar, options))}
|
20
|
+
content = with_output_buffer{block.call(builder.new(objects||[], self, options))}
|
23
21
|
self.content_tag(:table, content, html_options, false)
|
24
22
|
end
|
25
23
|
|
@@ -8,4 +8,14 @@ class SpudCalendarEvent < ActiveRecord::Base
|
|
8
8
|
where(["spud_calendar_events.start_at <= ? AND spud_calendar_events.start_at >= ?", month.end_of_month, month.beginning_of_month])
|
9
9
|
end
|
10
10
|
|
11
|
+
def days_span
|
12
|
+
return (end_at.to_date - start_at.to_date).to_i + 1
|
13
|
+
end
|
14
|
+
|
15
|
+
def falls_on?(day)
|
16
|
+
start_date = start_at.beginning_of_day.to_date
|
17
|
+
end_date = end_at.end_of_day.to_date
|
18
|
+
return day >= start_date && day <= end_date
|
19
|
+
end
|
20
|
+
|
11
21
|
end
|
@@ -7,7 +7,7 @@
|
|
7
7
|
<div class="spud_events_admin_calendar_date_container">
|
8
8
|
<%= content_tag :span, day.day, :class => (tasks.count > 0 ? "spud_events_admin_calendar_date spud_events_admin_calendar_date_active" : "spud_events_admin_calendar_date") %>
|
9
9
|
<% tasks.each do |task| %>
|
10
|
-
<%= link_to task.title
|
10
|
+
<%= link_to truncate(task.title, :length => 25), edit_spud_admin_calendar_event_path(task.id), :class => "spud_events_admin_calendar_event_marker spud_events_calendar_event_#{task.spud_calendar_id}", :style => "background-color: \##{task.spud_calendar.color}; color:\##{calendar_fore_color(task.spud_calendar.color)}" %>
|
11
11
|
<% end %>
|
12
12
|
</div>
|
13
13
|
<% end %>
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module Spud
|
2
|
+
module Events
|
3
|
+
class Calendar
|
4
|
+
attr_accessor :first_weekday, :last_weekday, :month
|
5
|
+
|
6
|
+
def initialize(options={})
|
7
|
+
@year = options[:year] || Time.now.year
|
8
|
+
@month = options[:month] || Time.now.month
|
9
|
+
@first_day_of_week = options[:first_day_of_week] || 0
|
10
|
+
@first_weekday = first_day_of_week(@first_day_of_week)
|
11
|
+
@last_weekday = last_day_of_week(@first_day_of_week)
|
12
|
+
@first = Date.civil(@year, @month, 1)
|
13
|
+
@last = Date.civil(@year, @month, -1)
|
14
|
+
end
|
15
|
+
|
16
|
+
def each_day
|
17
|
+
first_day.upto(last_day) do |day|
|
18
|
+
yield(day)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def last_day
|
23
|
+
last = @last
|
24
|
+
while(last.wday % 7 != @last_weekday % 7)
|
25
|
+
last = last.next
|
26
|
+
end
|
27
|
+
last
|
28
|
+
end
|
29
|
+
|
30
|
+
def first_day
|
31
|
+
first = @first - 6
|
32
|
+
while(first.wday % 7 != (@first_weekday) % 7)
|
33
|
+
first = first.next
|
34
|
+
end
|
35
|
+
first
|
36
|
+
end
|
37
|
+
|
38
|
+
def objects_for_days(objects, day_method, end_method)
|
39
|
+
unless @objects_for_days
|
40
|
+
@objects_for_days = {}
|
41
|
+
days.each do |day|
|
42
|
+
tasks = []
|
43
|
+
objects.each do |object|
|
44
|
+
start_date = object.send(day_method.to_sym).beginning_of_day.to_date
|
45
|
+
end_date = object.send(end_method.to_sym).end_of_day.to_date
|
46
|
+
if day >= start_date && day <= end_date
|
47
|
+
tasks.push(object)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
@objects_for_days[day.strftime("%Y-%m-%d")] = [day, tasks]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
@objects_for_days
|
54
|
+
end
|
55
|
+
|
56
|
+
def days
|
57
|
+
unless @days
|
58
|
+
@days = []
|
59
|
+
each_day{|day| @days << day}
|
60
|
+
end
|
61
|
+
@days
|
62
|
+
end
|
63
|
+
|
64
|
+
def mjdays
|
65
|
+
unless @mjdays
|
66
|
+
@mdays = []
|
67
|
+
each_day{|day| @days << day}
|
68
|
+
end
|
69
|
+
@days
|
70
|
+
end
|
71
|
+
|
72
|
+
def first_day_of_week(day)
|
73
|
+
day
|
74
|
+
end
|
75
|
+
|
76
|
+
def last_day_of_week(day)
|
77
|
+
if day > 0
|
78
|
+
day - 1
|
79
|
+
else
|
80
|
+
6
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Spud
|
2
|
+
module Events
|
3
|
+
class CalendarBuilder < Spud::Events::TableBuilder
|
4
|
+
|
5
|
+
def initialize(objects, template, options)
|
6
|
+
super(objects, template, options)
|
7
|
+
@calendar = Spud::Events::Calendar.new(options)
|
8
|
+
@today = options[:today] || Time.now
|
9
|
+
end
|
10
|
+
|
11
|
+
def day(*args,&block)
|
12
|
+
raise ArgumentError, "Missing block" unless block_given?
|
13
|
+
options = options_from_hash(args)
|
14
|
+
day_method = options.delete(:day_method) || :start_at
|
15
|
+
end_method = options.delete(:end_method) || :end_at
|
16
|
+
id_pattern = options.delete(:id)
|
17
|
+
activity_class = options.delete(:activity)
|
18
|
+
output = ""
|
19
|
+
@calendar.objects_for_days(@objects, day_method, end_method).to_a.sort{|a1, a2| a1.first <=> a2.first }.each do |o|
|
20
|
+
key, array = o
|
21
|
+
day, objects = array
|
22
|
+
|
23
|
+
output << @template.tag(:tr,options,true) if (day.wday == @calendar.first_weekday)
|
24
|
+
output << @template.tag(:td,td_options(day, id_pattern, (objects.empty? ? nil: activity_class)), true)
|
25
|
+
output << @template.with_output_buffer{block.call(day, objects)}
|
26
|
+
output << '</td>'
|
27
|
+
output << '</tr>' if (day.wday == @calendar.last_weekday)
|
28
|
+
end
|
29
|
+
@template.content_tag(:tbody, output.html_safe, {}, false)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def objects_for_days
|
35
|
+
@calendar.objects_for_days(@objects)
|
36
|
+
end
|
37
|
+
|
38
|
+
def td_options(day, id_pattern, activity_class)
|
39
|
+
options = {}
|
40
|
+
if(day.strftime("%Y-%m-%d") == @today.strftime("%Y-%m-%d"))
|
41
|
+
options[:class] = 'today'
|
42
|
+
elsif(day.month != @calendar.month)
|
43
|
+
options[:class] = 'notmonth'
|
44
|
+
elsif(day.wday == 0 or day.wday == 6)
|
45
|
+
options[:class] = 'weekend'
|
46
|
+
elsif activity_class
|
47
|
+
options[:class] = activity_class
|
48
|
+
end
|
49
|
+
if id_pattern
|
50
|
+
options[:id] = day.strftime(id_pattern)
|
51
|
+
end
|
52
|
+
|
53
|
+
options
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
File without changes
|
@@ -2,30 +2,25 @@ require 'tb_core'
|
|
2
2
|
|
3
3
|
module Spud
|
4
4
|
module Events
|
5
|
-
|
5
|
+
class Engine < Rails::Engine
|
6
6
|
engine_name :tb_events
|
7
7
|
|
8
|
-
|
9
|
-
require "#{root}/app/models/#{model_name}"
|
10
|
-
end
|
8
|
+
config.autoload_paths << File.expand_path("../../..", __FILE__)
|
11
9
|
|
12
|
-
def self.require_controller(controller_name)
|
13
|
-
require "#{root}/app/controllers/#{controller_name}"
|
14
|
-
end
|
15
10
|
initializer :admin do
|
16
11
|
Spud::Core.configure do |config|
|
17
12
|
config.admin_applications += [{:name => "Events", :thumbnail => "spud/admin/events_thumb.png", :url => "/spud/admin/events",:order => 10}]
|
18
13
|
end
|
19
14
|
end
|
15
|
+
|
20
16
|
initializer :assets do |config|
|
21
17
|
Spud::Core.append_admin_javascripts('spud/admin/events')
|
22
18
|
Spud::Core.append_admin_stylesheets('spud/admin/events')
|
23
|
-
|
24
19
|
Rails.application.config.assets.precompile += [
|
25
20
|
"spud/events.*",
|
26
21
|
"spud/admin/events.*"
|
27
22
|
]
|
28
|
-
|
29
|
-
|
23
|
+
end
|
24
|
+
end
|
30
25
|
end
|
31
26
|
end
|
@@ -14,7 +14,7 @@ module Spud
|
|
14
14
|
else
|
15
15
|
@num_of_columns = args.size
|
16
16
|
content = args.collect do |c|
|
17
|
-
|
17
|
+
@template.content_tag(:th, c)
|
18
18
|
end.join("\n").html_safe
|
19
19
|
@template.content_tag(:thead, @template.content_tag(:tr,content,{},false))
|
20
20
|
end
|
data/lib/tb_events.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
module Spud
|
2
2
|
module Events
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
require 'spud_events/table_builder'
|
6
|
-
require 'spud_events/calendar_builder'
|
3
|
+
require 'spud/events/configuration'
|
4
|
+
require 'spud/events/engine' if defined?(Rails)
|
7
5
|
end
|
8
6
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tb_events
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Woods
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -224,11 +224,12 @@ files:
|
|
224
224
|
- db/migrate/20120216191833_create_spud_calendars.rb
|
225
225
|
- db/migrate/20120216192531_create_spud_calendar_events.rb
|
226
226
|
- db/migrate/20130214131628_add_location_to_spud_calendar_event.rb
|
227
|
-
- lib/
|
228
|
-
- lib/
|
229
|
-
- lib/
|
230
|
-
- lib/
|
231
|
-
- lib/
|
227
|
+
- lib/spud/events/calendar.rb
|
228
|
+
- lib/spud/events/calendar_builder.rb
|
229
|
+
- lib/spud/events/configuration.rb
|
230
|
+
- lib/spud/events/engine.rb
|
231
|
+
- lib/spud/events/table_builder.rb
|
232
|
+
- lib/spud/events/version.rb
|
232
233
|
- lib/tb_events.rb
|
233
234
|
- Rakefile
|
234
235
|
- README.md
|
@@ -251,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
251
252
|
version: '0'
|
252
253
|
requirements: []
|
253
254
|
rubyforge_project:
|
254
|
-
rubygems_version: 2.0.
|
255
|
+
rubygems_version: 2.0.7
|
255
256
|
signing_key:
|
256
257
|
specification_version: 4
|
257
258
|
summary: Twice Baked Events engine
|
@@ -1,133 +0,0 @@
|
|
1
|
-
module Spud
|
2
|
-
module Events
|
3
|
-
class CalendarBuilder < Spud::Events::TableBuilder
|
4
|
-
def initialize(objects, template, calendar, options)
|
5
|
-
super(objects, template, options)
|
6
|
-
@calendar = calendar.new(options)
|
7
|
-
@today = options[:today] || Time.now
|
8
|
-
end
|
9
|
-
|
10
|
-
def day(*args,&block)
|
11
|
-
raise ArgumentError, "Missing block" unless block_given?
|
12
|
-
options = options_from_hash(args)
|
13
|
-
day_method = options.delete(:day_method) || :start_at
|
14
|
-
id_pattern = options.delete(:id)
|
15
|
-
activity_class = options.delete(:activity)
|
16
|
-
output = ""
|
17
|
-
@calendar.objects_for_days(@objects, day_method).to_a.sort{|a1, a2| a1.first <=> a2.first }.each do |o|
|
18
|
-
key, array = o
|
19
|
-
day, objects = array
|
20
|
-
|
21
|
-
output << @template.tag(:tr,options,true) if (day.wday == @calendar.first_weekday)
|
22
|
-
output << @template.tag(:td,td_options(day, id_pattern, (objects.empty? ? nil: activity_class)), true)
|
23
|
-
output << @template.with_output_buffer{block.call(day, objects)}
|
24
|
-
output << '</td>'
|
25
|
-
output << '</tr>' if (day.wday == @calendar.last_weekday)
|
26
|
-
end
|
27
|
-
@template.content_tag(:tbody, output.html_safe, {}, false)
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def objects_for_days
|
33
|
-
@calendar.objects_for_days(@objects)
|
34
|
-
end
|
35
|
-
|
36
|
-
def td_options(day, id_pattern, activity_class)
|
37
|
-
options = {}
|
38
|
-
if(day.strftime("%Y-%m-%d") == @today.strftime("%Y-%m-%d"))
|
39
|
-
options[:class] = 'today'
|
40
|
-
elsif(day.month != @calendar.month)
|
41
|
-
options[:class] = 'notmonth'
|
42
|
-
elsif(day.wday == 0 or day.wday == 6)
|
43
|
-
options[:class] = 'weekend'
|
44
|
-
elsif activity_class
|
45
|
-
options[:class] = activity_class
|
46
|
-
end
|
47
|
-
if id_pattern
|
48
|
-
options[:id] = day.strftime(id_pattern)
|
49
|
-
end
|
50
|
-
|
51
|
-
options
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
class Calendar
|
57
|
-
attr_accessor :first_weekday, :last_weekday, :month
|
58
|
-
def initialize(options={})
|
59
|
-
@year = options[:year] || Time.now.year
|
60
|
-
@month = options[:month] || Time.now.month
|
61
|
-
@first_day_of_week = options[:first_day_of_week] || 0
|
62
|
-
@first_weekday = first_day_of_week(@first_day_of_week)
|
63
|
-
@last_weekday = last_day_of_week(@first_day_of_week)
|
64
|
-
@first = Date.civil(@year, @month, 1)
|
65
|
-
@last = Date.civil(@year, @month, -1)
|
66
|
-
end
|
67
|
-
|
68
|
-
def each_day
|
69
|
-
first_day.upto(last_day) do |day|
|
70
|
-
yield(day)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def last_day
|
75
|
-
last = @last
|
76
|
-
while(last.wday % 7 != @last_weekday % 7)
|
77
|
-
last = last.next
|
78
|
-
end
|
79
|
-
last
|
80
|
-
end
|
81
|
-
|
82
|
-
def first_day
|
83
|
-
first = @first - 6
|
84
|
-
while(first.wday % 7 != (@first_weekday) % 7)
|
85
|
-
first = first.next
|
86
|
-
end
|
87
|
-
first
|
88
|
-
end
|
89
|
-
|
90
|
-
def objects_for_days(objects, day_method)
|
91
|
-
unless @objects_for_days
|
92
|
-
@objects_for_days = {}
|
93
|
-
days.each{|day| @objects_for_days[day.strftime("%Y-%m-%d")] = [day, []]}
|
94
|
-
objects.each do |o|
|
95
|
-
date = o.send(day_method.to_sym).strftime("%Y-%m-%d")
|
96
|
-
if @objects_for_days[date]
|
97
|
-
@objects_for_days[date][1] << o
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
@objects_for_days
|
102
|
-
end
|
103
|
-
|
104
|
-
def days
|
105
|
-
unless @days
|
106
|
-
@days = []
|
107
|
-
each_day{|day| @days << day}
|
108
|
-
end
|
109
|
-
@days
|
110
|
-
end
|
111
|
-
|
112
|
-
def mjdays
|
113
|
-
unless @mjdays
|
114
|
-
@mdays = []
|
115
|
-
each_day{|day| @days << day}
|
116
|
-
end
|
117
|
-
@days
|
118
|
-
end
|
119
|
-
|
120
|
-
def first_day_of_week(day)
|
121
|
-
day
|
122
|
-
end
|
123
|
-
|
124
|
-
def last_day_of_week(day)
|
125
|
-
if day > 0
|
126
|
-
day - 1
|
127
|
-
else
|
128
|
-
6
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|