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,9 @@
1
+ @import common
2
+
3
+ .session-box
4
+ margin-top: 126px
5
+ +sans
6
+
7
+ body.sessions, body.registrations
8
+ #footer
9
+ display: none
@@ -0,0 +1,22 @@
1
+ module Virgo
2
+ class Admin::BaseController < ApplicationController
3
+
4
+ layout 'virgo/admin'
5
+ before_filter :authorize_admin_user
6
+ before_filter :set_is_admin_view
7
+
8
+ def search
9
+ redirect_to params.merge(action: "index").to_hash
10
+ end
11
+
12
+ def authorize_admin_user
13
+ unless user_signed_in? and current_user.admin_access?
14
+ redirect_to root_path, notice: 'You do not have permission to access admin pages.'
15
+ end
16
+ end
17
+
18
+ def set_is_admin_view
19
+ @_is_admin_view = true
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,90 @@
1
+ module Virgo
2
+ class Admin::CategoriesController < Admin::BaseController
3
+ before_action :set_category, only: member_actions
4
+ helper_method :post_id_param
5
+
6
+ handles_sortable_columns
7
+
8
+ def index
9
+ if sort_param.nil?
10
+ flash.keep
11
+ redirect_to admin_categories_path(sort: 'navbar_weight') and return
12
+ end
13
+
14
+ @categories = Category.visible.order(sort_order).with_post_count.page(page_param)
15
+ end
16
+
17
+ def new
18
+ @category = Category.new
19
+ end
20
+
21
+ def modal_form
22
+ @category = Category.new
23
+
24
+ render json: {status: :success, html: render_content('modal_form', layout: false)}
25
+ end
26
+
27
+ def create
28
+ @category = Category.new(category_params.merge(created_by: current_user))
29
+
30
+ respond_to do |fmt|
31
+ if @category.save
32
+ fmt.json {
33
+ @post = Post.find_by(id: post_id_param)
34
+ @post.categories << @category unless (@post.nil? || @post.categories.include?(@category))
35
+
36
+ render json: {
37
+ status: :success,
38
+ html: render_content('success_modal', layout: false),
39
+ categories_form_partial: render_content(partial: '/virgo/admin/posts/categories_form')}
40
+ }
41
+ fmt.html {
42
+ flash[:notice] = "Category added successfully"
43
+ redirect_to admin_categories_path
44
+ }
45
+ else
46
+ fmt.json {
47
+ render json: {status: :err, html: render_content('modal_form', layout: false)}
48
+ }
49
+ fmt.html {
50
+ render 'new'
51
+ }
52
+ end
53
+ end
54
+ end
55
+
56
+ def edit
57
+ end
58
+
59
+ def update
60
+ if @category.update(category_params)
61
+ flash[:notice] = "Category updated successfully"
62
+ redirect_to admin_categories_path
63
+ else
64
+ render 'edit'
65
+ end
66
+ end
67
+
68
+ def destroy
69
+ @category.destroy
70
+
71
+ flash[:notice] = "Category deleted"
72
+
73
+ redirect_to admin_categories_path
74
+ end
75
+
76
+ private
77
+
78
+ def set_category
79
+ @category = Category.friendly.find(id_param)
80
+ end
81
+
82
+ def category_params
83
+ params.permit(category: [:name, :parent_id, :display_in_navbar, :navbar_weight, :slug])[:category]
84
+ end
85
+
86
+ def post_id_param
87
+ params.permit(:post_id)[:post_id]
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,65 @@
1
+ module Virgo
2
+ class Admin::ColumnsController < Admin::BaseController
3
+ before_action :set_column, only: [:show, :edit, :update, :destroy]
4
+
5
+ handles_sortable_columns
6
+
7
+ def index
8
+ if sort_param.nil?
9
+ flash.keep
10
+ redirect_to admin_columns_path(sort: 'weight') and return
11
+ end
12
+
13
+ @columns = Column.order(sort_order).with_post_count.page(page_param)
14
+ end
15
+
16
+ def new
17
+ @column = Column.new
18
+ end
19
+
20
+ def create
21
+ @column = Column.new(column_params)
22
+
23
+ authorize! :create, @column
24
+
25
+ if @column.save
26
+ flash[:notice] = "Column created"
27
+ redirect_to admin_columns_path
28
+ else
29
+ render :new
30
+ end
31
+ end
32
+
33
+ def edit
34
+ end
35
+
36
+ def update
37
+ if @column.update(column_params)
38
+ flash[:notice] = "Column settings updated"
39
+ redirect_to admin_columns_path
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ def destroy
46
+ @column.destroy
47
+
48
+ flash[:notice] = "Column removed"
49
+
50
+ redirect_to admin_columns_path
51
+ end
52
+
53
+ private
54
+
55
+ def set_column
56
+ @column = Column.friendly.find(id_param)
57
+
58
+ authorize! :manage, @column
59
+ end
60
+
61
+ def column_params
62
+ params.permit(column: [:name, :description, :weight, :image, :slug])[:column]
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,89 @@
1
+ module Virgo
2
+ class Admin::ImagesController < Admin::BaseController
3
+ before_action :set_image, only: member_actions(:embed)
4
+
5
+ handles_sortable_columns
6
+
7
+ def index
8
+ @images = Image.all.search(filter_params).order(sort_order).page(page_param).per(40)
9
+ end
10
+
11
+ def new
12
+ @image = Image.new
13
+ end
14
+
15
+ def create
16
+ @image = Image.new(image_params.merge(user: current_user))
17
+
18
+ if @image.save
19
+ flash[:notice] = "Image uploaded successfully"
20
+ redirect_to edit_admin_image_path(@image)
21
+ else
22
+ render :new
23
+ end
24
+ end
25
+
26
+ def edit
27
+ end
28
+
29
+ def update
30
+ if @image.update(image_params)
31
+ flash[:notice] = "Image properties updated successfully"
32
+ redirect_to edit_admin_image_path(@image)
33
+ else
34
+ render :new
35
+ end
36
+ end
37
+
38
+ def destroy
39
+ @image.destroy
40
+
41
+ flash[:notice] = "Image successfully deleted"
42
+
43
+ redirect_to admin_images_path
44
+ end
45
+
46
+ def upload
47
+ @image = Image.new
48
+
49
+ file = params[:file]
50
+
51
+ @image.image = UploadHelpers::Http.normalize_param(file, request)
52
+
53
+ @image.user = current_user
54
+
55
+ if @image.save
56
+ render :text => { :filelink => @image.image.url }.to_json
57
+ else
58
+ render json: { error: @image.errors }
59
+ end
60
+ end
61
+
62
+ def embed
63
+ render json: {
64
+ html: compact_html(Shortcode.process(render_to_string(partial: "/virgo/images/shortcode", locals: {image: @image})))
65
+ }
66
+ end
67
+
68
+ private
69
+
70
+ def set_image
71
+ @image = Image.friendly.find(id_param)
72
+ end
73
+
74
+ def image_params
75
+ params.permit(image: [:name, :image, :alt_text, :description, :credit])[:image]
76
+ end
77
+
78
+ def self.normalize_param(*args)
79
+ value = args.first
80
+ if Hash === value && value.has_key?(:tempfile)
81
+ UploadedFile.new(value)
82
+ elsif value.is_a?(String)
83
+ QqFile.new(*args)
84
+ else
85
+ value
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,101 @@
1
+ module Virgo
2
+ class Admin::MediaModalController < Admin::BaseController
3
+ before_action :set_images, only: [:index, :library_panel]
4
+
5
+ before_action :set_image, only: [:image_settings]
6
+
7
+ helper_method :last_page?, :next_page_num, :caption_param
8
+
9
+ def index
10
+ render json: {
11
+ html: render_content(layout: false)
12
+ }
13
+ end
14
+
15
+ def library_panel
16
+ render json: {
17
+ html: render_content(partial: 'library_panel'),
18
+ is_last_page: last_page?
19
+ }
20
+ end
21
+
22
+ def upload_panel
23
+ if request.post?
24
+ @image = Image.new(image_params.merge(user: current_user))
25
+
26
+ if @image.save
27
+ render json: {
28
+ status: 'upload_success',
29
+ html: render_content(partial: 'upload_success'),
30
+ image: @image,
31
+ img_url: @image.image.url(:content),
32
+ image_html: compact_html(Shortcode.process(render_to_string(partial: "/virgo/images/shortcode", locals: {image: @image})))
33
+ } and return
34
+ end
35
+ else
36
+ @image = Image.new
37
+ end
38
+
39
+ render json: {
40
+ html: render_content(partial: 'upload_panel')
41
+ }
42
+ end
43
+
44
+ def image_settings
45
+ if request.get?
46
+ render json: {
47
+ html: render_content(partial: 'image_settings')
48
+ }
49
+ elsif request.patch?
50
+ if @image.update(image_params)
51
+ render json: {
52
+ status: :success,
53
+ image: @image,
54
+ caption: caption_param,
55
+ credit: @image.credit,
56
+ html: compact_html(Shortcode.process(render_to_string(partial: "/virgo/images/shortcode", locals: {image: @image})))
57
+ }
58
+ else
59
+ render json: {
60
+ status: :err,
61
+ html: render_content(partial: 'image_settings')
62
+ }
63
+ end
64
+ end
65
+ end
66
+
67
+ private
68
+
69
+ def set_images
70
+ @images = Image.order(created_at: :desc).page(page_param).per(32)
71
+ end
72
+
73
+ def image_params
74
+ params.permit(image: [:name, :image, :alt_text, :description, :credit])[:image]
75
+ end
76
+
77
+ def last_page?
78
+ @images && (page_param.present? ? page_param.to_i : (page_param.to_i + 1)) >= @images.total_pages
79
+ end
80
+
81
+ def next_page_num
82
+ page_param.present? ? (page_param.to_i + 1) : 2
83
+ end
84
+
85
+ def set_image
86
+ @image = Image.friendly.find(image_id_param)
87
+ end
88
+
89
+ def image_id_param
90
+ params.permit(:image_id)[:image_id]
91
+ end
92
+
93
+ def caption_param
94
+ _caption = params.permit(:caption)[:caption]
95
+
96
+ _caption = _caption.gsub("%0A", "") if _caption.present?
97
+
98
+ URI.decode(_caption) if _caption.present?
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,37 @@
1
+ module Virgo
2
+ class Admin::NewslettersController < Admin::BaseController
3
+ before_action :set_site
4
+
5
+ layout 'virgo/admin/site_settings'
6
+
7
+ def edit
8
+ end
9
+
10
+ def update
11
+ authorize! :manage, @site
12
+
13
+ if @site.update(site_params)
14
+ flash[:notice] = "Weekly newsletter settings successfully updated"
15
+ redirect_to admin_newsletter_edit_path
16
+ else
17
+ render :edit
18
+ end
19
+ end
20
+
21
+ def changelog
22
+ @versions = @site.versions.order(created_at: :desc).page(page_param)
23
+ end
24
+
25
+ private
26
+
27
+ def set_site
28
+ @site = Site.instance
29
+
30
+ authorize! :manage, @site
31
+ end
32
+
33
+ def site_params
34
+ params.permit(site: [:weekly_newsletter_intro_copy])[:site]
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,62 @@
1
+ module Virgo
2
+ class Admin::PageModulesController < Admin::BaseController
3
+ before_action :set_site
4
+ before_action :set_page_module, only: [:edit_subject]
5
+
6
+ layout 'virgo/admin/site_settings'
7
+
8
+ def edit
9
+ authorize! :manage, PageModule
10
+
11
+ @page_modules = PageModule.visible_to_admins.order(weight: :asc)
12
+ end
13
+
14
+ def edit_subject
15
+ if request.patch?
16
+ if @page_module.update(page_module_params)
17
+ @page_module.page_module_posts.map &:destroy
18
+ if post_id_params.present?
19
+ post_id_params.each_with_index do |post_id, index|
20
+ @page_module.page_module_posts.create!(post_id: post_id, position: index)
21
+ end
22
+ end
23
+ flash[:notice] = "Settings updated successfully"
24
+ redirect_to admin_edit_page_module_subject_path(@page_module) and return
25
+ end
26
+ end
27
+ end
28
+
29
+ def update
30
+ authorize! :manage, PageModule
31
+
32
+ params[:page_modules].each_pair do |id, enabled_val|
33
+ page_module = PageModule.find(id)
34
+
35
+ page_module.update!(enabled: enabled_val)
36
+ end
37
+
38
+ flash[:notice] = "Page module settings updated"
39
+
40
+ redirect_to admin_page_modules_edit_path
41
+ end
42
+
43
+ private
44
+
45
+ def set_site
46
+ @site = Site.instance
47
+
48
+ authorize! :manage, @site
49
+ end
50
+
51
+ def set_page_module
52
+ @page_module = PageModule.find(id_param)
53
+ end
54
+
55
+ def post_id_params
56
+ params.permit(post_ids: [])[:post_ids]
57
+ end
58
+ def page_module_params
59
+ params.permit(page_module: [:subject_id, :subject_type, :image])[:page_module]
60
+ end
61
+ end
62
+ end