droom 0.0.1

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.
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,3 @@
1
+ %p.notification
2
+ %strong
3
+ = t(:group_invited, :name => @group_invitation.group.name)
@@ -0,0 +1,4 @@
1
+ = form_for [@event, @group_invitation], :html => {:remote => true, :data => {:type => :html}} do |f|
2
+ %input.group_picker{:type => "text", :placeholder => t(:group_name), :autocomplete => "off"}
3
+ = f.hidden_field :group_id, :class => "group_picker_target"
4
+ = link_to t(:cancel), "/", :class => 'cancel'
@@ -0,0 +1 @@
1
+ = render :partial => "form"
@@ -0,0 +1,3 @@
1
+ %p.notification
2
+ %strong
3
+ = t(:group_created, :name => @group.name)
@@ -0,0 +1,12 @@
1
+ = form_for @group, :html => {:class => 'edit group', :remote => true, :data => {:type => :html}} do |f|
2
+ %table.main.groups
3
+ %tr.group
4
+ %th.name
5
+ = f.text_field :name, :class => 'name', :placeholder => t(:group_name)
6
+ %td.description
7
+ = f.text_field :description, :class => 'name', :placeholder => t(:group_description)
8
+ %td.count
9
+ %td.buttons
10
+ = f.submit t(:save)
11
+ = t :or
12
+ = link_to t(:cancel), "/", :class => 'cancel'
@@ -0,0 +1,11 @@
1
+ - group ||= @group
2
+ %tr.group.holder{:id => "group_#{group.id}"}
3
+ %th.name
4
+ = link_to group.name, group
5
+ %td.description= group.description
6
+ %td.count= t(:group_members, :count => group.people.count)
7
+ %td.buttons
8
+ - if admin?
9
+ = link_to t(:edit_group), edit_group_url(group), :class => 'admin edit minimal', :remote => true, :data => {:action => "overlay_form", :type => "html"}
10
+ - if current_user.admin?
11
+ = link_to t(:remove), group_url(group), :method => 'delete', :class => 'admin delete minimal', :remote => 'true', :data => {:confirm => t(:confirm_delete_group, :name => group.name)}
@@ -0,0 +1,3 @@
1
+ %table.main.groups{:data => {:refreshable => true, :url => "#{groups_path}.js"}}
2
+ %tbody
3
+ = render :partial => 'group', :collection => @groups
@@ -0,0 +1 @@
1
+ = render :partial => "form"
@@ -0,0 +1,7 @@
1
+ #groups
2
+ - if current_user.admin?
3
+ .holder
4
+ %p.admin
5
+ = link_to t(:add_group), droom.new_group_url, :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => "table.groups"}
6
+
7
+ = render :partial => 'groups'
@@ -0,0 +1,13 @@
1
+ #people
2
+
3
+ %h1= @group.name
4
+
5
+ %p
6
+ = @group.description
7
+
8
+ = render :partial => 'droom/memberships/memberships'
9
+
10
+ - if current_user.admin?
11
+ .holder
12
+ %p.admin
13
+ = link_to t(:add_member), droom.new_group_membership_url(@group), :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => "table.people"}
@@ -0,0 +1,8 @@
1
+ - event ||= @event
2
+
3
+ .people{ :"data-url" => "#{event_invitations_path(event)}.js", :"data-refreshable" => true}
4
+ - Droom::Person.personally_invited_to_event(event).each do |person|
5
+ %li.person.holder
6
+ = link_to person.name, person_url(person)
7
+ - if admin?
8
+ = link_to t(:remove), event_invitation_path(event, event.invitations.find_by_person_id(person.id)), :remote => true, :method => "delete", :class => 'delete minimal', :data => {:confirm => t(:confirm_uninvite_person, :name => person.name, :event_name => @event.name)}
@@ -0,0 +1,3 @@
1
+ %p.notification
2
+ %strong
3
+ = t(:person_invited, :name => @invitation.person.name)
@@ -0,0 +1,5 @@
1
+ = form_for [@event, @invitation], :html => {:remote => true, :data => {:type => :html}} do |f|
2
+ %input.person_picker{:type => "text", :placeholder => t(:person_name), :autocomplete => "off"}
3
+ = f.hidden_field :person_id, :class => "person_picker_target"
4
+ = link_to t(:cancel), "/", :class => 'cancel'
5
+
@@ -0,0 +1 @@
1
+ = render :partial => "form"
@@ -0,0 +1,11 @@
1
+ - group ||= @group
2
+ - person ||= @person
3
+ - member = Droom::Membership.find_by_person_id_and_group_id(person.id, group.id)
4
+
5
+ .holder
6
+ - if member
7
+ %a.toggle_active{:href => group_membership_path(group, member), :"data-type" => "html", :"data-remote" => "true", :"data-method" => :delete}
8
+ .a_member
9
+ - else
10
+ %a.toggle_active{:href => new_group_membership_path(group, :person_id => person.id), :"data-type" => "html", :"data-remote" => "true"}
11
+ .not_a_member
@@ -0,0 +1,4 @@
1
+ %p.notification
2
+ %strong
3
+ = @membership.person.name
4
+ = t(:added_to, :group => @group.name)
@@ -0,0 +1,7 @@
1
+ = form_for [@group, @membership], :html => {:remote => true, :data => {:type => :html}} do |f|
2
+ %input.person_picker{:type => "text", :placeholder => t(:person_name), :autocomplete => "off"}
3
+ = f.hidden_field :person_id, :class => "person_picker_target"
4
+ = link_to t(:cancel), "/", :class => 'cancel'
5
+ %p.formnote
6
+ =t :new_membership_instructions, :name => @group.name
7
+
@@ -0,0 +1,33 @@
1
+ - membership ||= @membership
2
+ - person = membership.person
3
+ %tr.person.holder{:id => "person_#{person.id}"}
4
+ %td.icon
5
+ %span.placeholder
6
+
7
+ %th.name
8
+ = person.title
9
+ = person.name
10
+
11
+ %td.email
12
+ %p
13
+ = mail_to person.email
14
+ %td.phone
15
+ - if person.phone
16
+ %p
17
+ = person.phone
18
+ - else
19
+ %p.unavailable
20
+ no phone
21
+ / %td.address
22
+ / - if person.address?
23
+ / %p
24
+ / = person.address.to_html
25
+ / - else
26
+ / %p.unavailable
27
+ / no address
28
+ %td.buttons
29
+ %a{:href => person_url(person, :format => :vcf), :class => 'vcard'}
30
+ / - if admin?
31
+ / = link_to t(:edit_person), edit_person_url(person), :class => 'admin edit minimal', :remote => true, :data => {:action => "overlay_form", :type => "html"}
32
+ - if current_user.admin?
33
+ = link_to t(:remove), group_membership_url(@group, Droom::Membership.find_by_group_id_and_person_id(@group.id, person.id)), :method => 'delete', :class => 'admin delete minimal', :remote => 'true', :data => {:confirm => t(:confirm_remove_member, :name => person.name, :group => @group.name)}
@@ -0,0 +1,4 @@
1
+ %table.main.people{:data => {:refreshable => true, :url => "#{group_path}.js"}}
2
+ %tbody
3
+ - @group.memberships.each do |membership|
4
+ = render :partial => 'droom/memberships/member', :locals => {:membership => membership}
@@ -0,0 +1,10 @@
1
+ .contents
2
+ %h3
3
+ = t :help_pages
4
+ %ul
5
+ - @pages.each do |page|
6
+ %li
7
+ %strong
8
+ = link_to_unless_current page.title, droom.help_page_url(page.slug)
9
+ %br
10
+ = page.summary
@@ -0,0 +1,36 @@
1
+ = form_for @page, :html => {:class => 'edit page', :remote => true, :data => {:type => :html}} do |f|
2
+
3
+ %p
4
+ = f.text_field :title, :placeholder => t(:page_title), :class => 'pagetitle'
5
+
6
+ %p
7
+ = f.text_field :slug, :placeholder => t(:page_slug), :class => 'slug'
8
+ %br
9
+ %span.formnote
10
+ = t :page_slug_explanation
11
+
12
+ %p
13
+ = f.text_area :summary, :placeholder => t(:page_summary), :class => 'small'
14
+ %br
15
+ %span.formnote
16
+ = t :page_summary_explanation
17
+
18
+ %p
19
+ = f.text_area :body, :placeholder => t(:page_body), :class => 'large'
20
+
21
+ %p
22
+ = f.text_field :video_id, :placeholder => t(:page_video_id), :class => 'youtube'
23
+ %br
24
+ %span.formnote
25
+ = t :page_youtube_explanation
26
+
27
+ .controls
28
+ .save.button
29
+ = f.submit t(:save), :class => "submit"
30
+ / = link_to t(:save), '#', :class => 'submit'
31
+ .cancel.button
32
+ - if @page.new_record?
33
+ = link_to t(:cancel), pages_url
34
+ - else
35
+ = link_to t(:cancel), droom.help_page_url(@page.slug)
36
+
@@ -0,0 +1,17 @@
1
+ - page ||= @page
2
+
3
+ #help_page.holder
4
+ %h1.pagetitle
5
+ = page.title
6
+ - if admin?
7
+ %span.admin<
8
+ = link_to t(:edit_page), edit_page_url(page), :class => 'edit minimal', :remote => true, :data => {:action => "overlay_form", :type => "html"}
9
+ = link_to t(:remove), page_url(page), :method => 'delete', :class => 'delete minimal', :remote => 'true', :data => {:confirm => t(:confirm_delete_page, :title => page.title), :affected => ".contents"}
10
+
11
+ - if page.video_id?
12
+ .video
13
+ %iframe{:width => 640, :height => 480, :src => "http://www.youtube-nocookie.com/embed/#{page.video_id}?rel=0", :frameborder => 0, :allowfullscreen => true}
14
+
15
+ - if page.body?
16
+ .body
17
+ = page.rendered_body.html_safe
@@ -0,0 +1,5 @@
1
+ %h2
2
+ = link_to page.title, help_page_url(page.slug)
3
+
4
+ %p
5
+ = page.summary
@@ -0,0 +1,2 @@
1
+ .page_list{:data => {:refreshable => true, :url => "#{pages_path}.js"}}
2
+ = render :partial => 'page', :collection => @pages
@@ -0,0 +1,24 @@
1
+ - content_for :pagetitle do
2
+ = t :manage_pages
3
+
4
+ #pagetitle
5
+ %h1
6
+ = t :fellows_and_scholars
7
+ %span.addendum
8
+ = t :manage_pages
9
+
10
+ .localnav
11
+ = render :partial => 'people/admin_nav', :locals => {:login => true}
12
+
13
+ #admin.pages
14
+ %p
15
+ = t :manage_pages_introduction
16
+
17
+ %h3
18
+ = link_to t(:add_page), new_page_url
19
+
20
+ = render :partial => 'page', :collection => @pages, :locals => {:show_admin => true}
21
+
22
+ .pagination
23
+ = paginate @pages
24
+
@@ -0,0 +1 @@
1
+ = render :partial => 'form'
@@ -0,0 +1,10 @@
1
+ - if current_user.admin?
2
+ .holder
3
+ %p.admin
4
+ = link_to t(:add_page), droom.new_page_url, :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => ".page_list"}
5
+
6
+ #help_pages
7
+ %h1.pagetitle
8
+ =t(:help_pages)
9
+
10
+ = render :partial => "pages"
@@ -0,0 +1,4 @@
1
+ %h1
2
+ = t :new_page
3
+
4
+ = render :partial => 'form'
@@ -0,0 +1,5 @@
1
+ = render :partial => "full_page"
2
+
3
+ #marginalia
4
+ = render :partial => "contents"
5
+
@@ -0,0 +1,6 @@
1
+ %p.notification
2
+ %strong
3
+ = @person.formal_name
4
+ = t :has_been_created
5
+ - if @person.user
6
+ = t :and_invited
@@ -0,0 +1,40 @@
1
+ = form_for @person, :html => {:class => 'edit person', :remote => true, :data => {:type => :html}} do |f|
2
+ %table.main.people
3
+ %tr.person
4
+ %td.icon
5
+ %span
6
+ %th.name
7
+ = f.text_field :title, :class => 'title', :placeholder => t(:person_title)
8
+ - if Droom.use_forenames
9
+ = f.text_field :forename, :class => 'forename', :placeholder => t(:person_forename)
10
+ = f.text_field :name, :class => 'name', :placeholder => t(:person_surname)
11
+ - else
12
+ = f.text_field :name, :class => 'name', :placeholder => t(:person_name)
13
+ %br
14
+ - if @person.new_record?
15
+ = f.check_box :invite_on_creation, :class => 'invite'
16
+ = f.label :invite_on_creation
17
+ = f.check_box :admin_user
18
+ = f.label :admin_user
19
+
20
+ %td.email
21
+ = f.email_field :email, :class => 'email', :placeholder => t(:person_email)
22
+ %td.phone
23
+ = f.text_field :phone, :class => 'phone', :placeholder => t(:person_phone)
24
+ / %td.address
25
+ / = f.text_field :post_line1, :class => 'post_line1', :placeholder => t(:person_post_line1)
26
+ / %br
27
+ / = f.text_field :post_line2, :class => 'post_line2', :placeholder => t(:person_post_line2)
28
+ / %br
29
+ / = f.text_field :post_city, :class => 'post_city', :placeholder => t(:person_post_city)
30
+ / %br
31
+ / = f.text_field :post_region, :class => 'post_region', :placeholder => t(:person_post_region)
32
+ / %br
33
+ / = f.text_field :post_country, :class => 'post_country', :placeholder => t(:person_post_country)
34
+ / %br
35
+ / = f.text_field :post_code, :class => 'post_code', :placeholder => t(:person_post_code)
36
+ %td.buttons
37
+ = f.submit t(:save)
38
+ = t :or
39
+ = link_to t(:cancel), "/", :class => 'cancel'
40
+
@@ -0,0 +1,29 @@
1
+ %table.main.people{:data => {:refreshable => true, :url => "#{people_path}.js"}}
2
+ %thead
3
+ %tr
4
+ %th
5
+ %th
6
+ %th
7
+ %th
8
+ - if current_user.admin?
9
+ - @groups.each do |group|
10
+ %th.group.admin
11
+ .rotate
12
+ = truncate(group.name, :length => 12)
13
+ %th.admin
14
+ .rotate
15
+ = t :edit
16
+ %th.admin
17
+ .rotate
18
+ = t :delete
19
+
20
+ %tbody.drag_sort
21
+ - if @people.any?
22
+ - @people.each do |p|
23
+ = render :partial => 'person', :object => p
24
+ - else
25
+ %tr
26
+ %td{:colspan => 4}
27
+ %p.nothing_to_see
28
+ = t :no_people
29
+
@@ -0,0 +1,34 @@
1
+ - person ||= @person
2
+ - cssclass = "placeholder"
3
+ - cssclass << " invited" if person.has_invited_user?
4
+ - cssclass << " active" if person.has_active_user?
5
+
6
+ %tr.person.holder{:id => "person_#{person.id}"}
7
+ %td.icon.handle
8
+ %span{:class => cssclass}
9
+
10
+ %th.name
11
+ = person.formal_name
12
+
13
+ %td.email
14
+ %p
15
+ = mail_to person.email
16
+ %td.phone
17
+ - if person.phone
18
+ %p
19
+ = person.phone
20
+ - else
21
+ %p.unavailable
22
+ no phone
23
+ - if admin?
24
+ - @groups.each do |group|
25
+ %td.group.admin
26
+ = render :partial => 'droom/memberships/button', :locals => {:group => group, :person => person}
27
+ - unless admin?
28
+ %td.buttons
29
+ %a{:href => person_url(person, :format => :vcf), :class => 'vcard'}
30
+ - if admin?
31
+ %td.admin
32
+ = link_to t(:edit_person), edit_person_url(person), :class => 'admin edit minimal', :remote => true, :data => {:action => "overlay_form", :type => "html"}
33
+ %td.admin
34
+ = link_to t(:remove), person_url(person), :method => 'delete', :class => 'admin delete minimal', :remote => 'true', :data => {:confirm => t(:confirm_delete_person, :name => person.name)}
@@ -0,0 +1,9 @@
1
+ - person ||= suggested
2
+
3
+ %li.person
4
+ %strong
5
+ = person.formal_name
6
+ %span.note
7
+ = person.phone
8
+ = t :or
9
+ = mail_to person.email
@@ -0,0 +1 @@
1
+ = render :partial => 'form'
@@ -0,0 +1,11 @@
1
+ #people
2
+ - if current_user.admin?
3
+ .holder
4
+ %p.admin
5
+ = link_to t(:add_person), droom.new_person_url, :class => "add", :remote => true, :data => {:action => "append_form", :type => "html", :affected => "table.people"}
6
+ = link_to t(:manage_groups), droom.groups_url, :class => "edit"
7
+
8
+ %p
9
+ = link_to "Download this list to your address book", directory_url(:format => :vcf), :class => 'vcard download'
10
+
11
+ = render :partial => "people"