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.
- data/MIT-LICENSE +20 -0
- data/README.md +23 -0
- data/Rakefile +27 -0
- data/app/assets/images/droom/arrows.png +0 -0
- data/app/assets/images/droom/big_icons.png +0 -0
- data/app/assets/images/droom/blueblob.png +0 -0
- data/app/assets/images/droom/close.png +0 -0
- data/app/assets/images/droom/cross.png +0 -0
- data/app/assets/images/droom/download.png +0 -0
- data/app/assets/images/droom/greyblob.png +0 -0
- data/app/assets/images/droom/help/goodreader.jpg +0 -0
- data/app/assets/images/droom/ical.png +0 -0
- data/app/assets/images/droom/icons.png +0 -0
- data/app/assets/images/droom/medium_icons.png +0 -0
- data/app/assets/images/droom/medium_object_icons.png +0 -0
- data/app/assets/images/droom/minimonth.png +0 -0
- data/app/assets/images/droom/minisymbols.png +0 -0
- data/app/assets/images/droom/object_icons.png +0 -0
- data/app/assets/images/droom/pinkblob.png +0 -0
- data/app/assets/images/droom/place_busy.png +0 -0
- data/app/assets/images/droom/place_quiet.png +0 -0
- data/app/assets/images/droom/plus_bullet.png +0 -0
- data/app/assets/images/droom/search.png +0 -0
- data/app/assets/images/droom/setup.png +0 -0
- data/app/assets/images/droom/small_go.png +0 -0
- data/app/assets/images/droom/smallbullet.png +0 -0
- data/app/assets/images/droom/smallspinner.gif +0 -0
- data/app/assets/images/droom/spinner.gif +0 -0
- data/app/assets/images/droom/spr_toolbar_icons_r2.png +0 -0
- data/app/assets/images/droom/tablesort.png +0 -0
- data/app/assets/images/droom/tick.png +0 -0
- data/app/assets/images/droom/tinysymbols.png +0 -0
- data/app/assets/images/droom/twister.png +0 -0
- data/app/assets/images/droom/vcard.png +0 -0
- data/app/assets/images/droom/venue_bullet.png +0 -0
- data/app/assets/javascripts/droom.js.coffee +88 -0
- data/app/assets/javascripts/droom/calendar.js.coffee +121 -0
- data/app/assets/javascripts/droom/drag_sort.js.coffee +22 -0
- data/app/assets/javascripts/droom/forms.js.coffee +746 -0
- data/app/assets/javascripts/droom/lib/extensions.js.coffee +60 -0
- data/app/assets/javascripts/droom/lib/jquery.animate-colors.js +109 -0
- data/app/assets/javascripts/droom/lib/jquery.cookie.js +71 -0
- data/app/assets/javascripts/droom/lib/jquery.sortable.js +97 -0
- data/app/assets/javascripts/droom/lib/kalendae.js +1692 -0
- data/app/assets/javascripts/droom/lib/modernizr.js +4 -0
- data/app/assets/javascripts/droom/lib/parser_rules/advanced.js +553 -0
- data/app/assets/javascripts/droom/lib/parser_rules/simple.js +32 -0
- data/app/assets/javascripts/droom/lib/wysihtml5.js +9550 -0
- data/app/assets/javascripts/droom/map.js.coffee +123 -0
- data/app/assets/javascripts/droom/sort.js.coffee +126 -0
- data/app/assets/javascripts/droom/suggester.js.coffee +230 -0
- data/app/assets/stylesheets/droom.css.sass +1151 -0
- data/app/assets/stylesheets/lib/_kalendae.css.sass +142 -0
- data/app/assets/stylesheets/lib/_toolbar.css.sass +192 -0
- data/app/controllers/droom/dashboard_controller.rb +27 -0
- data/app/controllers/droom/document_attachments_controller.rb +19 -0
- data/app/controllers/droom/documents_controller.rb +116 -0
- data/app/controllers/droom/engine_controller.rb +43 -0
- data/app/controllers/droom/events_controller.rb +120 -0
- data/app/controllers/droom/group_invitations_controller.rb +47 -0
- data/app/controllers/droom/groups_controller.rb +67 -0
- data/app/controllers/droom/invitations_controller.rb +43 -0
- data/app/controllers/droom/memberships_controller.rb +47 -0
- data/app/controllers/droom/pages_controller.rb +61 -0
- data/app/controllers/droom/people_controller.rb +92 -0
- data/app/controllers/droom/suggestions_controller.rb +58 -0
- data/app/controllers/droom/venues_controller.rb +39 -0
- data/app/helpers/droom/droom_helper.rb +74 -0
- data/app/models/droom/agenda_category.rb +8 -0
- data/app/models/droom/category.rb +27 -0
- data/app/models/droom/document.rb +110 -0
- data/app/models/droom/document_attachment.rb +71 -0
- data/app/models/droom/document_link.rb +31 -0
- data/app/models/droom/event.rb +409 -0
- data/app/models/droom/event_set.rb +6 -0
- data/app/models/droom/group.rb +66 -0
- data/app/models/droom/group_invitation.rb +23 -0
- data/app/models/droom/invitation.rb +30 -0
- data/app/models/droom/membership.rb +27 -0
- data/app/models/droom/page.rb +26 -0
- data/app/models/droom/person.rb +302 -0
- data/app/models/droom/personal_document.rb +98 -0
- data/app/models/droom/recurrence_rule.rb +82 -0
- data/app/models/droom/venue.rb +125 -0
- data/app/views/droom/dashboard/_marginalia.html.haml +3 -0
- data/app/views/droom/dashboard/_my_future_events.html.haml +9 -0
- data/app/views/droom/dashboard/_my_group_documents.html.haml +6 -0
- data/app/views/droom/dashboard/_my_past_events.haml +6 -0
- data/app/views/droom/dashboard/index.html.haml +5 -0
- data/app/views/droom/documents/_created.html.haml +2 -0
- data/app/views/droom/documents/_document.html.haml +14 -0
- data/app/views/droom/documents/_document_line.html.haml +2 -0
- data/app/views/droom/documents/_documents_list.html.haml +31 -0
- data/app/views/droom/documents/_documents_table.html.haml +13 -0
- data/app/views/droom/documents/_event_document_form.html.haml +15 -0
- data/app/views/droom/documents/_form.html.haml +22 -0
- data/app/views/droom/documents/_listing.html.haml +8 -0
- data/app/views/droom/documents/_suggested.html.haml +9 -0
- data/app/views/droom/documents/_table_document.html.haml +31 -0
- data/app/views/droom/documents/edit.html.haml +1 -0
- data/app/views/droom/documents/index.html.haml +29 -0
- data/app/views/droom/documents/new.html.haml +1 -0
- data/app/views/droom/errors/bang.html.haml +12 -0
- data/app/views/droom/errors/not_allowed.html.haml +12 -0
- data/app/views/droom/errors/not_found.html.haml +12 -0
- data/app/views/droom/events/_attachment.html.haml +1 -0
- data/app/views/droom/events/_attachment_list.html.haml +4 -0
- data/app/views/droom/events/_calendar.html.haml +54 -0
- data/app/views/droom/events/_created.html.haml +2 -0
- data/app/views/droom/events/_event.html.haml +77 -0
- data/app/views/droom/events/_event_line.html.haml +13 -0
- data/app/views/droom/events/_events.html.haml +2 -0
- data/app/views/droom/events/_form.html.haml +35 -0
- data/app/views/droom/events/_invitations.html.haml +20 -0
- data/app/views/droom/events/_other_page_parts.html.haml +0 -0
- data/app/views/droom/events/_popup_event.html.haml +6 -0
- data/app/views/droom/events/_suggested.html.haml +12 -0
- data/app/views/droom/events/_views.html.haml +7 -0
- data/app/views/droom/events/edit.html.haml +1 -0
- data/app/views/droom/events/index.html.haml +12 -0
- data/app/views/droom/events/index.rss.builder +20 -0
- data/app/views/droom/events/new.html.haml +1 -0
- data/app/views/droom/events/show.html.haml +4 -0
- data/app/views/droom/group_invitations/_attending_groups.html.haml +8 -0
- data/app/views/droom/group_invitations/_created.html.haml +3 -0
- data/app/views/droom/group_invitations/_form.html.haml +4 -0
- data/app/views/droom/group_invitations/new.html.haml +1 -0
- data/app/views/droom/groups/_created.html.haml +3 -0
- data/app/views/droom/groups/_form.html.haml +12 -0
- data/app/views/droom/groups/_group.html.haml +11 -0
- data/app/views/droom/groups/_groups.html.haml +3 -0
- data/app/views/droom/groups/edit.html.haml +1 -0
- data/app/views/droom/groups/index.html.haml +7 -0
- data/app/views/droom/groups/show.html.haml +13 -0
- data/app/views/droom/invitations/_attending_people.html.haml +8 -0
- data/app/views/droom/invitations/_created.html.haml +3 -0
- data/app/views/droom/invitations/_form.html.haml +5 -0
- data/app/views/droom/invitations/new.html.haml +1 -0
- data/app/views/droom/memberships/_button.html.haml +11 -0
- data/app/views/droom/memberships/_created.html.haml +4 -0
- data/app/views/droom/memberships/_form.html.haml +7 -0
- data/app/views/droom/memberships/_member.html.haml +33 -0
- data/app/views/droom/memberships/_memberships.html.haml +4 -0
- data/app/views/droom/pages/_contents.html.haml +10 -0
- data/app/views/droom/pages/_form.html.haml +36 -0
- data/app/views/droom/pages/_full_page.html.haml +17 -0
- data/app/views/droom/pages/_page.html.haml +5 -0
- data/app/views/droom/pages/_pages.html.haml +2 -0
- data/app/views/droom/pages/admin.html.haml +24 -0
- data/app/views/droom/pages/edit.html.haml +1 -0
- data/app/views/droom/pages/index.html.haml +10 -0
- data/app/views/droom/pages/new.html.haml +4 -0
- data/app/views/droom/pages/show.html.haml +5 -0
- data/app/views/droom/people/_created.html.haml +6 -0
- data/app/views/droom/people/_form.html.haml +40 -0
- data/app/views/droom/people/_people.html.haml +29 -0
- data/app/views/droom/people/_person.html.haml +34 -0
- data/app/views/droom/people/_suggested.html.haml +9 -0
- data/app/views/droom/people/edit.html.haml +1 -0
- data/app/views/droom/people/index.html.haml +11 -0
- data/app/views/droom/people/new.html.haml +1 -0
- data/app/views/droom/people/show.html.haml +1 -0
- data/app/views/droom/shared/_calendar_and_search.html.haml +2 -0
- data/app/views/droom/shared/_calendar_holder.haml +3 -0
- data/app/views/droom/shared/_controls.html.haml +8 -0
- data/app/views/droom/shared/_navigation.html.haml +8 -0
- data/app/views/droom/shared/_search_form.html.haml +4 -0
- data/app/views/droom/shared/_suggestions.html.haml +11 -0
- data/app/views/droom/shared/_toolbar.html.haml +17 -0
- data/app/views/droom/venues/_suggested.html.haml +6 -0
- data/app/views/droom/venues/index.html.haml +6 -0
- data/app/views/droom/venues/show.html.haml +21 -0
- data/app/views/layouts/droom/application.html.haml +36 -0
- data/config/initializers/dav.rb +2 -0
- data/config/initializers/paperclip.rb +26 -0
- data/config/initializers/snail.rb +2 -0
- data/config/locales/en.yml +191 -0
- data/config/routes.rb +51 -0
- data/db/migrate/20120910075016_create_droom_data.rb +134 -0
- data/db/migrate/20120917095804_agenda_sections.rb +13 -0
- data/db/migrate/20120918121352_add_postal_address_to_people.rb +10 -0
- data/db/migrate/20121009075049_give_groups_descriptions.rb +5 -0
- data/db/migrate/20121009105244_more_names.rb +5 -0
- data/db/migrate/20121009145944_event_agenda_sections.rb +13 -0
- data/db/migrate/20121011091230_create_group_invitations.rb +10 -0
- data/db/migrate/20121012144720_give_people_positions.rb +5 -0
- data/db/migrate/20121012154558_help_pages.rb +13 -0
- data/db/migrate/20121012163201_category_slugs.rb +5 -0
- data/db/migrate/20121101160102_document_links.rb +14 -0
- data/db/migrate/20121101181247_people_visibility.rb +7 -0
- data/db/migrate/20121102094738_shy_people.rb +6 -0
- data/db/migrate/20121102095856_visibility_defaults.rb +8 -0
- data/lib/droom.rb +73 -0
- data/lib/droom/dav_resource.rb +36 -0
- data/lib/droom/engine.rb +8 -0
- data/lib/droom/helpers.rb +25 -0
- data/lib/droom/monkeys.rb +15 -0
- data/lib/droom/renderers.rb +13 -0
- data/lib/droom/validators.rb +5 -0
- data/lib/droom/version.rb +3 -0
- data/lib/generators/droom/dashboard/dashboard_generator.rb +16 -0
- data/lib/generators/droom/install/USAGE +9 -0
- data/lib/generators/droom/install/install_generator.rb +15 -0
- data/lib/generators/droom/install/templates/droom_initializer.rb +6 -0
- data/lib/generators/droom/views/views_generator.rb +9 -0
- data/lib/tasks/droom_tasks.rake +4 -0
- metadata +635 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= render :partial => 'form'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
= @person
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
- if current_user && current_user.activated?
|
|
2
|
+
%p.controls
|
|
3
|
+
= t(:signed_in_as, :name => current_user.full_name).html_safe
|
|
4
|
+
= link_to t(:preferences), "/users/#{current_user.id}/edit"
|
|
5
|
+
= link_to t(:help_pages), "/help"
|
|
6
|
+
= link_to t(:sign_out), Droom.sign_out_path, :method => :delete
|
|
7
|
+
- if admin?
|
|
8
|
+
= link_to t(:hide_admin), '#', :data => {:action => 'toggle', :affected => '.admin'}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
- if current_user && current_user.activated?
|
|
2
|
+
%nav<
|
|
3
|
+
= nav_link_to t(:your_page), droom.dashboard_path
|
|
4
|
+
= nav_link_to t(:calendar), droom.calendar_path
|
|
5
|
+
= nav_link_to t(:library), droom.library_path
|
|
6
|
+
= nav_link_to t(:directory), droom.directory_path
|
|
7
|
+
- if Droom.show_venue_map
|
|
8
|
+
= nav_link_to t(:map), droom.map_path
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
%ul.search_results
|
|
2
|
+
- if @suggestions.any?
|
|
3
|
+
- @suggestions.each do |sugg|
|
|
4
|
+
= render :partial => "droom/#{sugg.identifier.pluralize}/suggested", :object => sugg
|
|
5
|
+
|
|
6
|
+
- else
|
|
7
|
+
%li.error
|
|
8
|
+
= t :no_results
|
|
9
|
+
|
|
10
|
+
%li.cancel
|
|
11
|
+
= link_to t(:clear_search), '#', :class => "cancel"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
%header
|
|
2
|
+
%ul.commands
|
|
3
|
+
%li.command{:"data-wysihtml5-command" => "bold"}
|
|
4
|
+
%li.command{:"data-wysihtml5-command" => "italic"}
|
|
5
|
+
%li.command{:"data-wysihtml5-command" => "insertUnorderedList"}
|
|
6
|
+
%li.command{:"data-wysihtml5-command" => "insertOrderedList"}
|
|
7
|
+
%li.command{:"data-wysihtml5-command" => "createLink"}
|
|
8
|
+
%li.command{:"data-wysihtml5-command" => "formatBlock", :"data-wysihtml5-command-value" => "h2"}
|
|
9
|
+
%li.command{:"data-wysihtml5-command" => "formatBlock", :"data-wysihtml5-command-value" => "h3"}
|
|
10
|
+
%li.command{:"data-wysihtml5-action" => "change_view"}
|
|
11
|
+
|
|
12
|
+
%div{:"data-wysihtml5-dialog" => "createLink", :style => "display: none"}
|
|
13
|
+
%label
|
|
14
|
+
Link:
|
|
15
|
+
%input{:type => "text", :"data-wysihtml5-dialog-field" => "href", :value => "http://"}
|
|
16
|
+
%a{:"data-wysihtml5-dialog-action" => "save"} OK
|
|
17
|
+
%a{:"data-wysihtml5-dialog-action" => "cancel"} cancel
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
= content_for :head do
|
|
2
|
+
= javascript_include_tag "http://maps.google.com/maps/api/js?sensor=false"
|
|
3
|
+
#venues
|
|
4
|
+
%h1
|
|
5
|
+
= @venue.name
|
|
6
|
+
|
|
7
|
+
%p
|
|
8
|
+
= @venue.address.to_html
|
|
9
|
+
|
|
10
|
+
#events
|
|
11
|
+
%h2.quiet
|
|
12
|
+
= t(:future_events)
|
|
13
|
+
|
|
14
|
+
= render :partial => "droom/events/events"
|
|
15
|
+
|
|
16
|
+
#marginalia
|
|
17
|
+
- cssclass = admin? ? "small editable" : "small"
|
|
18
|
+
#map{:"data-url" => venue_url(@venue), :class => cssclass}
|
|
19
|
+
%p
|
|
20
|
+
= @venue.address
|
|
21
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
!!!
|
|
2
|
+
%html{:lang => 'en'}
|
|
3
|
+
%head
|
|
4
|
+
%title
|
|
5
|
+
- if content_for?(:pagetitle)
|
|
6
|
+
= yield :pagetitle
|
|
7
|
+
\|
|
|
8
|
+
= t(:data_room)
|
|
9
|
+
|
|
10
|
+
= stylesheet_link_tag "droom"
|
|
11
|
+
= javascript_include_tag "droom"
|
|
12
|
+
= content_for :head
|
|
13
|
+
= csrf_meta_tags
|
|
14
|
+
|
|
15
|
+
%body
|
|
16
|
+
#header
|
|
17
|
+
#pagehead
|
|
18
|
+
#nav
|
|
19
|
+
%h2
|
|
20
|
+
= t(:data_room)
|
|
21
|
+
|
|
22
|
+
= render :partial => "droom/shared/navigation"
|
|
23
|
+
|
|
24
|
+
- if user_signed_in?
|
|
25
|
+
#controls
|
|
26
|
+
= render :partial => "droom/shared/controls"
|
|
27
|
+
|
|
28
|
+
#page
|
|
29
|
+
#content
|
|
30
|
+
= yield
|
|
31
|
+
|
|
32
|
+
#flashes
|
|
33
|
+
%p.notice= notice
|
|
34
|
+
%p.alert= alert
|
|
35
|
+
|
|
36
|
+
#mask
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'paperclip'
|
|
2
|
+
|
|
3
|
+
Paperclip.interpolates :dav_root do |attachment, style|
|
|
4
|
+
Droom.dav_root
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Paperclip.interpolates :person do |attachment, style|
|
|
8
|
+
attachment.instance.person_id
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Slug in this context will be the identifying string for either the group or the event
|
|
12
|
+
# to which our document_attachment is attached. If none is present, we use 'unattached'.
|
|
13
|
+
#
|
|
14
|
+
Paperclip.interpolates :slug do |attachment, style|
|
|
15
|
+
attachment.instance.slug
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Paperclip.interpolates :category do |attachment, style|
|
|
19
|
+
attachment.instance.category
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Paperclip.interpolates :category_and_slug do |attachment, style|
|
|
23
|
+
fragment = attachment.instance.slug
|
|
24
|
+
fragment = "#{fragment}/#{attachment.instance.category.slug}" if attachment.instance.category
|
|
25
|
+
fragment
|
|
26
|
+
end
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Sample localization file for English. Add more files in this directory for other locales.
|
|
2
|
+
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
|
3
|
+
|
|
4
|
+
en:
|
|
5
|
+
activerecord:
|
|
6
|
+
attributes:
|
|
7
|
+
droom:
|
|
8
|
+
event:
|
|
9
|
+
name: "Event name"
|
|
10
|
+
venue_name: "Choose or add a location"
|
|
11
|
+
start_time: "Time"
|
|
12
|
+
start_date: "Date"
|
|
13
|
+
person:
|
|
14
|
+
invite_on_creation: "Invite on creation"
|
|
15
|
+
admin_user: "as admin user"
|
|
16
|
+
admin: "Admin"
|
|
17
|
+
attachments: "Attachments"
|
|
18
|
+
attending: "Attending"
|
|
19
|
+
cancel: "cancel"
|
|
20
|
+
mon: "MON"
|
|
21
|
+
dom: "00"
|
|
22
|
+
year: "YEAR"
|
|
23
|
+
add_event: "Add an event"
|
|
24
|
+
add_document: "Add a document"
|
|
25
|
+
add_page: "Add a page"
|
|
26
|
+
add_person: "Add a person"
|
|
27
|
+
add_group: "Add a group"
|
|
28
|
+
added_to: "has been added to '%{group}'."
|
|
29
|
+
continue: "Continue"
|
|
30
|
+
dashboard: "Dashboard"
|
|
31
|
+
hello: "Hello world"
|
|
32
|
+
sign_in: "Sign in"
|
|
33
|
+
can_still_log_in: 'Your password has not changed until you complete this process, <br />so if you remember the old one you can still <a href="%{url}">log in</a>'
|
|
34
|
+
choose_new_password: "Choose a new password"
|
|
35
|
+
clear_search: "Clear search"
|
|
36
|
+
click_to_choose_file: "Click to choose a file"
|
|
37
|
+
confirm_delete_document: "Are you sure you want to delete the document '%{name}'? This cannot be undone."
|
|
38
|
+
confirm_delete_event: "Are you sure you want to delete the event '%{name}'? This cannot be undone."
|
|
39
|
+
confirm_delete_group: "Are you sure you want to delete the group '%{name}'? This cannot be undone."
|
|
40
|
+
confirm_delete_page: "Are you sure you want to delete the page '%{title}'? This cannot be undone."
|
|
41
|
+
confirm_delete_person: "Are you sure you want to delete the person '%{name}'? This cannot be undone."
|
|
42
|
+
confirm_remove_document: "Are you sure you want to remove the document '%{name}' from the event '%{event_name}? If it has no other attachments, the document will also be deleted."
|
|
43
|
+
confirm_remove_member: "Are you sure you want to remove '%{name}' from '%{group}'?"
|
|
44
|
+
confirm_uninvite_group: "Are you sure you want to remove '%{name}' from '%{event_name}'?"
|
|
45
|
+
confirm_uninvite_person: "Are you sure you want to remove '%{name}' from '%{event_name}'?"
|
|
46
|
+
document_category: "Category"
|
|
47
|
+
document_name: "Name"
|
|
48
|
+
document_filename: "Filename"
|
|
49
|
+
document_filesize: "Size"
|
|
50
|
+
document_created: "Document '%{name}' created"
|
|
51
|
+
document_created_at: "Created"
|
|
52
|
+
document_attached_to: "Attached to"
|
|
53
|
+
document_name: "Document name"
|
|
54
|
+
document_description: "Document description"
|
|
55
|
+
download_ical: "Download event"
|
|
56
|
+
downloads: "Downloads"
|
|
57
|
+
download_attachments_as_zipfile: "Download all attachments as a zipfile"
|
|
58
|
+
edit: "Edit"
|
|
59
|
+
edit_event: "Edit event"
|
|
60
|
+
events: "Events"
|
|
61
|
+
events_between: "Events between %{start} and %{finish}"
|
|
62
|
+
events_in: "Events in %{period}"
|
|
63
|
+
events_on: "Events on %{day}"
|
|
64
|
+
event_created: "Event '%{name}' created"
|
|
65
|
+
group_created: "Group '%{name}' created"
|
|
66
|
+
calendar: "Calendar"
|
|
67
|
+
library: "Library"
|
|
68
|
+
preferences: "Preferences"
|
|
69
|
+
set_preferences: "Account preferences"
|
|
70
|
+
user_preferences: "User preferences"
|
|
71
|
+
user_updated: "Preferences for %{name} have been updated."
|
|
72
|
+
your_preferences_saved: "Thank you. Your preferences have been updated"
|
|
73
|
+
|
|
74
|
+
directory: "Directory"
|
|
75
|
+
|
|
76
|
+
group_name: "Name"
|
|
77
|
+
group_description: "Description"
|
|
78
|
+
|
|
79
|
+
help: "Help"
|
|
80
|
+
help_pages: "Help pages"
|
|
81
|
+
|
|
82
|
+
page_title: "Page title"
|
|
83
|
+
page_slug: "Slug"
|
|
84
|
+
page_video_id: "Youtube video id"
|
|
85
|
+
page_summary: "Page summary"
|
|
86
|
+
page_body: "Page body (in markdown format, please)"
|
|
87
|
+
page_slug_explanation: "The 'slug' is a unique identifier that we use to build an address for this page. Users will find the page at /help/slug. If you leave this field blank we will derive a slug automatically from the page title."
|
|
88
|
+
page_summary_explanation: "The page summary is a two- or three-line description that we use whenever this page appears in a list. You would normally see it on the help index page."
|
|
89
|
+
page_youtube_explanation: "Soon there will be a little video-finding gadget here, but to start with please paste in a video id. The embedding will be handled automatically. Omit if not relevant."
|
|
90
|
+
|
|
91
|
+
person_title: "Title"
|
|
92
|
+
person_forename: "Forename"
|
|
93
|
+
person_name: "Name"
|
|
94
|
+
person_surname: "Surname"
|
|
95
|
+
person_email: "Email"
|
|
96
|
+
person_phone: "Phone"
|
|
97
|
+
person_post_line1: "Address"
|
|
98
|
+
person_post_line2: ""
|
|
99
|
+
person_post_city: "City"
|
|
100
|
+
person_post_region: "Region"
|
|
101
|
+
person_post_country: "Country"
|
|
102
|
+
person_post_code: "Post code"
|
|
103
|
+
has_been_created: "has been added to the system"
|
|
104
|
+
and_invited: "and invited to log in."
|
|
105
|
+
|
|
106
|
+
new_membership_instructions: "Start typing a name here and a list of possible matches will appear. Click on someone to add them to the %{name} group."
|
|
107
|
+
|
|
108
|
+
preferences: "Preferences"
|
|
109
|
+
profile: "Profile"
|
|
110
|
+
search: "Search"
|
|
111
|
+
"on": "on"
|
|
112
|
+
at: "at"
|
|
113
|
+
or: "or"
|
|
114
|
+
event_time: "Time"
|
|
115
|
+
your_future_events:
|
|
116
|
+
zero: "You have no invitations at the moment."
|
|
117
|
+
one: "You have one invitation:"
|
|
118
|
+
other: "You have been invited to %{count} events:"
|
|
119
|
+
your_past_events: "Your past events"
|
|
120
|
+
other_future_events: "Here is a general list of events coming up."
|
|
121
|
+
click_to_download_zipfile: "Click to download all attached documents as a zipfile"
|
|
122
|
+
click_to_download: "Click to download %{name}"
|
|
123
|
+
forgot_password: "Forgotten your password?"
|
|
124
|
+
your_personal_documents: "Your personal documents"
|
|
125
|
+
other_documents: "Other available documents"
|
|
126
|
+
personal_calendar_feed: "Personal calendar subscription"
|
|
127
|
+
general_calendar_feed: "General calendar subscription"
|
|
128
|
+
password_confirmation_instructions: "Please confirm your password."
|
|
129
|
+
password_instructions: "Please choose a password of at least six letters."
|
|
130
|
+
password_leave_same: "Leave this field blank to keep your existing password."
|
|
131
|
+
password_confirmation_requirements: "We will not be able to remind you of your password but you can always set a new one if you forget it."
|
|
132
|
+
password_requirements: "Ideally your password should include numbers and punctuation, and should not resemble a dictionary word."
|
|
133
|
+
remove: "remove"
|
|
134
|
+
search: Search
|
|
135
|
+
save: "Save"
|
|
136
|
+
save_event: "Save event"
|
|
137
|
+
save_document: "Save document"
|
|
138
|
+
save_person: "Save person"
|
|
139
|
+
manage_groups: "Manage groups"
|
|
140
|
+
map: "Map"
|
|
141
|
+
my_future_events: "Your invitations"
|
|
142
|
+
my_past_events: "Your past events"
|
|
143
|
+
my_group_documents: "Your documents"
|
|
144
|
+
quick_search: "Quick search"
|
|
145
|
+
future_events: "Events coming up"
|
|
146
|
+
event_name: "Event name"
|
|
147
|
+
venue_name: "Venue name"
|
|
148
|
+
no_documents: "Sorry: there are no documents accessible by your account."
|
|
149
|
+
no_people: "Sorry: there are no directory entries accessible by your account."
|
|
150
|
+
future_event_count:
|
|
151
|
+
zero: "No events coming up"
|
|
152
|
+
one: "One event coming up"
|
|
153
|
+
other: "%{count} events coming up"
|
|
154
|
+
group_members:
|
|
155
|
+
zero: "No members"
|
|
156
|
+
one: "One member"
|
|
157
|
+
other: "%{count} members"
|
|
158
|
+
more_documents_count:
|
|
159
|
+
zero: "No more documents"
|
|
160
|
+
one: "and one more document..."
|
|
161
|
+
other: "and %{count} more documents..."
|
|
162
|
+
time:
|
|
163
|
+
formats:
|
|
164
|
+
natural: "%l:%M%P"
|
|
165
|
+
natural_with_date: "%l:%M%P, %d %B %Y"
|
|
166
|
+
precise: "%H:%M"
|
|
167
|
+
date:
|
|
168
|
+
formats:
|
|
169
|
+
dashed_short_date_format: "%d-%m-%Y"
|
|
170
|
+
month_header: "%B %Y"
|
|
171
|
+
natural: "%d %B"
|
|
172
|
+
natural_full: "%l:%M%P, %d %B %Y"
|
|
173
|
+
natural_with_year: "%d %B %Y"
|
|
174
|
+
minimal_with_year: "%d %b %Y"
|
|
175
|
+
minicalendar_title: "%B %Y"
|
|
176
|
+
minicalendar_month: "%B"
|
|
177
|
+
year: "%Y"
|
|
178
|
+
month: "%B %Y"
|
|
179
|
+
|
|
180
|
+
errors:
|
|
181
|
+
attributes:
|
|
182
|
+
name:
|
|
183
|
+
blank: "Please enter your full name"
|
|
184
|
+
email:
|
|
185
|
+
blank: "Please give an email address on which we can contact you"
|
|
186
|
+
invalid: "This does not appear to be a valid email address"
|
|
187
|
+
uniqueness: "This email address is already in use here"
|
|
188
|
+
password:
|
|
189
|
+
confirmation: "The password and its confirmation do not match"
|
|
190
|
+
too_short: "Your password must have at least 6 letters"
|
|
191
|
+
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Droom::Engine.routes.draw do
|
|
2
|
+
|
|
3
|
+
match '/' => DAV4Rack::Handler.new(
|
|
4
|
+
:root => Rails.root.to_s,
|
|
5
|
+
:root_uri_path => '/',
|
|
6
|
+
:resource_class => Droom::DavResource,
|
|
7
|
+
:log_to => [(Rails.root + 'log/dav.log').to_s, Logger::DEBUG]
|
|
8
|
+
), :anchor => false, :constraints => { :subdomain => Droom.dav_subdomain }
|
|
9
|
+
|
|
10
|
+
resources :events do
|
|
11
|
+
resources :invitations
|
|
12
|
+
resources :group_invitations
|
|
13
|
+
get "calendar", :on => :collection
|
|
14
|
+
resources :documents
|
|
15
|
+
collection do
|
|
16
|
+
match "feed/:auth_token.:format" => "events#feed", :as => :feed
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
resources :people do
|
|
21
|
+
resources :events do
|
|
22
|
+
collection do
|
|
23
|
+
match "feed/:auth_token.:format" => "events#feed", :as => :feed
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
resources :documents do
|
|
29
|
+
resources :document_attachments
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
resources :groups do
|
|
33
|
+
resources :memberships
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
resources :venues
|
|
37
|
+
resources :pages
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
match "/library" => 'documents#index', :as => :library
|
|
41
|
+
match "/directory" => 'people#index', :as => :directory
|
|
42
|
+
match "/calendar" => 'events#index', :as => :calendar
|
|
43
|
+
match "/map" => 'venues#index', :as => :map
|
|
44
|
+
match "/me" => 'dashboard#index', :as => :dashboard
|
|
45
|
+
match '/help/:slug', :to => 'pages#show', :as => 'help_page'
|
|
46
|
+
match '/help', :to => 'pages#index', :as => 'help'
|
|
47
|
+
|
|
48
|
+
match '/suggestions', :to => 'suggestions#index', :as => "suggestions"
|
|
49
|
+
match '/suggestions/:type', :to => 'suggestions#index'
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
class CreateDroomData < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :droom_events do |t|
|
|
4
|
+
t.datetime :start
|
|
5
|
+
t.datetime :finish
|
|
6
|
+
t.string :name
|
|
7
|
+
t.string :slug
|
|
8
|
+
t.text :description
|
|
9
|
+
t.string :url
|
|
10
|
+
t.integer :venue_id
|
|
11
|
+
t.integer :event_set_id
|
|
12
|
+
t.integer :created_by_id
|
|
13
|
+
t.string :uuid
|
|
14
|
+
t.boolean :all_day
|
|
15
|
+
t.integer :master_id
|
|
16
|
+
t.boolean :private
|
|
17
|
+
t.boolean :public
|
|
18
|
+
t.timestamps
|
|
19
|
+
end
|
|
20
|
+
add_index :droom_events, :event_set_id
|
|
21
|
+
add_index :droom_events, :master_id
|
|
22
|
+
add_index :droom_events, :public
|
|
23
|
+
|
|
24
|
+
create_table :droom_documents do |t|
|
|
25
|
+
t.string :name
|
|
26
|
+
t.text :description
|
|
27
|
+
t.integer :version
|
|
28
|
+
t.attachment :file
|
|
29
|
+
t.string :file_fingerprint
|
|
30
|
+
t.integer :created_by_id
|
|
31
|
+
t.boolean :public
|
|
32
|
+
t.boolean :private
|
|
33
|
+
t.timestamps
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
create_table :droom_personal_documents do |t|
|
|
37
|
+
t.integer :document_attachment_id
|
|
38
|
+
t.integer :person_id
|
|
39
|
+
t.integer :version
|
|
40
|
+
t.attachment :file
|
|
41
|
+
t.string :file_fingerprint
|
|
42
|
+
t.timestamps
|
|
43
|
+
end
|
|
44
|
+
add_index :droom_personal_documents, :document_attachment_id
|
|
45
|
+
add_index :droom_personal_documents, :person_id
|
|
46
|
+
|
|
47
|
+
create_table :droom_people do |t|
|
|
48
|
+
t.string :name
|
|
49
|
+
t.string :title
|
|
50
|
+
t.string :email
|
|
51
|
+
t.string :phone
|
|
52
|
+
t.text :description
|
|
53
|
+
t.attachment :image
|
|
54
|
+
t.integer :user_id
|
|
55
|
+
t.integer :created_by_id
|
|
56
|
+
t.timestamps
|
|
57
|
+
end
|
|
58
|
+
add_index :droom_people, :email
|
|
59
|
+
add_index :droom_people, :user_id
|
|
60
|
+
|
|
61
|
+
create_table :droom_groups do |t|
|
|
62
|
+
t.string :name
|
|
63
|
+
t.string :slug
|
|
64
|
+
t.integer :leader_id
|
|
65
|
+
t.integer :created_by_id
|
|
66
|
+
t.timestamps
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
create_table :droom_event_sets do |t|
|
|
70
|
+
t.string :name
|
|
71
|
+
t.integer :created_by_id
|
|
72
|
+
t.timestamps
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
create_table :droom_memberships do |t|
|
|
76
|
+
t.integer :person_id
|
|
77
|
+
t.integer :group_id
|
|
78
|
+
t.integer :created_by_id
|
|
79
|
+
t.timestamps
|
|
80
|
+
end
|
|
81
|
+
add_index :droom_memberships, :person_id
|
|
82
|
+
add_index :droom_memberships, :group_id
|
|
83
|
+
|
|
84
|
+
create_table :droom_invitations do |t|
|
|
85
|
+
t.integer :person_id
|
|
86
|
+
t.integer :event_id
|
|
87
|
+
t.integer :created_by_id
|
|
88
|
+
t.timestamps
|
|
89
|
+
end
|
|
90
|
+
add_index :droom_invitations, :event_id
|
|
91
|
+
add_index :droom_invitations, :person_id
|
|
92
|
+
|
|
93
|
+
create_table :droom_document_attachments do |t|
|
|
94
|
+
t.integer :document_id
|
|
95
|
+
t.string :attachee_type
|
|
96
|
+
t.integer :attachee_id
|
|
97
|
+
t.integer :created_by_id
|
|
98
|
+
t.timestamps
|
|
99
|
+
end
|
|
100
|
+
add_index :droom_document_attachments, [:attachee_type, :attachee_id], :name => :attachee
|
|
101
|
+
|
|
102
|
+
create_table :droom_recurrence_rules do |t|
|
|
103
|
+
t.integer :event_id
|
|
104
|
+
t.boolean :active, :default => false
|
|
105
|
+
t.string :period
|
|
106
|
+
t.string :basis
|
|
107
|
+
t.integer :interval, :default => 1
|
|
108
|
+
t.datetime :limiting_date
|
|
109
|
+
t.integer :limiting_count
|
|
110
|
+
t.integer :created_by_id
|
|
111
|
+
t.timestamps
|
|
112
|
+
end
|
|
113
|
+
add_index :droom_recurrence_rules, :event_id
|
|
114
|
+
|
|
115
|
+
create_table :droom_venues do |t|
|
|
116
|
+
t.string :name
|
|
117
|
+
t.text :description
|
|
118
|
+
t.string :post_line1
|
|
119
|
+
t.string :post_line2
|
|
120
|
+
t.string :post_city
|
|
121
|
+
t.string :post_region
|
|
122
|
+
t.string :post_country
|
|
123
|
+
t.string :post_code
|
|
124
|
+
t.string :url
|
|
125
|
+
t.decimal :lat, :precision => 15, :scale => 10
|
|
126
|
+
t.decimal :lng, :precision => 15, :scale => 10
|
|
127
|
+
t.boolean :prepend_article
|
|
128
|
+
t.timestamps
|
|
129
|
+
end
|
|
130
|
+
add_index :droom_venues, [:lat, :lng]
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
end
|