virgo 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +37 -0
  4. data/app/assets/javascripts/tinymce/manifest.coffee +1 -0
  5. data/app/assets/javascripts/tinymce/plugins/image_manager/plugin.coffee +234 -0
  6. data/app/assets/javascripts/virgo/admin/page_modules/edit_form.coffee +4 -0
  7. data/app/assets/javascripts/virgo/admin/page_modules/edit_subject_form.coffee +29 -0
  8. data/app/assets/javascripts/virgo/admin/posts/edit_locking.coffee +35 -0
  9. data/app/assets/javascripts/virgo/admin/posts/form.coffee +183 -0
  10. data/app/assets/javascripts/virgo/admin/slides/form.coffee +27 -0
  11. data/app/assets/javascripts/virgo/admin/slideshows/form.coffee +26 -0
  12. data/app/assets/javascripts/virgo/admin_only.coffee +1 -0
  13. data/app/assets/javascripts/virgo/application.coffee +51 -0
  14. data/app/assets/javascripts/virgo/common.coffee +83 -0
  15. data/app/assets/javascripts/virgo/common/character_counter.coffee +27 -0
  16. data/app/assets/javascripts/virgo/components/header.coffee +47 -0
  17. data/app/assets/javascripts/virgo/components/media_modal.coffee +151 -0
  18. data/app/assets/javascripts/virgo/components/share_bar.coffee +53 -0
  19. data/app/assets/javascripts/virgo/components/slideshow.coffee +35 -0
  20. data/app/assets/javascripts/virgo/lib/jquery-ui-multiselect.js +342 -0
  21. data/app/assets/javascripts/virgo/lib/jquery.browser.js +184 -0
  22. data/app/assets/javascripts/virgo/lib/jquery.cookie.js +114 -0
  23. data/app/assets/javascripts/virgo/lib/jquery.pjax.js +932 -0
  24. data/app/assets/javascripts/virgo/lib/jquery_ext.coffee +0 -0
  25. data/app/assets/javascripts/virgo/lib/manifest.coffee +5 -0
  26. data/app/assets/javascripts/virgo/lib/ouibounce.js +194 -0
  27. data/app/assets/javascripts/virgo/page_modules.coffee +175 -0
  28. data/app/assets/javascripts/virgo/posts/show.coffee +32 -0
  29. data/app/assets/stylesheets/tinymce/skin.sass +2 -0
  30. data/app/assets/stylesheets/tinymce/skins/railspress/content.min.sass +82 -0
  31. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce-small.eot +0 -0
  32. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce-small.svg +62 -0
  33. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce-small.ttf +0 -0
  34. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce-small.woff +0 -0
  35. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce.eot +0 -0
  36. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce.svg +63 -0
  37. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce.ttf +0 -0
  38. data/app/assets/stylesheets/tinymce/skins/railspress/fonts/tinymce.woff +0 -0
  39. data/app/assets/stylesheets/tinymce/skins/railspress/img/anchor.gif +0 -0
  40. data/app/assets/stylesheets/tinymce/skins/railspress/img/loader.gif +0 -0
  41. data/app/assets/stylesheets/tinymce/skins/railspress/img/object.gif +0 -0
  42. data/app/assets/stylesheets/tinymce/skins/railspress/img/trans.gif +0 -0
  43. data/app/assets/stylesheets/tinymce/skins/railspress/skin.min.sass +1703 -0
  44. data/app/assets/stylesheets/virgo/_common.sass +65 -0
  45. data/app/assets/stylesheets/virgo/admin.sass +301 -0
  46. data/app/assets/stylesheets/virgo/admin/columns.sass +3 -0
  47. data/app/assets/stylesheets/virgo/admin/images.sass +14 -0
  48. data/app/assets/stylesheets/virgo/admin/media_modal.sass +72 -0
  49. data/app/assets/stylesheets/virgo/admin/post.sass +102 -0
  50. data/app/assets/stylesheets/virgo/admin/slideshow.sass +35 -0
  51. data/app/assets/stylesheets/virgo/admin/users.sass +2 -0
  52. data/app/assets/stylesheets/virgo/admin_only.sass +1 -0
  53. data/app/assets/stylesheets/virgo/application.sass +605 -0
  54. data/app/assets/stylesheets/virgo/columns.sass +51 -0
  55. data/app/assets/stylesheets/virgo/install.sass +15 -0
  56. data/app/assets/stylesheets/virgo/lib/bootstrap/bootstrap-imports.sass +9 -0
  57. data/app/assets/stylesheets/virgo/lib/bootstrap/bootstrap-overrides.sass +51 -0
  58. data/app/assets/stylesheets/virgo/lib/bootstrap/bootstrap-variables.sass +27 -0
  59. data/app/assets/stylesheets/virgo/lib/jquery-ui-multiselect.css +30 -0
  60. data/app/assets/stylesheets/virgo/lib/manifest.sass +3 -0
  61. data/app/assets/stylesheets/virgo/lib/ouibounce.css +222 -0
  62. data/app/assets/stylesheets/virgo/lib/select2-imports.sass +8 -0
  63. data/app/assets/stylesheets/virgo/page_modules.sass +54 -0
  64. data/app/assets/stylesheets/virgo/pages/authors.sass +30 -0
  65. data/app/assets/stylesheets/virgo/posts.sass +782 -0
  66. data/app/assets/stylesheets/virgo/search.sass +36 -0
  67. data/app/assets/stylesheets/virgo/ui.sass +434 -0
  68. data/app/assets/stylesheets/virgo/users.sass +9 -0
  69. data/app/controllers/virgo/admin/base_controller.rb +22 -0
  70. data/app/controllers/virgo/admin/categories_controller.rb +90 -0
  71. data/app/controllers/virgo/admin/columns_controller.rb +65 -0
  72. data/app/controllers/virgo/admin/images_controller.rb +89 -0
  73. data/app/controllers/virgo/admin/media_modal_controller.rb +101 -0
  74. data/app/controllers/virgo/admin/newsletters_controller.rb +37 -0
  75. data/app/controllers/virgo/admin/page_modules_controller.rb +62 -0
  76. data/app/controllers/virgo/admin/pages_controller.rb +6 -0
  77. data/app/controllers/virgo/admin/posts_controller.rb +173 -0
  78. data/app/controllers/virgo/admin/sites_controller.rb +31 -0
  79. data/app/controllers/virgo/admin/slides_controller.rb +71 -0
  80. data/app/controllers/virgo/admin/slideshows_controller.rb +66 -0
  81. data/app/controllers/virgo/admin/tags_controller.rb +98 -0
  82. data/app/controllers/virgo/admin/users/sessions_controller.rb +21 -0
  83. data/app/controllers/virgo/admin/users_controller.rb +84 -0
  84. data/app/controllers/virgo/application_controller.rb +151 -0
  85. data/app/controllers/virgo/categories_controller.rb +20 -0
  86. data/app/controllers/virgo/columns_controller.rb +24 -0
  87. data/app/controllers/virgo/images_controller.rb +9 -0
  88. data/app/controllers/virgo/install_controller.rb +46 -0
  89. data/app/controllers/virgo/page_modules_controller.rb +23 -0
  90. data/app/controllers/virgo/pages_controller.rb +29 -0
  91. data/app/controllers/virgo/posts_controller.rb +101 -0
  92. data/app/controllers/virgo/search_controller.rb +35 -0
  93. data/app/controllers/virgo/subscribers_controller.rb +54 -0
  94. data/app/controllers/virgo/tags_controller.rb +15 -0
  95. data/app/controllers/virgo/users/confirmations_controller.rb +18 -0
  96. data/app/controllers/virgo/users/passwords_controller.rb +31 -0
  97. data/app/controllers/virgo/users/registrations_controller.rb +41 -0
  98. data/app/controllers/virgo/users/sessions_controller.rb +32 -0
  99. data/app/controllers/virgo/users_controller.rb +15 -0
  100. data/app/helpers/virgo/admin/post_helper.rb +54 -0
  101. data/app/helpers/virgo/admin_helper.rb +15 -0
  102. data/app/helpers/virgo/application_helper.rb +124 -0
  103. data/app/helpers/virgo/hooks_helper.rb +30 -0
  104. data/app/helpers/virgo/page_modules_helper.rb +4 -0
  105. data/app/helpers/virgo/post_helper.rb +159 -0
  106. data/app/helpers/virgo/render_helper.rb +33 -0
  107. data/app/helpers/virgo/search_helper.rb +49 -0
  108. data/app/helpers/virgo/shortcode_helper.rb +7 -0
  109. data/app/helpers/virgo/text_helper.rb +12 -0
  110. data/app/helpers/virgo/video_helper.rb +34 -0
  111. data/app/models/concerns/virgo/common/slug_history.rb +36 -0
  112. data/app/models/concerns/virgo/common/uuid.rb +22 -0
  113. data/app/models/concerns/virgo/post/recommendations.rb +15 -0
  114. data/app/models/concerns/virgo/post/search.rb +100 -0
  115. data/app/models/concerns/virgo/user/search.rb +39 -0
  116. data/app/models/virgo/ability.rb +59 -0
  117. data/app/models/virgo/category.rb +44 -0
  118. data/app/models/virgo/column.rb +25 -0
  119. data/app/models/virgo/form_model.rb +19 -0
  120. data/app/models/virgo/image.rb +63 -0
  121. data/app/models/virgo/page_module.rb +42 -0
  122. data/app/models/virgo/page_module_post.rb +8 -0
  123. data/app/models/virgo/post.rb +391 -0
  124. data/app/models/virgo/post_category.rb +8 -0
  125. data/app/models/virgo/post_search.rb +7 -0
  126. data/app/models/virgo/post_tag.rb +10 -0
  127. data/app/models/virgo/site.rb +36 -0
  128. data/app/models/virgo/slide.rb +23 -0
  129. data/app/models/virgo/slideshow.rb +37 -0
  130. data/app/models/virgo/slug_history.rb +5 -0
  131. data/app/models/virgo/subscriber.rb +5 -0
  132. data/app/models/virgo/tag.rb +34 -0
  133. data/app/models/virgo/user.rb +145 -0
  134. data/app/uploaders/virgo/application_uploader.rb +11 -0
  135. data/app/uploaders/virgo/avatar_uploader.rb +21 -0
  136. data/app/uploaders/virgo/featured_image_uploader.rb +28 -0
  137. data/app/uploaders/virgo/image_uploader.rb +40 -0
  138. data/app/uploaders/virgo/slide_uploader.rb +19 -0
  139. data/app/views/layouts/virgo/admin.haml +16 -0
  140. data/app/views/layouts/virgo/admin/site_settings.haml +14 -0
  141. data/app/views/layouts/virgo/application.haml +63 -0
  142. data/app/views/layouts/virgo/errors.haml +42 -0
  143. data/app/views/layouts/virgo/main.haml +5 -0
  144. data/app/views/layouts/virgo/posts.haml +10 -0
  145. data/app/views/virgo/admin/categories/_form.haml +19 -0
  146. data/app/views/virgo/admin/categories/edit.haml +7 -0
  147. data/app/views/virgo/admin/categories/index.haml +38 -0
  148. data/app/views/virgo/admin/categories/modal_form.haml +11 -0
  149. data/app/views/virgo/admin/categories/new.haml +7 -0
  150. data/app/views/virgo/admin/categories/success_modal.haml +14 -0
  151. data/app/views/virgo/admin/columns/_form.haml +30 -0
  152. data/app/views/virgo/admin/columns/edit.haml +1 -0
  153. data/app/views/virgo/admin/columns/index.haml +30 -0
  154. data/app/views/virgo/admin/columns/new.haml +1 -0
  155. data/app/views/virgo/admin/images/_form.haml +46 -0
  156. data/app/views/virgo/admin/images/edit.haml +1 -0
  157. data/app/views/virgo/admin/images/index.haml +32 -0
  158. data/app/views/virgo/admin/images/new.haml +1 -0
  159. data/app/views/virgo/admin/media_modal/_image_settings.haml +17 -0
  160. data/app/views/virgo/admin/media_modal/_library_panel.haml +26 -0
  161. data/app/views/virgo/admin/media_modal/_upload_panel.haml +21 -0
  162. data/app/views/virgo/admin/media_modal/_upload_success.haml +7 -0
  163. data/app/views/virgo/admin/media_modal/index.haml +19 -0
  164. data/app/views/virgo/admin/newsletters/changelog.haml +25 -0
  165. data/app/views/virgo/admin/newsletters/edit.haml +6 -0
  166. data/app/views/virgo/admin/page_modules/edit.haml +33 -0
  167. data/app/views/virgo/admin/page_modules/edit_subject.haml +43 -0
  168. data/app/views/virgo/admin/pages/help.haml +114 -0
  169. data/app/views/virgo/admin/posts/_author_dropdown.haml +1 -0
  170. data/app/views/virgo/admin/posts/_categories_form.haml +7 -0
  171. data/app/views/virgo/admin/posts/_category.haml +22 -0
  172. data/app/views/virgo/admin/posts/_form.haml +201 -0
  173. data/app/views/virgo/admin/posts/_revisions.haml +40 -0
  174. data/app/views/virgo/admin/posts/edit.haml +9 -0
  175. data/app/views/virgo/admin/posts/index.haml +59 -0
  176. data/app/views/virgo/admin/posts/new.haml +1 -0
  177. data/app/views/virgo/admin/posts/revision_detail.haml +28 -0
  178. data/app/views/virgo/admin/posts/revisions.haml +3 -0
  179. data/app/views/virgo/admin/sites/edit.haml +12 -0
  180. data/app/views/virgo/admin/slides/_form.haml +41 -0
  181. data/app/views/virgo/admin/slides/edit.haml +1 -0
  182. data/app/views/virgo/admin/slides/new.haml +1 -0
  183. data/app/views/virgo/admin/slideshows/_form.haml +49 -0
  184. data/app/views/virgo/admin/slideshows/edit.haml +1 -0
  185. data/app/views/virgo/admin/slideshows/index.haml +43 -0
  186. data/app/views/virgo/admin/slideshows/new.haml +1 -0
  187. data/app/views/virgo/admin/tags/_form.haml +16 -0
  188. data/app/views/virgo/admin/tags/edit.haml +7 -0
  189. data/app/views/virgo/admin/tags/index.haml +33 -0
  190. data/app/views/virgo/admin/tags/modal_form.haml +12 -0
  191. data/app/views/virgo/admin/tags/new.haml +7 -0
  192. data/app/views/virgo/admin/tags/success_modal.haml +14 -0
  193. data/app/views/virgo/admin/users/_form.haml +62 -0
  194. data/app/views/virgo/admin/users/edit.haml +1 -0
  195. data/app/views/virgo/admin/users/index.haml +34 -0
  196. data/app/views/virgo/admin/users/new.haml +1 -0
  197. data/app/views/virgo/application/sitemap.xml.builder +0 -0
  198. data/app/views/virgo/authors/_profile_long.haml +13 -0
  199. data/app/views/virgo/authors/_profile_short.haml +10 -0
  200. data/app/views/virgo/categories/show.haml +24 -0
  201. data/app/views/virgo/columns/index.haml +19 -0
  202. data/app/views/virgo/columns/show.haml +18 -0
  203. data/app/views/virgo/common/_admin_navbar.haml +100 -0
  204. data/app/views/virgo/common/_alerts.haml +40 -0
  205. data/app/views/virgo/common/_analytics.html.erb +1 -0
  206. data/app/views/virgo/common/_base_errors.haml +8 -0
  207. data/app/views/virgo/common/_category_heading.haml +26 -0
  208. data/app/views/virgo/common/_disqus.html.erb +24 -0
  209. data/app/views/virgo/common/_disqus_comment_count.html.erb +12 -0
  210. data/app/views/virgo/common/_fb_api.html.erb +30 -0
  211. data/app/views/virgo/common/_fonts.html.erb +1 -0
  212. data/app/views/virgo/common/_footer.haml +13 -0
  213. data/app/views/virgo/common/_footer_javascript.html.erb +0 -0
  214. data/app/views/virgo/common/_header_analytics.html.erb +9 -0
  215. data/app/views/virgo/common/_list_signup.haml +20 -0
  216. data/app/views/virgo/common/_ouibounce_modal.haml +26 -0
  217. data/app/views/virgo/common/_public_nav.haml +58 -0
  218. data/app/views/virgo/common/_search_form.haml +8 -0
  219. data/app/views/virgo/common/_share_bar.haml +45 -0
  220. data/app/views/virgo/common/_user_vars.haml +2 -0
  221. data/app/views/virgo/errors/404.haml +10 -0
  222. data/app/views/virgo/errors/500.haml +10 -0
  223. data/app/views/virgo/images/_shortcode.haml +4 -0
  224. data/app/views/virgo/install/index.haml +58 -0
  225. data/app/views/virgo/install/success.haml +12 -0
  226. data/app/views/virgo/page_modules/_latest_posts.haml +29 -0
  227. data/app/views/virgo/page_modules/_popular_posts.haml +51 -0
  228. data/app/views/virgo/pages/authors.haml +8 -0
  229. data/app/views/virgo/pages/home.haml +0 -0
  230. data/app/views/virgo/pages/show.haml +6 -0
  231. data/app/views/virgo/posts/_author_info.haml +16 -0
  232. data/app/views/virgo/posts/_post_full.haml +63 -0
  233. data/app/views/virgo/posts/_post_short.haml +30 -0
  234. data/app/views/virgo/posts/_post_thumb_box.haml +13 -0
  235. data/app/views/virgo/posts/_recommendations.haml +12 -0
  236. data/app/views/virgo/posts/_sidebar_thumb.haml +4 -0
  237. data/app/views/virgo/posts/index.haml +22 -0
  238. data/app/views/virgo/posts/latest.haml +16 -0
  239. data/app/views/virgo/posts/more.haml +10 -0
  240. data/app/views/virgo/posts/rss.xml.builder +17 -0
  241. data/app/views/virgo/posts/show.haml +17 -0
  242. data/app/views/virgo/search/_form.haml +5 -0
  243. data/app/views/virgo/search/_item.haml +22 -0
  244. data/app/views/virgo/search/index.haml +11 -0
  245. data/app/views/virgo/search/new.haml +4 -0
  246. data/app/views/virgo/shortcode_templates/blockquote.haml +9 -0
  247. data/app/views/virgo/shortcode_templates/h1.haml +1 -0
  248. data/app/views/virgo/shortcode_templates/h2.haml +1 -0
  249. data/app/views/virgo/shortcode_templates/h3.haml +1 -0
  250. data/app/views/virgo/shortcode_templates/h4.haml +1 -0
  251. data/app/views/virgo/shortcode_templates/image.haml +17 -0
  252. data/app/views/virgo/shortcode_templates/pullquote.haml +3 -0
  253. data/app/views/virgo/shortcode_templates/slideshow.haml +35 -0
  254. data/app/views/virgo/shortcode_templates/tweet.haml +3 -0
  255. data/app/views/virgo/shortcode_templates/video.haml +8 -0
  256. data/app/views/virgo/subscribers/_success_modal.haml +13 -0
  257. data/app/views/virgo/subscribers/modal.haml +15 -0
  258. data/app/views/virgo/tags/show.haml +16 -0
  259. data/app/views/virgo/users/confirmations/new.html.haml +10 -0
  260. data/app/views/virgo/users/devise_mailer/confirmation_instructions.html.erb +7 -0
  261. data/app/views/virgo/users/devise_mailer/reset_password_instructions.html.haml +6 -0
  262. data/app/views/virgo/users/devise_mailer/unlock_instructions.html.haml +5 -0
  263. data/app/views/virgo/users/passwords/edit.html.haml +14 -0
  264. data/app/views/virgo/users/passwords/new.html.haml +14 -0
  265. data/app/views/virgo/users/registrations/edit.html.haml +30 -0
  266. data/app/views/virgo/users/registrations/new.html.haml +13 -0
  267. data/app/views/virgo/users/sessions/new.html.haml +12 -0
  268. data/app/views/virgo/users/shared/_links.haml +26 -0
  269. data/app/views/virgo/users/show.haml +11 -0
  270. data/app/views/virgo/users/unlocks/new.html.haml +9 -0
  271. data/config/initializers/action_mailer.rb +7 -0
  272. data/config/initializers/active_record.rb +72 -0
  273. data/config/initializers/active_record_symbolize.rb +18 -0
  274. data/config/initializers/assets.rb +17 -0
  275. data/config/initializers/backtrace_silencers.rb +7 -0
  276. data/config/initializers/carrierwave.rb +36 -0
  277. data/config/initializers/cookies_serializer.rb +3 -0
  278. data/config/initializers/devise.rb +257 -0
  279. data/config/initializers/filter_parameter_logging.rb +4 -0
  280. data/config/initializers/hash.rb +5 -0
  281. data/config/initializers/inflections.rb +16 -0
  282. data/config/initializers/mime_types.rb +4 -0
  283. data/config/initializers/nil_class.rb +13 -0
  284. data/config/initializers/non_digest_assets.rb +3 -0
  285. data/config/initializers/paper_trail.rb +30 -0
  286. data/config/initializers/schema_plus.rb +5 -0
  287. data/config/initializers/session_store.rb +3 -0
  288. data/config/initializers/shortcode.rb +12 -0
  289. data/config/initializers/simple_form.rb +170 -0
  290. data/config/initializers/simple_form_bootstrap.rb +136 -0
  291. data/config/initializers/string.rb +5 -0
  292. data/config/initializers/time_formatting.rb +23 -0
  293. data/config/initializers/wrap_parameters.rb +14 -0
  294. data/config/locales/devise.en.yml +60 -0
  295. data/config/routes.rb +96 -0
  296. data/config/schedule.rb +3 -0
  297. data/db/migrate/20150729174510_create_virgo_schema.rb +225 -0
  298. data/lib/generators/virgo/install/install_generator.rb +16 -0
  299. data/lib/generators/virgo/views/views_generator.rb +22 -0
  300. data/lib/tasks/virgo_tasks.rake +7 -0
  301. data/lib/virgo.rb +4 -0
  302. data/lib/virgo/development_mail_interceptor.rb +6 -0
  303. data/lib/virgo/email_validator.rb +6 -0
  304. data/lib/virgo/engine.rb +73 -0
  305. data/lib/virgo/reduce_validator.rb +6 -0
  306. data/lib/virgo/upload_helpers.rb +89 -0
  307. data/lib/virgo/version.rb +3 -0
  308. data/lib/virgo/view_help.rb +3 -0
  309. metadata +1051 -0
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
9
+ end
10
+
11
+ # To enable root element in JSON for ActiveRecord objects.
12
+ # ActiveSupport.on_load(:active_record) do
13
+ # self.include_root_in_json = true
14
+ # end
@@ -0,0 +1,60 @@
1
+ # Additional translations at https://github.com/plataformatec/devise/wiki/I18n
2
+
3
+ en:
4
+ devise:
5
+ confirmations:
6
+ confirmed: "Your email address has been successfully confirmed."
7
+ send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
8
+ send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
9
+ failure:
10
+ already_authenticated: "You are already signed in."
11
+ inactive: "Your account is not activated yet."
12
+ invalid: "Invalid %{authentication_keys} or password."
13
+ locked: "Your account is locked."
14
+ last_attempt: "You have one more attempt before your account is locked."
15
+ not_found_in_database: "Invalid %{authentication_keys} or password."
16
+ timeout: "Your session expired. Please sign in again to continue."
17
+ unauthenticated: "You need to sign in or sign up before continuing."
18
+ unconfirmed: "You have to confirm your email address before continuing."
19
+ mailer:
20
+ confirmation_instructions:
21
+ subject: "Confirmation instructions"
22
+ reset_password_instructions:
23
+ subject: "Reset password instructions"
24
+ unlock_instructions:
25
+ subject: "Unlock instructions"
26
+ omniauth_callbacks:
27
+ failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
28
+ success: "Successfully authenticated from %{kind} account."
29
+ passwords:
30
+ no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
31
+ send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
32
+ send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
33
+ updated: "Your password has been changed successfully. You are now signed in."
34
+ updated_not_active: "Your password has been changed successfully."
35
+ registrations:
36
+ destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
37
+ signed_up: "Welcome! You have signed up successfully."
38
+ signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
39
+ signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
40
+ signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
41
+ update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
42
+ updated: "Your account has been updated successfully."
43
+ sessions:
44
+ signed_in: "Signed in successfully."
45
+ signed_out: "Signed out successfully."
46
+ already_signed_out: "Signed out successfully."
47
+ unlocks:
48
+ send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
49
+ send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
50
+ unlocked: "Your account has been unlocked successfully. Please sign in to continue."
51
+ errors:
52
+ messages:
53
+ already_confirmed: "was already confirmed, please try signing in"
54
+ confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
55
+ expired: "has expired, please request a new one"
56
+ not_found: "not found"
57
+ not_locked: "was not locked"
58
+ not_saved:
59
+ one: "1 error prohibited this %{resource} from being saved:"
60
+ other: "%{count} errors prohibited this %{resource} from being saved:"
@@ -0,0 +1,96 @@
1
+ Virgo::Engine.routes.draw do
2
+ root to: 'posts#index'
3
+ get 'login', to: redirect('/users/sign_in')
4
+
5
+ resources :posts, except: [:show] do
6
+ get :track, on: :member
7
+ get :popular, on: :collection
8
+ get :more, on: :collection
9
+ end
10
+
11
+ resources :install do
12
+ get :success, on: :collection
13
+ end
14
+
15
+ resources :columns
16
+ resources :tags
17
+ resources :search
18
+ resources :users, path: '/author'
19
+ resources :subscribers do
20
+ match :modal, on: :collection, via: [:get, :post]
21
+ end
22
+
23
+ resources :page_modules do
24
+ get '/popular_posts' => 'page_modules#popular_posts', on: :collection
25
+ end
26
+
27
+ get '/news' => 'posts#latest', as: :latest_posts
28
+ get '/feed.rss' => 'posts#rss', as: :feed
29
+ get '/feed.xml' => 'posts#rss', as: :feed_alt
30
+ get '/authors' => 'pages#authors', as: :authors
31
+ get '/admin/help' => 'admin/pages#help', as: :admin_help
32
+
33
+
34
+ devise_for :users, class_name: "Virgo::User", controllers: {
35
+ sessions: 'virgo/users/sessions',
36
+ registrations: 'virgo/users/registrations',
37
+ passwords: 'virgo/users/passwords',
38
+ confirmations: 'virgo/users/confirmations'
39
+ }
40
+
41
+ namespace :admin do
42
+ get '/admin/posts/revision_detail/:version_id' => 'posts#revision_detail', as: :revision_detail
43
+
44
+ resources :media_modal do
45
+ post :upload, on: :collection
46
+ get :library_panel, on: :collection
47
+ match :upload_panel, on: :collection, via: [:get, :post]
48
+ match '/image_settings/:image_id' => 'media_modal#image_settings', on: :collection, via: [:get, :patch], as: :image_settings
49
+ end
50
+
51
+ resources :slideshows do
52
+ resources :slides, shallow: true
53
+ end
54
+
55
+ post '/admin/slides/positions' => 'slides#positions'
56
+
57
+ resources :posts do
58
+ get :revisions, on: :member
59
+ get 'author_dropdown' => 'posts#author_dropdown', on: :collection
60
+ match 'editing' => 'posts#editing', on: :member, via: [:get, :post]
61
+ delete 'featured_image' => 'posts#delete_featured_image', on: :member
62
+ delete 'thumbnail_image' => 'posts#delete_thumbnail_image', on: :member
63
+ patch :tag_ordering, on: :member
64
+ get :find, on: :collection
65
+ end
66
+
67
+ resources :columns
68
+
69
+ get '/site/edit' => 'sites#edit'
70
+ patch '/site' => 'sites#update'
71
+
72
+ get '/page_modules/edit' => 'page_modules#edit'
73
+ patch '/page_modules' => 'page_modules#update'
74
+ match '/page_modules/:id/edit_subject' => 'page_modules#edit_subject', via: [:get, :patch], as: :edit_page_module_subject
75
+ get '/newsletter/edit' => 'newsletters#edit'
76
+ patch '/newsletter' => 'newsletters#update'
77
+ get '/newsletter/changelog' => 'newsletters#changelog'
78
+
79
+ resources :tags do
80
+ get 'modal_form', on: :collection
81
+ end
82
+ resources :categories do
83
+ get 'modal_form', on: :collection
84
+ end
85
+ resources :users do
86
+ resources :sessions, controller: 'users/sessions'
87
+ end
88
+ resources :images do
89
+ post :upload, on: :collection
90
+ get :embed, on: :member
91
+ end
92
+ end
93
+
94
+ get '/sections/:id' => 'categories#show', as: :category
95
+ get '/:id' => 'posts#show', as: :post_detail
96
+ end
@@ -0,0 +1,3 @@
1
+ every 150.seconds do
2
+ rake "virgo:posts:publish_scheduled"
3
+ end
@@ -0,0 +1,225 @@
1
+ class CreateVirgoSchema < ActiveRecord::Migration
2
+ def change
3
+ # These are extensions that must be enabled in order to support this database
4
+ enable_extension "plpgsql"
5
+ enable_extension "pg_trgm"
6
+ enable_extension "hstore"
7
+
8
+ create_table "versions", force: :cascade do |t|
9
+ t.string "item_type", null: false, index: {name: "index_versions_on_item_type_and_item_id", with: ["item_id"]}
10
+ t.integer "item_id", null: false
11
+ t.string "event", null: false
12
+ t.string "whodunnit"
13
+ t.text "object"
14
+ t.datetime "created_at"
15
+ t.text "object_changes"
16
+ end
17
+
18
+ create_table "virgo_categories", force: :cascade do |t|
19
+ t.string "name", index: {name: "index_virgo_categories_on_name"}
20
+ t.datetime "created_at"
21
+ t.datetime "updated_at"
22
+ t.integer "parent_id", index: {name: "index_virgo_categories_on_parent_id"}
23
+ t.string "slug", index: {name: "index_virgo_categories_on_slug"}
24
+ t.integer "created_by_id", index: {name: "index_virgo_categories_on_created_by_id"}
25
+ t.boolean "display_in_navbar", index: {name: "index_virgo_categories_on_display_in_navbar"}
26
+ t.integer "navbar_weight", default: 0, index: {name: "index_virgo_categories_on_navbar_weight"}
27
+ t.boolean "visible", default: true, index: {name: "index_virgo_categories_on_visible"}
28
+ end
29
+
30
+ create_table "virgo_columns", force: :cascade do |t|
31
+ t.string "name"
32
+ t.string "slug", index: {name: "index_virgo_columns_on_slug"}
33
+ t.text "description"
34
+ t.string "image"
35
+ t.integer "weight", default: 0, index: {name: "index_virgo_columns_on_weight"}
36
+ t.datetime "created_at"
37
+ t.datetime "updated_at"
38
+ end
39
+
40
+ create_table "virgo_images", force: :cascade do |t|
41
+ t.integer "user_id", index: {name: "index_virgo_images_on_user_id"}
42
+ t.string "name", index: {name: "index_virgo_images_on_name"}
43
+ t.string "slug", index: {name: "index_virgo_images_on_slug"}
44
+ t.string "image"
45
+ t.integer "width"
46
+ t.integer "height"
47
+ t.text "data_file_name"
48
+ t.text "data_content_type"
49
+ t.integer "data_file_size"
50
+ t.datetime "created_at"
51
+ t.datetime "updated_at"
52
+ t.text "alt_text"
53
+ t.text "description"
54
+ t.text "credit"
55
+ end
56
+
57
+ create_table "virgo_page_module_posts", force: :cascade do |t|
58
+ t.integer "page_module_id", index: {name: "index_virgo_page_module_posts_on_page_module_id"}
59
+ t.integer "post_id", index: {name: "index_virgo_page_module_posts_on_post_id"}
60
+ t.integer "position"
61
+ t.datetime "created_at"
62
+ t.datetime "updated_at"
63
+ end
64
+
65
+ create_table "virgo_page_modules", force: :cascade do |t|
66
+ t.string "name"
67
+ t.string "template_path"
68
+ t.boolean "enabled", index: {name: "index_virgo_page_modules_on_enabled"}
69
+ t.integer "weight", default: 0, index: {name: "index_virgo_page_modules_on_weight"}
70
+ t.datetime "created_at"
71
+ t.datetime "updated_at"
72
+ t.integer "subject_id", index: {name: "index_virgo_page_modules_on_subject_id"}
73
+ t.string "subject_type", index: {name: "index_virgo_page_modules_on_subject_type"}
74
+ t.boolean "editable_subject", default: false
75
+ t.string "image"
76
+ t.boolean "can_set_posts", default: false
77
+ t.boolean "hidden_from_admins", default: false
78
+ end
79
+
80
+ create_table "virgo_post_categories", force: :cascade do |t|
81
+ t.integer "post_id", index: {name: "index_virgo_post_categories_on_post_id"}
82
+ t.integer "category_id", index: {name: "index_virgo_post_categories_on_category_id"}
83
+ end
84
+
85
+ create_table "virgo_post_tags", force: :cascade do |t|
86
+ t.integer "post_id", index: {name: "index_virgo_post_tags_on_post_id"}
87
+ t.integer "tag_id", index: {name: "index_virgo_post_tags_on_tag_id"}
88
+ t.integer "position", default: 0, index: {name: "index_virgo_post_tags_on_position"}
89
+ end
90
+
91
+ create_table "virgo_posts", force: :cascade do |t|
92
+ t.string "post_type", default: "post", index: {name: "index_virgo_posts_on_post_type"}
93
+ t.string "slug", index: {name: "index_virgo_posts_on_slug"}
94
+ t.integer "author_id", index: {name: "index_virgo_posts_on_author_id"}
95
+ t.text "headline"
96
+ t.text "subhead"
97
+ t.text "excerpt"
98
+ t.text "body"
99
+ t.string "status", default: "draft", index: {name: "index_virgo_posts_on_status"}
100
+ t.datetime "publish_at", index: {name: "index_virgo_posts_on_publish_at"}
101
+ t.boolean "feature_on_front_page", default: false, index: {name: "index_virgo_posts_on_feature_on_front_page"}
102
+ t.boolean "feature_on_category_page", default: false, index: {name: "index_virgo_posts_on_feature_on_category_page"}
103
+ t.boolean "show_excerpt", default: true
104
+ t.text "citation_name"
105
+ t.text "citation_url"
106
+ t.datetime "created_at"
107
+ t.datetime "updated_at", index: {name: "index_virgo_posts_on_updated_at"}
108
+ t.integer "created_by_id", index: {name: "index_virgo_posts_on_created_by_id"}
109
+ t.string "title_tag_text"
110
+ t.text "meta_description_tag_value"
111
+ t.integer "editing_user_id", index: {name: "index_virgo_posts_on_editing_user_id"}
112
+ t.datetime "editing_timestamp", index: {name: "index_virgo_posts_on_editing_timestamp"}
113
+ t.boolean "live", default: true, index: {name: "index_virgo_posts_on_live"}
114
+ t.integer "view_count", default: 0, index: {name: "index_virgo_posts_on_view_count"}
115
+ t.integer "featured_image_id"
116
+ t.text "search_document", index: {name: "virgo_post_search_document_index", using: :gin, operator_class: "gin_trgm_ops"}
117
+ t.string "uuid", index: {name: "index_virgo_posts_on_uuid"}
118
+ t.integer "column_id", index: {name: "index_virgo_posts_on_column_id"}
119
+ t.boolean "comments_enabled", default: false
120
+ t.boolean "show_feature_image_on_post_page", default: true
121
+ t.hstore "meta"
122
+ t.decimal "popularity", precision: 12, scale: 3, index: {name: "index_virgo_posts_on_popularity"}
123
+ t.integer "thumbnail_image_id", index: {name: "index_virgo_posts_on_thumbnail_image_id"}
124
+ end
125
+
126
+ create_table "virgo_sites", force: :cascade do |t|
127
+ t.text "tagline"
128
+ t.datetime "created_at"
129
+ t.datetime "updated_at"
130
+ t.boolean "recommendations_enabled", default: true
131
+ t.text "name"
132
+ t.text "description"
133
+ t.string "disqus_app_id"
134
+ t.string "twitter_handle"
135
+ t.string "instagram_account_name"
136
+ t.string "pinterest_account_name"
137
+ end
138
+
139
+ create_table "virgo_slides", force: :cascade do |t|
140
+ t.text "text"
141
+ t.integer "slideshow_id", index: {name: "index_virgo_slides_on_slideshow_id"}
142
+ t.integer "position", index: {name: "index_virgo_slides_on_position"}
143
+ t.datetime "created_at"
144
+ t.datetime "updated_at"
145
+ t.text "video_embed"
146
+ t.text "title"
147
+ t.integer "image_id", index: {name: "fk__virgo_slides_image_rel_id"}, foreign_key: {references: "virgo_images", name: "fk_virgo_slides_image_rel_id", on_update: :no_action, on_delete: :no_action}
148
+ end
149
+ add_index "virgo_slides", ["image_id"], name: "index_virgo_slides_on_image_id"
150
+
151
+ create_table "virgo_slideshows", force: :cascade do |t|
152
+ t.integer "author_id", index: {name: "index_virgo_slideshows_on_author_id"}
153
+ t.string "name"
154
+ t.datetime "created_at"
155
+ t.datetime "updated_at"
156
+ end
157
+
158
+ create_table "virgo_slug_histories", force: :cascade do |t|
159
+ t.integer "record_id", index: {name: "index_virgo_slug_histories_on_record_id"}
160
+ t.string "record_type", index: {name: "index_virgo_slug_histories_on_record_type"}
161
+ t.string "slug", index: {name: "index_virgo_slug_histories_on_slug"}
162
+ t.datetime "created_at"
163
+ t.datetime "updated_at"
164
+ end
165
+
166
+ create_table "virgo_subscribers", force: :cascade do |t|
167
+ t.string "email", index: {name: "index_virgo_subscribers_on_email"}
168
+ t.boolean "subscribed", default: true
169
+ t.datetime "created_at"
170
+ t.datetime "updated_at"
171
+ end
172
+
173
+ create_table "virgo_tags", force: :cascade do |t|
174
+ t.string "name", index: {name: "index_virgo_tags_on_name"}
175
+ t.datetime "created_at"
176
+ t.datetime "updated_at"
177
+ t.string "slug", index: {name: "index_virgo_tags_on_slug"}
178
+ t.integer "created_by_id", index: {name: "index_virgo_tags_on_created_by_id"}
179
+ end
180
+
181
+ create_table "virgo_users", force: :cascade do |t|
182
+ t.string "email", default: "", null: false, index: {name: "index_virgo_users_on_email"}
183
+ t.string "encrypted_password", default: "", null: false
184
+ t.string "reset_password_token"
185
+ t.datetime "reset_password_sent_at"
186
+ t.datetime "remember_created_at"
187
+ t.integer "sign_in_count", default: 0
188
+ t.datetime "current_sign_in_at"
189
+ t.datetime "last_sign_in_at"
190
+ t.string "current_sign_in_ip"
191
+ t.string "last_sign_in_ip"
192
+ t.string "confirmation_token"
193
+ t.datetime "confirmed_at"
194
+ t.datetime "confirmation_sent_at"
195
+ t.string "unconfirmed_email"
196
+ t.integer "failed_attempts", default: 0
197
+ t.string "unlock_token"
198
+ t.datetime "locked_at"
199
+ t.string "authentication_token"
200
+ t.string "first_name"
201
+ t.string "last_name"
202
+ t.string "role", index: {name: "index_virgo_users_on_role"}
203
+ t.boolean "canceled"
204
+ t.string "avatar"
205
+ t.boolean "active"
206
+ t.boolean "account_on_hold"
207
+ t.string "time_zone"
208
+ t.datetime "created_at"
209
+ t.datetime "updated_at"
210
+ t.string "username", index: {name: "index_virgo_users_on_username"}
211
+ t.string "byline"
212
+ t.text "about"
213
+ t.string "slug", index: {name: "index_virgo_users_on_slug"}
214
+ t.boolean "show_on_authors_page", default: false, index: {name: "index_virgo_users_on_show_on_authors_page"}
215
+ t.integer "author_page_weight", default: 0, index: {name: "index_virgo_users_on_author_page_weight"}
216
+ t.string "twitter_id"
217
+ t.string "facebook_id"
218
+ t.string "instagram_id"
219
+ t.string "pinterest_id"
220
+ t.string "snapchat_id"
221
+ t.string "linkedin_id"
222
+ t.string "public_email"
223
+ end
224
+ end
225
+ end
@@ -0,0 +1,16 @@
1
+ module Virgo
2
+ class InstallGenerator < Rails::Generators::Base
3
+ def run_install
4
+ unless app_has_engine_route?
5
+ route "mount Virgo::Engine => \"/\""
6
+ end
7
+
8
+ generate "virgo:views"
9
+ end
10
+
11
+ def app_has_engine_route?
12
+ route_contents = File.read("#{Rails.root}/config/routes.rb")
13
+ route_contents.include?("Virgo::Engine")
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ module Virgo
2
+ class ViewsGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('../../../../..', __FILE__)
4
+
5
+ def copy_views
6
+ Dir["#{engine_root}/app/views/**/*"].reject { |f|
7
+ f.include?('admin') ||
8
+ f.include?('shortcode_templates')
9
+ }.each do |abs_path|
10
+ relative_path = abs_path.gsub("#{engine_root}/", '')
11
+
12
+ unless File.directory?(abs_path)
13
+ copy_file relative_path, relative_path
14
+ end
15
+ end
16
+ end
17
+
18
+ def engine_root
19
+ File.expand_path('../../../../..', __FILE__)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,7 @@
1
+ namespace :virgo do
2
+ namespace :posts do
3
+ task publish_scheduled: :environment do
4
+ Virgo::Post.publish_scheduled!
5
+ end
6
+ end
7
+ end