georgia 0.7.0

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 (366) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +27 -0
  4. data/Rakefile +27 -0
  5. data/app/assets/fonts/georgia/signika-bold-webfont.eot +0 -0
  6. data/app/assets/fonts/georgia/signika-bold-webfont.svg +1711 -0
  7. data/app/assets/fonts/georgia/signika-bold-webfont.ttf +0 -0
  8. data/app/assets/fonts/georgia/signika-bold-webfont.woff +0 -0
  9. data/app/assets/fonts/georgia/signika-light-webfont.eot +0 -0
  10. data/app/assets/fonts/georgia/signika-light-webfont.svg +1680 -0
  11. data/app/assets/fonts/georgia/signika-light-webfont.ttf +0 -0
  12. data/app/assets/fonts/georgia/signika-light-webfont.woff +0 -0
  13. data/app/assets/fonts/georgia/signika-regular-webfont.eot +0 -0
  14. data/app/assets/fonts/georgia/signika-regular-webfont.svg +1746 -0
  15. data/app/assets/fonts/georgia/signika-regular-webfont.ttf +0 -0
  16. data/app/assets/fonts/georgia/signika-regular-webfont.woff +0 -0
  17. data/app/assets/images/georgia/bg-body-bar.jpg +0 -0
  18. data/app/assets/images/georgia/checkmark.png +0 -0
  19. data/app/assets/images/georgia/content-types/avi.jpg +0 -0
  20. data/app/assets/images/georgia/content-types/css.jpg +0 -0
  21. data/app/assets/images/georgia/content-types/csv.jpg +0 -0
  22. data/app/assets/images/georgia/content-types/doc.jpg +0 -0
  23. data/app/assets/images/georgia/content-types/docx.jpg +0 -0
  24. data/app/assets/images/georgia/content-types/eps.jpg +0 -0
  25. data/app/assets/images/georgia/content-types/gif.jpg +0 -0
  26. data/app/assets/images/georgia/content-types/gz.jpg +0 -0
  27. data/app/assets/images/georgia/content-types/html.jpg +0 -0
  28. data/app/assets/images/georgia/content-types/jpg.jpg +0 -0
  29. data/app/assets/images/georgia/content-types/mp3.jpg +0 -0
  30. data/app/assets/images/georgia/content-types/ods.jpg +0 -0
  31. data/app/assets/images/georgia/content-types/odt.jpg +0 -0
  32. data/app/assets/images/georgia/content-types/pdf.jpg +0 -0
  33. data/app/assets/images/georgia/content-types/png.jpg +0 -0
  34. data/app/assets/images/georgia/content-types/ppt.jpg +0 -0
  35. data/app/assets/images/georgia/content-types/pptx.jpg +0 -0
  36. data/app/assets/images/georgia/content-types/rar.jpg +0 -0
  37. data/app/assets/images/georgia/content-types/tar.jpg +0 -0
  38. data/app/assets/images/georgia/content-types/txt.jpg +0 -0
  39. data/app/assets/images/georgia/content-types/wav.jpg +0 -0
  40. data/app/assets/images/georgia/content-types/xls.jpg +0 -0
  41. data/app/assets/images/georgia/content-types/zip.jpg +0 -0
  42. data/app/assets/images/georgia/down_arrow.gif +0 -0
  43. data/app/assets/images/georgia/grippy_large.png +0 -0
  44. data/app/assets/images/georgia/indeterminate.png +0 -0
  45. data/app/assets/images/georgia/logo.png +0 -0
  46. data/app/assets/images/georgia/select2-spinner.gif +0 -0
  47. data/app/assets/images/georgia/select2.png +0 -0
  48. data/app/assets/images/georgia/select2x2.png +0 -0
  49. data/app/assets/images/georgia/transparent.jpg +0 -0
  50. data/app/assets/images/georgia/up_arrow.gif +0 -0
  51. data/app/assets/images/ui-bg_glass_75_ffffff_1x400.png +0 -0
  52. data/app/assets/javascripts/georgia/application.js +20 -0
  53. data/app/assets/javascripts/georgia/bootstrap-vendor.js.coffee +13 -0
  54. data/app/assets/javascripts/georgia/ckeditor/config.js +22 -0
  55. data/app/assets/javascripts/georgia/components/asset-replacer.js.coffee +25 -0
  56. data/app/assets/javascripts/georgia/components/asset-uploader.js.coffee +44 -0
  57. data/app/assets/javascripts/georgia/components/flash.js.coffee +15 -0
  58. data/app/assets/javascripts/georgia/components/forms/menu.js.coffee +66 -0
  59. data/app/assets/javascripts/georgia/components/forms/revision.js.coffee +22 -0
  60. data/app/assets/javascripts/georgia/components/forms/spinning.js.coffee +51 -0
  61. data/app/assets/javascripts/georgia/components/media-library.js.coffee +57 -0
  62. data/app/assets/javascripts/georgia/components/portlets/link.js.coffee +14 -0
  63. data/app/assets/javascripts/georgia/components/portlets/slide.js.coffee +38 -0
  64. data/app/assets/javascripts/georgia/components/portlets/widget.js.coffee +47 -0
  65. data/app/assets/javascripts/georgia/components/position_sort.js.coffee +20 -0
  66. data/app/assets/javascripts/georgia/components/tables/checkbox.js.coffee +123 -0
  67. data/app/assets/javascripts/georgia/components/tables/media.js.coffee +59 -0
  68. data/app/assets/javascripts/georgia/components/tables/messages.js.coffee +59 -0
  69. data/app/assets/javascripts/georgia/components/tables/pages.js.coffee +93 -0
  70. data/app/assets/javascripts/georgia/components/tags.js.coffee +36 -0
  71. data/app/assets/javascripts/georgia/components/widget.js.coffee +32 -0
  72. data/app/assets/javascripts/georgia/featured-image.js.coffee +8 -0
  73. data/app/assets/javascripts/georgia/keybindings.js.coffee +42 -0
  74. data/app/assets/javascripts/georgia/toggle.js.coffee +4 -0
  75. data/app/assets/javascripts/georgia/vendor/bootstrap-datetimepicker.js +28 -0
  76. data/app/assets/javascripts/georgia/vendor/jquery.mjs.nestedSortable.js +608 -0
  77. data/app/assets/javascripts/georgia/vendor/jquery.ui.touch-punch.js +160 -0
  78. data/app/assets/javascripts/georgia/vendor/moment.js +6 -0
  79. data/app/assets/stylesheets/georgia/application.css.scss +16 -0
  80. data/app/assets/stylesheets/georgia/components/_box.scss +29 -0
  81. data/app/assets/stylesheets/georgia/components/_button.scss +60 -0
  82. data/app/assets/stylesheets/georgia/components/_checkbox.scss +48 -0
  83. data/app/assets/stylesheets/georgia/components/_form.scss +8 -0
  84. data/app/assets/stylesheets/georgia/components/_help.scss +4 -0
  85. data/app/assets/stylesheets/georgia/components/_icon.scss +7 -0
  86. data/app/assets/stylesheets/georgia/components/_input.scss +48 -0
  87. data/app/assets/stylesheets/georgia/components/_label.scss +4 -0
  88. data/app/assets/stylesheets/georgia/components/_modal.scss +14 -0
  89. data/app/assets/stylesheets/georgia/components/_nav-list.scss +13 -0
  90. data/app/assets/stylesheets/georgia/components/_note.scss +31 -0
  91. data/app/assets/stylesheets/georgia/components/_portlet.scss +57 -0
  92. data/app/assets/stylesheets/georgia/components/_progress.scss +4 -0
  93. data/app/assets/stylesheets/georgia/components/_state.scss +17 -0
  94. data/app/assets/stylesheets/georgia/components/_table.scss +8 -0
  95. data/app/assets/stylesheets/georgia/components/_transparent.scss +3 -0
  96. data/app/assets/stylesheets/georgia/layout/_base.scss +94 -0
  97. data/app/assets/stylesheets/georgia/layout/_devise.scss +5 -0
  98. data/app/assets/stylesheets/georgia/mixins/_clearfix.scss +12 -0
  99. data/app/assets/stylesheets/georgia/mixins/_ellipsis.scss +8 -0
  100. data/app/assets/stylesheets/georgia/mixins/_inflectors.scss +1 -0
  101. data/app/assets/stylesheets/georgia/mixins/_opacity.scss +6 -0
  102. data/app/assets/stylesheets/georgia/mixins/_utilities.scss +13 -0
  103. data/app/assets/stylesheets/georgia/modules/_facets.scss +4 -0
  104. data/app/assets/stylesheets/georgia/modules/_footer.scss +9 -0
  105. data/app/assets/stylesheets/georgia/modules/_form_with_helpers.scss +17 -0
  106. data/app/assets/stylesheets/georgia/modules/_header.scss +66 -0
  107. data/app/assets/stylesheets/georgia/modules/_link.scss +51 -0
  108. data/app/assets/stylesheets/georgia/modules/_login.scss +7 -0
  109. data/app/assets/stylesheets/georgia/modules/_media.scss +55 -0
  110. data/app/assets/stylesheets/georgia/modules/_menu.scss +7 -0
  111. data/app/assets/stylesheets/georgia/modules/_message.scss +53 -0
  112. data/app/assets/stylesheets/georgia/modules/_notifications.scss +26 -0
  113. data/app/assets/stylesheets/georgia/modules/_pages.scss +7 -0
  114. data/app/assets/stylesheets/georgia/modules/_pagination.scss +41 -0
  115. data/app/assets/stylesheets/georgia/modules/_results.scss +46 -0
  116. data/app/assets/stylesheets/georgia/modules/_revision.scss +18 -0
  117. data/app/assets/stylesheets/georgia/modules/_sidebar.scss +71 -0
  118. data/app/assets/stylesheets/georgia/modules/_slide.scss +11 -0
  119. data/app/assets/stylesheets/georgia/modules/_subpage.scss +25 -0
  120. data/app/assets/stylesheets/georgia/modules/_users.scss +3 -0
  121. data/app/assets/stylesheets/georgia/modules/_widget.scss +45 -0
  122. data/app/assets/stylesheets/georgia/overrides/_select2.scss +5 -0
  123. data/app/assets/stylesheets/georgia/settings/_base.scss +6 -0
  124. data/app/assets/stylesheets/georgia/settings/_colors.scss +41 -0
  125. data/app/assets/stylesheets/georgia/settings/_fonts.scss +3 -0
  126. data/app/assets/stylesheets/georgia/settings/_z-index.scss +7 -0
  127. data/app/assets/stylesheets/georgia/vendor/_autocomplete.scss +50 -0
  128. data/app/assets/stylesheets/georgia/vendor/_bootstrap-datetimepicker.scss +174 -0
  129. data/app/assets/stylesheets/georgia/vendor/_select2.scss +18 -0
  130. data/app/assets/stylesheets/georgia/vendor/_tooltip.scss +98 -0
  131. data/app/controllers/georgia/api/media_controller.rb +18 -0
  132. data/app/controllers/georgia/api/tags_controller.rb +22 -0
  133. data/app/controllers/georgia/application_controller.rb +25 -0
  134. data/app/controllers/georgia/concerns/frontendable.rb +45 -0
  135. data/app/controllers/georgia/concerns/helpers.rb +28 -0
  136. data/app/controllers/georgia/dashboard_controller.rb +14 -0
  137. data/app/controllers/georgia/links_controller.rb +13 -0
  138. data/app/controllers/georgia/media_controller.rb +101 -0
  139. data/app/controllers/georgia/menus_controller.rb +80 -0
  140. data/app/controllers/georgia/messages_controller.rb +74 -0
  141. data/app/controllers/georgia/pages_controller.rb +180 -0
  142. data/app/controllers/georgia/revisions_controller.rb +89 -0
  143. data/app/controllers/georgia/slides_controller.rb +13 -0
  144. data/app/controllers/georgia/ui_associations_controller.rb +12 -0
  145. data/app/controllers/georgia/users/sessions_controller.rb +7 -0
  146. data/app/controllers/georgia/users_controller.rb +51 -0
  147. data/app/controllers/georgia/widgets_controller.rb +67 -0
  148. data/app/controllers/messages_controller.rb +29 -0
  149. data/app/decorators/ckeditor/asset_decorator.rb +13 -0
  150. data/app/decorators/ckeditor/assets_decorator.rb +4 -0
  151. data/app/decorators/ckeditor/picture_decorator.rb +9 -0
  152. data/app/decorators/ckeditor/pictures_decorator.rb +4 -0
  153. data/app/decorators/georgia/application_decorator.rb +6 -0
  154. data/app/decorators/georgia/link_decorator.rb +9 -0
  155. data/app/decorators/georgia/links_decorator.rb +4 -0
  156. data/app/decorators/georgia/message_decorator.rb +21 -0
  157. data/app/decorators/georgia/messages_decorator.rb +4 -0
  158. data/app/decorators/georgia/page_decorator.rb +31 -0
  159. data/app/decorators/georgia/pages_decorator.rb +4 -0
  160. data/app/decorators/georgia/revision_decorator.rb +28 -0
  161. data/app/decorators/georgia/slide_decorator.rb +4 -0
  162. data/app/decorators/georgia/widget_decorator.rb +4 -0
  163. data/app/decorators/pagination_decorator.rb +3 -0
  164. data/app/decorators/sunspot/highlighted_hit_decorator.rb +29 -0
  165. data/app/helpers/georgia/checkboxes_helper.rb +13 -0
  166. data/app/helpers/georgia/devise_helper.rb +15 -0
  167. data/app/helpers/georgia/facets_helper.rb +35 -0
  168. data/app/helpers/georgia/forms_helper.rb +68 -0
  169. data/app/helpers/georgia/header_helper.rb +10 -0
  170. data/app/helpers/georgia/internationalization_helper.rb +32 -0
  171. data/app/helpers/georgia/menus_helper.rb +20 -0
  172. data/app/helpers/georgia/messages_helper.rb +9 -0
  173. data/app/helpers/georgia/meta_tags_helper.rb +22 -0
  174. data/app/helpers/georgia/modals_helper.rb +7 -0
  175. data/app/helpers/georgia/pages_helper.rb +22 -0
  176. data/app/helpers/georgia/pagination_helper.rb +10 -0
  177. data/app/helpers/georgia/routes_helper.rb +25 -0
  178. data/app/helpers/georgia/sidebar_helper.rb +13 -0
  179. data/app/helpers/georgia/states_helper.rb +17 -0
  180. data/app/helpers/georgia/twitter_helper.rb +24 -0
  181. data/app/helpers/georgia/ui_helper.rb +51 -0
  182. data/app/mailers/georgia/notifier.rb +33 -0
  183. data/app/models/ability.rb +19 -0
  184. data/app/models/ckeditor/asset.rb +61 -0
  185. data/app/models/ckeditor/attachment_file.rb +7 -0
  186. data/app/models/ckeditor/picture.rb +15 -0
  187. data/app/models/georgia/clone.rb +101 -0
  188. data/app/models/georgia/concerns/cacheable.rb +18 -0
  189. data/app/models/georgia/concerns/contentable.rb +22 -0
  190. data/app/models/georgia/concerns/indexable.rb +67 -0
  191. data/app/models/georgia/concerns/orderable.rb +21 -0
  192. data/app/models/georgia/concerns/publishable.rb +35 -0
  193. data/app/models/georgia/concerns/revisionable.rb +38 -0
  194. data/app/models/georgia/concerns/slugable.rb +46 -0
  195. data/app/models/georgia/concerns/statable.rb +64 -0
  196. data/app/models/georgia/concerns/taggable.rb +19 -0
  197. data/app/models/georgia/concerns/templatable.rb +20 -0
  198. data/app/models/georgia/concerns/treeable.rb +26 -0
  199. data/app/models/georgia/content.rb +15 -0
  200. data/app/models/georgia/link.rb +27 -0
  201. data/app/models/georgia/menu.rb +13 -0
  202. data/app/models/georgia/message.rb +47 -0
  203. data/app/models/georgia/page.rb +20 -0
  204. data/app/models/georgia/revision.rb +22 -0
  205. data/app/models/georgia/role.rb +10 -0
  206. data/app/models/georgia/slide.rb +13 -0
  207. data/app/models/georgia/status.rb +29 -0
  208. data/app/models/georgia/ui_association.rb +27 -0
  209. data/app/models/georgia/ui_section.rb +12 -0
  210. data/app/models/georgia/user.rb +27 -0
  211. data/app/models/georgia/widget.rb +32 -0
  212. data/app/parsers/georgia/menu_ancestry_parser.rb +41 -0
  213. data/app/policies/georgia/policy.rb +17 -0
  214. data/app/policies/georgia/revision_policy.rb +53 -0
  215. data/app/presenters/georgia/active_facet_presenter.rb +25 -0
  216. data/app/presenters/georgia/facet_presenter.rb +26 -0
  217. data/app/presenters/georgia/link_portlet.rb +101 -0
  218. data/app/presenters/georgia/list_facet_presenter.rb +32 -0
  219. data/app/presenters/georgia/media_library_presenter.rb +44 -0
  220. data/app/presenters/georgia/message_actions_presenter.rb +51 -0
  221. data/app/presenters/georgia/page_actions_presenter.rb +94 -0
  222. data/app/presenters/georgia/pagination_presenter.rb +58 -0
  223. data/app/presenters/georgia/portlet.rb +30 -0
  224. data/app/presenters/georgia/presenter.rb +17 -0
  225. data/app/presenters/georgia/sidebar_link_presenter.rb +55 -0
  226. data/app/presenters/georgia/single_active_facet_presenter.rb +10 -0
  227. data/app/presenters/georgia/slide_portlet.rb +79 -0
  228. data/app/presenters/georgia/subpage_portlet.rb +36 -0
  229. data/app/presenters/georgia/warning_message.rb +55 -0
  230. data/app/presenters/georgia/widget_portlet.rb +75 -0
  231. data/app/sweepers/navigation_sweeper.rb +12 -0
  232. data/app/uploaders/ckeditor_attachment_file_uploader.rb +16 -0
  233. data/app/uploaders/ckeditor_picture_uploader.rb +36 -0
  234. data/app/uploaders/georgia/attachment_uploader.rb +16 -0
  235. data/app/views/georgia/api/media/pictures.html.erb +17 -0
  236. data/app/views/georgia/ckeditor/assets/_asset.html.erb +23 -0
  237. data/app/views/georgia/ckeditor/attachment_files/_attachment_file.html.erb +1 -0
  238. data/app/views/georgia/ckeditor/pictures/_picture.html.erb +26 -0
  239. data/app/views/georgia/dashboard/panels/_messages.html.erb +30 -0
  240. data/app/views/georgia/dashboard/panels/_reviews.html.erb +24 -0
  241. data/app/views/georgia/dashboard/show.html.erb +18 -0
  242. data/app/views/georgia/header/_dashboard.html.erb +1 -0
  243. data/app/views/georgia/header/_media.html.erb +3 -0
  244. data/app/views/georgia/header/_messages.html.erb +3 -0
  245. data/app/views/georgia/header/_navigation.html.erb +3 -0
  246. data/app/views/georgia/header/_pages.html.erb +3 -0
  247. data/app/views/georgia/header/_users.html.erb +3 -0
  248. data/app/views/georgia/header/_widgets.html.erb +3 -0
  249. data/app/views/georgia/links/show.html.erb +1 -0
  250. data/app/views/georgia/media/_header.html.erb +27 -0
  251. data/app/views/georgia/media/create.js.erb +1 -0
  252. data/app/views/georgia/media/edit.html.erb +74 -0
  253. data/app/views/georgia/media/search.html.erb +36 -0
  254. data/app/views/georgia/media/sidebar/_facets.html.erb +12 -0
  255. data/app/views/georgia/menus/_menu.html.erb +7 -0
  256. data/app/views/georgia/menus/create.js.erb +5 -0
  257. data/app/views/georgia/menus/edit.html.erb +37 -0
  258. data/app/views/georgia/menus/index.html.erb +36 -0
  259. data/app/views/georgia/messages/_message.html.erb +26 -0
  260. data/app/views/georgia/messages/destroy.js.erb +3 -0
  261. data/app/views/georgia/messages/search.html.erb +58 -0
  262. data/app/views/georgia/messages/show.html.erb +46 -0
  263. data/app/views/georgia/notifier/notify_admins.html.erb +10 -0
  264. data/app/views/georgia/notifier/notify_editors.html.erb +10 -0
  265. data/app/views/georgia/notifier/notify_support.html.erb +9 -0
  266. data/app/views/georgia/pages/_header.html.erb +22 -0
  267. data/app/views/georgia/pages/_page.html.erb +19 -0
  268. data/app/views/georgia/pages/_subpage.html.erb +1 -0
  269. data/app/views/georgia/pages/create.js.erb +6 -0
  270. data/app/views/georgia/pages/search.html.erb +32 -0
  271. data/app/views/georgia/pages/settings.html.erb +79 -0
  272. data/app/views/georgia/pages/templates/_custom.html.erb +7 -0
  273. data/app/views/georgia/pages/templates/_default.html.erb +7 -0
  274. data/app/views/georgia/pages/templates/_one-column.html.erb +7 -0
  275. data/app/views/georgia/pages/templates/_sidebar-left.html.erb +10 -0
  276. data/app/views/georgia/pages/templates/_sidebar-right.html.erb +10 -0
  277. data/app/views/georgia/revisions/_revision.html.erb +11 -0
  278. data/app/views/georgia/revisions/edit.html.erb +36 -0
  279. data/app/views/georgia/revisions/fields/_content.html.erb +43 -0
  280. data/app/views/georgia/revisions/fields/_slides.html.erb +19 -0
  281. data/app/views/georgia/revisions/fields/_template.html.erb +8 -0
  282. data/app/views/georgia/revisions/fields/_ui_section.html.erb +14 -0
  283. data/app/views/georgia/revisions/fields/_widgets.html.erb +11 -0
  284. data/app/views/georgia/revisions/index.html.erb +25 -0
  285. data/app/views/georgia/shared/_messages.html.erb +11 -0
  286. data/app/views/georgia/shared/modals/_media_library.html.erb +35 -0
  287. data/app/views/georgia/shared/modals/_menu.html.erb +20 -0
  288. data/app/views/georgia/shared/modals/_page.html.erb +20 -0
  289. data/app/views/georgia/shared/modals/_progress.html.erb +15 -0
  290. data/app/views/georgia/shared/modals/_widget.html.erb +24 -0
  291. data/app/views/georgia/shared/search/_messages.html.erb +4 -0
  292. data/app/views/georgia/slides/new.html.erb +1 -0
  293. data/app/views/georgia/ui_associations/new.html.erb +1 -0
  294. data/app/views/georgia/users/_form.html.erb +27 -0
  295. data/app/views/georgia/users/_user.html.erb +9 -0
  296. data/app/views/georgia/users/edit.html.erb +22 -0
  297. data/app/views/georgia/users/index.html.erb +25 -0
  298. data/app/views/georgia/users/new.html.erb +19 -0
  299. data/app/views/georgia/users/registrations/new.html.erb +20 -0
  300. data/app/views/georgia/users/sessions/new.html.erb +17 -0
  301. data/app/views/georgia/widgets/_widget.html.erb +35 -0
  302. data/app/views/georgia/widgets/create.js.erb +5 -0
  303. data/app/views/georgia/widgets/index.html.erb +31 -0
  304. data/app/views/layouts/georgia/_footer.html.erb +7 -0
  305. data/app/views/layouts/georgia/_head.html.erb +15 -0
  306. data/app/views/layouts/georgia/_header.html.erb +40 -0
  307. data/app/views/layouts/georgia/_messages.html.erb +7 -0
  308. data/app/views/layouts/georgia/_sidebar.html.erb +9 -0
  309. data/app/views/layouts/georgia/application.html.erb +16 -0
  310. data/app/views/layouts/georgia/devise.html.erb +11 -0
  311. data/app/views/menus/_dropdown_group.html.erb +10 -0
  312. data/app/views/menus/_dropdown_link.html.erb +3 -0
  313. data/app/views/menus/_dropdown_menu.html.erb +11 -0
  314. data/app/views/menus/_link.html.erb +1 -0
  315. data/app/views/menus/_menu.html.erb +7 -0
  316. data/app/views/messages/create.js.erb +0 -0
  317. data/app/workers/spam_worker.rb +12 -0
  318. data/config/initializers/acts_as_taggable_on.rb +19 -0
  319. data/config/initializers/ckeditor.rb +18 -0
  320. data/config/initializers/devise.rb +254 -0
  321. data/config/initializers/inflections.rb +3 -0
  322. data/config/initializers/revisions.rb +5 -0
  323. data/config/initializers/simple_form.rb +79 -0
  324. data/config/locales/georgia.en.yml +4 -0
  325. data/config/routes.rb +79 -0
  326. data/db/migrate/001_create_ckeditor_assets.rb +25 -0
  327. data/db/migrate/002_create_georgia_contents.rb +18 -0
  328. data/db/migrate/003_create_georgia_links.rb +12 -0
  329. data/db/migrate/004_create_georgia_menus.rb +10 -0
  330. data/db/migrate/005_create_georgia_messages.rb +21 -0
  331. data/db/migrate/006_create_georgia_pages.rb +21 -0
  332. data/db/migrate/007_create_georgia_revisions.rb +12 -0
  333. data/db/migrate/008_create_georgia_roles.rb +10 -0
  334. data/db/migrate/009_create_georgia_slides.rb +11 -0
  335. data/db/migrate/010_create_georgia_ui_associations.rb +13 -0
  336. data/db/migrate/011_create_georgia_ui_sections.rb +9 -0
  337. data/db/migrate/012_create_georgia_users.rb +24 -0
  338. data/db/migrate/013_create_georgia_widgets.rb +9 -0
  339. data/db/migrate/014_create_roles_users.rb +11 -0
  340. data/db/migrate/015_create_tags.rb +20 -0
  341. data/lib/generators/georgia/install/install_generator.rb +60 -0
  342. data/lib/generators/georgia/install/templates/Procfile +1 -0
  343. data/lib/generators/georgia/install/templates/README +14 -0
  344. data/lib/generators/georgia/install/templates/app/controllers/pages_controller.rb +13 -0
  345. data/lib/generators/georgia/install/templates/config/initializers/georgia.rb +15 -0
  346. data/lib/generators/georgia/upgrade/templates/add_anti_spam_to_messages.rb +12 -0
  347. data/lib/generators/georgia/upgrade/templates/add_contents_counter_cache_to_images.rb +15 -0
  348. data/lib/generators/georgia/upgrade/templates/add_public_to_georgia_pages.rb +8 -0
  349. data/lib/generators/georgia/upgrade/templates/add_state_to_georgia_pages.rb +13 -0
  350. data/lib/generators/georgia/upgrade/templates/create_georgia_revisions.rb +12 -0
  351. data/lib/generators/georgia/upgrade/upgrade_generator.rb +34 -0
  352. data/lib/georgia.rb +23 -0
  353. data/lib/georgia/assets.rb +8 -0
  354. data/lib/georgia/assets/cloud_files_connection.rb +22 -0
  355. data/lib/georgia/assets/transferable_picture.rb +51 -0
  356. data/lib/georgia/engine.rb +58 -0
  357. data/lib/georgia/paths.rb +22 -0
  358. data/lib/georgia/version.rb +3 -0
  359. data/lib/tasks/assets.rake +106 -0
  360. data/lib/tasks/georgia.rake +61 -0
  361. data/lib/tasks/install.rake +19 -0
  362. data/lib/tasks/sidekiq.rake +8 -0
  363. data/lib/tasks/solr.rake +30 -0
  364. data/lib/tasks/upgrade.rake +39 -0
  365. data/lib/templates/erb/scaffold/_form.html.erb +13 -0
  366. metadata +857 -0
@@ -0,0 +1,3 @@
1
+ ActiveSupport::Inflector.inflections do |inflect|
2
+ inflect.uncountable %w( media )
3
+ end
@@ -0,0 +1,5 @@
1
+ module ActsAsRevisionable
2
+ class RevisionRecord < ActiveRecord::Base
3
+ belongs_to :revisionable, polymorphic: true
4
+ end
5
+ end
@@ -0,0 +1,79 @@
1
+ # http://stackoverflow.com/questions/14972253/simpleform-default-input-class
2
+ # https://github.com/plataformatec/simple_form/issues/316
3
+
4
+ inputs = %w[
5
+ CollectionSelectInput
6
+ DateTimeInput
7
+ FileInput
8
+ GroupedCollectionSelectInput
9
+ NumericInput
10
+ PasswordInput
11
+ RangeInput
12
+ StringInput
13
+ TextInput
14
+ ]
15
+
16
+ inputs.each do |input_type|
17
+ superclass = "SimpleForm::Inputs::#{input_type}".constantize
18
+
19
+ new_class = Class.new(superclass) do
20
+ def input_html_classes
21
+ super.push('form-control')
22
+ end
23
+ end
24
+
25
+ Object.const_set(input_type, new_class)
26
+ end
27
+
28
+ # Use this setup block to configure all options available in SimpleForm.
29
+ SimpleForm.setup do |config|
30
+ config.boolean_style = :nested
31
+
32
+ config.wrappers :bootstrap3, tag: 'div', class: 'form-group', error_class: 'has-error',
33
+ defaults: { input_html: { class: 'default_class' } } do |b|
34
+
35
+ b.use :html5
36
+
37
+ b.use :min_max
38
+ b.use :maxlength
39
+ b.use :placeholder
40
+ b.optional :pattern
41
+ b.optional :readonly
42
+
43
+ b.use :label_input
44
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
45
+ b.use :error, wrap_with: { tag: 'span', class: 'help-inline' }
46
+ end
47
+
48
+ config.wrappers :prepend, tag: 'div', class: "form-group", error_class: 'error' do |b|
49
+ b.use :html5
50
+ b.use :placeholder
51
+ b.use :label
52
+ b.wrapper tag: 'div', class: 'controls' do |input|
53
+ input.wrapper tag: 'div', class: 'input-prepend' do |prepend|
54
+ prepend.use :input
55
+ end
56
+ input.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
57
+ input.use :error, wrap_with: { tag: 'span', class: 'help-inline' }
58
+ end
59
+ end
60
+
61
+ config.wrappers :append, tag: 'div', class: "control-group", error_class: 'error' do |b|
62
+ b.use :html5
63
+ b.use :placeholder
64
+ b.use :label
65
+ b.wrapper tag: 'div', class: 'controls' do |input|
66
+ input.wrapper tag: 'div', class: 'input-append' do |append|
67
+ append.use :input
68
+ end
69
+ input.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
70
+ input.use :error, wrap_with: { tag: 'span', class: 'help-inline' }
71
+ end
72
+ end
73
+
74
+ # Wrappers for forms and inputs using the Twitter Bootstrap toolkit.
75
+ # Check the Bootstrap docs (http://getbootstrap.com/)
76
+ # to learn about the different styles for forms and inputs,
77
+ # buttons and other elements.
78
+ config.default_wrapper = :bootstrap3
79
+ end
@@ -0,0 +1,4 @@
1
+ en:
2
+ georgia:
3
+ en: 'English'
4
+ fr: 'French'
data/config/routes.rb ADDED
@@ -0,0 +1,79 @@
1
+ Georgia::Engine.routes.draw do
2
+
3
+ devise_for :users, class_name: "Georgia::User", path: '/', module: 'georgia/users', path_names: {sign_in: '/login', sign_out: '/logout'}
4
+
5
+ namespace :api do
6
+ resources :media, only: [] do
7
+ collection do
8
+ get :pictures
9
+ end
10
+ end
11
+ resources :tags, only: [] do
12
+ get :search, on: :collection
13
+ end
14
+ end
15
+
16
+ concern :pageable do
17
+
18
+ collection do
19
+ get :search
20
+ post :sort
21
+ post :publish
22
+ post :unpublish
23
+ post 'flush-cache', to: :flush_cache, as: :flush_cache
24
+ delete '/', to: :destroy
25
+ end
26
+
27
+ member do
28
+ get :copy
29
+ get :settings
30
+ end
31
+
32
+ resources :revisions do
33
+ member do
34
+ get :preview
35
+ get :review
36
+ get :approve
37
+ get :store
38
+ get :decline
39
+ get :restore
40
+ end
41
+ end
42
+ end
43
+
44
+ resources :pages, concerns: [:pageable]
45
+
46
+ resources :media, path: :media do
47
+ collection do
48
+ get :search
49
+ post :download
50
+ delete '/', to: :destroy
51
+ end
52
+ end
53
+ resources :users
54
+ resources :messages do
55
+ collection do
56
+ get :search
57
+ get :destroy_all_spam
58
+ end
59
+ member do
60
+ get :spam
61
+ get :ham
62
+ end
63
+ end
64
+ resources :menus, path: 'navigation'
65
+ resources :links, only: [:create, :show]
66
+ resources :widgets
67
+ resources :ui_associations, path: 'ui-associations', only: [:new]
68
+ resources :slides, only: [:new]
69
+
70
+ match '/search/messages', to: 'search#messages'
71
+
72
+ unauthenticated do
73
+ as :user do
74
+ root :to => 'users/sessions#new'
75
+ end
76
+ end
77
+ root :to => "dashboard#show"
78
+
79
+ end
@@ -0,0 +1,25 @@
1
+ class CreateCkeditorAssets < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :ckeditor_assets do |t|
5
+ t.string :data_file_name, :null => false
6
+ t.string :data_content_type
7
+ t.integer :data_file_size
8
+
9
+ t.integer :assetable_id
10
+ t.string :assetable_type, :limit => 30
11
+ t.string :type, :limit => 30
12
+
13
+ # Save images dimensions
14
+ t.integer :width
15
+ t.integer :height
16
+
17
+ t.integer :contents_count, :integer, default: 0
18
+
19
+ t.timestamps
20
+ end
21
+ add_index "ckeditor_assets", ["assetable_type", "type", "assetable_id"], :name => "idx_ckeditor_assetable_type"
22
+ add_index "ckeditor_assets", ["assetable_type", "assetable_id"], :name => "idx_ckeditor_assetable"
23
+ end
24
+
25
+ end
@@ -0,0 +1,18 @@
1
+ class CreateGeorgiaContents < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_contents do |t|
5
+ t.string :locale, null: false
6
+ t.string :title
7
+ t.text :text
8
+ t.text :excerpt
9
+ t.references :contentable, polymorphic: true
10
+ t.integer :image_id
11
+ t.timestamps
12
+ end
13
+ add_index :georgia_contents, [:contentable_type, :contentable_id]
14
+ add_index :georgia_contents, :locale
15
+ add_index :georgia_contents, :image_id
16
+ end
17
+
18
+ end
@@ -0,0 +1,12 @@
1
+ class CreateGeorgiaLinks < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_links do |t|
5
+ t.integer :menu_id
6
+ t.integer :position
7
+ t.string :ancestry
8
+ end
9
+ add_index :georgia_links, :ancestry
10
+ end
11
+
12
+ end
@@ -0,0 +1,10 @@
1
+ class CreateGeorgiaMenus < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_menus do |t|
5
+ t.string :name
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ end
@@ -0,0 +1,21 @@
1
+ class CreateGeorgiaMessages < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_messages do |t|
5
+ t.string :name
6
+ t.string :email
7
+ t.string :phone
8
+ t.string :subject
9
+ t.string :attachment
10
+ t.text :message
11
+ t.boolean :spam, default: false
12
+ t.datetime :verified_at
13
+ t.string :permalink
14
+ t.string :user_ip
15
+ t.string :user_agent
16
+ t.string :referrer
17
+ t.timestamps
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,21 @@
1
+ class CreateGeorgiaPages < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_pages do |t|
5
+ t.string :type
6
+ t.string :slug
7
+ t.string :url
8
+ t.integer :position
9
+ t.integer :parent_id
10
+ t.integer :revision_id
11
+ t.string :ancestry
12
+ t.boolean :public, default: false
13
+ t.timestamps
14
+ end
15
+ add_index :georgia_pages, :url
16
+ add_index :georgia_pages, :parent_id
17
+ add_index :georgia_pages, :revision_id
18
+ add_index :georgia_pages, :ancestry
19
+ end
20
+
21
+ end
@@ -0,0 +1,12 @@
1
+ class CreateGeorgiaRevisions < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_revisions do |t|
5
+ t.string :state, default: 'draft'
6
+ t.string :template
7
+ t.references :revisionable, polymorphic: true
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,10 @@
1
+ class CreateGeorgiaRoles < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_roles do |t|
5
+ t.string :name
6
+ t.timestamps
7
+ end
8
+ end
9
+
10
+ end
@@ -0,0 +1,11 @@
1
+ class CreateGeorgiaSlides < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_slides do |t|
5
+ t.integer :position
6
+ t.references :page, index: true
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,13 @@
1
+ class CreateGeorgiaUiAssociations < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_ui_associations do |t|
5
+ t.references :page, null: false, index: true
6
+ t.references :widget, null: false, index: true
7
+ t.references :ui_section, null: false, index: true
8
+ t.integer :position
9
+ t.timestamps
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,9 @@
1
+ class CreateGeorgiaUiSections < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_ui_sections do |t|
5
+ t.string :name
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,24 @@
1
+ class CreateGeorgiaUsers < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_users do |t|
5
+ t.string :first_name
6
+ t.string :last_name
7
+ t.string :email, :null => false, :default => ""
8
+ t.string :encrypted_password, :null => false, :default => ""
9
+ t.string :reset_password_token
10
+ t.datetime :reset_password_sent_at
11
+ t.datetime :remember_created_at
12
+ t.integer :sign_in_count, :default => 0
13
+ t.datetime :current_sign_in_at
14
+ t.datetime :last_sign_in_at
15
+ t.string :current_sign_in_ip
16
+ t.string :last_sign_in_ip
17
+
18
+ t.timestamps
19
+ end
20
+ add_index :georgia_users, :email, :unique => true
21
+ add_index :georgia_users, :reset_password_token, :unique => true
22
+ end
23
+
24
+ end
@@ -0,0 +1,9 @@
1
+ class CreateGeorgiaWidgets < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :georgia_widgets do |t|
5
+ t.timestamps
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,11 @@
1
+ class CreateRolesUsers < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :roles_users, id: false do |t|
5
+ t.references :role, null: false
6
+ t.references :user, null: false
7
+ end
8
+ add_index :roles_users, [:user_id, :role_id]
9
+ end
10
+
11
+ end
@@ -0,0 +1,20 @@
1
+ class CreateTags < ActiveRecord::Migration
2
+
3
+ def change
4
+ create_table :tags do |t|
5
+ t.string :name
6
+ end
7
+
8
+ create_table :taggings do |t|
9
+ t.references :tag
10
+ t.references :taggable, :polymorphic => true
11
+ t.references :tagger, :polymorphic => true
12
+ t.string :context, :limit => 128
13
+ t.datetime :created_at
14
+ end
15
+
16
+ add_index :taggings, :tag_id
17
+ add_index :taggings, [:taggable_id, :taggable_type, :context]
18
+ end
19
+
20
+ end
@@ -0,0 +1,60 @@
1
+ # encoding: UTF-8
2
+ require 'rails/generators/migration'
3
+ require 'rails/generators/active_record'
4
+
5
+ module Georgia
6
+ module Generators
7
+ class InstallGenerator < ::Rails::Generators::Base
8
+ include Rails::Generators::Migration
9
+ source_root File.expand_path('../templates', __FILE__)
10
+
11
+ desc "Installs Georgia CMS:\n
12
+ * Mounts routes\n
13
+ * Copies initializer\n
14
+ * Loads Migration\n
15
+ * Runs Migration\n
16
+ * Creates initial instances"
17
+
18
+ def mount_engine
19
+ # Must be in reverse order to keep priorities
20
+ route "get '*request_path', to: 'pages#show', as: :page"
21
+ route "root to: 'pages#show', request_path: 'home'"
22
+ route "resources :messages, only: [:create]"
23
+ route "mount Ckeditor::Engine => '/ckeditor'"
24
+ route "mount Georgia::Engine => '/admin'"
25
+ end
26
+
27
+ def self.next_migration_number(number)
28
+ ActiveRecord::Generators::Base.next_migration_number(number)
29
+ end
30
+
31
+ def run_migrations
32
+ rake "railties:install:migrations"
33
+ rake "db:migrate"
34
+ end
35
+
36
+ def copy_templates
37
+ template "config/initializers/georgia.rb"
38
+ template "app/controllers/pages_controller.rb"
39
+ template 'Procfile'
40
+ end
41
+
42
+ def add_dev_gems
43
+ gem_group :development do
44
+ gem "foreman"
45
+ gem "sunspot_solr", '2.0.0'
46
+ end
47
+ run "bundle"
48
+ end
49
+
50
+ def bootstrap
51
+ rake 'georgia:install'
52
+ end
53
+
54
+ def show_readme
55
+ readme "README"
56
+ end
57
+
58
+ end
59
+ end
60
+ end