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,142 @@
|
|
1
|
+
.kalendae
|
2
|
+
position: relative
|
3
|
+
display: inline-block
|
4
|
+
background: white
|
5
|
+
padding: 0
|
6
|
+
width: 210px
|
7
|
+
+light
|
8
|
+
cursor: default
|
9
|
+
&.k-floating
|
10
|
+
position: absolute
|
11
|
+
top: 0
|
12
|
+
left: 0
|
13
|
+
z-index: 100
|
14
|
+
margin: 0
|
15
|
+
+box-shadow
|
16
|
+
.k-btn-close
|
17
|
+
display: none
|
18
|
+
.k-calendar
|
19
|
+
display: inline-block
|
20
|
+
overflow: hidden
|
21
|
+
.k-title
|
22
|
+
text-align: center
|
23
|
+
white-space: nowrap
|
24
|
+
position: relative
|
25
|
+
height: 32px
|
26
|
+
+heading
|
27
|
+
font-size: 18px
|
28
|
+
line-height: 32px
|
29
|
+
.k-btn-previous-month, .k-btn-next-month
|
30
|
+
display: block
|
31
|
+
position: absolute
|
32
|
+
width: 32px
|
33
|
+
height: 32px
|
34
|
+
overflow: hidden
|
35
|
+
text-indent: 50px
|
36
|
+
cursor: pointer
|
37
|
+
top: 0
|
38
|
+
background:
|
39
|
+
position: -5px 5px
|
40
|
+
repeat: no-repeat
|
41
|
+
image: image-url('droom/minimonth.png')
|
42
|
+
.k-btn-previous-year, .k-btn-next-year
|
43
|
+
display: none
|
44
|
+
.k-btn-previous-month
|
45
|
+
left: 0
|
46
|
+
background-position: 0 -91px
|
47
|
+
&:hover
|
48
|
+
background-position: 0 -139px
|
49
|
+
.k-btn-next-month
|
50
|
+
right: 0
|
51
|
+
background-position: 0 5px
|
52
|
+
&:hover
|
53
|
+
background-position: 0 -43px
|
54
|
+
.k-btn-previous-month:after
|
55
|
+
content: "\2039"
|
56
|
+
.k-btn-next-month:after
|
57
|
+
content: "\203A"
|
58
|
+
.k-btn-previous-year:after
|
59
|
+
content: "\00AB"
|
60
|
+
.k-btn-next-year:after
|
61
|
+
content: "\00BB"
|
62
|
+
.k-btn-previous-month:hover, .k-btn-next-month:hover
|
63
|
+
color: white
|
64
|
+
background-color: $verypale
|
65
|
+
.k-btn-previous-month:active, .k-btn-next-month:active
|
66
|
+
color: white
|
67
|
+
background-color: $rubine
|
68
|
+
.k-btn-previous-year:hover, .k-btn-next-year:hover
|
69
|
+
color: #6FDF81
|
70
|
+
.k-title, .k-header, .k-days
|
71
|
+
display: block
|
72
|
+
overflow: hidden
|
73
|
+
&.k-disable-next-month-btn .k-btn-next-month, &.k-disable-previous-month-btn .k-btn-previous-month, &.k-disable-next-year-btn .k-btn-next-year, &.k-disable-previous-year-btn .k-btn-previous-year
|
74
|
+
display: none
|
75
|
+
.k-header span, .k-days span
|
76
|
+
float: left
|
77
|
+
margin: 0
|
78
|
+
border: 0
|
79
|
+
width: 22px
|
80
|
+
padding: 5px 5px 5px 3px
|
81
|
+
.k-header span
|
82
|
+
+heading
|
83
|
+
text-align: center
|
84
|
+
color: $pale
|
85
|
+
.k-days span
|
86
|
+
text-align: right
|
87
|
+
height: 1.1em
|
88
|
+
line-height: 1em
|
89
|
+
color: #999
|
90
|
+
.k-today
|
91
|
+
+bold
|
92
|
+
.k-days span
|
93
|
+
&.k-active
|
94
|
+
background-color: #fff
|
95
|
+
cursor: pointer
|
96
|
+
color: $dark
|
97
|
+
&:hover
|
98
|
+
background: $verypale
|
99
|
+
&.k-selected
|
100
|
+
background-color: $rubine
|
101
|
+
+bold
|
102
|
+
color: white
|
103
|
+
&.k-range
|
104
|
+
background: none
|
105
|
+
border-color: #6DD4FE
|
106
|
+
&.k-active
|
107
|
+
background: #C4D4F1
|
108
|
+
border-color: #19AEFE
|
109
|
+
color: #333
|
110
|
+
&.k-active:hover
|
111
|
+
border-color: #666
|
112
|
+
&.k-out-of-month
|
113
|
+
color: #ddd
|
114
|
+
|
115
|
+
&.ie8
|
116
|
+
&.k-floating
|
117
|
+
border: 1px solid #ccc
|
118
|
+
.k-btn-close
|
119
|
+
width: 20px
|
120
|
+
height: 20px
|
121
|
+
border: none
|
122
|
+
background: url('close.png') no-repeat top left
|
123
|
+
&:after
|
124
|
+
display: none
|
125
|
+
.k-btn-previous-month, .k-btn-next-month, .k-btn-previous-year, .k-btn-next-year
|
126
|
+
width: 16px
|
127
|
+
height: 16px
|
128
|
+
cursor: pointer
|
129
|
+
background: #777777 url('arrows.png') no-repeat center left
|
130
|
+
position: absolute
|
131
|
+
top: 0
|
132
|
+
.k-btn-next-month, .k-btn-next-year
|
133
|
+
background-position: center right
|
134
|
+
.k-btn-previous-month:hover, .k-btn-next-month:hover
|
135
|
+
background-color: #7EA0E2
|
136
|
+
.k-btn-previous-year, .k-btn-next-year
|
137
|
+
background-color: #333
|
138
|
+
.k-btn-previous-year:hover, .k-btn-next-year:hover
|
139
|
+
background-color: #6FDF81
|
140
|
+
.k-btn-previous-month:after, .k-btn-next-month:after, .k-btn-previous-year:after, .k-btn-next-year:after
|
141
|
+
display: none
|
142
|
+
|
@@ -0,0 +1,192 @@
|
|
1
|
+
// -------------------------------- wysihtml5 --------------------------------
|
2
|
+
|
3
|
+
.wysihtml
|
4
|
+
position: relative
|
5
|
+
width: 600px
|
6
|
+
textarea
|
7
|
+
position: relative
|
8
|
+
|
9
|
+
.toolbar
|
10
|
+
position: relative
|
11
|
+
|
12
|
+
iframe
|
13
|
+
border: 1px solid $pale !important
|
14
|
+
overflow: hidden
|
15
|
+
width: 100%
|
16
|
+
color: $dark
|
17
|
+
|
18
|
+
header
|
19
|
+
display: block
|
20
|
+
float: left
|
21
|
+
background: #eee
|
22
|
+
position: relative
|
23
|
+
z-index: 1
|
24
|
+
background-image: linear-gradient(bottom, rgb(238, 238, 238) 0%, rgb(255, 255, 255) 100%)
|
25
|
+
background-image: -o-linear-gradient(bottom, rgb(238, 238, 238) 0%, rgb(255, 255, 255) 100%)
|
26
|
+
background-image: -moz-linear-gradient(bottom, rgb(238, 238, 238) 0%, rgb(255, 255, 255) 100%)
|
27
|
+
background-image: -webkit-linear-gradient(bottom, rgb(238, 238, 238) 0%, rgb(255, 255, 255) 100%)
|
28
|
+
background-image: -ms-linear-gradient(bottom, rgb(238, 238, 238) 0%, rgb(255, 255, 255) 100%)
|
29
|
+
font-size: 0
|
30
|
+
|
31
|
+
.commands
|
32
|
+
border-left: 1px solid #ddd
|
33
|
+
display: inline-block
|
34
|
+
-webkit-padding-start: 0
|
35
|
+
padding: 0
|
36
|
+
|
37
|
+
[data-wysihtml5-command], [data-wysihtml5-action], .fore-color
|
38
|
+
position: relative
|
39
|
+
border-right: 1px solid #ddd
|
40
|
+
border-left: 1px solid #fff
|
41
|
+
list-style: none
|
42
|
+
font-size: 12px
|
43
|
+
display: inline-block
|
44
|
+
cursor: pointer
|
45
|
+
height: $tool_button_height
|
46
|
+
width: $tool_button_width
|
47
|
+
|
48
|
+
[data-wysihtml5-command]::after, [data-wysihtml5-action]::after, .fore-color::after
|
49
|
+
content: ""
|
50
|
+
background-image: image-url('droom/spr_toolbar_icons_r2.png')
|
51
|
+
background-repeat: no-repeat
|
52
|
+
position: absolute
|
53
|
+
left: 0
|
54
|
+
right: 0
|
55
|
+
top: 0
|
56
|
+
bottom: 0
|
57
|
+
|
58
|
+
[data-wysihtml5-command]:hover, [data-wysihtml5-action]:hover, .fore-color:hover
|
59
|
+
background-image: linear-gradient(bottom, rgb(229, 240, 226) 0%, rgb(255, 255, 255) 100%)
|
60
|
+
background-image: -o-linear-gradient(bottom, rgb(229, 240, 226) 0%, rgb(255, 255, 255) 100%)
|
61
|
+
background-image: -moz-linear-gradient(bottom, rgb(229, 240, 226) 0%, rgb(255, 255, 255) 100%)
|
62
|
+
background-image: -webkit-linear-gradient(bottom, rgb(229, 240, 226) 0%, rgb(255, 255, 255) 100%)
|
63
|
+
background-image: -ms-linear-gradient(bottom, rgb(229, 240, 226) 0%, rgb(255, 255, 255) 100%)
|
64
|
+
|
65
|
+
[data-wysihtml5-command="bold"]::after
|
66
|
+
background-position: ($tool_button_width/2 - 10px) center
|
67
|
+
|
68
|
+
[data-wysihtml5-command="italic"]::after
|
69
|
+
background-position: ($tool_button_width/2 - 82px) center
|
70
|
+
|
71
|
+
[data-wysihtml5-command="insertUnorderedList"]::after
|
72
|
+
background-position: ($tool_button_width/2 - 149px) center
|
73
|
+
|
74
|
+
[data-wysihtml5-command="insertOrderedList"]::after
|
75
|
+
background-position: ($tool_button_width/2 - 231px) center
|
76
|
+
|
77
|
+
[data-wysihtml5-command="formatBlock"]
|
78
|
+
&[data-wysihtml5-command-value="h2"]::after
|
79
|
+
background-position: ($tool_button_width/2 - 378px) center
|
80
|
+
&[data-wysihtml5-command-value="h3"]::after
|
81
|
+
background-position: ($tool_button_width/2 - 462px) center
|
82
|
+
|
83
|
+
[data-wysihtml5-command="createLink"]::after
|
84
|
+
background-position: ($tool_button_width/2 - 305px) center
|
85
|
+
|
86
|
+
[data-wysihtml5-command="insertImage"]::after
|
87
|
+
background-position: ($tool_button_width/2 - 547px) center
|
88
|
+
|
89
|
+
.fore-color::after
|
90
|
+
background-position: ($tool_button_width/2 - 775px) center
|
91
|
+
|
92
|
+
[data-wysihtml5-command="insertSpeech"]::after
|
93
|
+
background-position: ($tool_button_width/2 - 630px) center
|
94
|
+
|
95
|
+
[data-wysihtml5-action="change_view"]::after
|
96
|
+
background-position: ($tool_button_width/2 - 704px) center
|
97
|
+
|
98
|
+
.fore-color
|
99
|
+
ul
|
100
|
+
display: none
|
101
|
+
position: absolute
|
102
|
+
z-index: 2
|
103
|
+
top: $tool_button_height
|
104
|
+
border: 1px solid #ccc
|
105
|
+
border-top: 0
|
106
|
+
background: #fff
|
107
|
+
overflow: hidden
|
108
|
+
margin: 0
|
109
|
+
padding: 0
|
110
|
+
li
|
111
|
+
$margin: 2px
|
112
|
+
display: block
|
113
|
+
left: 0
|
114
|
+
width: $tool_button_width - 2 * $margin
|
115
|
+
margin: 0px
|
116
|
+
z-index: 3
|
117
|
+
border: 0
|
118
|
+
height: 15px
|
119
|
+
margin: $margin
|
120
|
+
&::after
|
121
|
+
display: none
|
122
|
+
&:hover ul
|
123
|
+
display: block
|
124
|
+
[data-wysihtml5-command-value="silver"]
|
125
|
+
background: silver !important
|
126
|
+
[data-wysihtml5-command-value="gray"]
|
127
|
+
background: gray !important
|
128
|
+
[data-wysihtml5-command-value="maroon"]
|
129
|
+
background: maroon !important
|
130
|
+
[data-wysihtml5-command-value="red"]
|
131
|
+
background: red !important
|
132
|
+
[data-wysihtml5-command-value="purple"]
|
133
|
+
background: purple !important
|
134
|
+
[data-wysihtml5-command-value="green"]
|
135
|
+
background: green !important
|
136
|
+
[data-wysihtml5-command-value="olive"]
|
137
|
+
background: olive !important
|
138
|
+
[data-wysihtml5-command-value="navy"]
|
139
|
+
background: navy !important
|
140
|
+
[data-wysihtml5-command-value="blue"]
|
141
|
+
background: blue !important
|
142
|
+
.wysihtml5-command-active
|
143
|
+
outline: 1px solid #666
|
144
|
+
outline-offset: 1px
|
145
|
+
|
146
|
+
.wysihtml5-action-active, .wysihtml5-command-active
|
147
|
+
box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.2)
|
148
|
+
background: #eee !important
|
149
|
+
|
150
|
+
.wysihtml5-commands-disabled
|
151
|
+
[data-wysihtml5-command], .fore-color
|
152
|
+
opacity: 0.2
|
153
|
+
cursor: default
|
154
|
+
background-image: none !important
|
155
|
+
|
156
|
+
[data-wysihtml5-dialog]
|
157
|
+
color: #333
|
158
|
+
font-size: 14px
|
159
|
+
text-align: left
|
160
|
+
-ms-box-sizing: border-box
|
161
|
+
-webkit-box-sizing: border-box
|
162
|
+
-moz-box-sizing: border-box
|
163
|
+
box-sizing: border-box
|
164
|
+
padding: 5px 10px
|
165
|
+
background: white
|
166
|
+
position: relative
|
167
|
+
label
|
168
|
+
+bold
|
169
|
+
input[type="text"]
|
170
|
+
color: $blue
|
171
|
+
border: 1px solid $pale
|
172
|
+
padding: 3px
|
173
|
+
width: 50%
|
174
|
+
min-width: 100px
|
175
|
+
&:focus
|
176
|
+
outline: 0
|
177
|
+
border: 1px solid #666
|
178
|
+
|
179
|
+
[data-wysihtml5-dialog-action]
|
180
|
+
+book
|
181
|
+
padding: 4px
|
182
|
+
cursor: pointer
|
183
|
+
+border-radius(3px)
|
184
|
+
|
185
|
+
[data-wysihtml5-dialog-action="save"]
|
186
|
+
background: $green
|
187
|
+
color: #fff
|
188
|
+
|
189
|
+
[data-wysihtml5-dialog-action="cancel"]
|
190
|
+
color: $pale
|
191
|
+
&:hover
|
192
|
+
color: $hover
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Droom
|
2
|
+
class DashboardController < Droom::EngineController
|
3
|
+
respond_to :html, :js
|
4
|
+
layout :normal_unless_pjax
|
5
|
+
|
6
|
+
before_filter :authenticate_user!
|
7
|
+
|
8
|
+
def index
|
9
|
+
render
|
10
|
+
end
|
11
|
+
|
12
|
+
def page
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def normal_unless_pjax
|
19
|
+
if request.headers['X-PJAX']
|
20
|
+
false
|
21
|
+
else
|
22
|
+
Droom.layout
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Droom
|
2
|
+
class DocumentAttachmentsController < Droom::EngineController
|
3
|
+
respond_to :html, :js
|
4
|
+
layout :no_layout_if_pjax
|
5
|
+
before_filter :get_group, :only => :destroy
|
6
|
+
|
7
|
+
def destroy
|
8
|
+
@document_attachment.destroy
|
9
|
+
head :ok
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def get_group
|
15
|
+
@document_attachment = Droom::DocumentAttachment.find(params[:id])
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
module Droom
|
2
|
+
class DocumentsController < Droom::EngineController
|
3
|
+
respond_to :html, :js, :json
|
4
|
+
layout :no_layout_if_pjax
|
5
|
+
|
6
|
+
before_filter :authenticate_user!
|
7
|
+
before_filter :require_admin!, :except => [:index, :show]
|
8
|
+
before_filter :get_current_person
|
9
|
+
before_filter :find_documents, :only => [:index]
|
10
|
+
before_filter :get_document, :only => [:show, :edit, :update, :destroy]
|
11
|
+
before_filter :build_document, :only => [:new, :create]
|
12
|
+
|
13
|
+
def index
|
14
|
+
respond_with @documents do |format|
|
15
|
+
format.js {
|
16
|
+
if @event
|
17
|
+
render :partial => 'documents_list'
|
18
|
+
else
|
19
|
+
render :partial => 'documents_table'
|
20
|
+
end
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def show
|
26
|
+
if current_user.person && @document.file
|
27
|
+
if personal_document = current_user.person.personal_version_of(@document)
|
28
|
+
# personal documents are stored outside the web root so this is an internal-only redirect in nginx.
|
29
|
+
redirect_to personal_document.url
|
30
|
+
else
|
31
|
+
# master documents are stored in private S3 buckets accessible only through signed urls with a lifespan of only two minutes.
|
32
|
+
redirect_to @document.file.expiring_url(Time.now + 120)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def new
|
38
|
+
render :partial => "form"
|
39
|
+
end
|
40
|
+
|
41
|
+
def create
|
42
|
+
if @event
|
43
|
+
@event.save!
|
44
|
+
end
|
45
|
+
@document.save!
|
46
|
+
render :partial => 'created'
|
47
|
+
end
|
48
|
+
|
49
|
+
def edit
|
50
|
+
render :partial => "form"
|
51
|
+
end
|
52
|
+
|
53
|
+
def update
|
54
|
+
@document.update_attributes(params[:document])
|
55
|
+
@document.save!
|
56
|
+
render :partial => 'table_document', :object => @document.with_event
|
57
|
+
end
|
58
|
+
|
59
|
+
def destroy
|
60
|
+
@document.destroy
|
61
|
+
head :ok
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
protected
|
66
|
+
|
67
|
+
def build_document
|
68
|
+
params[:document] ||= {}
|
69
|
+
if params[:event_id] || params[:document][:event_id]
|
70
|
+
@event = Droom::Event.find(params[:event_id] || params[:document][:event_id])
|
71
|
+
@document = @event.documents.new(params[:document])
|
72
|
+
@category = @event.categories.find(params[:category_name]) if params[:category_name]
|
73
|
+
else
|
74
|
+
@document = Droom::Document.new(params[:document])
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def get_document
|
79
|
+
@document = Droom::Document.find(params[:id])
|
80
|
+
end
|
81
|
+
|
82
|
+
def find_documents
|
83
|
+
@event = Droom::Event.find(params[:event_id]) if params[:event_id]
|
84
|
+
sort_orders = {
|
85
|
+
'ASC' => "ASC",
|
86
|
+
'DESC' => "DESC"
|
87
|
+
}
|
88
|
+
params[:order] = 'DESC' unless sort_orders[params[:order]]
|
89
|
+
|
90
|
+
sort_parameters = {
|
91
|
+
'name' => 'droom_documents.name',
|
92
|
+
'filename' => 'droom_documents.file_file_name',
|
93
|
+
'filesize' => 'droom_documents.file_file_size',
|
94
|
+
'created' => 'droom_documents.created_at',
|
95
|
+
'event' => 'event_name',
|
96
|
+
'category' => 'case when category_name is null then 1 else 0 end, category_name'
|
97
|
+
}
|
98
|
+
params[:sort] = 'created' unless sort_parameters[params[:sort]]
|
99
|
+
|
100
|
+
@by = sort_parameters[params[:sort]]
|
101
|
+
@order = sort_orders[params[:order]]
|
102
|
+
@show = params[:show] || 20
|
103
|
+
@page = params[:page] || 1
|
104
|
+
|
105
|
+
if current_user.admin?
|
106
|
+
@documents = Droom::Document.with_latest_event
|
107
|
+
else
|
108
|
+
@documents = Droom::Document.visible_to(@current_person).with_latest_event
|
109
|
+
end
|
110
|
+
|
111
|
+
@documents = @documents.name_matching(params[:q]) unless params[:q].blank?
|
112
|
+
@documents = @documents.order("#{@by} #{@order}").page(@page).per(@show)
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
end
|