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 @@
1
+ solr: bundle exec rake sunspot:solr:run
@@ -0,0 +1,14 @@
1
+ ===============================================================================
2
+
3
+ Some setup you must do manually if you haven't yet:
4
+
5
+ 1. Ensure you overwrite default options in your georgia initializer.
6
+ Find me at config/initializers/georgia.rb
7
+
8
+ 2. Ensure your routes we've just added are in order.
9
+
10
+ 3. Run foreman to start solr whenever you start your rails server.
11
+
12
+ bundle exec foreman start
13
+
14
+ ===============================================================================
@@ -0,0 +1,13 @@
1
+ class PagesController < ApplicationController
2
+
3
+ include Georgia::Concerns::Frontendable
4
+
5
+ before_filter :prepare_menus
6
+
7
+ private
8
+
9
+ def prepare_menus
10
+ @main_menu = Georgia::Menu.find_by_name('Main', include: {links: :contents})
11
+ end
12
+
13
+ end
@@ -0,0 +1,15 @@
1
+ Georgia.setup do |config|
2
+ # Add various page templates to fit your application needs
3
+ # config.templates = %w(default one-column sidebar-left sidebar-right)
4
+
5
+ # Site title
6
+ # config.title = 'Georgia'
7
+
8
+ # Site URL
9
+ # Do not add trailing slash
10
+ # config.url = 'http://www.example.com'
11
+
12
+ # Georgia Headers
13
+ # Add to this list or simply change order
14
+ # config.header = %w(dashboard pages messages media navigation widgets)
15
+ end
@@ -0,0 +1,12 @@
1
+ class AddAntiSpamToMessages < ActiveRecord::Migration
2
+
3
+ def change
4
+ add_column :georgia_messages, :spam, :boolean, default: false
5
+ add_column :georgia_messages, :verified_at, :datetime
6
+ add_column :georgia_messages, :permalink, :string
7
+ add_column :georgia_messages, :user_ip, :string
8
+ add_column :georgia_messages, :user_agent, :string
9
+ add_column :georgia_messages, :referrer, :string
10
+ end
11
+
12
+ end
@@ -0,0 +1,15 @@
1
+ class AddContentsCounterCacheToImages < ActiveRecord::Migration
2
+
3
+ def up
4
+ add_column :ckeditor_assets, :contents_count, :integer, default: 0
5
+ Ckeditor::Picture.reset_column_information
6
+ Ckeditor::Picture.find_each do |u|
7
+ Ckeditor::Picture.update_counters u.id, :contents_count => u.contents.length
8
+ end
9
+ end
10
+
11
+ def down
12
+ remove_column :ckeditor_assets, :contents_count
13
+ end
14
+
15
+ end
@@ -0,0 +1,8 @@
1
+ class AddPublicToGeorgiaPages < ActiveRecord::Migration
2
+
3
+ def change
4
+ add_column :georgia_pages, :public, :boolean, default: false
5
+ add_index :georgia_pages, :public
6
+ end
7
+
8
+ end
@@ -0,0 +1,13 @@
1
+ class AddStateToGeorgiaPages < ActiveRecord::Migration
2
+
3
+ def up
4
+ add_column :georgia_pages, :state, :string
5
+ add_index :georgia_pages, :state
6
+ end
7
+
8
+ def down
9
+ remove_column :georgia_pages, :state
10
+ remove_index :georgia_pages, :state
11
+ end
12
+
13
+ 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,34 @@
1
+ # encoding: UTF-8
2
+ require 'rails/generators/migration'
3
+ require 'rails/generators/active_record'
4
+
5
+ module Georgia
6
+ module Generators
7
+ class UpgradeGenerator < ::Rails::Generators::Base
8
+ include Rails::Generators::Migration
9
+
10
+ source_root File.expand_path('../templates', __FILE__)
11
+
12
+ desc "Upgrades Georgia CMS to fit latest changes"
13
+
14
+ def self.next_migration_number(number)
15
+ ActiveRecord::Generators::Base.next_migration_number(number)
16
+ end
17
+
18
+ def run_migrations
19
+ migration_template "add_public_to_georgia_pages.rb", "db/migrate/add_public_to_georgia_pages.rb"
20
+ migration_template "add_state_to_georgia_pages.rb", "db/migrate/add_state_to_georgia_pages.rb"
21
+ migration_template "add_anti_spam_to_messages.rb", "db/migrate/add_anti_spam_to_messages.rb"
22
+ migration_template "create_georgia_revisions.rb", "db/migrate/create_georgia_revisions.rb"
23
+ migration_template "add_contents_counter_cache_to_images.rb", "db/migrate/add_contents_counter_cache_to_images.rb"
24
+ rake 'db:migrate'
25
+ end
26
+
27
+ def run_tasks
28
+ rake 'georgia:statuses'
29
+ rake 'georgia:revisions'
30
+ end
31
+
32
+ end
33
+ end
34
+ end
data/lib/georgia.rb ADDED
@@ -0,0 +1,23 @@
1
+ require "georgia/paths"
2
+ require "georgia/engine"
3
+ require "georgia/assets"
4
+
5
+ module Georgia
6
+
7
+ mattr_accessor :templates
8
+ @@templates = %w(default one-column sidebar-left sidebar-right)
9
+
10
+ mattr_accessor :title
11
+ @@title = "Georgia"
12
+
13
+ mattr_accessor :url
14
+ @@url = "http://www.example.com"
15
+
16
+ mattr_accessor :header
17
+ @@header = %w(dashboard pages messages media navigation widgets)
18
+
19
+ def self.setup
20
+ yield self
21
+ end
22
+
23
+ end
@@ -0,0 +1,8 @@
1
+ module Georgia
2
+ module Assets
3
+
4
+ require 'georgia/assets/cloud_files_connection'
5
+ require 'georgia/assets/transferable_picture'
6
+
7
+ end
8
+ end
@@ -0,0 +1,22 @@
1
+ class CloudFilesConnection
2
+
3
+ attr_accessor :connection
4
+
5
+ def initialize
6
+ @connection = CloudFiles::Connection.new(username: credentials[:rackspace_username], api_key: credentials[:rackspace_api_key])
7
+ puts "Successfully logged in to Rackspace Cloud files\n"
8
+ end
9
+
10
+ def credentials
11
+ @credentials ||= CarrierWave::Uploader::Base.fog_credentials
12
+ end
13
+
14
+ def container
15
+ @container ||= connection.container(CarrierWave::Uploader::Base.fog_directory)
16
+ end
17
+
18
+ def asset_host
19
+ @asset_host ||= CarrierWave::Uploader::Base.asset_host
20
+ end
21
+
22
+ end
@@ -0,0 +1,51 @@
1
+ class TransferablePicture
2
+
3
+ attr_accessor :asset, :container
4
+
5
+ def initialize asset, container
6
+ @asset = asset
7
+ @container = container
8
+ end
9
+
10
+ def process
11
+ copy_file
12
+ recreate_versions!
13
+ end
14
+
15
+ private
16
+
17
+ def asset_host
18
+ @asset_host ||= CarrierWave::Uploader::Base.asset_host
19
+ end
20
+
21
+ def filename
22
+ @filename ||= asset.data_file_name
23
+ end
24
+
25
+ def old_path
26
+ @old_path ||= 'system/ckeditor_assets/pictures/' + filename
27
+ end
28
+
29
+ def new_path
30
+ @new_path ||= "assets/#{asset.id}/" + filename
31
+ end
32
+
33
+ def copy_file
34
+ if container.object_exists?(old_path)
35
+ if !container.object_exists?(new_path)
36
+ container.object(old_path).copy(name: new_path)
37
+ # asset.remote_data_url = asset_host + '/' + new_path
38
+ puts "#{filename} copied from #{old_path} to #{new_path}"
39
+ else
40
+ puts "#{new_path} destination already exists"
41
+ end
42
+ else
43
+ puts "#{old_path} does not exists"
44
+ end
45
+ end
46
+
47
+ def recreate_versions!
48
+ puts "#{filename} versions recreated" if asset.data.recreate_versions!
49
+ end
50
+
51
+ end
@@ -0,0 +1,58 @@
1
+ module Georgia
2
+ class Engine < ::Rails::Engine
3
+
4
+ isolate_namespace Georgia
5
+
6
+ extend Georgia::Paths
7
+
8
+ require 'rubygems'
9
+ require 'zip'
10
+ require 'simple_form'
11
+ require 'devise'
12
+ require 'cancan'
13
+ require 'acts_as_list'
14
+ require 'acts-as-taggable-on'
15
+ require 'kaminari'
16
+ require 'ckeditor'
17
+ require 'carrierwave'
18
+ require 'draper'
19
+ require 'ancestry'
20
+ require 'cloudfiles'
21
+ require 'sunspot_rails'
22
+ require 'state_machine'
23
+ require 'sendgrid'
24
+ require 'routing_concerns'
25
+ require 'rakismet'
26
+ require 'sidekiq'
27
+
28
+ require 'sass-rails'
29
+ require 'bourbon'
30
+ require 'neat'
31
+ require 'jquery-fileupload-rails'
32
+ require 'jquery-rails'
33
+ require 'jquery-ui-rails'
34
+ require 'select2-rails'
35
+ require 'shadowbox-rails'
36
+ require 'mousetrap-rails'
37
+
38
+ initializer 'georgia.action_controller' do |app|
39
+ ActiveSupport.on_load :action_controller do
40
+ helper Georgia::DeviseHelper
41
+ helper Georgia::FormsHelper
42
+ helper Georgia::RoutesHelper
43
+ helper Georgia::UiHelper
44
+ helper Georgia::MenusHelper
45
+ helper Georgia::MetaTagsHelper
46
+ helper Georgia::TwitterHelper
47
+ helper Georgia::InternationalizationHelper
48
+ end
49
+ end
50
+
51
+ config.generators do |g|
52
+ g.test_framework :rspec
53
+ g.integration_tool :rspec
54
+ end
55
+ config.cache_classes = !(ENV['DRB'] == 'true')
56
+
57
+ end
58
+ end
@@ -0,0 +1,22 @@
1
+ module Georgia
2
+ module Paths
3
+
4
+ # Should be in a helper
5
+ def app_path
6
+ File.expand_path('../../app', called_from)
7
+ end
8
+
9
+ def decorator_path name
10
+ File.expand_path("decorators/georgia/#{name}_decorator.rb", app_path)
11
+ end
12
+
13
+ %w{controller helper mailer model}.each do |resource|
14
+ class_eval <<-RUBY
15
+ def #{resource}_path(name)
16
+ File.expand_path("#{resource.pluralize}/georgia/\#{name}.rb", app_path)
17
+ end
18
+ RUBY
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,3 @@
1
+ module Georgia
2
+ VERSION = "0.7.0"
3
+ end
@@ -0,0 +1,106 @@
1
+ namespace :assets do
2
+
3
+ desc "Move assets to new folder structure with asset's id in folder path"
4
+ task rename: :environment do
5
+
6
+ @connection = CloudFilesConnection.new
7
+
8
+ Ckeditor::Picture.find_each do |asset|
9
+ retries = 0
10
+ begin
11
+ TransferablePicture.new(asset, @connection.container).process
12
+ rescue => e
13
+ puts e.message
14
+ retries = retries + 1
15
+ retry unless retries > 5
16
+ end
17
+ end
18
+ end
19
+
20
+ desc "Download all assets"
21
+ task download: :environment do
22
+
23
+ puts "Downloading all assets...\n"
24
+
25
+ credentials = CarrierWave::Uploader::Base.fog_credentials
26
+ cf = CloudFiles::Connection.new(username: credentials[:rackspace_username], api_key: credentials[:rackspace_api_key])
27
+ container = cf.container(CarrierWave::Uploader::Base.fog_directory)
28
+
29
+ puts "Successfully connected to Rackspace Cloud Files\n"
30
+
31
+ tmp_path = "/tmp/backup-#{timestamp}"
32
+ system "mkdir -p #{tmp_path}"
33
+ objects = container.objects
34
+ objects.each do |path|
35
+ filename = path.gsub(/.*\//, '')
36
+ tmp_filename = "#{tmp_path}/#{filename}"
37
+ begin
38
+ object = container.object(path)
39
+ object.save_to_filename(tmp_filename)
40
+ rescue Exception
41
+ puts "#{filename} failed. Retry"
42
+ retry
43
+ end
44
+ puts "#{filename} saved."
45
+ end
46
+
47
+ puts "All files have been downloaded.\n"
48
+
49
+ puts "Creating zipped archive.\n"
50
+ tar_filename = "#{tmp_path}.tar.gz"
51
+ system "tar -czvf #{tar_filename} #{tmp_path}"
52
+ puts "File accessible at #{tar_filename}"
53
+ puts "Finished."
54
+
55
+ end
56
+
57
+ desc "Copying all assets to a new container"
58
+ task copy: :environment do
59
+
60
+ puts "Copying all assets to a new container"
61
+
62
+ credentials = CarrierWave::Uploader::Base.fog_credentials
63
+ cf = CloudFiles::Connection.new(username: credentials[:rackspace_username], api_key: credentials[:rackspace_api_key])
64
+ container_name = CarrierWave::Uploader::Base.fog_directory
65
+ container_from = cf.container(container_name)
66
+
67
+ puts "Successfully connected to Rackspace Cloud Files\n"
68
+
69
+ container_to = cf.create_container("#{container_name}-copy-#{timestamp}")
70
+
71
+ puts "#{container_name}-copy-#{timestamp} container created\n"
72
+
73
+ container_from.objects.each do |path|
74
+ retries = 0
75
+ puts "Saving #{path}"
76
+ begin
77
+ object = container_from.object(path)
78
+ copy = container_to.create_object(path)
79
+ copy.write(object.data)
80
+ rescue Exception
81
+ retries = retries + 1
82
+ unless retries > 5
83
+ puts "#{path} failed. Retry"
84
+ retry
85
+ else
86
+ puts "#{path} failed."
87
+ end
88
+ end
89
+ end
90
+
91
+ puts "All assets have been copied to #{container_name}-copy-#{timestamp}"
92
+
93
+ container_to.refresh
94
+
95
+ end
96
+
97
+ def ask question
98
+ STDOUT.puts question
99
+ STDIN.gets.chomp
100
+ end
101
+
102
+ def timestamp
103
+ @timestamp ||= Time.now.strftime('%Y%m%d%H%M')
104
+ end
105
+
106
+ end