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,21 @@
1
+ %h3 Upload new image
2
+
3
+ = simple_form_for @image, url: upload_panel_admin_media_modal_index_path, html: {class: 'js-image-upload-panel'} do |f|
4
+
5
+ #upload-file-field-wrap
6
+ %a#browse-files-btn.btn.btn-success{href: '#'}
7
+ Browse Files
8
+
9
+ = f.file_field :image, id: "image-upload-file-field"
10
+
11
+ .upload-progress
12
+ .progress-text.text-muted.text-right
13
+ Upload Progress:
14
+ %span.progress-amount= "0%"
15
+ .progress
16
+ .progress-bar.progress-bar-success{style: "width: 0%;"}
17
+ = f.input :name, label: "Image name"
18
+ = f.input :alt_text, as: :string, label: "Alt text (optional)"
19
+ = f.input :credit, label: "Credit (optional, can include HTML)", as: :string
20
+ = f.button :submit, "Upload Image", class: 'btn btn-inverse pull-right', id: 'upload-button'
21
+
@@ -0,0 +1,7 @@
1
+ %h3 Success
2
+
3
+ %p.info
4
+ Your image uploaded successfully.
5
+
6
+ .spacer
7
+ %button#upload-success-dismiss.pull-right{class: 'btn btn-default', data: {dismiss: 'modal'}} OK
@@ -0,0 +1,19 @@
1
+ #media-modal.modal.fade
2
+ .modal-dialog.media-modal-dialog
3
+ .modal-content
4
+ .modal-header
5
+ %button.close{"aria-label" => "Close", "data-dismiss" => "modal", :type => "button"}
6
+ %span{"aria-hidden" => "true"} ×
7
+ %h4.modal-title Media Library
8
+ .modal-body
9
+ .row
10
+ .col-md-3.leftbar
11
+ %ul.nav.nav-pills.nav-stacked.media-modal-nav
12
+ %li{class: ('active' if action?('index', 'library_panel'))}
13
+ = link_to library_panel_admin_media_modal_index_path, id: 'media-library-tab-btn' do
14
+ Media Library
15
+ %li{class: ('active' if action?('upload_panel'))}
16
+ = link_to upload_panel_admin_media_modal_index_path, id: 'upload-tab-btn' do
17
+ Upload Image
18
+ #media-modal-content-area.col-md-9
19
+ = render partial: 'library_panel'
@@ -0,0 +1,25 @@
1
+ - content_for :site_settings_content do
2
+ %h2 Changelog
3
+
4
+ %table.table.newsletter-versions
5
+ %thead
6
+ %tr
7
+ %th Newsletter Into Copy
8
+ %th Date
9
+ %tbody
10
+ - if @versions.empty?
11
+ %tr.empty
12
+ %td{colspan: '2'}
13
+ No revisions
14
+
15
+ - @versions.each do |version|
16
+ - if version.changeset.keys.include?("weekly_newsletter_intro_copy")
17
+ - changes = version.changeset["weekly_newsletter_intro_copy"]
18
+ - old_val = changes[0]
19
+
20
+ - if old_val.present?
21
+ %tr
22
+ %td= old_val
23
+ %td= version.created_at.to_s(:slashes)
24
+
25
+ = paginate @versions
@@ -0,0 +1,6 @@
1
+ - content_for :site_settings_content do
2
+ %h2 Weekly Newsletter Settings
3
+ = simple_form_for @site, url: admin_newsletter_path, method: :patch do |f|
4
+ = f.input :weekly_newsletter_intro_copy
5
+ = f.button :submit, "Save Settings", data: {disable_with: "Saving..."}
6
+ = link_to "View Changelog »".html_safe, admin_newsletter_changelog_path, class: "pull-right"
@@ -0,0 +1,33 @@
1
+ - content_for :site_settings_content do
2
+ = form_tag admin_page_modules_path, method: :patch do
3
+ .spacer
4
+ - if @page_modules.empty?
5
+ %p.text-muted.empty-message
6
+ You have not yet created any page modules
7
+ - else
8
+ - @page_modules.each do |page_module|
9
+ .page-module-checkbox-wrap
10
+ = hidden_field_tag "page_modules[#{page_module.id}]", '', id: "hidden_page_modules_#{page_module.id}"
11
+ = check_box_tag "page_modules[#{page_module.id}]", true, page_module.enabled, class: 'page-module-checkbox'
12
+ %label.page-module-box{for: "page_modules_#{page_module.id}"}
13
+ = page_module.name
14
+
15
+ - if page_module.editable_subject?
16
+ = link_to "Edit Settings", admin_edit_page_module_subject_path(page_module), class: 'page-module-edit-subject pull-right'
17
+
18
+ .clear
19
+
20
+
21
+ .spacer
22
+ = submit_tag "Save Settings", class: 'btn btn-primary pull-right', data: {disable_with: "Saving..."}
23
+
24
+ :sass
25
+ .status-text
26
+ position: absolute
27
+ left: -152px
28
+ margin-top: 200px
29
+ background: #000
30
+ color: #fff
31
+ border-radius: 3px
32
+ padding: 5px 10px
33
+ font-size: 14px
@@ -0,0 +1,43 @@
1
+ - content_for :site_settings_content do
2
+ = simple_form_for @page_module, url: admin_edit_page_module_subject_path(@page_module) do |f|
3
+ - if @page_module.name == "Tag Focus"
4
+ = hidden_field_tag 'page_module[subject_type]', 'Tag'
5
+ = f.input :subject_id, as: :select, collection: Tag.order(name: :asc)
6
+ - else
7
+ = f.input :subject_headline, as: :string, input_html: {id: 'page-module-subject-select'}
8
+ = hidden_field_tag 'page_module[subject_type]', 'Post'
9
+ = f.hidden_field :subject_id
10
+
11
+ - if @page_module.can_set_posts?
12
+ .form-group
13
+ %label.control-label Posts
14
+ .controls
15
+ - # multiselect widget orders selections based on position in the select dropdown, wtf...
16
+ - first = f.object.page_module_posts.by_position.map(&:post)
17
+
18
+ - rest = Post.where.not(id: f.object.page_module_posts.by_position.map(&:post_id)).order(headline: :asc).to_a
19
+
20
+ = select_tag 'post_ids[]', options_for_select((first + rest).map{|p| [truncate(p.headline, length: 50), p.id] }, f.object.page_module_posts.by_position.map(&:post_id)), multiple: true, class: 'js-post-multiselect page-module-post-ids'
21
+
22
+ .clear
23
+
24
+ - if @page_module.name == "Tag Focus"
25
+ = f.input :image, label: "Background image"
26
+ - if @page_module.image.present?
27
+ .form-group
28
+ %label
29
+ Image preview
30
+
31
+ = link_to @page_module.image.url, class: 'image-preview-wrap page-module-image-preview' do
32
+ = image_tag @page_module.image.url, class: 'image-preview'
33
+
34
+ .clear
35
+
36
+ = f.button :submit, "Save Settings", class: 'btn btn-primary'
37
+ = link_to "#", class: "pull-right clear-select js-clear-page-module-subject clear-link" do
38
+ %i.fa.fa-times
39
+ Clear Selection
40
+
41
+ :coffee
42
+ $ ->
43
+ new PageModuleEditSubjectForm
@@ -0,0 +1,114 @@
1
+ - cache do
2
+ .container.top-margin
3
+ %h1 Help Pages
4
+ %p.info
5
+ You'll find documentation here for more obscure site functions.
6
+ %br
7
+ These help pages are a work in progress. Please feel free to make suggestions about worthwhile additions.
8
+ %br
9
+ At present, it is mostly a place to document shortcodes.
10
+
11
+
12
+ .spacer
13
+
14
+ %h2 Image Sizes
15
+ .well.help-well
16
+ %p.help-description
17
+ The image versions used throughout the site are listed below. Image uploads are processed to fit within a crop box of the following dimensions. All feature image uploads should be at least 2000px wide by 578px tall.
18
+
19
+ %dl.dl-horizontal
20
+ %dt Medium Thumb (600x337px):
21
+ %dd This is the image version used for article previews (for instance on the homepage and article index pages)
22
+ %dt Content (800x800px):
23
+ %dd This is the image version used for image uploads placed within the post body
24
+ %dt Wide (2000x578px):
25
+ %dd This is the image version used in the feature image box (large image at the top of post pages and on homepage).
26
+
27
+
28
+ .spacer
29
+
30
+ %h2 Shortcodes
31
+
32
+ .well.help-well
33
+ %h4 Embed an image from the media library
34
+
35
+ %p.help-description
36
+ Use this shortcode to embed a named image from the media library.
37
+ %code
38
+ = "[image name=\"the image name\" caption=\"Your caption text\"]"
39
+ %p.help-description
40
+ To embed this image without a caption, use the shortcode:
41
+ %code
42
+ = "[image name=\"the image name\"]"
43
+
44
+
45
+ .well.help-well
46
+ %h4 Pull quote
47
+
48
+ %p.help-description
49
+ To present post text in the style of a "pull quote", wrap it in the "[pullquote]" shortcode like so:
50
+ %code
51
+ = "[pullquote]Here is some text I want to stand out[/pullquote]"
52
+
53
+ .well.help-well
54
+ %h4 Block quote
55
+
56
+ %p.help-description
57
+ A block quote is similar to a pull-quote but for less impactful material. Content wrapped
58
+ in the "blockquote" shortcode is wrapped in a <blockquote> html element. You can add an optional
59
+ "source" attribute which will add a formatted "source" line (ex: "- David Pogue, New York Times") to the
60
+ block quote.
61
+ %code
62
+ = "[blockquote]Here is a block quote[/blockquote]"
63
+
64
+ With a source:
65
+
66
+ %code
67
+ = "[blockquote source=\"David Pogue, New York Times\"]Here is a block quote from a named source[/blockquote]"
68
+
69
+ .well.help-well
70
+ %h4 Embed a tweet
71
+
72
+ %p.help-description
73
+ The standard tweet embed code you might pull from a tweet detail page on twitter is incompatible
74
+ with our post editor. To embed a tweet in a way that is compatible, use the following shortcode:
75
+ %code
76
+ = "[tweet url=\"the tweet url\"]"
77
+
78
+ %p.help-description
79
+ A working example:
80
+
81
+ %code
82
+ = "[tweet url=\"https://twitter.com/pmarca/status/595091029847486464\"]"
83
+
84
+ .well.help-well
85
+ %h4 Embed a video
86
+
87
+ %p.help-description
88
+ You can embed Youtube and Vimeo videos in a way that applies standardized
89
+ formatting by using the following shortcode:
90
+ %code
91
+ = "[video url=\"the video url\"]"
92
+
93
+ %p.help-description
94
+ A working example:
95
+
96
+ %code
97
+ = "[video url=\"https://www.youtube.com/watch?v=keFBEoBy0zY\"]"
98
+
99
+
100
+ .well.help-well
101
+ %h4 H1, H2, H3, H4 tags
102
+
103
+ %p.help-description
104
+ We've included shortcodes for H1, H2, H3 and H4 tags as well:
105
+ %code
106
+ = "[h1]Your H1 content[/h1]"
107
+ %code
108
+ = "[h2]Your H2 content[/h2]"
109
+ %code
110
+ = "[h3]Your H3 content[/h3]"
111
+ %code
112
+ = "[h4]Your H4 content[/h4]"
113
+
114
+ .spacer.xl
@@ -0,0 +1 @@
1
+ = select_tag "post[author_id]", options_for_select(Virgo::User.authors.by_name.map{|u| [u.pretty_name, u.id] }, @post.try(:author_id) || current_user.id), include_blank: false, class: 'form-control js-author-dropdown', data: {refresh_uri: author_dropdown_admin_posts_path(post_id: @post.try(:id))}
@@ -0,0 +1,7 @@
1
+ .post-categories
2
+ - if Virgo::Category.top_level.any?
3
+ .post-categories-list
4
+ - Virgo::Category.top_level.order(navbar_weight: :asc).each do |category|
5
+ = render '/virgo/admin/posts/category', category: category, level: 0
6
+
7
+ = link_to "+ Add New Category", "#", data: {uri: modal_form_admin_categories_path(post_id: @post.try(:id))}, id: 'new-category-link'
@@ -0,0 +1,22 @@
1
+ - level = local_assigns.has_key?(:level) ? level : 0
2
+ - next_level = level + 1
3
+
4
+ .category-item
5
+ - if category.children.any?
6
+ %label
7
+ - level.times do
8
+ %span.level
9
+
10
+ = check_box_tag "post[category_ids][]", category.id, @post && @post.category_ids.include?(category.id)
11
+ %span.text= category.name
12
+
13
+ - category.children.each do |child|
14
+ = render '/virgo/admin/posts/category', category: child, level: next_level
15
+
16
+ - else
17
+ %label
18
+ - level.times do
19
+ %span.level
20
+
21
+ = check_box_tag "post[category_ids][]", category.id, @post && @post.category_ids.include?(category.id)
22
+ %span.text= category.name
@@ -0,0 +1,201 @@
1
+ .row
2
+ - url = @post.new_record? ? admin_posts_path : admin_post_path(@post)
3
+
4
+ #post-locked-messaged{class: ('hidden' unless (@post.is_mid_edit? && @post.editing_user != current_user))}
5
+ .container-fluid
6
+ .row.alert-row.fade.in
7
+ .col-md-12
8
+ .alert.alert-danger.flash
9
+ .inner-text
10
+ %strong.alert-heading
11
+ = icon 'lock'
12
+ Warning!
13
+ This post is currently being edited by
14
+ :erb
15
+ <span class='editing-user-name'><%= @post.editing_user.try(:pretty_name) %></span>. Any changes that you make while the user is still editing the post
16
+ may be lost. A popup will appear when the user has finished editing the post giving you the option to refresh this page and view
17
+ their changes.
18
+
19
+ = simple_form_for @post, url: url, html: {class: 'admin-post-form'} do |f|
20
+ = base_errors(@post)
21
+
22
+ = f.hidden_field :post_type
23
+ .col-md-9
24
+ = f.input :headline, as: :string, input_html: {id: 'headline-input'}
25
+
26
+ = f.input :slug, label: "Permalink slug", input_html: {placeholder: "example: \"a-blog-post\"", "data-toggle" => "character-counter", id: 'slug-input'}
27
+
28
+ - if @post.post?
29
+ = f.input :subhead, label: "Subhead", input_html: {id: 'subhead-input'}
30
+
31
+ -# %a.btn.btn-sm.btn-default.pull-left.js-launch-media-modal.media-button{href: "#"}
32
+ -# = icon 'image'
33
+ -# Insert Image
34
+ .clear
35
+ .editor-wrap
36
+ .editor-word-count
37
+ %span.count-number
38
+ %span.count-text
39
+ %textarea.editor-custom{name: "post[body]", rows: 50}
40
+ = f.object.body.try(:html_safe)
41
+
42
+ .spacer
43
+
44
+ - if @post.post?
45
+ .panel.panel-default
46
+ .panel-heading Excerpt
47
+ .panel-body
48
+ = f.input :excerpt, input_html: {id: "excerpt-input"}
49
+
50
+ - if @post.persisted?
51
+ .panel.panel-default
52
+ .panel-heading Revisions
53
+ .panel-body
54
+ - # hide for now, on jeff's request
55
+ - # render partial: 'revisions', locals: {limit: true}
56
+ .see-all-revisions.text-left
57
+ = link_to revisions_admin_post_path(@post), target: '_blank' do
58
+ See all revisions &raquo;
59
+
60
+
61
+
62
+ - if @post.persisted? && (admin? || @post.author == current_user)
63
+ = link_to admin_post_path(@post), class: 'btn btn-danger pull-left delete-post-link', data: {method: :delete, confirm: "Are you sure you want to delete this #{@post.post? ? 'post' : 'page'} permanently?"} do
64
+ %i.fa.fa-trash-o
65
+ = "Delete #{@post.post? ? 'Post' : 'Page'}"
66
+
67
+ = f.button :submit, 'Save', class: 'btn btn-info pull-right post-save-btn', data: {disable_with: "Saving"}, id: "primary-save-button"
68
+
69
+ .spacer
70
+
71
+
72
+ .col-md-3
73
+ .panel.panel-default.push-down-sm
74
+ .panel-heading Publish
75
+ .panel-body
76
+ .form-group
77
+ %label.label-block
78
+ Author
79
+ = link_to new_admin_user_path, class: 'new-user-link pull-right', target: '_blank' do
80
+ Add User
81
+ = icon 'external-link'
82
+ = render 'author_dropdown'
83
+ .refresh-author-wrap.text-right
84
+ %a#refresh-authors.js-refresh-authors{href: '#', data: {toggle: 'tooltip', placement: 'top'}, title: 'Refresh authors dropdown'}
85
+ = icon 'refresh'
86
+
87
+
88
+ = f.input :status, label: 'Status', as: :select, collection: Virgo::Post.status_names, include_blank: false
89
+
90
+ = f.input :publish_at, label: 'Publish on date', as: :string, input_html: {id: 'publish-at-input', value: f.object.publish_at.try(:to_s, :slashes_with_time)}
91
+
92
+ = f.button :submit, "Save", class: 'btn btn-info pull-right'
93
+
94
+ .col-md-3
95
+ - if @post.post?
96
+ .panel.panel-default.push-down-sm
97
+ .panel-heading Categories
98
+ .panel-body
99
+ = render 'categories_form'
100
+
101
+ .panel.panel-default
102
+ .panel-heading Tags
103
+ .panel-body.tags-panel-body
104
+ .box-loading-overlay.tags-box-loading
105
+ %i.spinner.fa.fa-circle-o-notch.fa-spin
106
+ .row
107
+ .col-sm-12
108
+ = f.hidden_field :ordered_tag_ids, multiple: true, class: 'tags-select', value: "[#{post_params[:ordered_tag_ids].present? ? post_params[:ordered_tag_ids].try(:[], 0) : f.object.post_tags.order(position: :asc).map{|pt| "\"#{pt.tag_id}\""}.join(',')}]"
109
+ = link_to "+ Add New Tag", "#", data: {uri: modal_form_admin_tags_path(post_id: @post.id)}, id: 'new-category-link'
110
+
111
+ .panel.panel-default
112
+ .panel-heading Column
113
+ .panel-body
114
+ .row
115
+ .col-sm-12
116
+ .post-column-field
117
+ = f.input :column_id, as: :select, label: false, collection: Virgo::Column.order(name: :asc)
118
+
119
+ .panel.panel-default.push-down-sm
120
+ .panel-heading Citation
121
+ .panel-body
122
+ = f.input :citation_name, as: :string, label: "Citation name (optional)"
123
+ = f.input :citation_url, as: :string, label: "Citation url (optional)"
124
+
125
+ .panel.panel-default.push-down-sm
126
+ .panel-heading SEO
127
+ .panel-body
128
+ = f.input :title_tag_text, label: "Title tag value (optional)", input_html: {placeholder: "defaults to headline text"}
129
+ = f.input :meta_description_tag_value, label: "Meta description tag value (optional)", input_html: {placeholder: "Defaults to first 160 characters of post body (stripped of markup)"}
130
+
131
+
132
+ - if @post.post?
133
+ .panel.panel-default
134
+ .panel-heading Publishing Options
135
+ .panel-body
136
+ .row
137
+ .col-sm-12
138
+ = f.input :comments_enabled, label: "Comments enabled?"
139
+
140
+ .panel.panel-default.featured-image-settings-box
141
+ .panel-heading Featured Image
142
+ .panel-body
143
+ .row
144
+ .col-sm-12
145
+ .featured-image-thumbnail{class: ('hidden' unless @post.featured_image)}
146
+ = link_to @post.featured_image.try(:image).try(:url), target: '_blank', class: 'thumbnail' do
147
+ = image_tag @post.featured_image.try(:image).try(:url)
148
+
149
+ %p.info.muted.no-image-message.js-no-featured-image-message{class: ('hidden' if @post.thumbnail_image)}
150
+ No image selected
151
+
152
+
153
+ .featured-image-box-buttons
154
+ = link_to '#', class: 'js-select-featured-image featured-image-link pull-left btn btn-info' do
155
+ = icon 'plus'
156
+ Choose Image
157
+
158
+ = f.button :submit, 'Save Changes', class: "btn btn-primary pull-left js-save-featured-image hidden"
159
+
160
+ = link_to 'Remove Image', (@post.new_record? ? '#' : featured_image_admin_post_path(@post)), class: "btn btn-danger pull-left js-remove-featured-image#{' hidden' if @post.featured_image.nil?}"
161
+
162
+ .clear
163
+ = f.input :show_feature_image_on_post_page, label: "Display featured image on post page?", input_html: {class: 'show-on-post-page'}
164
+
165
+ = f.input :featured_image_id, as: :hidden
166
+
167
+ .panel.panel-default.thumbnail-image-settings-box
168
+ .panel-heading Thumbnail Image (Optional)
169
+ .panel-body
170
+ .row
171
+ .col-sm-12
172
+ %p.info
173
+ If selected, the post thumbnail image will override the feature image
174
+ on index pages and widgets sitewide.
175
+ .thumbnail-image-thumbnail{class: ('hidden' unless @post.thumbnail_image)}
176
+ = link_to @post.thumbnail_image.try(:image).try(:url), target: '_blank', class: 'thumbnail' do
177
+ = image_tag @post.thumbnail_image.try(:image).try(:url)
178
+
179
+ %p.info.muted.no-image-message.js-no-thumbnail-image-message{class: ('hidden' if @post.thumbnail_image)}
180
+ No image selected
181
+
182
+
183
+ .thumbnail-image-box-buttons
184
+ = link_to '#', class: 'js-select-thumbnail-image thumbnail-image-link pull-left btn btn-info' do
185
+ = icon 'plus'
186
+ Choose Image
187
+
188
+ = f.button :submit, 'Save Changes', class: "btn btn-primary pull-left js-save-thumbnail-image hidden"
189
+
190
+ = link_to 'Remove Image', (@post.new_record? ? '#' : thumbnail_image_admin_post_path(@post)), class: "btn btn-danger pull-left js-remove-thumbnail-image#{' hidden' if @post.thumbnail_image.nil?}"
191
+
192
+ .clear
193
+
194
+ = f.input :thumbnail_image_id, as: :hidden
195
+
196
+ -# = f.button :submit, "Save Post", class: 'btn btn-info pull-right post-save-btn post-save-btn', data: {disable_with: "Saving"}
197
+
198
+
199
+ - cache [Virgo::Tag.cache_key, 'tag_ids'] do
200
+ :javascript
201
+ window.tag_info = #{ Virgo::Tag.all.map{ |t| {t.name => t.id} }.reduce({}, :update).to_json };