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,4 @@
1
+ module Georgia
2
+ class WidgetDecorator < Georgia::ApplicationDecorator
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ class PaginationDecorator < Draper::CollectionDecorator
2
+ delegate :current_page, :total_pages, :limit_value
3
+ end
@@ -0,0 +1,29 @@
1
+ module Sunspot
2
+ class HighlightedHitDecorator < ::ApplicationDecorator
3
+
4
+ def method_missing(meth, *args, &block)
5
+ if source.highlights(meth) and source.highlights(meth).present?
6
+ highlight_text_on(meth)
7
+ elsif source.stored(meth) and source.stored(meth).is_a? Array
8
+ source.stored(meth).join(', ')
9
+ elsif source.stored(meth) and source.stored(meth).present?
10
+ source.stored(meth)
11
+ elsif source.result
12
+ source.result.send(meth)
13
+ else
14
+ super
15
+ end
16
+ end
17
+
18
+ def source_class_name
19
+ source.class_name.parameterize
20
+ end
21
+
22
+ private
23
+
24
+ def highlight_text_on key, options={}
25
+ source.highlights(key).map{|hl| hl.format{|word| h.content_tag(:span, word, class: 'highlight') } }.join().html_safe
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ module Georgia
2
+ module CheckboxesHelper
3
+
4
+ def checkboxable_tag checkboxable
5
+ check_box_tag(dom_id(checkboxable), nil, nil, data: {checkbox: 'child', state: 'unchecked', id: checkboxable.id})
6
+ end
7
+
8
+ def checkboxable_all_tag name
9
+ check_box_tag(name, nil, false, data: {checkbox: 'all', state: 'unchecked'})
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module Georgia
2
+ module DeviseHelper
3
+ def resource_name
4
+ :georgia_user
5
+ end
6
+
7
+ def resource
8
+ @resource ||= Georgia::User.new
9
+ end
10
+
11
+ def devise_mapping
12
+ @devise_mapping ||= Devise.mappings[:georgia_user]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,35 @@
1
+ module Georgia
2
+ module FacetsHelper
3
+
4
+ def facets_inputs facets=[]
5
+ facets.map do |f|
6
+ if params[f] and !params[f].empty?
7
+ params[f].map do |v|
8
+ hidden_field_tag(f, v, name: "#{f}[]")
9
+ end
10
+ end
11
+ end.flatten.join().html_safe
12
+ end
13
+
14
+ def facet_tag text, param, options={}
15
+ Georgia::FacetPresenter.new(self, text, param, options)
16
+ end
17
+
18
+ def facet_list_tag list, param, options={}
19
+ Georgia::ListFacetPresenter.new(self, list, :tg, options)
20
+ end
21
+
22
+ def active_facet_list(*facets)
23
+ return unless facets and !facets.empty?
24
+ output = ActiveSupport::SafeBuffer.new
25
+ facets.each do |param|
26
+ if params[param] and params[param].is_a?(Array)
27
+ params[param].each{|v| output << Georgia::ActiveFacetPresenter.new(self, v, param) } if params[param] and !params[param].empty?
28
+ else
29
+ output << Georgia::SingleActiveFacetPresenter.new(self, params[param], param) if params[param].present?
30
+ end
31
+ end
32
+ content_tag(:div, ("Your selection: " + output).html_safe, class: 'active-facets') if output and !output.blank?
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,68 @@
1
+ module Georgia
2
+ module FormsHelper
3
+
4
+ def sortable(column, title=nil)
5
+ title ||= column.humanize
6
+ direction = (column.to_s == params[:o] && params[:dir] == "asc" ? "desc" : "asc")
7
+ icon = direction == "asc" ? icon_tag('icon-chevron-up') : icon_tag('icon-chevron-down')
8
+ "#{title} #{link_to(icon, params.merge({o: column, dir: direction}))}".html_safe
9
+ end
10
+
11
+ def render_template template
12
+ begin
13
+ render "georgia/pages/templates/#{template}", template: template
14
+ rescue
15
+ render "georgia/pages/templates/custom", template: template
16
+ end
17
+ end
18
+
19
+ def button_to_save text=nil
20
+ text ||= "#{icon_tag 'check'} Save".html_safe
21
+ content_tag :button, text, type: "submit", class: "btn btn-save"
22
+ end
23
+
24
+ def choose_image_tag imageable, args={}
25
+ Georgia::MediaLibraryPresenter.new(self, imageable, args).to_s
26
+ end
27
+
28
+ def widget_portlet_tag ui_association, args={}
29
+ Georgia::WidgetPortlet.new(self, ui_association, args)
30
+ end
31
+
32
+ def slide_portlet_tag slide, args={}
33
+ Georgia::SlidePortlet.new(self, slide, args)
34
+ end
35
+
36
+ def link_portlet_tag link, args={}
37
+ Georgia::LinkPortlet.new(self, link, args)
38
+ end
39
+
40
+ def subpage_portlet_tag subpage, args={}
41
+ Georgia::SubpagePortlet.new(self, subpage, args)
42
+ end
43
+
44
+ def parent_page_collection
45
+ @parent_page_collection ||= Georgia::Page.not_self(@page).joins(current_revision: :contents).uniq.sort_by(&:title).map{|p| [p.title, p.id]}
46
+ end
47
+
48
+ def widgets_collection
49
+ @widgets_collection ||= options_from_collection_for_select(Georgia::Widget.all, :id, :title)
50
+ end
51
+
52
+ def extra_fields?
53
+ lookup_context.exists?('extra-fields', ["#{klass_folder}/fields"], true)
54
+ end
55
+
56
+ def extra_fields_path
57
+ "#{klass_folder}/fields/extra-fields"
58
+ end
59
+
60
+ private
61
+
62
+ def klass_folder
63
+ klass = @page.try(:decorated?) ? @page.model.class : @page.class
64
+ @klass_folder ||= klass.to_s.underscore.pluralize
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,10 @@
1
+ module Georgia
2
+ module HeaderHelper
3
+
4
+ def render_extra_header_partials
5
+ return unless Georgia.header.any?
6
+ Georgia.header.map{|partial| render(partial: "georgia/header/#{partial}") }.join('').html_safe
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,32 @@
1
+ module Georgia
2
+ module InternationalizationHelper
3
+
4
+ def available_locales
5
+ I18n.available_locales
6
+ end
7
+
8
+ def link_to_locale html_options={}
9
+ if available_locales.length == 2
10
+ link_to_locale_single html_options
11
+ else
12
+ link_to_locale_list html_options
13
+ end
14
+ end
15
+
16
+ protected
17
+
18
+ def link_to_locale_list html_options
19
+ content_tag :ul, html_options do
20
+ available_locales.each do |lang|
21
+ concat(content_tag(:li, link_to(t('locale_name', locale: lang), url_for(params.merge(locale: lang)))))
22
+ end
23
+ end
24
+ end
25
+
26
+ def link_to_locale_single html_options
27
+ lang = (available_locales - [current_locale]).first
28
+ link_to t('locale_name', locale: lang), url_for(params.merge(locale: lang)), html_options
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ module Georgia
2
+ module MenusHelper
3
+
4
+ def render_menu menu
5
+ return unless menu and menu.is_a? Georgia::Menu
6
+ links = menu.links.ordered.decorate
7
+ if links.map(&:dropdown).include? true
8
+ render 'menus/dropdown_menu', menu: menu, links: links
9
+ else
10
+ render 'menus/menu', menu: menu, links: links
11
+ end
12
+ end
13
+
14
+ def render_links menu
15
+ return unless menu and menu.is_a? Georgia::Menu
16
+ render partial: 'menus/link', collection: menu.links.ordered.decorate, as: :link
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ module Georgia
2
+ module MessagesHelper
3
+
4
+ def message_actions_list(message)
5
+ Georgia::MessageActionsPresenter.new(self, message)
6
+ end
7
+
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ module Georgia
2
+ module MetaTagsHelper
3
+
4
+ def meta_title title
5
+ site_title = ""
6
+ site_title << "#{title} | " unless title.blank?
7
+ site_title << Georgia.title
8
+ content_tag :title, site_title
9
+ end
10
+
11
+ def meta_description description
12
+ return unless description.present?
13
+ tag :meta, name: 'description', content: description
14
+ end
15
+
16
+ def meta_keywords keywords
17
+ return unless keywords.present?
18
+ tag :meta, name: 'keywords', content: keywords
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,7 @@
1
+ module Georgia
2
+ module ModalsHelper
3
+ def link_to_close
4
+ content_tag :button, icon_tag('times'), class: 'close', data: {dismiss: 'modal'}, aria: {hidden: true}, type: 'button'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ module Georgia
2
+ module PagesHelper
3
+
4
+ def page_actions_tag page, revision=nil, options={}
5
+ revision ||= page.current_revision
6
+ Georgia::PageActionsPresenter.new(self, page, revision, options)
7
+ end
8
+
9
+ def button_to_settings
10
+ link_to icon_tag('cogs'), [:settings, @page], class: 'btn btn-default'
11
+ end
12
+
13
+ def page_url_minus_slug
14
+ @page_full_url ||= (Georgia.url + @page.url).gsub(@page.slug, '')
15
+ end
16
+
17
+ def warning_message page, revision, options={}
18
+ Georgia::WarningMessage.new(self, page, revision, options)
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ module Georgia
2
+ module PaginationHelper
3
+
4
+ def pagination_tag search
5
+ return unless search and !search.total.zero?
6
+ Georgia::PaginationPresenter.new(self, search)
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ module Georgia
2
+ module RoutesHelper
3
+
4
+ def georgia_url
5
+ 'http://www.georgiaonrails.com'
6
+ end
7
+
8
+ def motioneleven_url
9
+ 'http://www.motioneleven.com'
10
+ end
11
+
12
+ def georgia?
13
+ namespace == 'Georgia'
14
+ end
15
+
16
+ def kennedy?
17
+ namespace == 'Kennedy'
18
+ end
19
+
20
+ def main_app?
21
+ namespace == 'Admin'
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ module Georgia
2
+ module SidebarHelper
3
+
4
+ def sidebar_navigation_link text, url, options={}
5
+ SidebarLinkPresenter.new(self, text, url, options)
6
+ end
7
+
8
+ def sidebar_navigation_sublink text, url, options={}
9
+ SidebarLinkPresenter.new(self, text, url, options.merge(sublink: true))
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ module Georgia
2
+ module StatesHelper
3
+
4
+ def state_label_tag state
5
+ content_tag(:span, state.try(:humanize), class: "label label-#{css_class(state)}")
6
+ end
7
+
8
+ def css_class state, options={}
9
+ case state
10
+ when 'draft' then 'warning'
11
+ when 'pending' then 'info'
12
+ when 'published' then 'success'
13
+ end
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,24 @@
1
+ module Georgia
2
+ module TwitterHelper
3
+
4
+ def tweets_for account
5
+ begin
6
+ @tweets ||= Twitter.user_timeline(account)
7
+ rescue Exception => ex
8
+ logger.error "Twitter retrieval: " << ex.message
9
+ ensure
10
+ @tweets ||= []
11
+ end
12
+ @tweets
13
+ end
14
+
15
+ def auto_link_tweet tweet
16
+ if tweet.in_reply_to_screen_name
17
+ auto_link(tweet.text.gsub(/(@\w+)/, link_to("@#{tweet.in_reply_to_screen_name}", "http://twitter.com/#{tweet.in_reply_to_screen_name}"))).html_safe
18
+ else
19
+ auto_link(tweet.text).html_safe
20
+ end
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,51 @@
1
+ module Georgia
2
+ module UiHelper
3
+
4
+ def avatar_url(email, options={})
5
+ gravatar_id = Digest::MD5.hexdigest(email.try(:downcase))
6
+ size = options.fetch(:size, '32')
7
+ "http://gravatar.com/avatar/#{gravatar_id}.png?s=#{size}&d=mm"
8
+ end
9
+
10
+ def icon_tag icon_name, options={}
11
+ options[:class] ||= ''
12
+ options[:class] << "fa fa-#{icon_name}"
13
+ content_tag :i, nil, options
14
+ end
15
+
16
+ def caret_tag
17
+ content_tag :span, nil, class: 'caret'
18
+ end
19
+
20
+ def spinner_tag options={}
21
+ options[:class] = options.fetch(:class, 'spinner')
22
+ content_tag :div, icon_tag('spinner fa-spin fa-4x'), options
23
+ end
24
+
25
+ def picture_tag picture, options={}
26
+ return unless picture and picture.url.present?
27
+ format = options.fetch(:format, :tiny)
28
+ link_to picture.url_content, class: 'media-link bg-transparent', rel: 'shadowbox[gallery]' do
29
+ image_tag(picture.url(format), title: picture.data_file_name, class: 'media-image')
30
+ end
31
+ end
32
+
33
+ def link_to_back url=:back
34
+ link_to icon_tag('level-up fa-rotate-270'), url, class: 'btn btn-back'
35
+ end
36
+
37
+ def link_to_delete url, options={}
38
+ text = options.delete(:text) { "#{icon_tag('trash-o')} Delete".html_safe }
39
+ link_to text, url, options.reverse_merge(data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-danger')
40
+ end
41
+
42
+ def tooltip_tag icon, tooltip, options={}
43
+ content_tag(:span, icon, options.reverse_merge(title: tooltip, class: 'js-tooltip', data: {placement: 'right'}))
44
+ end
45
+
46
+ def welcomed?
47
+ session[:welcomed] || !(session[:welcomed] = true)
48
+ end
49
+
50
+ end
51
+ end