publify_core 9.0.0 → 9.2.2

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 (360) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +92 -37
  3. data/app/assets/javascripts/bootstrap-sprockets.js +8 -0
  4. data/app/assets/javascripts/bootstrap/affix.js +164 -0
  5. data/app/assets/javascripts/bootstrap/alert.js +95 -0
  6. data/app/assets/javascripts/bootstrap/button.js +125 -0
  7. data/app/assets/javascripts/bootstrap/collapse.js +212 -0
  8. data/app/assets/javascripts/bootstrap/dropdown.js +165 -0
  9. data/app/assets/javascripts/bootstrap/modal.js +358 -0
  10. data/app/assets/javascripts/bootstrap/tab.js +155 -0
  11. data/app/assets/javascripts/bootstrap/transition.js +59 -0
  12. data/app/assets/javascripts/lightbox.js +4 -4
  13. data/app/assets/javascripts/publify_admin.js +1 -35
  14. data/app/assets/stylesheets/_bootstrap-compass.scss +9 -0
  15. data/app/assets/stylesheets/_bootstrap-mincer.scss +19 -0
  16. data/app/assets/stylesheets/_bootstrap-sprockets.scss +9 -0
  17. data/app/assets/stylesheets/_bootstrap.scss +42 -0
  18. data/app/assets/stylesheets/administration_structure.css.scss +1 -45
  19. data/app/assets/stylesheets/bootstrap/_alerts.scss +73 -0
  20. data/app/assets/stylesheets/bootstrap/_button-groups.scss +242 -0
  21. data/app/assets/stylesheets/bootstrap/_buttons.scss +168 -0
  22. data/app/assets/stylesheets/bootstrap/_close.scss +37 -0
  23. data/app/assets/stylesheets/bootstrap/_code.scss +69 -0
  24. data/app/assets/stylesheets/bootstrap/_component-animations.scss +38 -0
  25. data/app/assets/stylesheets/bootstrap/_dropdowns.scss +213 -0
  26. data/app/assets/stylesheets/bootstrap/_forms.scss +586 -0
  27. data/app/assets/stylesheets/bootstrap/_grid.scss +94 -0
  28. data/app/assets/stylesheets/bootstrap/_labels.scss +66 -0
  29. data/app/assets/stylesheets/bootstrap/_media.scss +66 -0
  30. data/app/assets/stylesheets/bootstrap/_mixins.scss +37 -0
  31. data/app/assets/stylesheets/bootstrap/_modals.scss +150 -0
  32. data/app/assets/stylesheets/bootstrap/_navbar.scss +479 -0
  33. data/app/assets/stylesheets/bootstrap/_navs.scss +242 -0
  34. data/app/assets/stylesheets/bootstrap/_normalize.scss +427 -0
  35. data/app/assets/stylesheets/bootstrap/_pagination.scss +86 -0
  36. data/app/assets/stylesheets/bootstrap/_panels.scss +222 -0
  37. data/app/assets/stylesheets/bootstrap/_print.scss +99 -0
  38. data/app/assets/stylesheets/bootstrap/_scaffolding.scss +160 -0
  39. data/app/assets/stylesheets/bootstrap/_tables.scss +234 -0
  40. data/app/assets/stylesheets/bootstrap/_theme.scss +224 -0
  41. data/app/assets/stylesheets/bootstrap/_type.scss +296 -0
  42. data/app/assets/stylesheets/bootstrap/_utilities.scss +55 -0
  43. data/app/assets/stylesheets/bootstrap/_variables.scss +638 -0
  44. data/app/assets/stylesheets/bootstrap/_wells.scss +29 -0
  45. data/app/assets/stylesheets/bootstrap/mixins/_alerts.scss +15 -0
  46. data/app/assets/stylesheets/bootstrap/mixins/_background-variant.scss +12 -0
  47. data/app/assets/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
  48. data/app/assets/stylesheets/bootstrap/mixins/_buttons.scss +56 -0
  49. data/app/assets/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
  50. data/app/assets/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
  51. data/app/assets/stylesheets/bootstrap/mixins/_forms.scss +82 -0
  52. data/app/assets/stylesheets/bootstrap/mixins/_gradients.scss +56 -0
  53. data/app/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +81 -0
  54. data/app/assets/stylesheets/bootstrap/mixins/_grid.scss +122 -0
  55. data/app/assets/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
  56. data/app/assets/stylesheets/bootstrap/mixins/_image.scss +28 -0
  57. data/app/assets/stylesheets/bootstrap/mixins/_labels.scss +12 -0
  58. data/app/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +10 -0
  59. data/app/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  60. data/app/assets/stylesheets/bootstrap/mixins/_opacity.scss +7 -0
  61. data/app/assets/stylesheets/bootstrap/mixins/_pagination.scss +24 -0
  62. data/app/assets/stylesheets/bootstrap/mixins/_panels.scss +20 -0
  63. data/app/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +8 -0
  64. data/app/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
  65. data/app/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +17 -0
  66. data/app/assets/stylesheets/bootstrap/mixins/_size.scss +10 -0
  67. data/app/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
  68. data/app/assets/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
  69. data/app/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +12 -0
  70. data/app/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
  71. data/app/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  72. data/app/assets/stylesheets/lightbox.css +3 -3
  73. data/app/assets/stylesheets/publify_admin.css.scss +0 -1
  74. data/app/controllers/accounts_controller.rb +2 -0
  75. data/app/controllers/admin/base_controller.rb +8 -16
  76. data/app/controllers/admin/content_controller.rb +38 -36
  77. data/app/controllers/admin/dashboard_controller.rb +16 -65
  78. data/app/controllers/admin/feedback_controller.rb +45 -37
  79. data/app/controllers/admin/notes_controller.rb +16 -10
  80. data/app/controllers/admin/pages_controller.rb +19 -29
  81. data/app/controllers/admin/post_types_controller.rb +7 -5
  82. data/app/controllers/admin/profiles_controller.rb +15 -5
  83. data/app/controllers/admin/redirects_controller.rb +9 -5
  84. data/app/controllers/admin/resources_controller.rb +7 -4
  85. data/app/controllers/admin/seo_controller.rb +12 -10
  86. data/app/controllers/admin/settings_controller.rb +7 -5
  87. data/app/controllers/admin/sidebar_controller.rb +6 -5
  88. data/app/controllers/admin/tags_controller.rb +6 -3
  89. data/app/controllers/admin/themes_controller.rb +10 -7
  90. data/app/controllers/admin/users_controller.rb +10 -7
  91. data/app/controllers/articles_controller.rb +49 -33
  92. data/app/controllers/authors_controller.rb +6 -3
  93. data/app/controllers/base_controller.rb +9 -11
  94. data/app/controllers/comments_controller.rb +13 -13
  95. data/app/controllers/content_controller.rb +4 -2
  96. data/app/controllers/feedback_controller.rb +4 -2
  97. data/app/controllers/notes_controller.rb +5 -3
  98. data/app/controllers/setup_controller.rb +15 -12
  99. data/app/controllers/tags_controller.rb +6 -4
  100. data/app/controllers/text_controller.rb +2 -4
  101. data/app/controllers/textfilter_controller.rb +2 -0
  102. data/app/controllers/theme_controller.rb +18 -13
  103. data/app/controllers/xml_controller.rb +2 -0
  104. data/app/helpers/admin/base_helper.rb +28 -29
  105. data/app/helpers/admin/feedback_helper.rb +34 -24
  106. data/app/helpers/articles_helper.rb +4 -2
  107. data/app/helpers/authors_helper.rb +7 -16
  108. data/app/helpers/base_helper.rb +56 -52
  109. data/app/helpers/blog_helper.rb +4 -2
  110. data/app/helpers/xml_helper.rb +3 -1
  111. data/app/jobs/application_job.rb +2 -0
  112. data/app/mailers/notification_mailer.rb +5 -3
  113. data/app/models/ability.rb +25 -23
  114. data/app/models/archives_sidebar.rb +14 -11
  115. data/app/models/article.rb +42 -42
  116. data/app/models/article/factory.rb +14 -6
  117. data/app/models/blog.rb +86 -75
  118. data/app/models/comment.rb +10 -11
  119. data/app/models/config_manager.rb +4 -2
  120. data/app/models/content.rb +37 -50
  121. data/app/models/content_base.rb +10 -4
  122. data/app/models/feedback.rb +21 -17
  123. data/app/models/meta_sidebar.rb +4 -3
  124. data/app/models/note.rb +26 -25
  125. data/app/models/page.rb +9 -8
  126. data/app/models/page_sidebar.rb +4 -2
  127. data/app/models/ping.rb +3 -1
  128. data/app/models/post_type.rb +3 -3
  129. data/app/models/redirect.rb +13 -7
  130. data/app/models/redirection.rb +3 -1
  131. data/app/models/resource.rb +5 -3
  132. data/app/models/search_sidebar.rb +4 -2
  133. data/app/models/sidebar.rb +11 -6
  134. data/app/models/static_sidebar.rb +14 -13
  135. data/app/models/tag.rb +15 -11
  136. data/app/models/tag_sidebar.rb +6 -3
  137. data/app/models/text_filter.rb +85 -11
  138. data/app/models/trackback.rb +7 -11
  139. data/app/models/trigger.rb +7 -4
  140. data/app/models/user.rb +44 -43
  141. data/app/services/title_builder.rb +52 -45
  142. data/app/uploaders/resource_uploader.rb +5 -3
  143. data/app/views/accounts/confirm.html.erb +3 -3
  144. data/app/views/admin/content/_article_list.html.erb +23 -8
  145. data/app/views/admin/content/_form.html.erb +71 -47
  146. data/app/views/admin/content/autosave.js.erb +2 -2
  147. data/app/views/admin/content/edit.html.erb +1 -1
  148. data/app/views/admin/content/index.html.erb +25 -15
  149. data/app/views/admin/content/new.html.erb +2 -2
  150. data/app/views/admin/dashboard/_comment.html.erb +5 -5
  151. data/app/views/admin/dashboard/_comments.html.erb +2 -2
  152. data/app/views/admin/dashboard/_drafts.html.erb +5 -5
  153. data/app/views/admin/dashboard/_overview.html.erb +7 -9
  154. data/app/views/admin/dashboard/_welcome.html.erb +11 -11
  155. data/app/views/admin/dashboard/index.html.erb +12 -7
  156. data/app/views/admin/feedback/_button.html.erb +6 -6
  157. data/app/views/admin/feedback/_feedback.html.erb +3 -3
  158. data/app/views/admin/feedback/_ham.html.erb +27 -9
  159. data/app/views/admin/feedback/_spam.html.erb +26 -16
  160. data/app/views/admin/feedback/article.html.erb +20 -21
  161. data/app/views/admin/feedback/edit.html.erb +14 -15
  162. data/app/views/admin/feedback/{ham.js → ham.js.erb} +0 -0
  163. data/app/views/admin/feedback/index.html.erb +25 -23
  164. data/app/views/admin/feedback/{spam.js → spam.js.erb} +0 -0
  165. data/app/views/admin/migrations/show.html.erb +10 -11
  166. data/app/views/admin/notes/_form.html.erb +13 -13
  167. data/app/views/admin/notes/_list.html.erb +19 -8
  168. data/app/views/admin/notes/_note.html.erb +12 -7
  169. data/app/views/admin/notes/edit.html.erb +6 -1
  170. data/app/views/admin/notes/index.html.erb +5 -1
  171. data/app/views/admin/notes/show.html.erb +2 -2
  172. data/app/views/admin/pages/_form.html.erb +86 -77
  173. data/app/views/admin/pages/_pages.html.erb +11 -4
  174. data/app/views/admin/pages/edit.html.erb +3 -1
  175. data/app/views/admin/pages/index.html.erb +10 -6
  176. data/app/views/admin/pages/new.html.erb +3 -1
  177. data/app/views/admin/post_types/_index_and_form.html.erb +15 -16
  178. data/app/views/admin/post_types/edit.html.erb +1 -1
  179. data/app/views/admin/post_types/index.html.erb +1 -1
  180. data/app/views/admin/profiles/index.html.erb +2 -3
  181. data/app/views/admin/redirects/_index_and_form.html.erb +10 -11
  182. data/app/views/admin/redirects/edit.html.erb +1 -1
  183. data/app/views/admin/redirects/index.html.erb +1 -1
  184. data/app/views/admin/resources/index.html.erb +19 -16
  185. data/app/views/admin/seo/_general.html.erb +23 -47
  186. data/app/views/admin/seo/_permalinks.html.erb +16 -16
  187. data/app/views/admin/seo/_titles.html.erb +63 -64
  188. data/app/views/admin/seo/show.html.erb +14 -19
  189. data/app/views/admin/settings/display.html.erb +22 -25
  190. data/app/views/admin/settings/feedback.html.erb +31 -32
  191. data/app/views/admin/settings/index.html.erb +23 -24
  192. data/app/views/admin/settings/write.html.erb +21 -22
  193. data/app/views/admin/shared/_edit.html.erb +3 -3
  194. data/app/views/admin/shared/_menu.html.erb +26 -26
  195. data/app/views/admin/shared/_twitter_alert.html.erb +1 -1
  196. data/app/views/admin/sidebar/_config.html.erb +5 -5
  197. data/app/views/admin/sidebar/_target_sidebar.html.erb +4 -4
  198. data/app/views/admin/sidebar/index.html.erb +7 -7
  199. data/app/views/admin/tags/_index_and_form.html.erb +11 -12
  200. data/app/views/admin/tags/edit.html.erb +1 -1
  201. data/app/views/admin/tags/index.html.erb +1 -1
  202. data/app/views/admin/themes/index.html.erb +5 -6
  203. data/app/views/admin/users/_form.html.erb +34 -34
  204. data/app/views/admin/users/edit.html.erb +2 -2
  205. data/app/views/admin/users/index.html.erb +10 -12
  206. data/app/views/admin/users/new.html.erb +2 -2
  207. data/app/views/archives_sidebar/_content.html.erb +2 -2
  208. data/app/views/articles/_archives_article.html.erb +3 -3
  209. data/app/views/articles/_article.html.erb +7 -9
  210. data/app/views/articles/_article_author.html.erb +4 -0
  211. data/app/views/articles/_article_content.html.erb +2 -2
  212. data/app/views/articles/_article_excerpt.html.erb +2 -2
  213. data/app/views/articles/_article_links.html.erb +1 -1
  214. data/app/views/articles/_comment_errors.html.erb +1 -1
  215. data/app/views/articles/_comment_form.html.erb +12 -12
  216. data/app/views/articles/_comment_preview.html.erb +3 -3
  217. data/app/views/articles/_password_form.html.erb +4 -4
  218. data/app/views/articles/_trackback.html.erb +2 -2
  219. data/app/views/articles/archives.html.erb +1 -1
  220. data/app/views/articles/feedback_atom_feed.atom.builder +3 -1
  221. data/app/views/articles/feedback_rss_feed.rss.builder +9 -8
  222. data/app/views/articles/index_atom_feed.atom.builder +5 -3
  223. data/app/views/articles/index_rss_feed.rss.builder +10 -9
  224. data/app/views/articles/live_search.html.erb +3 -3
  225. data/app/views/articles/read.html.erb +16 -8
  226. data/app/views/articles/search.html.erb +2 -2
  227. data/app/views/articles/trackback.xml.builder +3 -1
  228. data/app/views/articles/view_page.html.erb +2 -2
  229. data/app/views/authors/show.html.erb +9 -9
  230. data/app/views/authors/show_atom_feed.atom.builder +4 -2
  231. data/app/views/authors/show_rss_feed.rss.builder +10 -9
  232. data/app/views/comments/_comment.html.erb +3 -3
  233. data/app/views/devise/mailer/reset_password_instructions.html.erb +7 -9
  234. data/app/views/devise/passwords/edit.html.erb +4 -4
  235. data/app/views/devise/passwords/new.html.erb +1 -1
  236. data/app/views/devise/registrations/new.html.erb +5 -5
  237. data/app/views/devise/sessions/new.html.erb +3 -3
  238. data/app/views/errors/404.html.erb +2 -2
  239. data/app/views/feedback/index.atom.builder +3 -1
  240. data/app/views/feedback/index.rss.builder +9 -8
  241. data/app/views/layouts/accounts.html.erb +26 -26
  242. data/app/views/layouts/administration.html.erb +31 -31
  243. data/app/views/layouts/default.html.erb +4 -3
  244. data/app/views/layouts/editor.html.erb +5 -19
  245. data/app/views/meta_sidebar/_content.html.erb +2 -2
  246. data/app/views/notes/_note.html.erb +1 -1
  247. data/app/views/notes/index.html.erb +1 -1
  248. data/app/views/notes/show_in_reply.html.erb +1 -1
  249. data/app/views/notification_mailer/_mail_footer.html.erb +3 -3
  250. data/app/views/notification_mailer/article.html.erb +2 -2
  251. data/app/views/notification_mailer/comment.html.erb +5 -5
  252. data/app/views/notification_mailer/notif_user.html.erb +1 -1
  253. data/app/views/page_sidebar/_content.html.erb +1 -1
  254. data/app/views/search_sidebar/_content.html.erb +2 -2
  255. data/app/views/settings/install.html.erb +2 -2
  256. data/app/views/setup/index.html.erb +7 -7
  257. data/app/views/shared/_atom_header.atom.builder +4 -4
  258. data/app/views/shared/_atom_item_article.atom.builder +19 -29
  259. data/app/views/shared/_atom_item_comment.atom.builder +4 -2
  260. data/app/views/shared/_atom_item_trackback.atom.builder +4 -2
  261. data/app/views/shared/_google_analytics.html.erb +8 -0
  262. data/app/views/shared/_page_header.html.erb +9 -12
  263. data/app/views/shared/_rss_item_article.rss.builder +9 -7
  264. data/app/views/shared/_rss_item_comment.rss.builder +3 -1
  265. data/app/views/shared/_rss_item_trackback.rss.builder +3 -1
  266. data/app/views/sidebar/display_plugins.html.erb +1 -1
  267. data/app/views/tag_sidebar/_content.html.erb +1 -1
  268. data/app/views/tags/index.html.erb +1 -1
  269. data/app/views/xml/_googlesitemap_item_article.googlesitemap.builder +2 -0
  270. data/app/views/xml/_googlesitemap_item_category.googlesitemap.builder +2 -0
  271. data/app/views/xml/_googlesitemap_item_page.googlesitemap.builder +2 -0
  272. data/app/views/xml/_googlesitemap_item_tag.googlesitemap.builder +2 -0
  273. data/app/views/xml/sitemap.googlesitemap.builder +4 -2
  274. data/config/i18n-tasks.yml +0 -5
  275. data/config/initializers/devise.rb +10 -4
  276. data/config/initializers/mime_types.rb +3 -1
  277. data/config/locales/da.yml +134 -73
  278. data/config/locales/de.yml +142 -77
  279. data/config/locales/en.yml +128 -68
  280. data/config/locales/es-MX.yml +135 -71
  281. data/config/locales/fr.yml +167 -88
  282. data/config/locales/he.yml +128 -72
  283. data/config/locales/it.yml +136 -74
  284. data/config/locales/ja.yml +110 -66
  285. data/config/locales/lt.yml +153 -76
  286. data/config/locales/nb-NO.yml +123 -67
  287. data/config/locales/nl.yml +140 -77
  288. data/config/locales/pl.yml +329 -240
  289. data/config/locales/pt-BR.yml +137 -72
  290. data/config/locales/ro.yml +148 -72
  291. data/config/locales/ru.yml +161 -71
  292. data/config/locales/zh-CN.yml +106 -61
  293. data/config/locales/zh-TW.yml +109 -63
  294. data/config/routes.rb +68 -63
  295. data/db/migrate/113_initial_schema.rb +191 -191
  296. data/db/migrate/114_fixes_buggy_articles_and_notes.rb +10 -7
  297. data/db/migrate/115_drops_categories_for_tags.rb +5 -4
  298. data/db/migrate/20150207131657_add_missing_indexes.rb +2 -0
  299. data/db/migrate/20150807134129_simplify_redirect_relations.rb +5 -0
  300. data/db/migrate/20150808052637_add_blog_ids.rb +9 -3
  301. data/db/migrate/20150808191127_add_blog_id_to_redirects.rb +2 -0
  302. data/db/migrate/20150810094754_add_blog_id_to_tags.rb +2 -0
  303. data/db/migrate/20160108111120_add_devise_to_users.rb +4 -2
  304. data/db/migrate/20160108184201_move_last_connection_to_last_sign_in_at.rb +2 -0
  305. data/db/migrate/20160110094906_remove_profiles_rights.rb +2 -0
  306. data/db/migrate/20160605103918_replace_profile_id_with_string.rb +2 -0
  307. data/db/migrate/20160605154632_remove_profiles.rb +10 -5
  308. data/db/migrate/20160701061851_demand_blog_id_on_contents.rb +2 -0
  309. data/db/migrate/20160701062604_add_blog_id_to_resources.rb +2 -0
  310. data/db/migrate/20170528093024_move_resources_to_content.rb +2 -0
  311. data/db/migrate/20170528094923_move_tags_to_content.rb +2 -0
  312. data/db/migrate/20170528201606_remove_separate_published_flag.rb +2 -0
  313. data/db/migrate/20170605071626_remove_extra_state_columns_from_feedback.rb +2 -0
  314. data/db/migrate/20170702105201_remove_published_at_from_feedback.rb +2 -0
  315. data/db/migrate/20190208151235_add_text_filter_name_fields.rb +9 -0
  316. data/db/migrate/20190208152646_move_text_filter_to_name.rb +97 -0
  317. data/db/migrate/20190209155717_remove_text_filter_ids.rb +19 -0
  318. data/db/migrate/20190209160610_remove_text_filters.rb +17 -0
  319. data/db/migrate/20200413140440_add_unique_indexes.rb +10 -0
  320. data/db/seeds.rb +8 -20
  321. data/lib/email_notify.rb +3 -1
  322. data/lib/format.rb +4 -12
  323. data/lib/publify_core.rb +36 -35
  324. data/lib/publify_core/engine.rb +11 -4
  325. data/lib/publify_core/lang.rb +5 -1
  326. data/lib/publify_core/testing_support/dns_mock.rb +15 -0
  327. data/lib/publify_core/testing_support/factories.rb +240 -0
  328. data/lib/publify_core/testing_support/feed_assertions.rb +48 -0
  329. data/lib/publify_core/testing_support/fixtures/exploit.svg +4 -0
  330. data/lib/publify_core/testing_support/fixtures/fakepng.png +1 -0
  331. data/lib/publify_core/testing_support/fixtures/otherfile.txt +1 -0
  332. data/lib/publify_core/testing_support/fixtures/testfile.png +0 -0
  333. data/lib/publify_core/testing_support/fixtures/testfile.txt +1 -0
  334. data/lib/publify_core/testing_support/upload_fixtures.rb +15 -0
  335. data/lib/publify_core/version.rb +3 -1
  336. data/lib/publify_guid.rb +3 -1
  337. data/lib/publify_plugins.rb +10 -5
  338. data/lib/publify_textfilter_markdown.rb +38 -25
  339. data/lib/publify_textfilter_none.rb +5 -3
  340. data/lib/publify_textfilter_smartypants.rb +5 -3
  341. data/lib/publify_textfilter_textile.rb +7 -4
  342. data/lib/publify_textfilter_twitterfilter.rb +13 -7
  343. data/lib/publify_time.rb +4 -0
  344. data/lib/sidebar_field.rb +15 -13
  345. data/lib/sidebar_registry.rb +5 -3
  346. data/lib/spam_protection.rb +19 -17
  347. data/lib/tasks/i18n.rake +9 -0
  348. data/lib/tasks/manifest.rake +30 -0
  349. data/lib/tasks/publify_core_tasks.rake +2 -0
  350. data/lib/text_filter_plugin.rb +30 -29
  351. data/lib/theme.rb +5 -5
  352. data/lib/transforms.rb +21 -20
  353. data/themes/plain/javascripts/theme.js +0 -0
  354. metadata +247 -109
  355. data/app/assets/javascripts/widearea.js +0 -486
  356. data/app/assets/stylesheets/widearea.css +0 -133
  357. data/app/controllers/admin/textfilters_controller.rb +0 -6
  358. data/app/views/admin/dashboard/_inbound.html.erb +0 -31
  359. data/app/views/admin/notes/_header.html.erb +0 -6
  360. data/app/views/articles/_protected_article_content.html.erb +0 -6
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :i18n do
4
+ desc "Check translation health"
5
+ task :health do
6
+ `i18n-tasks health`
7
+ abort("Translation problems found") unless $CHILD_STATUS.success?
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :manifest do
4
+ def gemmable_files
5
+ `git ls-files -z`.split("\x0").reject do |file|
6
+ file.match(%r{^(bin|spec)/}) ||
7
+ file.end_with?("/.keep") ||
8
+ file.start_with?(".") ||
9
+ %w(Manifest.txt Gemfile Rakefile publify_core.gemspec).include?(file)
10
+ end
11
+ end
12
+
13
+ def manifest_files
14
+ File.open("Manifest.txt").readlines.map(&:chomp)
15
+ end
16
+
17
+ desc "Create manifest"
18
+ task :create do
19
+ File.open("Manifest.txt", "w") do |manifest|
20
+ gemmable_files.each { |file| manifest.puts file }
21
+ end
22
+ end
23
+
24
+ desc "Check manifest"
25
+ task :check do
26
+ unless gemmable_files == manifest_files
27
+ raise "Manifest check failed, try recreating the manifest"
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # desc "Explaining what the task does"
2
4
  # task :publify_core do
3
5
  # # Task goes here
@@ -1,4 +1,6 @@
1
- require 'publify_plugins'
1
+ # frozen_string_literal: true
2
+
3
+ require "publify_plugins"
2
4
 
3
5
  class TextFilterPlugin
4
6
  class << self
@@ -9,7 +11,9 @@ class TextFilterPlugin
9
11
 
10
12
  @@filter_map = {}
11
13
  def self.inherited(sub)
12
- if sub.to_s =~ /^Plugin/ || sub.to_s =~ /^PublifyApp::Textfilter/
14
+ super
15
+
16
+ if sub.to_s.start_with?("Plugin", "PublifyApp::Textfilter")
13
17
  name = sub.short_name
14
18
  @@filter_map[name] = sub
15
19
  end
@@ -25,11 +29,11 @@ class TextFilterPlugin
25
29
 
26
30
  def self.available_filter_types
27
31
  unless @cached_filter_types
28
- types = { 'macropre' => [],
29
- 'macropost' => [],
30
- 'markup' => [],
31
- 'postprocess' => [],
32
- 'other' => [] }
32
+ types = { "macropre" => [],
33
+ "macropost" => [],
34
+ "markup" => [],
35
+ "postprocess" => [],
36
+ "other" => [] }
33
37
 
34
38
  available_filters.each { |filter| types[filter.filter_type].push(filter) }
35
39
 
@@ -42,8 +46,8 @@ class TextFilterPlugin
42
46
  available_filters.select { |filter| TextFilterPlugin::Macro > filter }
43
47
  end
44
48
 
45
- plugin_display_name 'Unknown Text Filter'
46
- plugin_description 'Unknown Text Filter Description'
49
+ plugin_display_name "Unknown Text Filter"
50
+ plugin_description "Unknown Text Filter Description"
47
51
 
48
52
  def self.reloadable?
49
53
  false
@@ -66,7 +70,7 @@ class TextFilterPlugin
66
70
  end
67
71
 
68
72
  def self.filter_type
69
- 'other'
73
+ "other"
70
74
  end
71
75
 
72
76
  def self.default_config
@@ -74,15 +78,14 @@ class TextFilterPlugin
74
78
  end
75
79
 
76
80
  def self.help_text
77
- ''
81
+ ""
78
82
  end
79
83
 
80
84
  def self.sanitize(*args)
81
85
  (@sanitizer ||= Rails::Html::WhiteListSanitizer.new).sanitize(*args)
82
86
  end
83
87
 
84
- def self.default_helper_module!
85
- end
88
+ def self.default_helper_module!; end
86
89
 
87
90
  # Look up a config paramater, falling back to the default as needed.
88
91
  def self.config_value(params, name)
@@ -90,13 +93,13 @@ class TextFilterPlugin
90
93
  end
91
94
 
92
95
  def self.logger
93
- @logger ||= ::Rails.logger || Logger.new(STDOUT)
96
+ @logger ||= ::Rails.logger || Logger.new($stdout)
94
97
  end
95
98
  end
96
99
 
97
100
  class TextFilterPlugin::PostProcess < TextFilterPlugin
98
101
  def self.filter_type
99
- 'postprocess'
102
+ "postprocess"
100
103
  end
101
104
  end
102
105
 
@@ -120,47 +123,45 @@ class TextFilterPlugin::Macro < TextFilterPlugin
120
123
  end
121
124
 
122
125
  def self.filtertext(text)
123
- regex1 = /<publify:#{short_name}(?:[ \t][^>]*)?\/>/
124
- regex2 = /<publify:#{short_name}([ \t][^>]*)?>(.*?)<\/publify:#{short_name}>/m
126
+ regex1 = %r{<publify:#{short_name}(?:[ \t][^>]*)?/>}
127
+ regex2 = %r{<publify:#{short_name}([ \t][^>]*)?>(.*?)</publify:#{short_name}>}m
125
128
 
126
129
  new_text = text.gsub(regex1) do |match|
127
130
  macrofilter(attributes_parse(match))
128
131
  end
129
132
 
130
- new_text = new_text.gsub(regex2) do |_match|
133
+ new_text.gsub(regex2) do |_match|
131
134
  macrofilter(attributes_parse(Regexp.last_match[1].to_s), Regexp.last_match[2].to_s)
132
135
  end
133
-
134
- new_text
135
136
  end
136
137
  end
137
138
 
138
139
  class TextFilterPlugin::MacroPre < TextFilterPlugin::Macro
139
140
  def self.filter_type
140
- 'macropre'
141
+ "macropre"
141
142
  end
142
143
  end
143
144
 
144
145
  class TextFilterPlugin::MacroPost < TextFilterPlugin::Macro
145
146
  def self.filter_type
146
- 'macropost'
147
+ "macropost"
147
148
  end
148
149
  end
149
150
 
150
151
  class TextFilterPlugin::Markup < TextFilterPlugin
151
152
  def self.filter_type
152
- 'markup'
153
+ "markup"
153
154
  end
154
155
  end
155
156
 
156
157
  class PublifyApp
157
158
  class Textfilter
158
159
  class MacroPost < TextFilterPlugin
159
- plugin_display_name 'MacroPost'
160
- plugin_description 'Macro expansion meta-filter (post-markup)'
160
+ plugin_display_name "MacroPost"
161
+ plugin_description "Macro expansion meta-filter (post-markup)"
161
162
 
162
163
  def self.filtertext(text)
163
- macros = TextFilterPlugin.available_filter_types['macropost']
164
+ macros = TextFilterPlugin.available_filter_types["macropost"]
164
165
  macros.reduce(text) do |new_text, macro|
165
166
  macro.filtertext(new_text)
166
167
  end
@@ -168,11 +169,11 @@ class PublifyApp
168
169
  end
169
170
 
170
171
  class MacroPre < TextFilterPlugin
171
- plugin_display_name 'MacroPre'
172
- plugin_description 'Macro expansion meta-filter (pre-markup)'
172
+ plugin_display_name "MacroPre"
173
+ plugin_description "Macro expansion meta-filter (pre-markup)"
173
174
 
174
175
  def self.filtertext(text)
175
- macros = TextFilterPlugin.available_filter_types['macropre']
176
+ macros = TextFilterPlugin.available_filter_types["macropre"]
176
177
  macros.reduce(text) do |new_text, macro|
177
178
  macro.filtertext(new_text)
178
179
  end
data/lib/theme.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Theme
2
4
  attr_accessor :name, :path, :description_html
3
5
 
@@ -7,12 +9,10 @@ class Theme
7
9
  end
8
10
 
9
11
  def layout(action = :default)
10
- if action.to_s == 'view_page'
11
- if File.exist? "#{view_path}/layouts/pages.html.erb"
12
- return 'layouts/pages'
13
- end
12
+ if action.to_s == "view_page"
13
+ return "layouts/pages" if File.exist? "#{view_path}/layouts/pages.html.erb"
14
14
  end
15
- 'layouts/default'
15
+ "layouts/default"
16
16
  end
17
17
 
18
18
  def description
data/lib/transforms.rb CHANGED
@@ -1,23 +1,23 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  # FIXME: Replace with helpers and/or methods provided by Rails
4
4
  class String
5
- ACCENTS = { %w(á à â ä ã Ã Ä Â À) => 'a',
6
- %w(é è ê ë Ë É È Ê) => 'e',
7
- %w(í ì î ï I Î Ì) => 'i',
8
- %w(ó ò ô ö õ Õ Ö Ô Ò) => 'o',
9
- ['œ'] => 'oe',
10
- ['ß'] => 'ss',
11
- %w(ú ù û ü U Û Ù) => 'u',
12
- %w(ç Ç) => 'c' }.freeze
5
+ ACCENTS = { %w(á à â ä ã Ã Ä Â À) => "a",
6
+ %w(é è ê ë Ë É È Ê) => "e",
7
+ %w(í ì î ï I Î Ì) => "i",
8
+ %w(ó ò ô ö õ Õ Ö Ô Ò) => "o",
9
+ ["œ"] => "oe",
10
+ ["ß"] => "ss",
11
+ %w(ú ù û ü U Û Ù) => "u",
12
+ %w(ç Ç) => "c" }.freeze
13
13
 
14
14
  def to_permalink
15
15
  string = self
16
16
  ACCENTS.each do |key, value|
17
17
  string = string.tr(key.join, value)
18
18
  end
19
- string = string.tr("'", '-')
20
- string.gsub(/<[^>]*>/, '').to_url
19
+ string = string.tr("'", "-")
20
+ string.gsub(/<[^>]*>/, "").to_url
21
21
  end
22
22
 
23
23
  # Returns a-string-with-dashes when passed 'a string with dashes'.
@@ -25,9 +25,9 @@ class String
25
25
  def to_url
26
26
  return if nil?
27
27
 
28
- s = downcase.tr("\"'", '')
29
- s = s.gsub(/\P{Word}/, ' ')
30
- s.strip.tr_s(' ', '-').tr(' ', '-').sub(/^$/, '-')
28
+ s = downcase.tr("\"'", "")
29
+ s = s.gsub(/\P{Word}/, " ")
30
+ s.strip.tr_s(" ", "-").tr(" ", "-").sub(/^$/, "-")
31
31
  end
32
32
 
33
33
  def to_title(item, settings, params)
@@ -35,12 +35,13 @@ class String
35
35
  end
36
36
 
37
37
  # Strips any html markup from a string
38
- TYPO_TAG_KEY = TYPO_ATTRIBUTE_KEY = /[\w:_-]+/
39
- TYPO_ATTRIBUTE_VALUE = /(?:[A-Za-z0-9]+|(?:'[^']*?'|"[^"]*?"))/
40
- TYPO_ATTRIBUTE = /(?:#{TYPO_ATTRIBUTE_KEY}(?:\s*=\s*#{TYPO_ATTRIBUTE_VALUE})?)/
41
- TYPO_ATTRIBUTES = /(?:#{TYPO_ATTRIBUTE}(?:\s+#{TYPO_ATTRIBUTE})*)/
42
- TAG = %r{<[!/?\[]?(?:#{TYPO_TAG_KEY}|--)(?:\s+#{TYPO_ATTRIBUTES})?\s*(?:[!/?\]]+|--)?>}
38
+ TYPO_TAG_KEY = TYPO_ATTRIBUTE_KEY = /[\w:_-]+/.freeze
39
+ TYPO_ATTRIBUTE_VALUE = /(?:[A-Za-z0-9]+|(?:'[^']*?'|"[^"]*?"))/.freeze
40
+ TYPO_ATTRIBUTE = /(?:#{TYPO_ATTRIBUTE_KEY}(?:\s*=\s*#{TYPO_ATTRIBUTE_VALUE})?)/.freeze
41
+ TYPO_ATTRIBUTES = /(?:#{TYPO_ATTRIBUTE}(?:\s+#{TYPO_ATTRIBUTE})*)/.freeze
42
+ TAG =
43
+ %r{<[!/?\[]?(?:#{TYPO_TAG_KEY}|--)(?:\s+#{TYPO_ATTRIBUTES})?\s*(?:[!/?\]]+|--)?>}.freeze
43
44
  def strip_html
44
- gsub(TAG, '').gsub(/\s+/, ' ').strip
45
+ gsub(TAG, "").gsub(/\s+/, " ").strip
45
46
  end
46
47
  end
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: publify_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.0
4
+ version: 9.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
@@ -11,246 +11,278 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-07-29 00:00:00.000000000 Z
14
+ date: 2021-03-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: rails
17
+ name: aasm
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: 5.0.0
22
+ version: '5.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 5.0.0
29
+ version: '5.0'
30
30
  - !ruby/object:Gem::Dependency
31
- name: RedCloth
31
+ name: akismet
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - "~>"
35
35
  - !ruby/object:Gem::Version
36
- version: 4.3.2
36
+ version: '3.0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: 4.3.2
43
+ version: '3.0'
44
44
  - !ruby/object:Gem::Dependency
45
- name: aasm
45
+ name: bluecloth
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - "~>"
49
49
  - !ruby/object:Gem::Version
50
- version: 4.12.0
50
+ version: '2.1'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - "~>"
56
56
  - !ruby/object:Gem::Version
57
- version: 4.12.0
57
+ version: '2.1'
58
58
  - !ruby/object:Gem::Dependency
59
- name: akismet
59
+ name: cancancan
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - "~>"
63
63
  - !ruby/object:Gem::Version
64
- version: '2.0'
64
+ version: '3.0'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: '2.0'
71
+ version: '3.0'
72
72
  - !ruby/object:Gem::Dependency
73
- name: bluecloth
73
+ name: carrierwave
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - "~>"
77
77
  - !ruby/object:Gem::Version
78
- version: '2.1'
78
+ version: '2.0'
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - "~>"
84
84
  - !ruby/object:Gem::Version
85
- version: '2.1'
85
+ version: '2.0'
86
86
  - !ruby/object:Gem::Dependency
87
- name: bootstrap-sass
87
+ name: devise
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
90
  - - "~>"
91
91
  - !ruby/object:Gem::Version
92
- version: 3.3.6
92
+ version: 4.7.1
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: 3.3.6
99
+ version: 4.7.1
100
100
  - !ruby/object:Gem::Dependency
101
- name: cancancan
101
+ name: devise-i18n
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
104
  - - "~>"
105
105
  - !ruby/object:Gem::Version
106
- version: '2.0'
106
+ version: '1.2'
107
107
  type: :runtime
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
111
  - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: '2.0'
113
+ version: '1.2'
114
114
  - !ruby/object:Gem::Dependency
115
- name: carrierwave
115
+ name: dynamic_form
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
118
  - - "~>"
119
119
  - !ruby/object:Gem::Version
120
- version: 1.1.0
120
+ version: 1.1.4
121
121
  type: :runtime
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
124
124
  requirements:
125
125
  - - "~>"
126
126
  - !ruby/object:Gem::Version
127
- version: 1.1.0
127
+ version: 1.1.4
128
128
  - !ruby/object:Gem::Dependency
129
- name: devise
129
+ name: fog-aws
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: 4.3.0
134
+ version: '3.2'
135
135
  type: :runtime
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: 4.3.0
141
+ version: '3.2'
142
142
  - !ruby/object:Gem::Dependency
143
- name: devise-i18n
143
+ name: fog-core
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
146
  - - "~>"
147
147
  - !ruby/object:Gem::Version
148
- version: 1.1.0
148
+ version: '2.2'
149
149
  type: :runtime
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
153
  - - "~>"
154
154
  - !ruby/object:Gem::Version
155
- version: 1.1.0
155
+ version: '2.2'
156
156
  - !ruby/object:Gem::Dependency
157
- name: dynamic_form
157
+ name: jquery-rails
158
158
  requirement: !ruby/object:Gem::Requirement
159
159
  requirements:
160
160
  - - "~>"
161
161
  - !ruby/object:Gem::Version
162
- version: 1.1.4
162
+ version: 4.4.0
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
167
  - - "~>"
168
168
  - !ruby/object:Gem::Version
169
- version: 1.1.4
169
+ version: 4.4.0
170
170
  - !ruby/object:Gem::Dependency
171
- name: feedjira
171
+ name: jquery-ui-rails
172
172
  requirement: !ruby/object:Gem::Requirement
173
173
  requirements:
174
174
  - - "~>"
175
175
  - !ruby/object:Gem::Version
176
- version: 2.1.0
176
+ version: 6.0.1
177
177
  type: :runtime
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - "~>"
182
182
  - !ruby/object:Gem::Version
183
- version: 2.1.0
183
+ version: 6.0.1
184
184
  - !ruby/object:Gem::Dependency
185
- name: fog-aws
185
+ name: kaminari
186
186
  requirement: !ruby/object:Gem::Requirement
187
187
  requirements:
188
188
  - - "~>"
189
189
  - !ruby/object:Gem::Version
190
- version: 1.3.0
190
+ version: '1.2'
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: 1.2.1
191
194
  type: :runtime
192
195
  prerelease: false
193
196
  version_requirements: !ruby/object:Gem::Requirement
194
197
  requirements:
195
198
  - - "~>"
196
199
  - !ruby/object:Gem::Version
197
- version: 1.3.0
200
+ version: '1.2'
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: 1.2.1
198
204
  - !ruby/object:Gem::Dependency
199
- name: jquery-rails
205
+ name: mimemagic
200
206
  requirement: !ruby/object:Gem::Requirement
201
207
  requirements:
202
208
  - - "~>"
203
209
  - !ruby/object:Gem::Version
204
- version: 4.3.1
210
+ version: 0.3.2
205
211
  type: :runtime
206
212
  prerelease: false
207
213
  version_requirements: !ruby/object:Gem::Requirement
208
214
  requirements:
209
215
  - - "~>"
210
216
  - !ruby/object:Gem::Version
211
- version: 4.3.1
217
+ version: 0.3.2
212
218
  - !ruby/object:Gem::Dependency
213
- name: jquery-ui-rails
219
+ name: mini_magick
214
220
  requirement: !ruby/object:Gem::Requirement
215
221
  requirements:
216
222
  - - "~>"
217
223
  - !ruby/object:Gem::Version
218
- version: 6.0.1
224
+ version: '4.9'
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: 4.9.4
219
228
  type: :runtime
220
229
  prerelease: false
221
230
  version_requirements: !ruby/object:Gem::Requirement
222
231
  requirements:
223
232
  - - "~>"
224
233
  - !ruby/object:Gem::Version
225
- version: 6.0.1
234
+ version: '4.9'
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: 4.9.4
226
238
  - !ruby/object:Gem::Dependency
227
- name: kaminari
239
+ name: rack
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: 2.2.3
245
+ type: :runtime
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: 2.2.3
252
+ - !ruby/object:Gem::Dependency
253
+ name: rails
228
254
  requirement: !ruby/object:Gem::Requirement
229
255
  requirements:
230
256
  - - "~>"
231
257
  - !ruby/object:Gem::Version
232
- version: 1.0.1
258
+ version: 5.2.4
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: 5.2.4.3
233
262
  type: :runtime
234
263
  prerelease: false
235
264
  version_requirements: !ruby/object:Gem::Requirement
236
265
  requirements:
237
266
  - - "~>"
238
267
  - !ruby/object:Gem::Version
239
- version: 1.0.1
268
+ version: 5.2.4
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: 5.2.4.3
240
272
  - !ruby/object:Gem::Dependency
241
- name: mini_magick
273
+ name: rails_autolink
242
274
  requirement: !ruby/object:Gem::Requirement
243
275
  requirements:
244
276
  - - "~>"
245
277
  - !ruby/object:Gem::Version
246
- version: '4.2'
278
+ version: 1.1.0
247
279
  type: :runtime
248
280
  prerelease: false
249
281
  version_requirements: !ruby/object:Gem::Requirement
250
282
  requirements:
251
283
  - - "~>"
252
284
  - !ruby/object:Gem::Version
253
- version: '4.2'
285
+ version: 1.1.0
254
286
  - !ruby/object:Gem::Dependency
255
287
  name: rails-timeago
256
288
  requirement: !ruby/object:Gem::Requirement
@@ -266,89 +298,89 @@ dependencies:
266
298
  - !ruby/object:Gem::Version
267
299
  version: '2.0'
268
300
  - !ruby/object:Gem::Dependency
269
- name: rails_autolink
301
+ name: recaptcha
270
302
  requirement: !ruby/object:Gem::Requirement
271
303
  requirements:
272
304
  - - "~>"
273
305
  - !ruby/object:Gem::Version
274
- version: 1.1.0
306
+ version: '5.0'
275
307
  type: :runtime
276
308
  prerelease: false
277
309
  version_requirements: !ruby/object:Gem::Requirement
278
310
  requirements:
279
311
  - - "~>"
280
312
  - !ruby/object:Gem::Version
281
- version: 1.1.0
313
+ version: '5.0'
282
314
  - !ruby/object:Gem::Dependency
283
- name: recaptcha
315
+ name: RedCloth
284
316
  requirement: !ruby/object:Gem::Requirement
285
317
  requirements:
286
318
  - - "~>"
287
319
  - !ruby/object:Gem::Version
288
- version: 4.3.1
320
+ version: 4.3.2
289
321
  type: :runtime
290
322
  prerelease: false
291
323
  version_requirements: !ruby/object:Gem::Requirement
292
324
  requirements:
293
325
  - - "~>"
294
326
  - !ruby/object:Gem::Version
295
- version: 4.3.1
327
+ version: 4.3.2
296
328
  - !ruby/object:Gem::Dependency
297
329
  name: rubypants
298
330
  requirement: !ruby/object:Gem::Requirement
299
331
  requirements:
300
332
  - - "~>"
301
333
  - !ruby/object:Gem::Version
302
- version: 0.6.0
334
+ version: 0.7.0
303
335
  type: :runtime
304
336
  prerelease: false
305
337
  version_requirements: !ruby/object:Gem::Requirement
306
338
  requirements:
307
339
  - - "~>"
308
340
  - !ruby/object:Gem::Version
309
- version: 0.6.0
341
+ version: 0.7.0
310
342
  - !ruby/object:Gem::Dependency
311
- name: mimemagic
343
+ name: sassc-rails
312
344
  requirement: !ruby/object:Gem::Requirement
313
345
  requirements:
314
346
  - - "~>"
315
347
  - !ruby/object:Gem::Version
316
- version: 0.3.2
348
+ version: '2.0'
317
349
  type: :runtime
318
350
  prerelease: false
319
351
  version_requirements: !ruby/object:Gem::Requirement
320
352
  requirements:
321
353
  - - "~>"
322
354
  - !ruby/object:Gem::Version
323
- version: 0.3.2
355
+ version: '2.0'
324
356
  - !ruby/object:Gem::Dependency
325
- name: sass-rails
357
+ name: sprockets
326
358
  requirement: !ruby/object:Gem::Requirement
327
359
  requirements:
328
360
  - - "~>"
329
361
  - !ruby/object:Gem::Version
330
- version: '5.0'
362
+ version: '3.0'
331
363
  type: :runtime
332
364
  prerelease: false
333
365
  version_requirements: !ruby/object:Gem::Requirement
334
366
  requirements:
335
367
  - - "~>"
336
368
  - !ruby/object:Gem::Version
337
- version: '5.0'
369
+ version: '3.0'
338
370
  - !ruby/object:Gem::Dependency
339
371
  name: twitter
340
372
  requirement: !ruby/object:Gem::Requirement
341
373
  requirements:
342
374
  - - "~>"
343
375
  - !ruby/object:Gem::Version
344
- version: 6.1.0
376
+ version: 7.0.0
345
377
  type: :runtime
346
378
  prerelease: false
347
379
  version_requirements: !ruby/object:Gem::Requirement
348
380
  requirements:
349
381
  - - "~>"
350
382
  - !ruby/object:Gem::Version
351
- version: 6.1.0
383
+ version: 7.0.0
352
384
  - !ruby/object:Gem::Dependency
353
385
  name: uuidtools
354
386
  requirement: !ruby/object:Gem::Requirement
@@ -364,75 +396,75 @@ dependencies:
364
396
  - !ruby/object:Gem::Version
365
397
  version: 2.1.1
366
398
  - !ruby/object:Gem::Dependency
367
- name: sqlite3
399
+ name: capybara
368
400
  requirement: !ruby/object:Gem::Requirement
369
401
  requirements:
370
- - - ">="
402
+ - - "~>"
371
403
  - !ruby/object:Gem::Version
372
- version: '0'
404
+ version: '3.0'
373
405
  type: :development
374
406
  prerelease: false
375
407
  version_requirements: !ruby/object:Gem::Requirement
376
408
  requirements:
377
- - - ">="
409
+ - - "~>"
378
410
  - !ruby/object:Gem::Version
379
- version: '0'
411
+ version: '3.0'
380
412
  - !ruby/object:Gem::Dependency
381
- name: rspec-rails
413
+ name: factory_bot
382
414
  requirement: !ruby/object:Gem::Requirement
383
415
  requirements:
384
416
  - - "~>"
385
417
  - !ruby/object:Gem::Version
386
- version: '3.5'
418
+ version: '5.1'
387
419
  type: :development
388
420
  prerelease: false
389
421
  version_requirements: !ruby/object:Gem::Requirement
390
422
  requirements:
391
423
  - - "~>"
392
424
  - !ruby/object:Gem::Version
393
- version: '3.5'
425
+ version: '5.1'
394
426
  - !ruby/object:Gem::Dependency
395
- name: capybara
427
+ name: feedjira
396
428
  requirement: !ruby/object:Gem::Requirement
397
429
  requirements:
398
430
  - - "~>"
399
431
  - !ruby/object:Gem::Version
400
- version: '2.7'
432
+ version: '3.1'
401
433
  type: :development
402
434
  prerelease: false
403
435
  version_requirements: !ruby/object:Gem::Requirement
404
436
  requirements:
405
437
  - - "~>"
406
438
  - !ruby/object:Gem::Version
407
- version: '2.7'
439
+ version: '3.1'
408
440
  - !ruby/object:Gem::Dependency
409
- name: factory_girl_rails
441
+ name: i18n-tasks
410
442
  requirement: !ruby/object:Gem::Requirement
411
443
  requirements:
412
444
  - - "~>"
413
445
  - !ruby/object:Gem::Version
414
- version: 4.8.0
446
+ version: 0.9.1
415
447
  type: :development
416
448
  prerelease: false
417
449
  version_requirements: !ruby/object:Gem::Requirement
418
450
  requirements:
419
451
  - - "~>"
420
452
  - !ruby/object:Gem::Version
421
- version: 4.8.0
453
+ version: 0.9.1
422
454
  - !ruby/object:Gem::Dependency
423
- name: i18n-tasks
455
+ name: pry
424
456
  requirement: !ruby/object:Gem::Requirement
425
457
  requirements:
426
- - - "~>"
458
+ - - ">="
427
459
  - !ruby/object:Gem::Version
428
- version: 0.9.1
460
+ version: '0'
429
461
  type: :development
430
462
  prerelease: false
431
463
  version_requirements: !ruby/object:Gem::Requirement
432
464
  requirements:
433
- - - "~>"
465
+ - - ">="
434
466
  - !ruby/object:Gem::Version
435
- version: 0.9.1
467
+ version: '0'
436
468
  - !ruby/object:Gem::Dependency
437
469
  name: rails-controller-testing
438
470
  requirement: !ruby/object:Gem::Requirement
@@ -448,47 +480,75 @@ dependencies:
448
480
  - !ruby/object:Gem::Version
449
481
  version: 1.0.1
450
482
  - !ruby/object:Gem::Dependency
451
- name: timecop
483
+ name: rspec-rails
452
484
  requirement: !ruby/object:Gem::Requirement
453
485
  requirements:
454
486
  - - "~>"
455
487
  - !ruby/object:Gem::Version
456
- version: 0.8.1
488
+ version: '4.0'
457
489
  type: :development
458
490
  prerelease: false
459
491
  version_requirements: !ruby/object:Gem::Requirement
460
492
  requirements:
461
493
  - - "~>"
462
494
  - !ruby/object:Gem::Version
463
- version: 0.8.1
495
+ version: '4.0'
464
496
  - !ruby/object:Gem::Dependency
465
- name: webmock
497
+ name: simplecov
466
498
  requirement: !ruby/object:Gem::Requirement
467
499
  requirements:
468
500
  - - "~>"
469
501
  - !ruby/object:Gem::Version
470
- version: 3.0.1
502
+ version: 0.18.5
471
503
  type: :development
472
504
  prerelease: false
473
505
  version_requirements: !ruby/object:Gem::Requirement
474
506
  requirements:
475
507
  - - "~>"
476
508
  - !ruby/object:Gem::Version
477
- version: 3.0.1
509
+ version: 0.18.5
478
510
  - !ruby/object:Gem::Dependency
479
- name: simplecov
511
+ name: sqlite3
512
+ requirement: !ruby/object:Gem::Requirement
513
+ requirements:
514
+ - - ">="
515
+ - !ruby/object:Gem::Version
516
+ version: '0'
517
+ type: :development
518
+ prerelease: false
519
+ version_requirements: !ruby/object:Gem::Requirement
520
+ requirements:
521
+ - - ">="
522
+ - !ruby/object:Gem::Version
523
+ version: '0'
524
+ - !ruby/object:Gem::Dependency
525
+ name: timecop
526
+ requirement: !ruby/object:Gem::Requirement
527
+ requirements:
528
+ - - "~>"
529
+ - !ruby/object:Gem::Version
530
+ version: 0.9.1
531
+ type: :development
532
+ prerelease: false
533
+ version_requirements: !ruby/object:Gem::Requirement
534
+ requirements:
535
+ - - "~>"
536
+ - !ruby/object:Gem::Version
537
+ version: 0.9.1
538
+ - !ruby/object:Gem::Dependency
539
+ name: webmock
480
540
  requirement: !ruby/object:Gem::Requirement
481
541
  requirements:
482
542
  - - "~>"
483
543
  - !ruby/object:Gem::Version
484
- version: 0.14.0
544
+ version: '3.3'
485
545
  type: :development
486
546
  prerelease: false
487
547
  version_requirements: !ruby/object:Gem::Requirement
488
548
  requirements:
489
549
  - - "~>"
490
550
  - !ruby/object:Gem::Version
491
- version: 0.14.0
551
+ version: '3.3'
492
552
  description: Core engine for the Publify blogging system, formerly known as Typo.
493
553
  email:
494
554
  - matijs@matijs.net
@@ -516,6 +576,15 @@ files:
516
576
  - app/assets/images/spinner.gif
517
577
  - app/assets/images/thumb_blank.jpg
518
578
  - app/assets/javascripts/application.js
579
+ - app/assets/javascripts/bootstrap-sprockets.js
580
+ - app/assets/javascripts/bootstrap/affix.js
581
+ - app/assets/javascripts/bootstrap/alert.js
582
+ - app/assets/javascripts/bootstrap/button.js
583
+ - app/assets/javascripts/bootstrap/collapse.js
584
+ - app/assets/javascripts/bootstrap/dropdown.js
585
+ - app/assets/javascripts/bootstrap/modal.js
586
+ - app/assets/javascripts/bootstrap/tab.js
587
+ - app/assets/javascripts/bootstrap/transition.js
519
588
  - app/assets/javascripts/cookies.js
520
589
  - app/assets/javascripts/datetimepicker.js
521
590
  - app/assets/javascripts/lang/da_DK.js
@@ -534,9 +603,65 @@ files:
534
603
  - app/assets/javascripts/spinnable.js
535
604
  - app/assets/javascripts/tagmanager.js
536
605
  - app/assets/javascripts/typeahead.js
537
- - app/assets/javascripts/widearea.js
606
+ - app/assets/stylesheets/_bootstrap-compass.scss
607
+ - app/assets/stylesheets/_bootstrap-mincer.scss
608
+ - app/assets/stylesheets/_bootstrap-sprockets.scss
609
+ - app/assets/stylesheets/_bootstrap.scss
538
610
  - app/assets/stylesheets/accounts.css.scss
539
611
  - app/assets/stylesheets/administration_structure.css.scss
612
+ - app/assets/stylesheets/bootstrap/_alerts.scss
613
+ - app/assets/stylesheets/bootstrap/_button-groups.scss
614
+ - app/assets/stylesheets/bootstrap/_buttons.scss
615
+ - app/assets/stylesheets/bootstrap/_close.scss
616
+ - app/assets/stylesheets/bootstrap/_code.scss
617
+ - app/assets/stylesheets/bootstrap/_component-animations.scss
618
+ - app/assets/stylesheets/bootstrap/_dropdowns.scss
619
+ - app/assets/stylesheets/bootstrap/_forms.scss
620
+ - app/assets/stylesheets/bootstrap/_grid.scss
621
+ - app/assets/stylesheets/bootstrap/_labels.scss
622
+ - app/assets/stylesheets/bootstrap/_media.scss
623
+ - app/assets/stylesheets/bootstrap/_mixins.scss
624
+ - app/assets/stylesheets/bootstrap/_modals.scss
625
+ - app/assets/stylesheets/bootstrap/_navbar.scss
626
+ - app/assets/stylesheets/bootstrap/_navs.scss
627
+ - app/assets/stylesheets/bootstrap/_normalize.scss
628
+ - app/assets/stylesheets/bootstrap/_pagination.scss
629
+ - app/assets/stylesheets/bootstrap/_panels.scss
630
+ - app/assets/stylesheets/bootstrap/_print.scss
631
+ - app/assets/stylesheets/bootstrap/_scaffolding.scss
632
+ - app/assets/stylesheets/bootstrap/_tables.scss
633
+ - app/assets/stylesheets/bootstrap/_theme.scss
634
+ - app/assets/stylesheets/bootstrap/_type.scss
635
+ - app/assets/stylesheets/bootstrap/_utilities.scss
636
+ - app/assets/stylesheets/bootstrap/_variables.scss
637
+ - app/assets/stylesheets/bootstrap/_wells.scss
638
+ - app/assets/stylesheets/bootstrap/mixins/_alerts.scss
639
+ - app/assets/stylesheets/bootstrap/mixins/_background-variant.scss
640
+ - app/assets/stylesheets/bootstrap/mixins/_border-radius.scss
641
+ - app/assets/stylesheets/bootstrap/mixins/_buttons.scss
642
+ - app/assets/stylesheets/bootstrap/mixins/_center-block.scss
643
+ - app/assets/stylesheets/bootstrap/mixins/_clearfix.scss
644
+ - app/assets/stylesheets/bootstrap/mixins/_forms.scss
645
+ - app/assets/stylesheets/bootstrap/mixins/_gradients.scss
646
+ - app/assets/stylesheets/bootstrap/mixins/_grid-framework.scss
647
+ - app/assets/stylesheets/bootstrap/mixins/_grid.scss
648
+ - app/assets/stylesheets/bootstrap/mixins/_hide-text.scss
649
+ - app/assets/stylesheets/bootstrap/mixins/_image.scss
650
+ - app/assets/stylesheets/bootstrap/mixins/_labels.scss
651
+ - app/assets/stylesheets/bootstrap/mixins/_nav-divider.scss
652
+ - app/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss
653
+ - app/assets/stylesheets/bootstrap/mixins/_opacity.scss
654
+ - app/assets/stylesheets/bootstrap/mixins/_pagination.scss
655
+ - app/assets/stylesheets/bootstrap/mixins/_panels.scss
656
+ - app/assets/stylesheets/bootstrap/mixins/_reset-filter.scss
657
+ - app/assets/stylesheets/bootstrap/mixins/_resize.scss
658
+ - app/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss
659
+ - app/assets/stylesheets/bootstrap/mixins/_size.scss
660
+ - app/assets/stylesheets/bootstrap/mixins/_tab-focus.scss
661
+ - app/assets/stylesheets/bootstrap/mixins/_table-row.scss
662
+ - app/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss
663
+ - app/assets/stylesheets/bootstrap/mixins/_text-overflow.scss
664
+ - app/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss
540
665
  - app/assets/stylesheets/coderay.css
541
666
  - app/assets/stylesheets/datetimepicker.css
542
667
  - app/assets/stylesheets/lightbox.css
@@ -546,7 +671,6 @@ files:
546
671
  - app/assets/stylesheets/sidebar_admin.css.scss
547
672
  - app/assets/stylesheets/tagmanager.css
548
673
  - app/assets/stylesheets/user-styles.css
549
- - app/assets/stylesheets/widearea.css
550
674
  - app/controllers/accounts_controller.rb
551
675
  - app/controllers/admin/base_controller.rb
552
676
  - app/controllers/admin/content_controller.rb
@@ -562,7 +686,6 @@ files:
562
686
  - app/controllers/admin/settings_controller.rb
563
687
  - app/controllers/admin/sidebar_controller.rb
564
688
  - app/controllers/admin/tags_controller.rb
565
- - app/controllers/admin/textfilters_controller.rb
566
689
  - app/controllers/admin/themes_controller.rb
567
690
  - app/controllers/admin/users_controller.rb
568
691
  - app/controllers/articles_controller.rb
@@ -628,7 +751,6 @@ files:
628
751
  - app/views/admin/dashboard/_comment.html.erb
629
752
  - app/views/admin/dashboard/_comments.html.erb
630
753
  - app/views/admin/dashboard/_drafts.html.erb
631
- - app/views/admin/dashboard/_inbound.html.erb
632
754
  - app/views/admin/dashboard/_overview.html.erb
633
755
  - app/views/admin/dashboard/_welcome.html.erb
634
756
  - app/views/admin/dashboard/index.html.erb
@@ -638,12 +760,11 @@ files:
638
760
  - app/views/admin/feedback/_spam.html.erb
639
761
  - app/views/admin/feedback/article.html.erb
640
762
  - app/views/admin/feedback/edit.html.erb
641
- - app/views/admin/feedback/ham.js
763
+ - app/views/admin/feedback/ham.js.erb
642
764
  - app/views/admin/feedback/index.html.erb
643
- - app/views/admin/feedback/spam.js
765
+ - app/views/admin/feedback/spam.js.erb
644
766
  - app/views/admin/migrations/show.html.erb
645
767
  - app/views/admin/notes/_form.html.erb
646
- - app/views/admin/notes/_header.html.erb
647
768
  - app/views/admin/notes/_list.html.erb
648
769
  - app/views/admin/notes/_note.html.erb
649
770
  - app/views/admin/notes/edit.html.erb
@@ -693,6 +814,7 @@ files:
693
814
  - app/views/archives_sidebar/_content.html.erb
694
815
  - app/views/articles/_archives_article.html.erb
695
816
  - app/views/articles/_article.html.erb
817
+ - app/views/articles/_article_author.html.erb
696
818
  - app/views/articles/_article_collection.html.erb
697
819
  - app/views/articles/_article_content.html.erb
698
820
  - app/views/articles/_article_excerpt.html.erb
@@ -704,7 +826,6 @@ files:
704
826
  - app/views/articles/_comment_preview.html.erb
705
827
  - app/views/articles/_full_article_content.html.erb
706
828
  - app/views/articles/_password_form.html.erb
707
- - app/views/articles/_protected_article_content.html.erb
708
829
  - app/views/articles/_trackback.html.erb
709
830
  - app/views/articles/archives.html.erb
710
831
  - app/views/articles/comment.js.erb
@@ -760,6 +881,7 @@ files:
760
881
  - app/views/shared/_atom_item_comment.atom.builder
761
882
  - app/views/shared/_atom_item_trackback.atom.builder
762
883
  - app/views/shared/_flash.erb
884
+ - app/views/shared/_google_analytics.html.erb
763
885
  - app/views/shared/_page_header.html.erb
764
886
  - app/views/shared/_rss_item_article.rss.builder
765
887
  - app/views/shared/_rss_item_comment.rss.builder
@@ -836,12 +958,26 @@ files:
836
958
  - db/migrate/20170528201606_remove_separate_published_flag.rb
837
959
  - db/migrate/20170605071626_remove_extra_state_columns_from_feedback.rb
838
960
  - db/migrate/20170702105201_remove_published_at_from_feedback.rb
961
+ - db/migrate/20190208151235_add_text_filter_name_fields.rb
962
+ - db/migrate/20190208152646_move_text_filter_to_name.rb
963
+ - db/migrate/20190209155717_remove_text_filter_ids.rb
964
+ - db/migrate/20190209160610_remove_text_filters.rb
965
+ - db/migrate/20200413140440_add_unique_indexes.rb
839
966
  - db/seeds.rb
840
967
  - lib/email_notify.rb
841
968
  - lib/format.rb
842
969
  - lib/publify_core.rb
843
970
  - lib/publify_core/engine.rb
844
971
  - lib/publify_core/lang.rb
972
+ - lib/publify_core/testing_support/dns_mock.rb
973
+ - lib/publify_core/testing_support/factories.rb
974
+ - lib/publify_core/testing_support/feed_assertions.rb
975
+ - lib/publify_core/testing_support/fixtures/exploit.svg
976
+ - lib/publify_core/testing_support/fixtures/fakepng.png
977
+ - lib/publify_core/testing_support/fixtures/otherfile.txt
978
+ - lib/publify_core/testing_support/fixtures/testfile.png
979
+ - lib/publify_core/testing_support/fixtures/testfile.txt
980
+ - lib/publify_core/testing_support/upload_fixtures.rb
845
981
  - lib/publify_core/version.rb
846
982
  - lib/publify_guid.rb
847
983
  - lib/publify_plugins.rb
@@ -854,14 +990,17 @@ files:
854
990
  - lib/sidebar_field.rb
855
991
  - lib/sidebar_registry.rb
856
992
  - lib/spam_protection.rb
993
+ - lib/tasks/i18n.rake
994
+ - lib/tasks/manifest.rake
857
995
  - lib/tasks/publify_core_tasks.rake
858
996
  - lib/text_filter_plugin.rb
859
997
  - lib/theme.rb
860
998
  - lib/transforms.rb
861
999
  - themes/plain/about.markdown
1000
+ - themes/plain/javascripts/theme.js
862
1001
  - themes/plain/preview.png
863
1002
  - themes/plain/stylesheets/theme.css
864
- homepage: https://publify.co
1003
+ homepage: https://publify.github.io/
865
1004
  licenses:
866
1005
  - MIT
867
1006
  metadata: {}
@@ -873,15 +1012,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
873
1012
  requirements:
874
1013
  - - ">="
875
1014
  - !ruby/object:Gem::Version
876
- version: 2.2.0
1015
+ version: 2.4.0
877
1016
  required_rubygems_version: !ruby/object:Gem::Requirement
878
1017
  requirements:
879
1018
  - - ">="
880
1019
  - !ruby/object:Gem::Version
881
1020
  version: '0'
882
1021
  requirements: []
883
- rubyforge_project:
884
- rubygems_version: 2.6.12
1022
+ rubygems_version: 3.2.3
885
1023
  signing_key:
886
1024
  specification_version: 4
887
1025
  summary: Core engine for the Publify blogging system.