spud_events 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +57 -0
  3. data/Rakefile +28 -0
  4. data/app/assets/images/spud/admin/events_thumb.png +0 -0
  5. data/app/assets/javascripts/calendar_events.js +2 -0
  6. data/app/assets/javascripts/calendars.js +2 -0
  7. data/app/assets/javascripts/spud/admin/calendar_events.js +2 -0
  8. data/app/assets/javascripts/spud/admin/calendars.js +0 -0
  9. data/app/assets/javascripts/spud/admin/events.js +51 -0
  10. data/app/assets/javascripts/spud/events.js +0 -0
  11. data/app/assets/lib/colorpicker/colorpicker.css +161 -0
  12. data/app/assets/lib/colorpicker/colorpicker.js +484 -0
  13. data/app/assets/lib/colorpicker/images/blank.gif +0 -0
  14. data/app/assets/lib/colorpicker/images/colorpicker_background.png +0 -0
  15. data/app/assets/lib/colorpicker/images/colorpicker_hex.png +0 -0
  16. data/app/assets/lib/colorpicker/images/colorpicker_hsb_b.png +0 -0
  17. data/app/assets/lib/colorpicker/images/colorpicker_hsb_h.png +0 -0
  18. data/app/assets/lib/colorpicker/images/colorpicker_hsb_s.png +0 -0
  19. data/app/assets/lib/colorpicker/images/colorpicker_indic.gif +0 -0
  20. data/app/assets/lib/colorpicker/images/colorpicker_overlay.png +0 -0
  21. data/app/assets/lib/colorpicker/images/colorpicker_rgb_b.png +0 -0
  22. data/app/assets/lib/colorpicker/images/colorpicker_rgb_g.png +0 -0
  23. data/app/assets/lib/colorpicker/images/colorpicker_rgb_r.png +0 -0
  24. data/app/assets/lib/colorpicker/images/colorpicker_select.gif +0 -0
  25. data/app/assets/lib/colorpicker/images/colorpicker_submit.png +0 -0
  26. data/app/assets/lib/colorpicker/images/custom_background.png +0 -0
  27. data/app/assets/lib/colorpicker/images/custom_hex.png +0 -0
  28. data/app/assets/lib/colorpicker/images/custom_hsb_b.png +0 -0
  29. data/app/assets/lib/colorpicker/images/custom_hsb_h.png +0 -0
  30. data/app/assets/lib/colorpicker/images/custom_hsb_s.png +0 -0
  31. data/app/assets/lib/colorpicker/images/custom_indic.gif +0 -0
  32. data/app/assets/lib/colorpicker/images/custom_rgb_b.png +0 -0
  33. data/app/assets/lib/colorpicker/images/custom_rgb_g.png +0 -0
  34. data/app/assets/lib/colorpicker/images/custom_rgb_r.png +0 -0
  35. data/app/assets/lib/colorpicker/images/custom_submit.png +0 -0
  36. data/app/assets/lib/colorpicker/images/select.png +0 -0
  37. data/app/assets/lib/colorpicker/images/select2.png +0 -0
  38. data/app/assets/lib/colorpicker/images/slider.png +0 -0
  39. data/app/assets/stylesheets/spud/admin/events.css +16 -0
  40. data/app/assets/stylesheets/spud/calendar_events.css +18 -0
  41. data/app/assets/stylesheets/spud/calendars.css +136 -0
  42. data/app/assets/stylesheets/spud/events.css +4 -0
  43. data/app/controllers/calendar_events_controller.rb +8 -0
  44. data/app/controllers/calendars_controller.rb +30 -0
  45. data/app/controllers/spud/admin/calendar_events_controller.rb +64 -0
  46. data/app/controllers/spud/admin/calendars_controller.rb +52 -0
  47. data/app/helpers/calendars_helper.rb +49 -0
  48. data/app/helpers/spud/admin/calendar_events_helper.rb +2 -0
  49. data/app/helpers/spud/admin/calendars_helper.rb +13 -0
  50. data/app/models/spud_calendar.rb +7 -0
  51. data/app/models/spud_calendar_event.rb +11 -0
  52. data/app/views/calendar_events/show.html.erb +5 -0
  53. data/app/views/calendars/_calendar.html.erb +26 -0
  54. data/app/views/calendars/_calendar_options.html.erb +4 -0
  55. data/app/views/calendars/show.html.erb +4 -0
  56. data/app/views/spud/admin/calendar_events/_calendar.html.erb +14 -0
  57. data/app/views/spud/admin/calendar_events/_form.html.erb +98 -0
  58. data/app/views/spud/admin/calendar_events/edit.html.erb +1 -0
  59. data/app/views/spud/admin/calendar_events/index.html.erb +20 -0
  60. data/app/views/spud/admin/calendar_events/new.html.erb +1 -0
  61. data/app/views/spud/admin/calendars/_calendar_legend.html.erb +7 -0
  62. data/app/views/spud/admin/calendars/_form.html.erb +20 -0
  63. data/app/views/spud/admin/calendars/edit.html.erb +1 -0
  64. data/app/views/spud/admin/calendars/new.html.erb +1 -0
  65. data/config/application.rb +50 -0
  66. data/config/boot.rb +6 -0
  67. data/config/routes.rb +17 -0
  68. data/db/migrate/20120216191833_create_spud_calendars.rb +12 -0
  69. data/db/migrate/20120216192531_create_spud_calendar_events.rb +15 -0
  70. data/db/migrate/20130214131628_add_location_to_spud_calendar_event.rb +10 -0
  71. data/lib/spud_events.rb +8 -0
  72. data/lib/spud_events/calendar_builder.rb +133 -0
  73. data/lib/spud_events/configuration.rb +10 -0
  74. data/lib/spud_events/engine.rb +30 -0
  75. data/lib/spud_events/table_builder.rb +88 -0
  76. data/lib/spud_events/version.rb +5 -0
  77. metadata +258 -0
@@ -0,0 +1,16 @@
1
+ /* ...
2
+ *= require spud/calendars
3
+ *= require spud/calendar_events
4
+ *= require colorpicker/colorpicker
5
+ *= require_self
6
+ */
7
+
8
+ /* Calendar Color Picker
9
+ ----------------------- */
10
+ .spud_events_admin_color_picker {
11
+ height: 28px;
12
+ width: 28px;
13
+ display: block;
14
+ background-image: url('/assets/colorpicker/images/select2.png');
15
+ background-position: 50% 50%;
16
+ }
@@ -0,0 +1,18 @@
1
+ a.spud_events_admin_calendar_event_marker,
2
+ a.spud_events_calendar_event_marker {
3
+ color: black;
4
+ font-size: 11px;
5
+ padding: 0 3px;
6
+ margin: 0 0 3px 0;
7
+ line-height: 13px;
8
+ display: block;
9
+ -moz-border-radius: 3px;
10
+ -webkit-border-radius: 3px;
11
+ border-radius: 3px;
12
+ text-decoration: none;
13
+ }
14
+ span.spud_events_admin_calendar_event_marker:last-child,
15
+ span.spud_events_calendar_event_marker:last-child {
16
+ color: #191919;
17
+ margin: 0;
18
+ }
@@ -0,0 +1,136 @@
1
+ /* Calendar Tables
2
+ ----------------------- */
3
+ #spud_events_admin_calendar table,
4
+ #spud_events_calendar table {
5
+ border-collapse: collapse;
6
+ font-size: 13px;
7
+ border: 1px solid #d9d9d9;;
8
+ width: 100%;
9
+ }
10
+ #spud_events_admin_calendar th,
11
+ #spud_events_calendar th {
12
+ background-image: -webkit-gradient(
13
+ linear,
14
+ left bottom,
15
+ left top,
16
+ color-stop(0, rgb(244,244,244)),
17
+ color-stop(1, rgb(255,255,255))
18
+ );
19
+ background-image: -moz-linear-gradient(
20
+ center bottom,
21
+ rgb(244,244,244) 6%,
22
+ rgb(255,255,255) 53%
23
+ );
24
+ }
25
+ #spud_events_admin_calendar td, #spud_events_admin_calendar th,
26
+ #spud_events_calendar td, #spud_events_calendar th {
27
+ padding: 0 10px;
28
+ line-height: 30px;
29
+ text-align: left;
30
+ vertical-align: middle;
31
+ }
32
+ #spud_events_admin_calendar td img, #spud_events_admin_calendar th img,
33
+ #spud_events_calendar td img, #spud_events_calendar th img {
34
+ display: block;
35
+ }
36
+ #spud_events_admin_calendar tbody tr,
37
+ #spud_events_calendar tbody tr {
38
+ border-top: 1px solid #d9d9d9;
39
+ border-bottom: 1px solid #d9d9d9;
40
+ -webkit-transition:background 0.15s ease-in;
41
+ -moz-transition:background 0.15s ease-in;
42
+ }
43
+ #spud_events_admin_calendar tbody tr:hover,
44
+ #spud_events_calendar tbody tr:hover {
45
+ background: #f0f0f0;
46
+ -webkit-transition:background 0.15s ease-in;
47
+ -moz-transition:background 0.15s ease-in;
48
+ }
49
+
50
+ #spud_events_admin_calendar,
51
+ #spud_events_calendar {
52
+ width: 700px;
53
+ padding-bottom: 50px;
54
+ position: relative;
55
+ float: left;
56
+ }
57
+ #spud_events_calendar {
58
+ width: auto;
59
+ }
60
+ #spud_events_admin_calendar p:first-child,
61
+ #spud_events_calendar p:first-child {
62
+ float: right;
63
+ }
64
+ #spud_events_admin_calendar table,
65
+ #spud_events_calendar table {
66
+ margin: 15px 0 0;
67
+ }
68
+ #spud_events_admin_calendar th,
69
+ #spud_events_calendar th {
70
+ text-align: center;
71
+ }
72
+ #spud_events_admin_calendar td,
73
+ #spud_events_calendar td {
74
+ border: 1px solid #d9d9d9;;
75
+ position: relative;
76
+ height: 90px;
77
+ padding: 0;
78
+ vertical-align: top;
79
+ width: 98px;
80
+ }
81
+ .spud_events_admin_calendar_date_container,
82
+ .spud_events_calendar_date_container {
83
+ display: block;
84
+ padding: 18px 5px 0;
85
+ position: relative;
86
+ }
87
+ span.spud_events_admin_calendar_date,
88
+ span.spud_events_calendar_date {
89
+ position: absolute;
90
+ top: 3px;
91
+ right: 3px;
92
+ font-size: 11px;
93
+ line-height: 11px;
94
+ }
95
+
96
+ /* Calendar Legend
97
+ ----------------------- */
98
+ #spud_events_admin_calendar_legend,
99
+ #spud_events_calendar_legend {
100
+ list-style: none;
101
+ border: 1px solid #d9d9d9;
102
+ padding: 0;
103
+ margin: 45px 0 0 725px;
104
+ }
105
+ #spud_events_admin_calendar_legend li,
106
+ #spud_events_calendar_legend li {
107
+ display: block;
108
+ padding: 5px 5px 5px 3px;
109
+ -webkit-transition: background 0.15s ease-in;
110
+ }
111
+ #spud_events_admin_calendar_legend li:hover,
112
+ #spud_events_calendar_legend li:hover {
113
+ background: #F0F0F0;
114
+ }
115
+ #spud_events_admin_calendar_legend li,
116
+ #spud_events_calendar_legend li {
117
+ border-bottom: 1px solid #d9d9d9;
118
+ }
119
+ #spud_events_admin_calendar_legend li:last-child,
120
+ #spud_events_calendar_legend li:last-child {
121
+ border: none;
122
+ }
123
+ .spud_events_admin_calendar_actions,
124
+ .spud_events_calendar_actions {
125
+ text-align: right;
126
+ }
127
+
128
+ #spud_events_admin_calendar_legend span,
129
+ #spud_events_calendar_legend span {
130
+ display: inline-block;
131
+ -moz-border-radius: 3px;
132
+ -webkit-border-radius: 3px;
133
+ border-radius: 3px;
134
+ padding: 2px 8px;
135
+ margin: 8px 0 0 8px;
136
+ }
@@ -0,0 +1,4 @@
1
+ /* ...
2
+ *= require spud/calendars
3
+ *= require spud/calendar_events
4
+ */
@@ -0,0 +1,8 @@
1
+ class CalendarEventsController < ApplicationController
2
+
3
+ layout Spud::Events.config.calendar_layout || 'spud/calendar'
4
+
5
+ def show
6
+ @event = SpudCalendarEvent.find(params[:id])
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ class CalendarsController < ApplicationController
2
+
3
+ layout Spud::Events.config.calendar_layout || 'spud/calendar'
4
+
5
+ def show
6
+ if params[:month]
7
+ year = params[:year] ? params[:year] : Time.new.year
8
+ begin
9
+ @calendar_date = Time.local(year, params[:month])
10
+ rescue
11
+ @calendar_date = default_date
12
+ end
13
+ else
14
+ @calendar_date = default_date
15
+ end
16
+ if params[:calendar] && calendar = SpudCalendar.find_by_title(params[:calendar].titleize)
17
+ @events = calendar.spud_calendar_events.where(["start_at >= ?",@calendar_date]).order(:start_at).all
18
+ else
19
+ @events = SpudCalendarEvent.where(["start_at >= ?",@calendar_date]).order(:start_at).all
20
+ end
21
+ @current_calendar = params[:calendar] ? params[:calendar] : 0
22
+ @page_title = @calendar_date.strftime("Calendar - %B %Y")
23
+ end
24
+
25
+ def default_date
26
+ tempDate = Time.new
27
+ return Time.local(tempDate.year,tempDate.month)
28
+
29
+ end
30
+ end
@@ -0,0 +1,64 @@
1
+ class Spud::Admin::CalendarEventsController < Spud::Admin::ApplicationController
2
+
3
+ layout 'spud/admin/detail'
4
+ add_breadcrumb "Events", :spud_admin_list_spud_calendar_events_path
5
+ belongs_to_spud_app :events
6
+
7
+ respond_to :html, :xml, :json
8
+ respond_to :js, :only => [:index, ]
9
+
10
+ def index
11
+ if params[:month]
12
+ year = params[:year] ? params[:year] : Time.new.year
13
+ begin
14
+ @calendar_date = Time.local(year, params[:month])
15
+ rescue
16
+ @calendar_date = Time.new
17
+ end
18
+ else
19
+ @calendar_date = Time.new
20
+ end
21
+
22
+ if params[:spud_calendar] && calendar = SpudCalendar.find_by_title(params[:spud_calendar].titleize)
23
+ @calendar_events = calendar.events
24
+ else
25
+ @calendar_events = SpudCalendarEvent
26
+ end
27
+ @calendar_events = @calendar_events.in_month_of(@calendar_date).order('spud_calendar_events.start_at ASC').all
28
+
29
+ @calendars = SpudCalendar.all
30
+ @current_calendar = params[:spud_calendar] ? params[:spud_calendar] : 0
31
+
32
+ respond_with(@calendars, :include => :events)
33
+ end
34
+
35
+ def new
36
+ @calendar_event = SpudCalendarEvent.new
37
+ if params[:spud_calendar]
38
+ @calendar_event.spud_calendar_id = SpudCalendar.find_by_title(params[:spud_calendar].titleize).id
39
+ end
40
+ end
41
+
42
+ def edit
43
+ @calendar_event = SpudCalendarEvent.find(params[:id])
44
+ end
45
+
46
+ def create
47
+ @calendar_event = SpudCalendarEvent.new(params[:spud_calendar_event])
48
+ flash[:notice] = 'Calendar event was successfully created.' if @calendar_event.save
49
+ respond_with(@calendar_event, :location => spud_admin_list_spud_calendar_events_path)
50
+ end
51
+
52
+ def update
53
+ @calendar_event = SpudCalendarEvent.find(params[:id])
54
+ flash[:notice] = 'Calendar event was successfully updated.' if @calendar_event.update_attributes(params[:spud_calendar_event])
55
+ respond_with(@calendar_event, :location =>spud_admin_list_spud_calendar_events_path)
56
+ end
57
+
58
+ def destroy
59
+ @calendar_event = SpudCalendarEvent.find(params[:id])
60
+ @calendar_event.destroy
61
+ respond_with(@calendar_event, :location => spud_admin_list_spud_calendar_events_path)
62
+ end
63
+
64
+ end
@@ -0,0 +1,52 @@
1
+ class Spud::Admin::CalendarsController < Spud::Admin::ApplicationController
2
+
3
+ layout 'spud/admin/detail'
4
+ add_breadcrumb "Events", :spud_admin_list_spud_calendar_events_path
5
+
6
+ belongs_to_spud_app :events
7
+
8
+ respond_to :html, :xml, :json, :js
9
+
10
+ def new
11
+ @page_name = "New Calendar"
12
+ @calendar = SpudCalendar.new
13
+ respond_with(@calendar)
14
+ end
15
+
16
+ def create
17
+ @calendar = SpudCalendar.new(params[:spud_calendar])
18
+ if @calendar.save
19
+ redirect_to spud_admin_list_spud_calendar_events_path
20
+ else
21
+ render :action => "new"
22
+ end
23
+ end
24
+
25
+ def edit
26
+ @page_name = "Edit Calendar"
27
+ @calendar = SpudCalendar.find(params[:id])
28
+ respond_with(@calendar)
29
+ end
30
+
31
+ def update
32
+ @calendar = SpudCalendar.find(params[:id])
33
+ if @calendar.update_attributes(params[:spud_calendar])
34
+ flash[:notice] = 'Calendar was successfully updated.'
35
+ redirect_to spud_admin_list_spud_calendar_events_path
36
+ else
37
+ render :action => "edit"
38
+ end
39
+ end
40
+
41
+ def destroy
42
+ @calendar = SpudCalendar.find(params[:id])
43
+ @calendar.spud_calendar_events.each do |event|
44
+ event.update_attribute(:spud_calendar_id, 0)
45
+ end
46
+ @calendar.destroy
47
+ respond_with(@calendar) do |format|
48
+ format.js { render(:nothing => true) }
49
+ end
50
+ end
51
+
52
+ end
@@ -0,0 +1,49 @@
1
+ module CalendarsHelper
2
+ def build_calendar_for(objects, *args, &block)
3
+ raise ArgumentError, "Missing block" unless block_given?
4
+ options = args.last.is_a?(Hash) ? args.pop : {}
5
+ html_options = options[:html]
6
+ builder = options[:builder] || Spud::Events::CalendarBuilder
7
+ calendar = options[:calendar] || Spud::Events::Calendar
8
+
9
+ content = with_output_buffer{block.call(builder.new(objects||[], self, calendar, options))}
10
+ self.content_tag(:table, content, html_options, false)
11
+ end
12
+
13
+ def get_calendar_options(text_for_all)
14
+ options_for_select(SpudCalendar.all.collect { |f| [f.title, f.title.gsub(/([^A-Z0-9]+)/i, "-").downcase] }.insert(0, text_for_all), @current_calendar)
15
+ end
16
+
17
+ def calendar_fore_color(backcolor)
18
+ fore_color = "ffffff"
19
+ if backcolor.length != 6
20
+ return fore_color
21
+ end
22
+
23
+ red = backcolor[0,2].hex
24
+ green = backcolor[2,2].hex
25
+ blue = backcolor[4,2].hex
26
+
27
+ perceived_brightness = Math.sqrt(red*red*0.241 + green*green*0.691 + blue*blue*0.068)
28
+
29
+
30
+ # average = (red+green+blue) / 3
31
+ if(perceived_brightness >= 130)
32
+ return "000000"
33
+ else
34
+ return fore_color
35
+ end
36
+ end
37
+
38
+ def link_to_previous_calendar_month(date, url_for_options)
39
+ date = date.advance(:months => -1)
40
+ calendar = params[:calendar] ? params[:calendar] : nil
41
+ link_to('&laquo; Previous Month'.html_safe, calendar_path(:month => date.month, :year => date.year, :calendar => calendar), :class => 'spud_events_calendar_link previous_calendar btn').html_safe
42
+ end
43
+
44
+ def link_to_next_calendar_month(date, url_for_options)
45
+ date = date.advance(:months => 1)
46
+ calendar = params[:calendar] ? params[:calendar] : nil
47
+ link_to('Next Month &raquo;'.html_safe, calendar_path(:month => date.month, :year => date.year, :calendar => calendar), :class => 'spud_events_calendar_link next_calendar btn').html_safe
48
+ end
49
+ end