droom 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,43 @@
|
|
1
|
+
module Droom
|
2
|
+
class EngineController < ::ApplicationController
|
3
|
+
helper Droom::DroomHelper
|
4
|
+
rescue_from "ActiveRecord::RecordNotFound", :with => :rescue_not_found
|
5
|
+
rescue_from "Droom::PermissionDenied", :with => :rescue_not_allowed
|
6
|
+
rescue_from "Droom::DroomError", :with => :rescue_bang
|
7
|
+
protected
|
8
|
+
|
9
|
+
def require_admin!
|
10
|
+
raise Droom::PermissionDenied unless current_user && current_user.admin?
|
11
|
+
end
|
12
|
+
|
13
|
+
def rescue_not_found(exception)
|
14
|
+
@exception = exception
|
15
|
+
render :template => 'droom/errors/not_found', :status => :not_found
|
16
|
+
end
|
17
|
+
|
18
|
+
def rescue_not_allowed(exception)
|
19
|
+
@exception = exception
|
20
|
+
render :template => 'droom/errors/not_allowed', :status => :permission_denied
|
21
|
+
end
|
22
|
+
|
23
|
+
def rescue_bang(exception)
|
24
|
+
@exception = exception
|
25
|
+
render :template => 'droom/errors/bang', :status => 500
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def no_layout_if_pjax
|
31
|
+
if request.headers['X-PJAX']
|
32
|
+
false
|
33
|
+
else
|
34
|
+
Droom.layout
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_current_person
|
39
|
+
@current_person = current_user.person if current_user
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
module Droom
|
2
|
+
class EventsController < Droom::EngineController
|
3
|
+
require "uri"
|
4
|
+
require "ri_cal"
|
5
|
+
respond_to :html, :json, :rss, :ics, :js, :zip
|
6
|
+
layout :no_layout_if_pjax
|
7
|
+
|
8
|
+
before_filter :authenticate_user!
|
9
|
+
before_filter :require_admin!, :except => [:index, :show]
|
10
|
+
before_filter :get_current_person
|
11
|
+
before_filter :numerical_parameters
|
12
|
+
before_filter :get_event, :only => [:show, :edit, :update, :destroy]
|
13
|
+
before_filter :build_event, :only => [:new, :create]
|
14
|
+
before_filter :find_events, :only => [:index, :calendar]
|
15
|
+
|
16
|
+
def index
|
17
|
+
respond_with @events do |format|
|
18
|
+
format.js {
|
19
|
+
render :partial => 'droom/events/events'
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def calendar
|
25
|
+
respond_with @events do |format|
|
26
|
+
format.js {
|
27
|
+
render :partial => 'droom/events/calendar'
|
28
|
+
}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def feed
|
33
|
+
@events = Droom::Event.all
|
34
|
+
respond_with @events
|
35
|
+
end
|
36
|
+
|
37
|
+
def show
|
38
|
+
respond_with @event do |format|
|
39
|
+
format.js {
|
40
|
+
render :partial => 'droom/events/event'
|
41
|
+
}
|
42
|
+
format.zip {
|
43
|
+
send_file @event.documents_zipped.path, :type => 'application/zip', :disposition => 'attachment', :filename => "#{@event.slug}.zip"
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def new
|
49
|
+
respond_with @event
|
50
|
+
end
|
51
|
+
|
52
|
+
def create
|
53
|
+
if @event.save
|
54
|
+
render :partial => "created"
|
55
|
+
else
|
56
|
+
respond_with @event
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def edit
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
def update
|
65
|
+
@event.update_attributes(params[:event])
|
66
|
+
if @event.save
|
67
|
+
render :partial => "event"
|
68
|
+
else
|
69
|
+
respond_with @event
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def destroy
|
74
|
+
@event.destroy
|
75
|
+
head :ok
|
76
|
+
end
|
77
|
+
|
78
|
+
protected
|
79
|
+
|
80
|
+
def build_event
|
81
|
+
params[:event] ||= {}
|
82
|
+
@event = Droom::Event.new({:start => Time.now}.merge(params[:event]))
|
83
|
+
end
|
84
|
+
|
85
|
+
def get_event
|
86
|
+
@event = Droom::Event.find(params[:id])
|
87
|
+
end
|
88
|
+
|
89
|
+
def find_events
|
90
|
+
if current_user.admin?
|
91
|
+
@events = Event.future_and_current
|
92
|
+
else
|
93
|
+
@events = Event.visible_to(@current_person).future_and_current
|
94
|
+
end
|
95
|
+
@show = params[:show] || 10
|
96
|
+
@page = params[:page] || 1
|
97
|
+
@events.page(@page).per(@show)
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
# months can be passed around either as names or numbers
|
102
|
+
# any date part can be 'now' or 'next' for ease of linking
|
103
|
+
# and everything is converted to_i to save clutter later
|
104
|
+
def month_names
|
105
|
+
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
|
106
|
+
end
|
107
|
+
|
108
|
+
def numerical_parameters
|
109
|
+
if params[:month] && month_names.include?(params[:month].titlecase)
|
110
|
+
params[:month] = month_names.index(params[:month].titlecase)
|
111
|
+
end
|
112
|
+
[:year, :month, :mday].select{|p| params[p] }.each do |p|
|
113
|
+
params[p] = Date.today.send(p) if params[p] == 'now'
|
114
|
+
params[p] = (Date.today + 1.send(p == :mday ? :day : p)).send(p) if params[p] == 'next'
|
115
|
+
params[p] = params[p].to_i
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Droom
|
2
|
+
class GroupInvitationsController < Droom::EngineController
|
3
|
+
respond_to :js, :html
|
4
|
+
layout :no_layout_if_pjax
|
5
|
+
|
6
|
+
before_filter :get_event
|
7
|
+
before_filter :build_group_invitation, :only => [:new, :create]
|
8
|
+
before_filter :get_group_invitation, :only => :destroy
|
9
|
+
|
10
|
+
def destroy
|
11
|
+
@group_invitation.destroy
|
12
|
+
head :ok
|
13
|
+
end
|
14
|
+
|
15
|
+
def index
|
16
|
+
@event = Droom::Event.find(params[:event_id])
|
17
|
+
render :partial => 'attending_groups'
|
18
|
+
end
|
19
|
+
|
20
|
+
def new
|
21
|
+
render :partial => "form"
|
22
|
+
end
|
23
|
+
|
24
|
+
def create
|
25
|
+
if @group_invitation.save
|
26
|
+
render :partial => "created"
|
27
|
+
else
|
28
|
+
respond_with @group_invitation
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def build_group_invitation
|
35
|
+
@group_invitation = @event.group_invitations.new(params[:group_invitation])
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_group_invitation
|
39
|
+
@group_invitation = @event.group_invitations.find(params[:id])
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_event
|
43
|
+
@event = Droom::Event.find(params[:event_id])
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Droom
|
2
|
+
class GroupsController < Droom::EngineController
|
3
|
+
respond_to :html, :js
|
4
|
+
layout :no_layout_if_pjax
|
5
|
+
|
6
|
+
before_filter :build_group, :only => [:new, :create]
|
7
|
+
before_filter :get_group, :only => [:show, :edit, :update, :destroy]
|
8
|
+
before_filter :get_groups, :only => :index
|
9
|
+
|
10
|
+
def index
|
11
|
+
respond_with @groups do |format|
|
12
|
+
format.js {
|
13
|
+
render :partial => 'droom/groups/groups'
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def new
|
19
|
+
render :partial => "form"
|
20
|
+
end
|
21
|
+
|
22
|
+
def show
|
23
|
+
respond_with @group do |format|
|
24
|
+
format.js {
|
25
|
+
render :partial => 'droom/memberships/memberships'
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def edit
|
31
|
+
respond_with @group
|
32
|
+
end
|
33
|
+
|
34
|
+
def update
|
35
|
+
@group.update_attributes(params[:group])
|
36
|
+
render :partial => 'group'
|
37
|
+
end
|
38
|
+
|
39
|
+
def create
|
40
|
+
if @group.save
|
41
|
+
render :partial => "created"
|
42
|
+
else
|
43
|
+
respond_with @group
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def destroy
|
48
|
+
@group.destroy
|
49
|
+
head :ok
|
50
|
+
end
|
51
|
+
|
52
|
+
protected
|
53
|
+
|
54
|
+
def build_group
|
55
|
+
@group = Droom::Group.new(params[:group])
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_group
|
59
|
+
@group = Droom::Group.find(params[:id])
|
60
|
+
end
|
61
|
+
|
62
|
+
def get_groups
|
63
|
+
@groups = Droom::Group.all
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Droom
|
2
|
+
class InvitationsController < Droom::EngineController
|
3
|
+
respond_to :js, :html
|
4
|
+
layout :no_layout_if_pjax
|
5
|
+
|
6
|
+
before_filter :build_invitation, :only => [:new, :create]
|
7
|
+
before_filter :get_invitation, :only => :destroy
|
8
|
+
|
9
|
+
def destroy
|
10
|
+
@invitation.destroy
|
11
|
+
head :ok
|
12
|
+
end
|
13
|
+
|
14
|
+
def index
|
15
|
+
@event = Droom::Event.find(params[:event_id])
|
16
|
+
render :partial => 'attending_people'
|
17
|
+
end
|
18
|
+
|
19
|
+
def new
|
20
|
+
render :partial => "form"
|
21
|
+
end
|
22
|
+
|
23
|
+
def create
|
24
|
+
if @invitation.save
|
25
|
+
render :partial => "created"
|
26
|
+
else
|
27
|
+
respond_with @invitation
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
|
33
|
+
def build_invitation
|
34
|
+
@event = Droom::Event.find(params[:event_id])
|
35
|
+
@invitation = @event.invitations.new(params[:invitation])
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_invitation
|
39
|
+
@invitation = Droom::Invitation.find(params[:id])
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Droom
|
2
|
+
class MembershipsController < Droom::EngineController
|
3
|
+
respond_to :js, :html
|
4
|
+
|
5
|
+
before_filter :build_membership, :only => [:new, :create]
|
6
|
+
before_filter :get_membership, :only => :destroy
|
7
|
+
|
8
|
+
def destroy
|
9
|
+
@membership = Membership.find(params[:id])
|
10
|
+
@group = @membership.group
|
11
|
+
@person = @membership.person
|
12
|
+
@membership.destroy
|
13
|
+
render :partial => "button"
|
14
|
+
end
|
15
|
+
|
16
|
+
def new
|
17
|
+
if params[:person_id]
|
18
|
+
@group = Droom::Group.find(params[:group_id])
|
19
|
+
@person = Droom::Person.find(params[:person_id])
|
20
|
+
@membership = @group.memberships.create!(:person_id => @person.id, :group_id => @group.id)
|
21
|
+
render :partial => "button"
|
22
|
+
else
|
23
|
+
render :partial => "form"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def create
|
28
|
+
if @membership.save
|
29
|
+
render :partial => "created"
|
30
|
+
else
|
31
|
+
respond_with @membership
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
|
37
|
+
def build_membership
|
38
|
+
@group = Droom::Group.find(params[:group_id])
|
39
|
+
@membership = @group.memberships.new(params[:membership])
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_membership
|
43
|
+
@membership = Droom::Membership.find(params[:id])
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Droom
|
2
|
+
class PagesController < Droom::EngineController
|
3
|
+
respond_to :html
|
4
|
+
before_filter :require_admin!, :except => [:index, :show]
|
5
|
+
before_filter :get_pages
|
6
|
+
before_filter :get_page, :only => [:show, :edit, :update, :destroy]
|
7
|
+
before_filter :build_page, :only => [:new, :create]
|
8
|
+
layout :no_layout_if_pjax
|
9
|
+
|
10
|
+
def index
|
11
|
+
respond_with(@pages) do |format|
|
12
|
+
format.js {
|
13
|
+
render :partial => 'droom/pages/pages'
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def show
|
19
|
+
respond_with(@page)
|
20
|
+
end
|
21
|
+
|
22
|
+
def new
|
23
|
+
respond_with(@page)
|
24
|
+
end
|
25
|
+
|
26
|
+
def create
|
27
|
+
if @event.save
|
28
|
+
render :partial => "created"
|
29
|
+
else
|
30
|
+
respond_with @event
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def edit
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
def update
|
39
|
+
@page.update_attributes(params[:page])
|
40
|
+
if @page.save
|
41
|
+
render :partial => "full_page"
|
42
|
+
else
|
43
|
+
respond_with @page
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
def get_pages
|
50
|
+
@pages = Page.all
|
51
|
+
end
|
52
|
+
|
53
|
+
def get_page
|
54
|
+
@page = Page.find_by_slug(params[:slug]) || Page.find(params[:id])
|
55
|
+
end
|
56
|
+
|
57
|
+
def build_page
|
58
|
+
@page = Page.new(params[:page])
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
module Droom
|
2
|
+
class PeopleController < Droom::EngineController
|
3
|
+
respond_to :json, :html, :js, :vcf
|
4
|
+
layout :no_layout_if_pjax
|
5
|
+
|
6
|
+
before_filter :authenticate_user!
|
7
|
+
before_filter :get_current_person
|
8
|
+
before_filter :find_people, :only => :index
|
9
|
+
before_filter :get_groups, :only => :index
|
10
|
+
before_filter :get_person, :only => [:show, :edit, :update, :destroy]
|
11
|
+
before_filter :build_person, :only => [:new, :create]
|
12
|
+
before_filter :confine_to_self, :except => [:index, :show]
|
13
|
+
|
14
|
+
def index
|
15
|
+
respond_with @people do |format|
|
16
|
+
format.js { render :partial => 'droom/people/people' }
|
17
|
+
format.vcf { render :vcf => @people.map(&:to_vcf) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def show
|
22
|
+
respond_with @person
|
23
|
+
end
|
24
|
+
|
25
|
+
def create
|
26
|
+
if @person.save
|
27
|
+
render :partial => "created"
|
28
|
+
else
|
29
|
+
respond_with @person
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def update
|
34
|
+
Rails.logger.warn params[:person]
|
35
|
+
@person.update_attributes(params[:person])
|
36
|
+
@person.save!
|
37
|
+
respond_with @person do |format|
|
38
|
+
format.json {
|
39
|
+
render
|
40
|
+
}
|
41
|
+
end
|
42
|
+
# if @person.save
|
43
|
+
# render :partial => "person"
|
44
|
+
# else
|
45
|
+
# respond_with @person
|
46
|
+
# end
|
47
|
+
end
|
48
|
+
|
49
|
+
def destroy
|
50
|
+
@person.destroy
|
51
|
+
head :ok
|
52
|
+
end
|
53
|
+
|
54
|
+
protected
|
55
|
+
|
56
|
+
def build_person
|
57
|
+
@person = Droom::Person.new(params[:person])
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_person
|
61
|
+
@person = Person.find(params[:id])
|
62
|
+
end
|
63
|
+
|
64
|
+
def get_groups
|
65
|
+
@groups = Droom::Group.all
|
66
|
+
end
|
67
|
+
|
68
|
+
def find_people
|
69
|
+
if current_user.admin?
|
70
|
+
@people = Person.all
|
71
|
+
else
|
72
|
+
@people = Person.visible_to(@current_person)
|
73
|
+
end
|
74
|
+
|
75
|
+
if params[:group_id]
|
76
|
+
@people = @people.not_in_group(Droom::Group.find(params[:group_id]))
|
77
|
+
end
|
78
|
+
|
79
|
+
unless params[:q].blank?
|
80
|
+
@searching = true
|
81
|
+
@people = @people.name_matching(params[:q])
|
82
|
+
end
|
83
|
+
|
84
|
+
@people
|
85
|
+
end
|
86
|
+
|
87
|
+
def confine_to_self
|
88
|
+
@person = current_user.person unless current_user.admin?
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|