droom 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +23 -0
  3. data/Rakefile +27 -0
  4. data/app/assets/images/droom/arrows.png +0 -0
  5. data/app/assets/images/droom/big_icons.png +0 -0
  6. data/app/assets/images/droom/blueblob.png +0 -0
  7. data/app/assets/images/droom/close.png +0 -0
  8. data/app/assets/images/droom/cross.png +0 -0
  9. data/app/assets/images/droom/download.png +0 -0
  10. data/app/assets/images/droom/greyblob.png +0 -0
  11. data/app/assets/images/droom/help/goodreader.jpg +0 -0
  12. data/app/assets/images/droom/ical.png +0 -0
  13. data/app/assets/images/droom/icons.png +0 -0
  14. data/app/assets/images/droom/medium_icons.png +0 -0
  15. data/app/assets/images/droom/medium_object_icons.png +0 -0
  16. data/app/assets/images/droom/minimonth.png +0 -0
  17. data/app/assets/images/droom/minisymbols.png +0 -0
  18. data/app/assets/images/droom/object_icons.png +0 -0
  19. data/app/assets/images/droom/pinkblob.png +0 -0
  20. data/app/assets/images/droom/place_busy.png +0 -0
  21. data/app/assets/images/droom/place_quiet.png +0 -0
  22. data/app/assets/images/droom/plus_bullet.png +0 -0
  23. data/app/assets/images/droom/search.png +0 -0
  24. data/app/assets/images/droom/setup.png +0 -0
  25. data/app/assets/images/droom/small_go.png +0 -0
  26. data/app/assets/images/droom/smallbullet.png +0 -0
  27. data/app/assets/images/droom/smallspinner.gif +0 -0
  28. data/app/assets/images/droom/spinner.gif +0 -0
  29. data/app/assets/images/droom/spr_toolbar_icons_r2.png +0 -0
  30. data/app/assets/images/droom/tablesort.png +0 -0
  31. data/app/assets/images/droom/tick.png +0 -0
  32. data/app/assets/images/droom/tinysymbols.png +0 -0
  33. data/app/assets/images/droom/twister.png +0 -0
  34. data/app/assets/images/droom/vcard.png +0 -0
  35. data/app/assets/images/droom/venue_bullet.png +0 -0
  36. data/app/assets/javascripts/droom.js.coffee +88 -0
  37. data/app/assets/javascripts/droom/calendar.js.coffee +121 -0
  38. data/app/assets/javascripts/droom/drag_sort.js.coffee +22 -0
  39. data/app/assets/javascripts/droom/forms.js.coffee +746 -0
  40. data/app/assets/javascripts/droom/lib/extensions.js.coffee +60 -0
  41. data/app/assets/javascripts/droom/lib/jquery.animate-colors.js +109 -0
  42. data/app/assets/javascripts/droom/lib/jquery.cookie.js +71 -0
  43. data/app/assets/javascripts/droom/lib/jquery.sortable.js +97 -0
  44. data/app/assets/javascripts/droom/lib/kalendae.js +1692 -0
  45. data/app/assets/javascripts/droom/lib/modernizr.js +4 -0
  46. data/app/assets/javascripts/droom/lib/parser_rules/advanced.js +553 -0
  47. data/app/assets/javascripts/droom/lib/parser_rules/simple.js +32 -0
  48. data/app/assets/javascripts/droom/lib/wysihtml5.js +9550 -0
  49. data/app/assets/javascripts/droom/map.js.coffee +123 -0
  50. data/app/assets/javascripts/droom/sort.js.coffee +126 -0
  51. data/app/assets/javascripts/droom/suggester.js.coffee +230 -0
  52. data/app/assets/stylesheets/droom.css.sass +1151 -0
  53. data/app/assets/stylesheets/lib/_kalendae.css.sass +142 -0
  54. data/app/assets/stylesheets/lib/_toolbar.css.sass +192 -0
  55. data/app/controllers/droom/dashboard_controller.rb +27 -0
  56. data/app/controllers/droom/document_attachments_controller.rb +19 -0
  57. data/app/controllers/droom/documents_controller.rb +116 -0
  58. data/app/controllers/droom/engine_controller.rb +43 -0
  59. data/app/controllers/droom/events_controller.rb +120 -0
  60. data/app/controllers/droom/group_invitations_controller.rb +47 -0
  61. data/app/controllers/droom/groups_controller.rb +67 -0
  62. data/app/controllers/droom/invitations_controller.rb +43 -0
  63. data/app/controllers/droom/memberships_controller.rb +47 -0
  64. data/app/controllers/droom/pages_controller.rb +61 -0
  65. data/app/controllers/droom/people_controller.rb +92 -0
  66. data/app/controllers/droom/suggestions_controller.rb +58 -0
  67. data/app/controllers/droom/venues_controller.rb +39 -0
  68. data/app/helpers/droom/droom_helper.rb +74 -0
  69. data/app/models/droom/agenda_category.rb +8 -0
  70. data/app/models/droom/category.rb +27 -0
  71. data/app/models/droom/document.rb +110 -0
  72. data/app/models/droom/document_attachment.rb +71 -0
  73. data/app/models/droom/document_link.rb +31 -0
  74. data/app/models/droom/event.rb +409 -0
  75. data/app/models/droom/event_set.rb +6 -0
  76. data/app/models/droom/group.rb +66 -0
  77. data/app/models/droom/group_invitation.rb +23 -0
  78. data/app/models/droom/invitation.rb +30 -0
  79. data/app/models/droom/membership.rb +27 -0
  80. data/app/models/droom/page.rb +26 -0
  81. data/app/models/droom/person.rb +302 -0
  82. data/app/models/droom/personal_document.rb +98 -0
  83. data/app/models/droom/recurrence_rule.rb +82 -0
  84. data/app/models/droom/venue.rb +125 -0
  85. data/app/views/droom/dashboard/_marginalia.html.haml +3 -0
  86. data/app/views/droom/dashboard/_my_future_events.html.haml +9 -0
  87. data/app/views/droom/dashboard/_my_group_documents.html.haml +6 -0
  88. data/app/views/droom/dashboard/_my_past_events.haml +6 -0
  89. data/app/views/droom/dashboard/index.html.haml +5 -0
  90. data/app/views/droom/documents/_created.html.haml +2 -0
  91. data/app/views/droom/documents/_document.html.haml +14 -0
  92. data/app/views/droom/documents/_document_line.html.haml +2 -0
  93. data/app/views/droom/documents/_documents_list.html.haml +31 -0
  94. data/app/views/droom/documents/_documents_table.html.haml +13 -0
  95. data/app/views/droom/documents/_event_document_form.html.haml +15 -0
  96. data/app/views/droom/documents/_form.html.haml +22 -0
  97. data/app/views/droom/documents/_listing.html.haml +8 -0
  98. data/app/views/droom/documents/_suggested.html.haml +9 -0
  99. data/app/views/droom/documents/_table_document.html.haml +31 -0
  100. data/app/views/droom/documents/edit.html.haml +1 -0
  101. data/app/views/droom/documents/index.html.haml +29 -0
  102. data/app/views/droom/documents/new.html.haml +1 -0
  103. data/app/views/droom/errors/bang.html.haml +12 -0
  104. data/app/views/droom/errors/not_allowed.html.haml +12 -0
  105. data/app/views/droom/errors/not_found.html.haml +12 -0
  106. data/app/views/droom/events/_attachment.html.haml +1 -0
  107. data/app/views/droom/events/_attachment_list.html.haml +4 -0
  108. data/app/views/droom/events/_calendar.html.haml +54 -0
  109. data/app/views/droom/events/_created.html.haml +2 -0
  110. data/app/views/droom/events/_event.html.haml +77 -0
  111. data/app/views/droom/events/_event_line.html.haml +13 -0
  112. data/app/views/droom/events/_events.html.haml +2 -0
  113. data/app/views/droom/events/_form.html.haml +35 -0
  114. data/app/views/droom/events/_invitations.html.haml +20 -0
  115. data/app/views/droom/events/_other_page_parts.html.haml +0 -0
  116. data/app/views/droom/events/_popup_event.html.haml +6 -0
  117. data/app/views/droom/events/_suggested.html.haml +12 -0
  118. data/app/views/droom/events/_views.html.haml +7 -0
  119. data/app/views/droom/events/edit.html.haml +1 -0
  120. data/app/views/droom/events/index.html.haml +12 -0
  121. data/app/views/droom/events/index.rss.builder +20 -0
  122. data/app/views/droom/events/new.html.haml +1 -0
  123. data/app/views/droom/events/show.html.haml +4 -0
  124. data/app/views/droom/group_invitations/_attending_groups.html.haml +8 -0
  125. data/app/views/droom/group_invitations/_created.html.haml +3 -0
  126. data/app/views/droom/group_invitations/_form.html.haml +4 -0
  127. data/app/views/droom/group_invitations/new.html.haml +1 -0
  128. data/app/views/droom/groups/_created.html.haml +3 -0
  129. data/app/views/droom/groups/_form.html.haml +12 -0
  130. data/app/views/droom/groups/_group.html.haml +11 -0
  131. data/app/views/droom/groups/_groups.html.haml +3 -0
  132. data/app/views/droom/groups/edit.html.haml +1 -0
  133. data/app/views/droom/groups/index.html.haml +7 -0
  134. data/app/views/droom/groups/show.html.haml +13 -0
  135. data/app/views/droom/invitations/_attending_people.html.haml +8 -0
  136. data/app/views/droom/invitations/_created.html.haml +3 -0
  137. data/app/views/droom/invitations/_form.html.haml +5 -0
  138. data/app/views/droom/invitations/new.html.haml +1 -0
  139. data/app/views/droom/memberships/_button.html.haml +11 -0
  140. data/app/views/droom/memberships/_created.html.haml +4 -0
  141. data/app/views/droom/memberships/_form.html.haml +7 -0
  142. data/app/views/droom/memberships/_member.html.haml +33 -0
  143. data/app/views/droom/memberships/_memberships.html.haml +4 -0
  144. data/app/views/droom/pages/_contents.html.haml +10 -0
  145. data/app/views/droom/pages/_form.html.haml +36 -0
  146. data/app/views/droom/pages/_full_page.html.haml +17 -0
  147. data/app/views/droom/pages/_page.html.haml +5 -0
  148. data/app/views/droom/pages/_pages.html.haml +2 -0
  149. data/app/views/droom/pages/admin.html.haml +24 -0
  150. data/app/views/droom/pages/edit.html.haml +1 -0
  151. data/app/views/droom/pages/index.html.haml +10 -0
  152. data/app/views/droom/pages/new.html.haml +4 -0
  153. data/app/views/droom/pages/show.html.haml +5 -0
  154. data/app/views/droom/people/_created.html.haml +6 -0
  155. data/app/views/droom/people/_form.html.haml +40 -0
  156. data/app/views/droom/people/_people.html.haml +29 -0
  157. data/app/views/droom/people/_person.html.haml +34 -0
  158. data/app/views/droom/people/_suggested.html.haml +9 -0
  159. data/app/views/droom/people/edit.html.haml +1 -0
  160. data/app/views/droom/people/index.html.haml +11 -0
  161. data/app/views/droom/people/new.html.haml +1 -0
  162. data/app/views/droom/people/show.html.haml +1 -0
  163. data/app/views/droom/shared/_calendar_and_search.html.haml +2 -0
  164. data/app/views/droom/shared/_calendar_holder.haml +3 -0
  165. data/app/views/droom/shared/_controls.html.haml +8 -0
  166. data/app/views/droom/shared/_navigation.html.haml +8 -0
  167. data/app/views/droom/shared/_search_form.html.haml +4 -0
  168. data/app/views/droom/shared/_suggestions.html.haml +11 -0
  169. data/app/views/droom/shared/_toolbar.html.haml +17 -0
  170. data/app/views/droom/venues/_suggested.html.haml +6 -0
  171. data/app/views/droom/venues/index.html.haml +6 -0
  172. data/app/views/droom/venues/show.html.haml +21 -0
  173. data/app/views/layouts/droom/application.html.haml +36 -0
  174. data/config/initializers/dav.rb +2 -0
  175. data/config/initializers/paperclip.rb +26 -0
  176. data/config/initializers/snail.rb +2 -0
  177. data/config/locales/en.yml +191 -0
  178. data/config/routes.rb +51 -0
  179. data/db/migrate/20120910075016_create_droom_data.rb +134 -0
  180. data/db/migrate/20120917095804_agenda_sections.rb +13 -0
  181. data/db/migrate/20120918121352_add_postal_address_to_people.rb +10 -0
  182. data/db/migrate/20121009075049_give_groups_descriptions.rb +5 -0
  183. data/db/migrate/20121009105244_more_names.rb +5 -0
  184. data/db/migrate/20121009145944_event_agenda_sections.rb +13 -0
  185. data/db/migrate/20121011091230_create_group_invitations.rb +10 -0
  186. data/db/migrate/20121012144720_give_people_positions.rb +5 -0
  187. data/db/migrate/20121012154558_help_pages.rb +13 -0
  188. data/db/migrate/20121012163201_category_slugs.rb +5 -0
  189. data/db/migrate/20121101160102_document_links.rb +14 -0
  190. data/db/migrate/20121101181247_people_visibility.rb +7 -0
  191. data/db/migrate/20121102094738_shy_people.rb +6 -0
  192. data/db/migrate/20121102095856_visibility_defaults.rb +8 -0
  193. data/lib/droom.rb +73 -0
  194. data/lib/droom/dav_resource.rb +36 -0
  195. data/lib/droom/engine.rb +8 -0
  196. data/lib/droom/helpers.rb +25 -0
  197. data/lib/droom/monkeys.rb +15 -0
  198. data/lib/droom/renderers.rb +13 -0
  199. data/lib/droom/validators.rb +5 -0
  200. data/lib/droom/version.rb +3 -0
  201. data/lib/generators/droom/dashboard/dashboard_generator.rb +16 -0
  202. data/lib/generators/droom/install/USAGE +9 -0
  203. data/lib/generators/droom/install/install_generator.rb +15 -0
  204. data/lib/generators/droom/install/templates/droom_initializer.rb +6 -0
  205. data/lib/generators/droom/views/views_generator.rb +9 -0
  206. data/lib/tasks/droom_tasks.rake +4 -0
  207. metadata +635 -0
@@ -0,0 +1,8 @@
1
+ - document ||= listing
2
+
3
+ %li.document.holder
4
+ = link_to document.name, document_url(document), :class => document.file_extension, :title => t(:click_to_download, :name => document.file_file_name)
5
+ - if admin? && @event
6
+ - d_a = @event.document_attachments.find_by_document_id(document)
7
+ = link_to t(:remove), document_document_attachment_path(document, d_a), :method => :delete, :remote => true, :class => 'delete minimal', :data => {:confirm => t(:confirm_remove_document, :name => document.name, :event_name => @event.name)}
8
+
@@ -0,0 +1,9 @@
1
+ - document ||= suggested
2
+ - if current_user.person
3
+ - if pd = current_user.person.personal_or_generic_version_of(document)
4
+ - document = pd
5
+
6
+ %li.document
7
+ = link_to document.name, document_url(document), :class => document.file_extension, :title => t(:click_to_download, :name => document.file_file_name)
8
+ %span.note
9
+ attachments...
@@ -0,0 +1,31 @@
1
+ - document ||= table_document
2
+ - cssclasses = ["document"]
3
+ - cssclasses << document.file_extension
4
+ - cssclasses << 'changed' if document.changed_since_creation?
5
+
6
+ %tr.document.holder
7
+ %th.name
8
+ = link_to truncate(document.name, :length => 24), document_url(document), :class => cssclasses.join(' '), :title => t(:click_to_download, :name => document.file_file_name)
9
+ %td.filename.minor
10
+ %span.note
11
+ = truncate(document.file_file_name, :length => 18)
12
+ %td.filesize.minor
13
+ %span.note
14
+ = number_to_human_size(document.file_file_size)
15
+ %td.created.minor
16
+ %span.note
17
+ = l document.created_at.to_date, :format => :minimal_with_year
18
+ %td.event.minor
19
+ - if document.latest_event_id
20
+ = link_to truncate(document.latest_event_name, :length => 18), event_url(Droom::Event.find(document.latest_event_id)), :class => "event note"
21
+ %td.agenda_section.minor
22
+ %span.note
23
+ = truncate(document.category_name, :length => 18, :separator => " ")
24
+ - if current_user.admin?
25
+ %td.admin<
26
+ = link_to t(:edit), edit_document_url(document), :class => 'edit minimal', :remote => true, :data => {:action => "overlay_form", :type => "html"}
27
+ = link_to t(:remove), document_url(document), :method => 'delete', :class => 'delete minimal', :remote => 'true', :data => {:confirm => t(:confirm_delete_document, :name => document.name)}
28
+ %tr
29
+ %td.description{:colspan => 6}
30
+ %p
31
+ = document.description
@@ -0,0 +1 @@
1
+ = render :partial => 'form'
@@ -0,0 +1,29 @@
1
+ #documents
2
+ - if current_user.admin?
3
+ .holder
4
+ %p.admin
5
+ = link_to t(:add_document), droom.new_document_url, :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => "table.documents"}
6
+
7
+ %table.main.documents.sortable
8
+ %thead
9
+ %tr
10
+ %th
11
+ %a.sorter{:href => "#", :"data-sort" => "name"}
12
+ = t :document_name
13
+ %th.minor
14
+ %a.sorter{:href => "#", :"data-sort" => "filename"}
15
+ = t :document_filename
16
+ %th.minor
17
+ %a.sorter{:href => "#", :"data-sort" => "filesize"}
18
+ = t :document_filesize
19
+ %th.minor
20
+ %a.sorter{:href => "#", :"data-sort" => "created"}
21
+ = t :document_created_at
22
+ %th
23
+ %a.sorter{:href => "#", :"data-sort" => "event"}
24
+ = t :document_attached_to
25
+ %th.minor
26
+ %a.sorter{:href => "#", :"data-sort" => "category"}
27
+ = t :document_category
28
+
29
+ = render :partial => 'documents_table'
@@ -0,0 +1 @@
1
+ = render :partial => 'form'
@@ -0,0 +1,12 @@
1
+ #error
2
+ %h1
3
+ Sorry. Something has exploded
4
+
5
+ %pre
6
+ = @exception.inspect
7
+
8
+ %p
9
+ A message is sent to Will automatically every time an exception like this happens.
10
+ If you would like to add more chastisement or more context, you can reach him on
11
+ = mail_to "will@apanner.org"
12
+ or 01229 588098.
@@ -0,0 +1,12 @@
1
+ #error
2
+ %h1
3
+ Sorry. Something is not allowed
4
+
5
+ %pre
6
+ = @exception.inspect
7
+
8
+ %p
9
+ A message is sent to Will automatically every time an exception like this happens.
10
+ If you would like to add more chastisement or more context, you can reach him on
11
+ = mail_to "will@apanner.org"
12
+ or 01229 588098.
@@ -0,0 +1,12 @@
1
+ #error
2
+ %h1
3
+ Sorry. Something is missing
4
+
5
+ %pre
6
+ = @exception.inspect
7
+
8
+ %p
9
+ A message is sent to Will automatically every time an exception like this happens.
10
+ If you would like to add more chastisement or more context, you can reach him on
11
+ = mail_to "will@apanner.org"
12
+ or 01229 588098.
@@ -0,0 +1 @@
1
+ = render :partial => 'droom/documents/listing', :object => attachment.document
@@ -0,0 +1,4 @@
1
+ - if attachment_list && attachment_list.any?
2
+ %ul.downloads
3
+ = render :partial => "droom/events/attachment", :collection => attachment_list
4
+
@@ -0,0 +1,54 @@
1
+ - if params[:day]
2
+ - date = Date.new(params[:year], params[:month], params[:mday])
3
+ - elsif params[:month]
4
+ - date = Date.new(params[:year], params[:month], 1)
5
+ - else
6
+ - date ||= Date.today
7
+ - month = date.month
8
+ - month_events = Droom::Event.coincident_with(date.beginning_of_month, date.end_of_month)
9
+
10
+ - first_shown = date.beginning_of_month.beginning_of_week
11
+ - last_shown = date.end_of_month.end_of_week
12
+ - before = date.beginning_of_month - 1.day
13
+ - after = date.end_of_month + 1.day
14
+
15
+ %table.minimonth{:data => {:month => date.month, :year => date.year}}
16
+ %thead
17
+ %tr
18
+ %td.m
19
+ = link_to '<', url_for_month(before), :title => (I18n.l before, :format => :minicalendar_title), :class => 'previous', :data => {:month => before.month, :year => before.year}
20
+ %td{:colspan => 5}
21
+ %h3
22
+ = link_to I18n.l(date, :format => :minicalendar_title), url_for_month(date), :class => "month"
23
+ %td.m
24
+ = link_to '>', url_for_month(after), :title => (I18n.l after, :format => :minicalendar_title), :class => 'next', :data => {:month => after.month, :year => after.year}
25
+ %tr
26
+ - day_names.each do |d|
27
+ %th.day_name{:scope => 'col'}
28
+ = d.first
29
+ %tbody
30
+ - weeks = {}
31
+ - first_shown.upto(last_shown) do |day|
32
+ - new_events_today = month_events.select{ |e| e.start_date == day }
33
+ - continuing_events = month_events.select{ |e| e.start_date <= day && e.finish_date && e.finish_date >= day }
34
+
35
+ - cell_class = "d"
36
+ - cell_class += " o" if day.month != date.month
37
+ - cell_class += " t" if day == Date.today
38
+ - if new_events_today.any?
39
+ - cell_class += " e"
40
+ - date_label = link_to day.mday, url_for_date(day), :class => "day"
41
+ - elsif continuing_events.any?
42
+ - cell_class += " c"
43
+ - date_label = link_to day.mday, url_for_date(day)
44
+ - else
45
+ - cell_class += " u"
46
+ - date_label = day.mday
47
+ - weeks[day.cweek] ||= []
48
+ - weeks[day.cweek].push({:class => cell_class, :label => date_label})
49
+
50
+ - weeks.sort.each do |week, weekdays|
51
+ %tr
52
+ - weekdays.each do |d|
53
+ %td{:class => d[:class]}
54
+ = d[:label]
@@ -0,0 +1,2 @@
1
+ %p.notification
2
+ = t :event_created, :name => @event.name
@@ -0,0 +1,77 @@
1
+ - @seen_events ||= []
2
+ - brief ||= false
3
+ - show_header ||= false
4
+ - event ||= @event
5
+ - full_attachments ||= false
6
+
7
+ - if event
8
+ - event_master_id = event.master_id || event.id
9
+ - if @seen_events[event_master_id]
10
+ - repeating = true
11
+ - brief = true
12
+ - @seen_events[event_master_id] = true;
13
+ - cssclasses = ['event holder']
14
+ - cssclasses << 'repeat' if repeating
15
+ - cssclasses << 'private' if event.private?
16
+ - cssclasses << 'public' if event.public?
17
+
18
+ - if show_header
19
+ - header = month_header_for(event.start_date)
20
+ - if header != @event_header
21
+ %p.note
22
+ = @event_header = header
23
+
24
+ %div{:class => cssclasses.join(' ')}
25
+ .datemark
26
+ %span.mon= event.start.strftime('%b')
27
+ %span.dom= event.start.strftime('%d')
28
+ - if event.start.year != Date.today.year
29
+ %span.year= event.start.strftime('%Y')
30
+
31
+ .summary
32
+ %h2.name<
33
+ = link_to event.name, event_url(event)
34
+ - if admin?
35
+ %span.admin<
36
+ = link_to t(:edit_event), edit_event_url(event), :class => 'edit minimal', :remote => true, :data => {:action => "overlay_form", :type => "html"}
37
+ = link_to t(:remove), event_url(event), :method => 'delete', :class => 'delete minimal', :remote => 'true', :data => {:confirm => t(:confirm_delete_event, :name => event.name), :affected => ".minimonth"}
38
+ - else
39
+ = link_to t(:download_ical), event_url(event, :format => :ics), :class => 'ical icon'
40
+
41
+ - unless brief || full_attachments
42
+ - if admin? || event.documents.any?
43
+ .documents
44
+ - if event.documents.any?
45
+ %h3
46
+ = t(:attachments)
47
+ - if admin?
48
+ = link_to t(:add_document), droom.new_event_document_url(event), :class => "add admin minimal", :remote => true, :data => {:action => "append_form", :type => "html"}
49
+ %ul.downloads
50
+ = render :partial => 'droom/documents/listing', :collection => event.documents.by_date.limit(3)
51
+ - if event.documents.count > 3
52
+ %li.more
53
+ = link_to t(:more_documents_count, :count => event.documents.count - 3), event_url(event)
54
+ - elsif admin?
55
+ = link_to t(:add_document), droom.new_event_document_url(event), :class => "add admin", :remote => true, :data => {:action => "append_form", :type => "html"}
56
+
57
+
58
+ %p.practicalities
59
+ %time
60
+ = l(event.start_time, :format => :natural)
61
+ - if event.venue
62
+ %span.location
63
+ = t(:at)
64
+ - if event.venue.url
65
+ = link_to event.venue.proper_name, event.venue.url
66
+ - elsif Droom.show_venue_map
67
+ = link_to event.venue.proper_name, venues_url(:id => event.venue.id)
68
+ - else
69
+ %strong
70
+ = event.venue.proper_name
71
+
72
+ - unless brief
73
+ = simple_format event.description, :class => "description"
74
+
75
+ - if full_attachments
76
+ = render :partial => 'droom/events/invitations', :locals => {:event => event}
77
+ = render :partial => 'droom/documents/documents_list', :locals => {:event => event}
@@ -0,0 +1,13 @@
1
+ - event ||= event_line
2
+
3
+ .eventline
4
+ %h4
5
+ = link_to event.name, event_url(event)
6
+ %p
7
+ - date_format = event.start.year == Date.today.year ? :natural : :natural_with_year
8
+ = l event.start_time, :format => :natural
9
+ = t :on
10
+ = l event.start_date, :format => date_format
11
+ - if event.venue
12
+ = t :at
13
+ = event.venue.proper_name
@@ -0,0 +1,2 @@
1
+ .events_list{:data => {:refreshable => true, :url => "#{events_path}.js"}}
2
+ = render :partial => 'droom/events/event', :collection => @events
@@ -0,0 +1,35 @@
1
+ = form_for @event, :html => {:class => 'edit event', :remote => true, :data => {:type => :html}} do |f|
2
+ .datemark.datepicker
3
+ %a{:href => "#"}
4
+ - if @event.start
5
+ %span.mon= @event.start.strftime('%b')
6
+ %span.dom= @event.start.strftime('%d')
7
+ %span.year= @event.start.strftime('%Y')
8
+ - else
9
+ %span.mon= t(:mon)
10
+ %span.dom= t(:dom)
11
+ %span.year= t(:year)
12
+
13
+ = f.hidden_field :start_date
14
+ .kal
15
+
16
+ .summary
17
+ %p.name
18
+ = f.text_field :name, :class => 'name', :placeholder => t(:event_name)
19
+
20
+ %p.practicalities
21
+ = f.text_field :start_time, :class => "timepicker", :value => (I18n.l(@event.start_time, :format => :precise) if @event.start_time), :placeholder => t(:event_time)
22
+ = t :at
23
+ %span.venue
24
+ %span.name
25
+ = f.text_field :venue_name, :class => "venuepicker", :placeholder => t(:venue_name), :autocomplete => "off"
26
+
27
+ .description.wysihtml
28
+ .toolbar#t1
29
+ = render 'droom/shared/toolbar'
30
+ = f.text_area :description, :id => 'd1'
31
+
32
+ .buttons
33
+ = f.submit t(:save_event)
34
+ = t :or
35
+ = link_to t(:cancel), "/", :class => 'cancel'
@@ -0,0 +1,20 @@
1
+ - event ||= @event
2
+ - if admin?
3
+ #attendants.admin
4
+ %h2
5
+ = t :attending
6
+ .holder
7
+ .admin
8
+ - if admin?
9
+ = link_to t(:invite_group), droom.new_event_group_invitation_url(event), :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => ".groups"}
10
+
11
+ = render :partial => 'droom/group_invitations/attending_groups', :locals => {:event => event}
12
+
13
+
14
+ .holder
15
+ .admin
16
+ - if admin?
17
+ = link_to t(:invite_person), droom.new_event_invitation_url(event), :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => ".people"}
18
+
19
+ = render :partial => 'droom/invitations/attending_people', :locals => {:event => event}
20
+
@@ -0,0 +1,6 @@
1
+ - event ||= @event
2
+ #popup
3
+ %h3
4
+ = link_to event.name, event_url(event)
5
+ = link_to t(:download_ical), event_url(event, :format => :ics), :class => 'ical icon'
6
+ = event.description
@@ -0,0 +1,12 @@
1
+ - event ||= suggested
2
+ - date_format = event.start.year == Date.today.year ? :natural : :natural_with_year
3
+
4
+ %li.event
5
+ = link_to event.name, event_url(event)
6
+ %span.note
7
+ = l event.start_time, :format => :natural
8
+ = t :on
9
+ = l event.start_date, :format => date_format
10
+ - if event.venue
11
+ = t :at
12
+ = event.venue.proper_name
@@ -0,0 +1,7 @@
1
+ %span.calendar_views
2
+ %br
3
+ = t('event_page.stay_up_to_date')
4
+ = link_to(t('event_page.rss'), calendar_url(calendar_parameters.merge(:format => :rss)))
5
+ = t('event_page.or')
6
+ = link_to(t('event_page.calendar_feed'), calendar_url(calendar_parameters.merge(:format => :ics, :protocol => 'webcal://', :only_path => false)))
7
+
@@ -0,0 +1 @@
1
+ = render :partial => 'form'
@@ -0,0 +1,12 @@
1
+ - if current_user.admin?
2
+ .holder
3
+ %p.admin
4
+ = link_to t(:add_event), droom.new_event_url, :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => ".events_list, .minimonth"}
5
+
6
+ #events
7
+ %h2.quiet
8
+ = t(:future_events)
9
+
10
+ = render :partial => 'events'
11
+
12
+ = render :partial => 'droom/dashboard/marginalia'
@@ -0,0 +1,20 @@
1
+ xml = Builder::XmlMarkup.new
2
+ xml.instruct! :xml, :version => "1.0"
3
+ xml.rss :version => "2.0" do
4
+ xml.channel do
5
+ xml.title "Events"
6
+ xml.description list_description
7
+ xml.link calendar_url(calendar_parameters.merge(:format => :html))
8
+
9
+ events.each do |event|
10
+ xml.item do
11
+ xml.title event.title
12
+ xml.link event.url
13
+ xml.description event.description_paragraph
14
+ xml.pubDate event.created_at.to_s(:rfc822)
15
+ xml.guid event.uuid, :isPermaLink => false
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1 @@
1
+ = render :partial => 'form'
@@ -0,0 +1,4 @@
1
+ #events
2
+ = render :partial => 'droom/events/event', :object => @event, :locals => {:full_attachments => true}
3
+
4
+ = render :partial => 'droom/dashboard/marginalia'
@@ -0,0 +1,8 @@
1
+ - event ||= @event
2
+
3
+ .groups{ :"data-url" => "#{event_group_invitations_path(event)}.js", :"data-refreshable" => true}
4
+ - event.groups.each do |group|
5
+ %li.group.holder
6
+ = link_to group.name, group_url(group)
7
+ - if admin?
8
+ = link_to t(:remove), event_group_invitation_path(event, event.group_invitations.find_by_group_id(group.id)), :remote => true, :method => "delete", :class => 'delete minimal', :data => {:confirm => t(:confirm_uninvite_group, :name => group.name, :event_name => @event.name)}