droom 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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