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,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