publify_core 9.2.10 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -18
  3. data/app/assets/javascripts/lang/ar_AR.js +17 -0
  4. data/app/controllers/admin/{content_controller.rb → articles_controller.rb} +24 -24
  5. data/app/controllers/admin/dashboard_controller.rb +3 -3
  6. data/app/controllers/admin/feedback_controller.rb +23 -23
  7. data/app/controllers/admin/pages_controller.rb +2 -2
  8. data/app/controllers/admin/post_types_controller.rb +10 -4
  9. data/app/controllers/admin/redirects_controller.rb +10 -6
  10. data/app/controllers/admin/resources_controller.rb +2 -2
  11. data/app/controllers/admin/sidebar_controller.rb +2 -2
  12. data/app/controllers/admin/tags_controller.rb +5 -3
  13. data/app/controllers/admin/themes_controller.rb +1 -2
  14. data/app/controllers/admin/users_controller.rb +5 -3
  15. data/app/controllers/articles_controller.rb +5 -5
  16. data/app/controllers/authors_controller.rb +2 -2
  17. data/app/controllers/base_controller.rb +0 -3
  18. data/app/controllers/feedback_controller.rb +3 -3
  19. data/app/controllers/tags_controller.rb +3 -3
  20. data/app/helpers/authors_helper.rb +1 -1
  21. data/app/helpers/base_helper.rb +6 -6
  22. data/app/models/ability.rb +1 -1
  23. data/app/models/archives_sidebar.rb +3 -3
  24. data/app/models/article.rb +13 -13
  25. data/app/models/blog.rb +3 -6
  26. data/app/models/content.rb +1 -3
  27. data/app/models/content_base.rb +2 -13
  28. data/app/models/feedback.rb +1 -2
  29. data/app/models/meta_sidebar.rb +1 -1
  30. data/app/models/note.rb +2 -2
  31. data/app/models/redirect.rb +0 -1
  32. data/app/models/sidebar.rb +1 -1
  33. data/app/models/static_sidebar.rb +1 -1
  34. data/app/models/tag.rb +7 -8
  35. data/app/models/tag_sidebar.rb +3 -3
  36. data/app/models/text_filter.rb +17 -43
  37. data/app/models/user.rb +2 -2
  38. data/app/services/title_builder.rb +4 -4
  39. data/app/views/admin/{content → articles}/_article_list.html.erb +3 -3
  40. data/app/views/admin/{content → articles}/_form.html.erb +11 -1
  41. data/app/views/admin/{content → articles}/index.html.erb +1 -1
  42. data/app/views/admin/dashboard/_drafts.html.erb +2 -2
  43. data/app/views/admin/dashboard/_overview.html.erb +1 -1
  44. data/app/views/admin/dashboard/_welcome.html.erb +4 -4
  45. data/app/views/admin/dashboard/index.html.erb +0 -7
  46. data/app/views/admin/feedback/article.html.erb +12 -6
  47. data/app/views/admin/feedback/edit.html.erb +14 -2
  48. data/app/views/admin/feedback/index.html.erb +6 -7
  49. data/app/views/admin/pages/_form.html.erb +13 -14
  50. data/app/views/admin/seo/show.html.erb +12 -1
  51. data/app/views/admin/shared/_menu.html.erb +5 -4
  52. data/app/views/admin/tags/_index_and_form.html.erb +2 -1
  53. data/app/views/articles/_comment_errors.html.erb +11 -1
  54. data/app/views/articles/read.html.erb +1 -1
  55. data/app/views/layouts/administration.html.erb +9 -17
  56. data/config/i18n-tasks.yml +8 -1
  57. data/config/initializers/devise.rb +1 -1
  58. data/config/locales/ar.yml +885 -0
  59. data/config/locales/da.yml +12 -12
  60. data/config/locales/de.yml +12 -12
  61. data/config/locales/en.yml +12 -12
  62. data/config/locales/es-MX.yml +12 -12
  63. data/config/locales/fr.yml +12 -12
  64. data/config/locales/he.yml +12 -12
  65. data/config/locales/it.yml +12 -12
  66. data/config/locales/ja.yml +13 -13
  67. data/config/locales/lt.yml +12 -12
  68. data/config/locales/{nb-NO.yml → nb.yml} +13 -13
  69. data/config/locales/nl.yml +13 -13
  70. data/config/locales/pl.yml +12 -12
  71. data/config/locales/pt-BR.yml +12 -12
  72. data/config/locales/ro.yml +12 -12
  73. data/config/locales/ru.yml +13 -13
  74. data/config/locales/sidebars.ar.yml +20 -0
  75. data/config/locales/{sidebars.nb-NO.yml → sidebars.nb.yml} +1 -1
  76. data/config/locales/zh-CN.yml +12 -12
  77. data/config/locales/zh-TW.yml +12 -12
  78. data/config/routes.rb +2 -2
  79. data/db/migrate/20150807134129_simplify_redirect_relations.rb +1 -0
  80. data/db/migrate/20150808052637_add_blog_ids.rb +3 -1
  81. data/db/migrate/20160605103918_replace_profile_id_with_string.rb +1 -0
  82. data/db/migrate/20160701062604_add_blog_id_to_resources.rb +2 -0
  83. data/db/migrate/20190208152646_move_text_filter_to_name.rb +17 -17
  84. data/db/migrate/20221007091049_remove_table_sitealizer.rb +19 -0
  85. data/db/migrate/20221010092846_remove_page_caches_table.rb +15 -0
  86. data/db/migrate/20221012163214_remove_itunes_fields_from_resources.rb +14 -0
  87. data/db/seeds.rb +0 -4
  88. data/lib/publify_core/content_text_helpers.rb +11 -0
  89. data/lib/publify_core/lang.rb +1 -1
  90. data/lib/publify_core/testing_support/factories/articles.rb +55 -0
  91. data/lib/publify_core/testing_support/factories/blogs.rb +24 -0
  92. data/lib/publify_core/testing_support/factories/comments.rb +40 -0
  93. data/lib/publify_core/testing_support/factories/contents.rb +7 -0
  94. data/lib/publify_core/testing_support/factories/notes.rb +17 -0
  95. data/lib/publify_core/testing_support/factories/pages.rb +13 -0
  96. data/lib/publify_core/testing_support/factories/post_types.rb +8 -0
  97. data/lib/publify_core/testing_support/factories/redirects.rb +9 -0
  98. data/lib/publify_core/testing_support/factories/resources.rb +16 -0
  99. data/lib/publify_core/testing_support/factories/sequences.rb +12 -0
  100. data/lib/publify_core/testing_support/factories/sidebars.rb +10 -0
  101. data/lib/publify_core/testing_support/factories/tags.rb +9 -0
  102. data/lib/publify_core/testing_support/factories/trackbacks.rb +13 -0
  103. data/lib/publify_core/testing_support/factories/users.rb +43 -0
  104. data/lib/publify_core/version.rb +1 -1
  105. data/lib/publify_core.rb +3 -3
  106. data/lib/publify_textfilter_markdown.rb +8 -9
  107. data/lib/publify_textfilter_markdown_smartquotes.rb +20 -0
  108. data/lib/publify_textfilter_twitterfilter.rb +36 -18
  109. data/lib/sidebar_field.rb +2 -2
  110. data/lib/sidebar_registry.rb +0 -12
  111. data/lib/text_filter_plugin.rb +23 -30
  112. metadata +213 -105
  113. data/lib/publify_core/testing_support/factories.rb +0 -240
  114. data/lib/publify_textfilter_textile.rb +0 -24
  115. data/lib/tasks/i18n.rake +0 -9
  116. /data/app/views/admin/{content → articles}/autosave.js.erb +0 -0
  117. /data/app/views/admin/{content → articles}/edit.html.erb +0 -0
  118. /data/app/views/admin/{content → articles}/index.js.erb +0 -0
  119. /data/app/views/admin/{content → articles}/new.html.erb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5527fac8b20913bab53dd2561d1733883484d9b2334da9acfb46265468caa501
4
- data.tar.gz: 683bd0f0cdc369a1da0b6c6fa86c11be5aa51b657336ae6e96dbd6dc9f386193
3
+ metadata.gz: 315c96f6777f5d761c19b1b78a37aa38fdddb337522c56059813be2340f835cd
4
+ data.tar.gz: cd54077be1d63bfd63e385e2dd61e2f23e2928ba3e19ef9aa04f69ab94e00263
5
5
  SHA512:
6
- metadata.gz: f494f56b72b267db6ed6d6962014290ddd1a0d888c83c9ec101a7c41572a27234e663c64ba021190252a04cb19e38eb1a109c2ccf4e41a0c1006b04b92bebcf7
7
- data.tar.gz: 6b2e942362cefab924e25bb069d8a7a26e55605cb83b343f1934a62e9e6cf149cd2ee30b8d7dcbc3db181d14f59cddcd2c8de2c86b9e6b9822583d0861f07ccb
6
+ metadata.gz: af4a6c89bc46ba69993175cbc0245c8cda50e5818a0d809322c5ff9a3431848c8c3b1e5b38db15e8a1ec2e226f3127978b25d312c4e91039af436eba950d2889
7
+ data.tar.gz: 114fd493221442b2d93dd40cf8c2766cd7b18e1d07a843fe14b605a44e1745a38b4481ccf4f83bf24afd378bb7d525ebd812e4b2bb8dfef3bcff6b7b18db13ba
data/CHANGELOG.md CHANGED
@@ -1,33 +1,72 @@
1
1
  # Changelog
2
2
 
3
+ ## 10.0.0 / 2023-06-25
4
+
5
+ ### Updated dependencies
6
+
7
+ * Upgrade to Rails 6.1 and Ruby 2.7 to 3.2
8
+ [publify#987](https://github.com/publify/publify/pull/987),
9
+ [publify#1014](https://github.com/publify/publify/pull/1014),
10
+ [publify_core#71](https://github.com/publify/publify_core/pull/71), and
11
+ [publify_core#78](https://github.com/publify/publify_core/pull/78)
12
+ * Update various other dependencies (various pull requests)
13
+
14
+ ### Breaking changes
15
+
16
+ * Remove support for Textile as a text format [publify#1001](https://github.com/publify/publify/pull/1001)
17
+
18
+ ### Other changes
19
+
20
+ * Improve feedback listings [publify#1005](https://github.com/publify/publify/pull/1005)
21
+ * Link to article from article feedback admin page [publify#1007](https://github.com/publify/publify/pull/1007)
22
+ * Link to blog from admin menu [publify#1008](https://github.com/publify/publify/pull/1008)
23
+ * Handle markdown links in notes correctly [publify#1009](https://github.com/publify/publify/pull/1009)
24
+ * Make notes twitterfilter robust [publify#1010](https://github.com/publify/publify/pull/1010)
25
+ * Miscellaneous admin fixes [publify#1012](https://github.com/publify/publify/pull/1012)
26
+ * Add arabic language to the project [publify#1060](https://github.com/publify/publify/pull/1060) by [ahmedhamid13](https://github.com/ahmedhamid13)
27
+
28
+ ### Internal changes
29
+
30
+ * Remove use of 'notextile' [publify#1002](https://github.com/publify/publify/pull/1002)
31
+ * Remove `TextFilter.filter_text` in favor of `#filter_text` [publify#1003](https://github.com/publify/publify/pull/1003)
32
+ * Replace BlueCloth with CommonMarker for Markdown processing [publify#810](https://github.com/publify/publify/pull/810)
33
+ * Rename Admin::ContentController to Admin::ArticlesController [publify#1004](https://github.com/publify/publify/pull/1004)
34
+ * Remove unneeded wrapping elements from admin layout [publify#1006](https://github.com/publify/publify/pull/1006)
35
+ * Split the factories into individual files [publify#1031](https://github.com/publify/publify/pull/1031) by [VictorPS](https://github.com/VictorPS)
36
+ * Ensure `auto_link` helper is loaded on time [publify#1040](https://github.com/publify/publify/pull/1040)
37
+ * Remove `sitealizer` table [publify#1089](https://github.com/publify/publify/pull/1089) by [SupriyaMedankar](https://github.com/SupriyaMedankar)
38
+ * Remove itunes fields from resources [publify#1092](https://github.com/publify/publify/pull/1092) by [SupriyaMedankar](https://github.com/SupriyaMedankar)
39
+ * Remove `page_caches` table [publify#1090](https://github.com/publify/publify/pull/1090) by [SupriyaMedankar](https://github.com/SupriyaMedankar)
40
+ * Remove obsolete Sidebar code [publify#58](https://github.com/publify/publify/pull/58)
41
+
3
42
  ## 9.2.10 / 2023-01-08
4
43
 
5
- * Bump Rails version to 5.2.8.1 [#1070](https://github.com/publify/publify/pull/1070)
6
- * Limit length of settings values [#1072](https://github.com/publify/publify/pull/1072)
7
- * Require login to stay unique when updating a User [#1073](https://github.com/publify/publify/pull/1073)
8
- * Validate lengths of string attributes [#1077](https://github.com/publify/publify/pull/1077)
9
- * Strip EXIF data from resource uploads [#1078](https://github.com/publify/publify/pull/1078)
10
- * Require user passwords to be strong [#1086](https://github.com/publify/publify/pull/1086)
44
+ * Bump Rails version to 5.2.8.1 [publify#1070](https://github.com/publify/publify/pull/1070)
45
+ * Limit length of settings values [publify#1072](https://github.com/publify/publify/pull/1072)
46
+ * Require login to stay unique when updating a User [publify#1073](https://github.com/publify/publify/pull/1073)
47
+ * Validate lengths of string attributes [publify#1077](https://github.com/publify/publify/pull/1077)
48
+ * Strip EXIF data from resource uploads [publify#1078](https://github.com/publify/publify/pull/1078)
49
+ * Require user passwords to be strong [publify#1086](https://github.com/publify/publify/pull/1086)
11
50
 
12
51
  ## 9.2.9 / 2022-05-22
13
52
 
14
- * Fix admin article access control [#1065](https://github.com/publify/publify/pull/1065)
15
- * Refuse html files as resources even if declared to be plain text [#1066](https://github.com/publify/publify/pull/1066)
53
+ * Fix admin article access control [publify#1065](https://github.com/publify/publify/pull/1065)
54
+ * Refuse html files as resources even if declared to be plain text [publify#1066](https://github.com/publify/publify/pull/1066)
16
55
 
17
56
  ## 9.2.8 / 2022-05-14
18
57
 
19
- * Fix password protected article reveal [#1049](https://github.com/publify/publify/pull/1049)
20
- * Disallow comments on draft articles [#1048](https://github.com/publify/publify/pull/1048)
21
- * Clean up Feedback validation [#1051](https://github.com/publify/publify/pull/1051)
22
- * Disallow images in comments [#1054](https://github.com/publify/publify/pull/1054)
23
- * Fix password reset process [#1055](https://github.com/publify/publify/pull/1055)
24
- * Hide bodies of password-protected articles in search results [#1057](https://github.com/publify/publify/pull/1057)
25
- * Provide correct `article_id` input in bulkops form [#1058](https://github.com/publify/publify/pull/1058)
26
- * Do not create article meta description for password-protected articles [#1061](https://github.com/publify/publify/pull/1061)
58
+ * Fix password protected article reveal [publify#1049](https://github.com/publify/publify/pull/1049)
59
+ * Disallow comments on draft articles [publify#1048](https://github.com/publify/publify/pull/1048)
60
+ * Clean up Feedback validation [publify#1051](https://github.com/publify/publify/pull/1051)
61
+ * Disallow images in comments [publify#1054](https://github.com/publify/publify/pull/1054)
62
+ * Fix password reset process [publify#1055](https://github.com/publify/publify/pull/1055)
63
+ * Hide bodies of password-protected articles in search results [publify#1057](https://github.com/publify/publify/pull/1057)
64
+ * Provide correct `article_id` input in bulkops form [publify#1058](https://github.com/publify/publify/pull/1058)
65
+ * Do not create article meta description for password-protected articles [publify#1061](https://github.com/publify/publify/pull/1061)
27
66
 
28
67
  ## 9.2.7 / 2022-02-07
29
68
 
30
- * Fix setting the article password from the Admin [#1044](https://github.com/publify/publify/pull/1044)
69
+ * Fix setting the article password from the Admin [publify#1044](https://github.com/publify/publify/pull/1044)
31
70
 
32
71
  ## 9.2.6 / 2022-01-07
33
72
 
@@ -57,7 +96,7 @@ Additionally, it includes the following changes:
57
96
  ## 9.2.3 / 2021-05-22
58
97
 
59
98
  * Bump Rails dependency to 5.2.6
60
- * Replace mimemagic with marcel
99
+ * Replace mimemagic with marcel [publify#996](https://github.com/publify/publify/pull/996)
61
100
 
62
101
  ## 9.2.2 / 2021-03-21
63
102
 
@@ -0,0 +1,17 @@
1
+ window._lang = "ar_AR" ;
2
+ window._l10s = window._l10s || { } ;
3
+ window._l10s["ar_AR"] = {
4
+
5
+ "#{0} from now": "#{0} من الآن",
6
+ "#{0} ago": "#{0} منذ",
7
+ "on #{0}": "خلال #{0}",
8
+ "less than a minute": "أقل من دفيقة",
9
+ "#{0} minute": "#{0} دقيقة",
10
+ "#{0} minutes": "#{0} دقائق",
11
+ "about one hour": "خلال ساعة",
12
+ "#{0} hours": "#{0} ساعات",
13
+ "one day": "يوم",
14
+ "about one day": "خلال يوم",
15
+ "#{0} days": "#{0} أيام"
16
+
17
+ } ;
@@ -4,11 +4,11 @@ require "base64"
4
4
 
5
5
  module Admin; end
6
6
 
7
- class Admin::ContentController < Admin::BaseController
7
+ class Admin::ArticlesController < Admin::BaseController
8
8
  def index
9
9
  @search = params[:search] || {}
10
- @articles = this_blog.articles.search_with(@search).page(params[:page]).
11
- per(this_blog.admin_display_elements)
10
+ @articles = this_blog.articles.search_with(@search).page(params[:page])
11
+ .per(this_blog.admin_display_elements)
12
12
 
13
13
  if request.xhr?
14
14
  respond_to do |format|
@@ -29,7 +29,7 @@ class Admin::ContentController < Admin::BaseController
29
29
  return unless access_granted?(params[:id])
30
30
 
31
31
  @article = Article.find(params[:id])
32
- @article.text_filter ||= default_text_filter
32
+ @article.text_filter_name ||= default_text_filter
33
33
  @article.keywords = Tag.collection_to_string @article.tags
34
34
  load_resources
35
35
  render layout: "editor"
@@ -48,7 +48,7 @@ class Admin::ContentController < Admin::BaseController
48
48
  end
49
49
 
50
50
  if @article.save
51
- flash[:success] = I18n.t("admin.content.create.success")
51
+ flash[:success] = I18n.t("admin.articles.create.success")
52
52
  redirect_to action: "index"
53
53
  else
54
54
  @article.keywords = Tag.collection_to_string @article.tags
@@ -79,7 +79,7 @@ class Admin::ContentController < Admin::BaseController
79
79
 
80
80
  if @article.save
81
81
  Article.where(parent_id: @article.id).map(&:destroy) unless @article.draft
82
- flash[:success] = I18n.t("admin.content.update.success")
82
+ flash[:success] = I18n.t("admin.articles.update.success")
83
83
  redirect_to action: "index"
84
84
  else
85
85
  @article.keywords = Tag.collection_to_string @article.tags
@@ -113,7 +113,7 @@ class Admin::ContentController < Admin::BaseController
113
113
  @article.author = current_user
114
114
  @article.save_attachments!(params[:attachments])
115
115
  @article.state = "draft" unless @article.withdrawn?
116
- @article.text_filter ||= current_user.default_text_filter
116
+ @article.text_filter_name ||= default_text_filter
117
117
 
118
118
  if @article.title.blank?
119
119
  lastid = Article.order("id desc").first.id
@@ -121,7 +121,7 @@ class Admin::ContentController < Admin::BaseController
121
121
  end
122
122
 
123
123
  if @article.save
124
- flash[:success] = I18n.t("admin.content.autosave.success")
124
+ flash[:success] = I18n.t("admin.articles.autosave.success")
125
125
  @must_update_calendar =
126
126
  (params[:article][:published_at] and
127
127
  params[:article][:published_at].to_time.to_i < Time.zone.now.to_time.to_i and
@@ -157,7 +157,7 @@ class Admin::ContentController < Admin::BaseController
157
157
  if article.access_by? current_user
158
158
  true
159
159
  else
160
- flash[:error] = I18n.t("admin.content.access_granted.error")
160
+ flash[:error] = I18n.t("admin.articles.access_granted.error")
161
161
  redirect_to action: "index"
162
162
  false
163
163
  end
@@ -171,23 +171,23 @@ class Admin::ContentController < Admin::BaseController
171
171
  end
172
172
 
173
173
  def update_params
174
- params.
175
- require(:article).
176
- permit(:allow_comments,
177
- :allow_pings,
178
- :body,
179
- :body_and_extended,
180
- :draft,
181
- :extended,
182
- :password,
183
- :permalink,
184
- :published_at,
185
- :text_filter_name,
186
- :title,
187
- :keywords)
174
+ params
175
+ .require(:article)
176
+ .permit(:allow_comments,
177
+ :allow_pings,
178
+ :body,
179
+ :body_and_extended,
180
+ :draft,
181
+ :extended,
182
+ :password,
183
+ :permalink,
184
+ :published_at,
185
+ :text_filter_name,
186
+ :title,
187
+ :keywords)
188
188
  end
189
189
 
190
190
  def default_text_filter
191
- current_user.text_filter || this_blog.text_filter
191
+ current_user.text_filter_name || this_blog.text_filter
192
192
  end
193
193
  end
@@ -18,15 +18,15 @@ class Admin::DashboardController < Admin::BaseController
18
18
  @statsdrafts = Article.drafts.where("created_at > ?", today).count
19
19
  @statspages = Page.where("published_at > ?", today).count
20
20
  @statuses = Note.where("published_at > ?", today).count
21
- @statuserposts = Article.published.where("published_at > ?", today).
22
- where(user_id: current_user.id).count
21
+ @statuserposts = Article.published.where("published_at > ?", today)
22
+ .where(user_id: current_user.id).count
23
23
  @statcomments = Comment.where("created_at > ?", today).count
24
24
  @presumedspam = Comment.presumed_spam.where("created_at > ?", today).count
25
25
  @confirmed = Comment.ham.where("created_at > ?", today).count
26
26
  @unconfirmed = Comment.unconfirmed.where("created_at > ?", today).count
27
27
 
28
28
  @comments = Comment.last_published
29
- @drafts = Article.drafts.where("user_id = ?", current_user.id).limit(5)
29
+ @drafts = Article.drafts.where(user_id: current_user.id).limit(5)
30
30
 
31
31
  @statspam = Comment.spam.count
32
32
  end
@@ -16,20 +16,13 @@ class Admin::FeedbackController < Admin::BaseController
16
16
  @feedback = scoped_feedback.paginated(params[:page], this_blog.admin_display_elements)
17
17
  end
18
18
 
19
- def destroy
20
- @record = Feedback.find params[:id]
21
-
22
- unless @record.article.user_id == current_user.id
23
- return redirect_to admin_feedback_index_url unless current_user.admin?
24
- end
25
-
26
- begin
27
- @record.destroy
28
- flash[:success] = I18n.t("admin.feedback.destroy.success")
29
- rescue ActiveRecord::RecordNotFound
30
- flash[:error] = I18n.t("admin.feedback.destroy.error")
19
+ def edit
20
+ @comment = Comment.find(params[:id])
21
+ @article = @comment.article
22
+ unless @article.access_by? current_user
23
+ redirect_to admin_feedback_index_url
24
+ nil
31
25
  end
32
- redirect_to action: "article", id: @record.article.id
33
26
  end
34
27
 
35
28
  def create
@@ -47,15 +40,6 @@ class Admin::FeedbackController < Admin::BaseController
47
40
  redirect_to action: "article", id: @article.id
48
41
  end
49
42
 
50
- def edit
51
- @comment = Comment.find(params[:id])
52
- @article = @comment.article
53
- unless @article.access_by? current_user
54
- redirect_to admin_feedback_index_url
55
- nil
56
- end
57
- end
58
-
59
43
  def update
60
44
  comment = Comment.find(params[:id])
61
45
  unless comment.article.access_by? current_user
@@ -71,6 +55,22 @@ class Admin::FeedbackController < Admin::BaseController
71
55
  end
72
56
  end
73
57
 
58
+ def destroy
59
+ @record = Feedback.find params[:id]
60
+
61
+ unless @record.article.user_id == current_user.id
62
+ return redirect_to admin_feedback_index_url unless current_user.admin?
63
+ end
64
+
65
+ begin
66
+ @record.destroy
67
+ flash[:success] = I18n.t("admin.feedback.destroy.success")
68
+ rescue ActiveRecord::RecordNotFound
69
+ flash[:error] = I18n.t("admin.feedback.destroy.error")
70
+ end
71
+ redirect_to action: "article", id: @record.article.id
72
+ end
73
+
74
74
  def article
75
75
  @article = this_blog.articles.find(params[:id])
76
76
  @feedback = @article.comments
@@ -125,7 +125,7 @@ class Admin::FeedbackController < Admin::BaseController
125
125
  count: ids.size)
126
126
  when "Delete all spam"
127
127
  if request.post?
128
- Feedback.where("state = ?", "spam").delete_all
128
+ Feedback.where(state: "spam").delete_all
129
129
  flash[:success] = I18n.t("admin.feedback.bulkops.success_deleted_spam")
130
130
  end
131
131
  else
@@ -8,8 +8,8 @@ class Admin::PagesController < Admin::BaseController
8
8
 
9
9
  def index
10
10
  @search = params[:search] || {}
11
- @pages = Page.search_with(@search).page(params[:page]).
12
- per(this_blog.admin_display_elements)
11
+ @pages = Page.search_with(@search).page(params[:page])
12
+ .per(this_blog.admin_display_elements)
13
13
  end
14
14
 
15
15
  def new
@@ -16,7 +16,9 @@ class Admin::PostTypesController < Admin::BaseController
16
16
  @post_type = PostType.new(post_type_params)
17
17
 
18
18
  if @post_type.save
19
- redirect_to admin_post_types_url, notice: "Post type was successfully created."
19
+ flash[:notice] = I18n.t("admin.base.successfully_created",
20
+ name: PostType.model_name.human)
21
+ redirect_to admin_post_types_url
20
22
  else
21
23
  render :index
22
24
  end
@@ -24,7 +26,9 @@ class Admin::PostTypesController < Admin::BaseController
24
26
 
25
27
  def update
26
28
  if @post_type.update(post_type_params)
27
- redirect_to admin_post_types_url, notice: "Post type was successfully updated."
29
+ flash[:notice] = I18n.t("admin.base.successfully_updated",
30
+ name: PostType.model_name.human)
31
+ redirect_to admin_post_types_url
28
32
  else
29
33
  render :edit
30
34
  end
@@ -34,13 +38,15 @@ class Admin::PostTypesController < Admin::BaseController
34
38
  # Reset all Articles from the PostType we're destroying to the default PostType
35
39
  # Wrap it in a transaction for safety
36
40
  @post_type.transaction do
37
- Article.where("post_type = ?", @post_type.permalink).each do |article|
41
+ Article.where(post_type: @post_type.permalink).each do |article|
38
42
  article.post_type = "read"
39
43
  article.save
40
44
  end
41
45
  @post_type.destroy
42
46
  end
43
- redirect_to admin_post_types_url, notice: "Post was successfully destroyed."
47
+ flash[:notice] = I18n.t("admin.base.successfully_deleted",
48
+ name: PostType.model_name.human)
49
+ redirect_to admin_post_types_url
44
50
  end
45
51
 
46
52
  private
@@ -4,21 +4,23 @@ class Admin::RedirectsController < Admin::BaseController
4
4
  before_action :set_redirect, only: [:edit, :update, :destroy]
5
5
 
6
6
  def index
7
- @redirects = Redirect.where(content_id: nil).order("id desc").page(params[:page]).
8
- per(this_blog.admin_display_elements)
7
+ @redirects = Redirect.where(content_id: nil).order("id desc").page(params[:page])
8
+ .per(this_blog.admin_display_elements)
9
9
  @redirect = Redirect.new
10
10
  end
11
11
 
12
12
  def edit
13
- @redirects = Redirect.where(content_id: nil).order("id desc").page(params[:page]).
14
- per(this_blog.admin_display_elements)
13
+ @redirects = Redirect.where(content_id: nil).order("id desc").page(params[:page])
14
+ .per(this_blog.admin_display_elements)
15
15
  end
16
16
 
17
17
  def create
18
18
  @redirect = this_blog.redirects.build(redirect_params)
19
19
 
20
20
  if @redirect.save
21
- redirect_to admin_redirects_url, notice: "Redirect was successfully created."
21
+ flash[:notice] = I18n.t("admin.base.successfully_created",
22
+ name: Redirect.model_name.human)
23
+ redirect_to admin_redirects_url
22
24
  else
23
25
  render :index
24
26
  end
@@ -26,7 +28,9 @@ class Admin::RedirectsController < Admin::BaseController
26
28
 
27
29
  def update
28
30
  if @redirect.update(redirect_params)
29
- redirect_to admin_redirects_url, notice: "Redirect was successfully updated."
31
+ flash[:notice] = I18n.t("admin.base.successfully_updated",
32
+ name: Redirect.model_name.human)
33
+ redirect_to admin_redirects_url
30
34
  else
31
35
  render :edit
32
36
  end
@@ -18,8 +18,8 @@ class Admin::ResourcesController < Admin::BaseController
18
18
 
19
19
  def index
20
20
  @r = Resource.new
21
- @resources = Resource.order("created_at DESC").page(params[:page]).
22
- per(this_blog.admin_display_elements)
21
+ @resources = Resource.order("created_at DESC").page(params[:page])
22
+ .per(this_blog.admin_display_elements)
23
23
  end
24
24
 
25
25
  def destroy
@@ -45,8 +45,8 @@ class Admin::SidebarController < Admin::BaseController
45
45
  # IT'S OVER NINE THOUSAND! considering we'll never reach 9K Sidebar
46
46
  # instances or Sidebar specializations
47
47
  sidebar = if sidebar_id >= 9000
48
- SidebarRegistry.available_sidebars[sidebar_id - 9000].
49
- new(blog: this_blog)
48
+ SidebarRegistry.available_sidebars[sidebar_id - 9000]
49
+ .new(blog: this_blog)
50
50
  else
51
51
  Sidebar.valid.find(sidebar_id)
52
52
  end
@@ -14,7 +14,9 @@ class Admin::TagsController < Admin::BaseController
14
14
  @tag = this_blog.tags.new(tag_params)
15
15
 
16
16
  if @tag.save
17
- redirect_to admin_tags_url, notice: "Tag was successfully created."
17
+ flash[:notice] = I18n.t("admin.base.successfully_created",
18
+ name: PostType.model_name.human)
19
+ redirect_to admin_tags_url
18
20
  else
19
21
  fetch_tags
20
22
  render :index
@@ -49,7 +51,7 @@ class Admin::TagsController < Admin::BaseController
49
51
  end
50
52
 
51
53
  def fetch_tags
52
- @tags = Tag.order("display_name").page(params[:page]).
53
- per(this_blog.admin_display_elements)
54
+ @tags = Tag.order("display_name").page(params[:page])
55
+ .per(this_blog.admin_display_elements)
54
56
  end
55
57
  end
@@ -9,8 +9,7 @@ class Admin::ThemesController < Admin::BaseController
9
9
  @themes = Theme.find_all
10
10
  @themes.each do |theme|
11
11
  # TODO: Move to Theme
12
- theme.description_html = TextFilter.filter_text(theme.description,
13
- [:markdown, :smartypants])
12
+ theme.description_html = TextFilter.none.filter_text(theme.description)
14
13
  end
15
14
  @active = this_blog.current_theme
16
15
  end
@@ -4,8 +4,8 @@ class Admin::UsersController < Admin::BaseController
4
4
  before_action :set_user, only: [:edit, :update, :destroy]
5
5
 
6
6
  def index
7
- @users = User.order("login asc").page(params[:page]).
8
- per(this_blog.admin_display_elements)
7
+ @users = User.order("login asc").page(params[:page])
8
+ .per(this_blog.admin_display_elements)
9
9
  end
10
10
 
11
11
  def new
@@ -29,7 +29,9 @@ class Admin::UsersController < Admin::BaseController
29
29
 
30
30
  def update
31
31
  if @user.update(update_params)
32
- redirect_to admin_users_url, notice: "User was successfully updated."
32
+ flash[:notice] = I18n.t("admin.base.successfully_updated",
33
+ name: User.model_name.human)
34
+ redirect_to admin_users_url
33
35
  else
34
36
  render :edit
35
37
  end
@@ -7,7 +7,7 @@ class ArticlesController < ContentController
7
7
 
8
8
  layout :theme_layout, except: [:trackback]
9
9
 
10
- helper :'admin/base'
10
+ helper :"admin/base"
11
11
 
12
12
  def index
13
13
  wanted_types = this_blog.statuses_in_timeline ? ["Article", "Note"] : ["Article"]
@@ -18,8 +18,8 @@ class ArticlesController < ContentController
18
18
  else
19
19
  this_blog.contents.published_at(params.values_at(:year, :month, :day))
20
20
  end
21
- @articles = articles_base.includes(:user, :resources, :tags).
22
- where(type: wanted_types).page(params[:page]).per(limit)
21
+ @articles = articles_base.includes(:user, :resources, :tags)
22
+ .where(type: wanted_types).page(params[:page]).per(limit)
23
23
 
24
24
  respond_to do |format|
25
25
  format.html do
@@ -167,8 +167,8 @@ class ArticlesController < ContentController
167
167
  @comment = Comment.new
168
168
  @page_title = this_blog.article_title_template.to_title(@article, this_blog, params)
169
169
  if @article.password.blank?
170
- @description = this_blog.article_desc_template.
171
- to_title(@article, this_blog, params)
170
+ @description = this_blog.article_desc_template
171
+ .to_title(@article, this_blog, params)
172
172
  end
173
173
 
174
174
  @keywords = @article.tags.map(&:name).join(", ")
@@ -7,8 +7,8 @@ class AuthorsController < ContentController
7
7
  @author = User.find_by(login: params[:id])
8
8
  raise ActiveRecord::RecordNotFound unless @author
9
9
 
10
- @articles = @author.articles.published.page(params[:page]).
11
- per(this_blog.per_page(params[:format]))
10
+ @articles = @author.articles.published.page(params[:page])
11
+ .per(this_blog.per_page(params[:format]))
12
12
  @page_title = this_blog.author_title_template.to_title(@author, this_blog, params)
13
13
  @keywords = this_blog.meta_keywords
14
14
  @description = this_blog.author_desc_template.to_title(@author, this_blog, params)
@@ -13,9 +13,6 @@ class BaseController < ApplicationController
13
13
 
14
14
  def set_paths
15
15
  prepend_view_path this_blog.current_theme.view_path
16
- Dir.glob(File.join(::Rails.root.to_s, "lib", "*_sidebar/app/views")).select do |file|
17
- append_view_path file
18
- end
19
16
  end
20
17
 
21
18
  def fire_triggers
@@ -2,9 +2,9 @@
2
2
 
3
3
  class FeedbackController < BaseController
4
4
  def index
5
- @feedback = Feedback.ham.
6
- newest_first.
7
- limit(this_blog.per_page(params[:format]))
5
+ @feedback = Feedback.ham
6
+ .newest_first
7
+ .limit(this_blog.per_page(params[:format]))
8
8
  respond_to do |format|
9
9
  format.atom { render "index", format: "atom" }
10
10
  format.rss { render "index", format: "rss" }
@@ -14,9 +14,9 @@ class TagsController < ContentController
14
14
  def show
15
15
  @tag = Tag.find_by!(name: params[:id])
16
16
 
17
- @articles = @tag.
18
- contents.includes(:blog, :user, :tags, :resources).
19
- published.page(params[:page]).per(10)
17
+ @articles = @tag
18
+ .contents.includes(:blog, :user, :tags, :resources)
19
+ .published.page(params[:page]).per(10)
20
20
 
21
21
  respond_to do |format|
22
22
  format.html do
@@ -25,6 +25,6 @@ module AuthorsHelper
25
25
  end
26
26
 
27
27
  def author_link(article)
28
- h(article.author_name)
28
+ ERB::Util.html_escape(article.author_name)
29
29
  end
30
30
  end
@@ -41,8 +41,8 @@ module BaseHelper
41
41
  controller.send(:render_to_string, *args, &block)
42
42
  end
43
43
 
44
- def link_to_permalink(item, title, anchor = nil, style = nil, nofollow = nil,
45
- only_path = false)
44
+ def link_to_permalink(item, title,
45
+ anchor: nil, style: nil, nofollow: nil, only_path: false)
46
46
  options = {}
47
47
  options[:class] = style if style
48
48
  options[:rel] = "nofollow" if nofollow
@@ -66,7 +66,7 @@ module BaseHelper
66
66
  end
67
67
 
68
68
  def meta_tag(name, value)
69
- tag :meta, name: name, content: value if value.present?
69
+ tag.meta(name: name, content: value) if value.present?
70
70
  end
71
71
 
72
72
  def markup_help_popup(markup, text)
@@ -226,8 +226,8 @@ module BaseHelper
226
226
  # show the excerpt, or else we show the body
227
227
  def fetch_html_content_for_feeds(item, this_blog)
228
228
  if item.password_protected?
229
- "<p>This article is password protected. Please " \
230
- "<a href='#{item.permalink_url}'>fill in your password</a> to read it</p>"
229
+ "<p>This article is password protected. Please" \
230
+ " <a href='#{item.permalink_url}'>fill in your password</a> to read it</p>"
231
231
  elsif this_blog.hide_extended_on_rss
232
232
  if item.excerpt? && !item.excerpt.empty?
233
233
  item.excerpt
@@ -248,7 +248,7 @@ module BaseHelper
248
248
  followify_scrubber = Loofah::Scrubber.new do |node|
249
249
  node.set_attribute "rel", "nofollow" if node.name == "a"
250
250
  end
251
- sanitize h(string), scrubber: followify_scrubber
251
+ sanitize string, scrubber: followify_scrubber
252
252
  end
253
253
  end
254
254
 
@@ -34,7 +34,7 @@ class Ability
34
34
  end
35
35
 
36
36
  def add_publisher_abilities
37
- can :manage, "admin/content"
37
+ can :manage, "admin/articles"
38
38
  can :manage, "admin/feedback"
39
39
  can :manage, "admin/notes"
40
40
  can :manage, "admin/pages"