publify_core 9.2.5 → 9.2.8

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of publify_core might be problematic. Click here for more details.

Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/app/assets/javascripts/check_password.js +9 -0
  4. data/app/assets/javascripts/publify.js +1 -0
  5. data/app/controllers/admin/content_controller.rb +2 -3
  6. data/app/controllers/articles_controller.rb +4 -1
  7. data/app/controllers/comments_controller.rb +2 -7
  8. data/app/models/article.rb +2 -2
  9. data/app/models/comment.rb +9 -1
  10. data/app/models/feedback.rb +8 -7
  11. data/app/models/trackback.rb +5 -1
  12. data/app/views/admin/feedback/article.html.erb +5 -4
  13. data/app/views/admin/feedback/index.html.erb +1 -0
  14. data/app/views/admin/resources/index.html.erb +3 -0
  15. data/app/views/articles/_password_form.html.erb +2 -4
  16. data/app/views/articles/search.html.erb +3 -1
  17. data/app/views/devise/mailer/reset_password_instructions.html.erb +2 -2
  18. data/app/views/devise/passwords/edit.html.erb +1 -1
  19. data/app/views/devise/passwords/new.html.erb +1 -1
  20. data/config/locales/da.yml +3 -0
  21. data/config/locales/de.yml +3 -0
  22. data/config/locales/en.yml +3 -0
  23. data/config/locales/es-MX.yml +3 -0
  24. data/config/locales/fr.yml +3 -0
  25. data/config/locales/he.yml +3 -0
  26. data/config/locales/it.yml +3 -0
  27. data/config/locales/ja.yml +3 -0
  28. data/config/locales/lt.yml +3 -0
  29. data/config/locales/nb-NO.yml +3 -0
  30. data/config/locales/nl.yml +6 -2
  31. data/config/locales/pl.yml +3 -0
  32. data/config/locales/pt-BR.yml +3 -0
  33. data/config/locales/ro.yml +3 -0
  34. data/config/locales/ru.yml +4 -1
  35. data/config/locales/zh-CN.yml +3 -0
  36. data/config/locales/zh-TW.yml +3 -0
  37. data/config/routes.rb +2 -1
  38. data/lib/publify_core/version.rb +1 -1
  39. data/lib/spam_protection.rb +1 -1
  40. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8598a2b44749716a7bf3f75ab494ff6ba4ef327f29d6606ed3fd21ccce7df918
4
- data.tar.gz: b3f58570a4180cb07bfa2852d3bf0c10160feb9f14039875d6e5182fbb56a368
3
+ metadata.gz: ceb79c67a3eab641f5515e427d022de68e365fa219c18dd686127063669f1d09
4
+ data.tar.gz: 1d2916a5932b8f0797ddf5af93359d593829d91c5509f7e64490d9250f3de71e
5
5
  SHA512:
6
- metadata.gz: 5ceafbc0b711d3c0d113e61e9339c9175b6cf18afb08fded9321148d2b3b7ddf1809a9de8de0428f5364820d15de19a58a4b0a811018e6cc210357ccb49e868f
7
- data.tar.gz: 7e476032ad37744aee63a7f746c81f020684857fedd43ff6468648ce1133280fd3efc7b78bea560ffd69d34b250dc120e05c767a44361eb376d91de54ecd2c35
6
+ metadata.gz: 9460c12c7a912eed0462b0e8769af2d23419bc0f7132ea7a071eb72c2e544d437b1f5ab2cdd89ec5ab28445e63cc42bb0628a39892d31baf3d82f8437d3fefb2
7
+ data.tar.gz: 32cfcbade0b7fe6573daaf6fbe37c6f416e8e8a33b0a43b072c7678ec4b484c7a62fcf1eab76bf779b7f7141cf986a1094ed8c1be9ca10adad3c2a77deaac154
data/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.2.8 / 2022-05-14
4
+
5
+ * Fix password protected article reveal [#1049](https://github.com/publify/publify/pull/1049)
6
+ * Disallow comments on draft articles [#1048](https://github.com/publify/publify/pull/1048)
7
+ * Clean up Feedback validation [#1051](https://github.com/publify/publify/pull/1051)
8
+ * Disallow images in comments [#1054](https://github.com/publify/publify/pull/1054)
9
+ * Fix password reset process [#1055](https://github.com/publify/publify/pull/1055)
10
+ * Hide bodies of password-protected articles in search results [#1057](https://github.com/publify/publify/pull/1057)
11
+ * Provide correct `article_id` input in bulkops form [#1058](https://github.com/publify/publify/pull/1058)
12
+ * Do not create article meta description for password-protected articles [#1061](https://github.com/publify/publify/pull/1061)
13
+
14
+ ## 9.2.7 / 2022-02-07
15
+
16
+ * Fix setting the article password from the Admin [#1044](https://github.com/publify/publify/pull/1044)
17
+
18
+ ## 9.2.6 / 2022-01-07
19
+
20
+ * Add documentation about use of the media library
21
+
3
22
  ## 9.2.5 / 2021-10-11
4
23
 
5
24
  This release fixes several security issues:
@@ -0,0 +1,9 @@
1
+ // Show and hide spinners on Ajax requests.
2
+ $(document).ready(function() {
3
+ $('form.check_password').on('ajax:complete',
4
+ function(evt, xhr, stat) {
5
+ var form = evt.currentTarget;
6
+ var elem = document.getElementById(form.dataset["update"]);
7
+ elem.outerHTML = xhr.responseText;
8
+ })
9
+ });
@@ -7,5 +7,6 @@
7
7
  //= require jquery_ujs
8
8
  //= require lightbox
9
9
  //= require observe
10
+ //= require check_password
10
11
  //
11
12
  //= require_self
@@ -131,7 +131,7 @@ class Admin::ContentController < Admin::BaseController
131
131
  end
132
132
  end
133
133
 
134
- protected
134
+ private
135
135
 
136
136
  def fetch_fresh_or_existing_draft_for_article
137
137
  return unless @article.published? && @article.id
@@ -146,8 +146,6 @@ class Admin::ContentController < Admin::BaseController
146
146
 
147
147
  attr_accessor :resources, :resource
148
148
 
149
- private
150
-
151
149
  def load_resources
152
150
  @post_types = PostType.all
153
151
  @macros = TextFilterPlugin.macro_filters
@@ -180,6 +178,7 @@ class Admin::ContentController < Admin::BaseController
180
178
  :body_and_extended,
181
179
  :draft,
182
180
  :extended,
181
+ :password,
183
182
  :permalink,
184
183
  :published_at,
185
184
  :text_filter_name,
@@ -166,7 +166,10 @@ class ArticlesController < ContentController
166
166
  format.html do
167
167
  @comment = Comment.new
168
168
  @page_title = this_blog.article_title_template.to_title(@article, this_blog, params)
169
- @description = this_blog.article_desc_template.to_title(@article, this_blog, params)
169
+ if @article.password.blank?
170
+ @description = this_blog.article_desc_template.
171
+ to_title(@article, this_blog, params)
172
+ end
170
173
 
171
174
  @keywords = @article.tags.map(&:name).join(", ")
172
175
  render "articles/#{@article.post_type}"
@@ -7,11 +7,6 @@ class CommentsController < BaseController
7
7
  options = new_comment_defaults.merge comment_params.to_h
8
8
  @comment = @article.add_comment(options)
9
9
 
10
- unless current_user.nil? || session[:user_id].nil?
11
- # maybe useless, but who knows ?
12
- @comment.user_id = current_user.id if current_user.id == session[:user_id]
13
- end
14
-
15
10
  remember_author_info_for @comment
16
11
 
17
12
  partial = "/articles/comment_failed"
@@ -33,7 +28,7 @@ class CommentsController < BaseController
33
28
  @comment = @article.comments.build(comment_params)
34
29
  end
35
30
 
36
- protected
31
+ private
37
32
 
38
33
  def recaptcha_ok_for?(comment)
39
34
  use_recaptcha = comment.blog.use_recaptcha
@@ -43,7 +38,7 @@ class CommentsController < BaseController
43
38
  def new_comment_defaults
44
39
  { ip: request.remote_ip,
45
40
  author: "Anonymous",
46
- user: @current_user,
41
+ user: current_user,
47
42
  user_agent: request.env["HTTP_USER_AGENT"],
48
43
  referrer: request.env["HTTP_REFERER"],
49
44
  permalink: @article.permalink_url }.stringify_keys
@@ -204,7 +204,7 @@ class Article < Content
204
204
  end
205
205
 
206
206
  def comments_closed?
207
- !(allow_comments? && in_feedback_window?)
207
+ !(allow_comments? && published? && in_feedback_window?)
208
208
  end
209
209
 
210
210
  def html_urls
@@ -216,7 +216,7 @@ class Article < Content
216
216
  end
217
217
 
218
218
  def pings_closed?
219
- !(allow_pings? && in_feedback_window?)
219
+ !(allow_pings? && published? && in_feedback_window?)
220
220
  end
221
221
 
222
222
  # check if time to comment is open or not
@@ -38,7 +38,7 @@ class Comment < Feedback
38
38
  really_send_notifications
39
39
  end
40
40
 
41
- protected
41
+ private
42
42
 
43
43
  def article_allows_feedback?
44
44
  return true if article.allow_comments?
@@ -47,6 +47,14 @@ class Comment < Feedback
47
47
  false
48
48
  end
49
49
 
50
+ def blog_allows_feedback?
51
+ true
52
+ end
53
+
54
+ def check_article_closed_for_feedback
55
+ errors.add(:article, "Comment are closed") if article.comments_closed?
56
+ end
57
+
50
58
  def originator
51
59
  author
52
60
  end
@@ -11,11 +11,12 @@ class Feedback < ApplicationRecord
11
11
  include PublifyGuid
12
12
  include ContentBase
13
13
 
14
+ validate :article_allows_this_feedback, on: :create
14
15
  validate :feedback_not_closed, on: :create
15
16
  validates :article, presence: true
16
17
 
17
18
  before_save :correct_url, :classify_content
18
- before_create :create_guid, :article_allows_this_feedback
19
+ before_create :create_guid
19
20
 
20
21
  # TODO: Rename so it doesn't sound like only approved ham
21
22
  scope :ham, -> { where(state: %w(presumed_ham ham)) }
@@ -66,6 +67,10 @@ class Feedback < ApplicationRecord
66
67
  page(page).per(per_page)
67
68
  end
68
69
 
70
+ def self.allowed_tags
71
+ @allowed_tags ||= Rails::Html::SafeListSanitizer.allowed_tags - ["img"]
72
+ end
73
+
69
74
  def parent
70
75
  article
71
76
  end
@@ -85,7 +90,7 @@ class Feedback < ApplicationRecord
85
90
 
86
91
  def html_postprocess(_field, html)
87
92
  helper = ContentTextHelpers.new
88
- helper.sanitize(helper.auto_link(html))
93
+ helper.sanitize(helper.auto_link(html), tags: self.class.allowed_tags)
89
94
  end
90
95
 
91
96
  def correct_url
@@ -98,10 +103,6 @@ class Feedback < ApplicationRecord
98
103
  article && blog_allows_feedback? && article_allows_feedback?
99
104
  end
100
105
 
101
- def blog_allows_feedback?
102
- true
103
- end
104
-
105
106
  def akismet_options
106
107
  { type: self.class.to_s.downcase,
107
108
  author: originator,
@@ -200,7 +201,7 @@ class Feedback < ApplicationRecord
200
201
  end
201
202
 
202
203
  def feedback_not_closed
203
- errors.add(:article_id, "Comment are closed") if article.comments_closed?
204
+ check_article_closed_for_feedback
204
205
  end
205
206
 
206
207
  def send_notifications
@@ -24,10 +24,14 @@ class Trackback < Feedback
24
24
  def blog_allows_feedback?
25
25
  return true unless blog.global_pings_disable
26
26
 
27
- errors.add(:article, "Pings are disabled")
27
+ errors.add(:base, "Pings are disabled")
28
28
  false
29
29
  end
30
30
 
31
+ def check_article_closed_for_feedback
32
+ errors.add(:article, "Pings are closed") if article.pings_closed?
33
+ end
34
+
31
35
  def originator
32
36
  blog_name
33
37
  end
@@ -1,12 +1,13 @@
1
1
  <% content_for :page_heading do %>
2
- <h2 class="page-title">
3
- <%= t('.comments_for_html', title: @article.title) %>
4
- </h2>
2
+ <h2 class="page-title">
3
+ <%= t('.comments_for_html', title: @article.title) %>
4
+ </h2>
5
5
  <% end %>
6
6
 
7
7
  <%= form_tag({ action: 'bulkops' }, { class: 'form-inline' }) do %>
8
8
 
9
- <%= hidden_field 'article_id', @article.id %>
9
+ <%= hidden_field_tag 'article_id', @article.id %>
10
+
10
11
  <%= render 'button', position: 'top' %>
11
12
 
12
13
  <br class='clear' />
@@ -40,6 +40,7 @@
40
40
  </td>
41
41
  </tr>
42
42
  <% end %>
43
+
43
44
  <% @feedback.each do |comment| %>
44
45
  <%= render 'feedback', comment: comment %>
45
46
  <% end %>
@@ -2,6 +2,9 @@
2
2
  <h2>
3
3
  <%= t('.media_library') %>
4
4
  </h2>
5
+ <p>
6
+ <%= t('.explain_media_library_html') %>
7
+ </p>
5
8
  <% end %>
6
9
 
7
10
  <%= form_tag({ action: 'upload' }, { enctype: 'multipart/form-data', class: 'form-inline' }) do %>
@@ -1,10 +1,8 @@
1
1
  <div id='content-<%= article.id %>'>
2
2
  <p>This post is password protected. Please fill in your password or login to view the content</p>
3
- <%= form_for(article, remote: true,
4
- url: { controller: 'articles', action: 'check_password' },
5
- update: "content-#{article.id}") do |f| %>
3
+ <%= form_tag(check_password_url, remote: true, class: "check_password", data: { update: "content-#{article.id}" }) do %>
6
4
  <%= password_field(:article, :password) %>
7
- <input type='hidden' name='article[id]' value='<%= article.id %>' />
5
+ <%= hidden_field(:article, :id) %>
8
6
  <%= submit_tag(t('.submit') + '!', name: 'check_password') %>
9
7
  <% end %>
10
8
  </div>
@@ -1,7 +1,9 @@
1
1
  <% for article in @articles %>
2
2
  <div class="post">
3
3
  <h2><%= link_to_permalink article, article.title %></h2>
4
- <%= article.html(:body).gsub(%r{</?[^>]*>}, '').slice(0..300) %>...
4
+ <% if article.password.blank? %>
5
+ <%= article.html(:body).gsub(%r{</?[^>]*>}, '').slice(0..300) %>...
6
+ <% end %>
5
7
  </div>
6
8
  <% end %>
7
9
 
@@ -1,6 +1,6 @@
1
1
  <% require 'devise/version' %>
2
- <%# TODO: Link user to blog so we can do @resource.blog
3
- blog = Blog.first %>
2
+ <%# TODO: Link user to blog so we can do @resource.blog %>
3
+ <% blog = Blog.first %>
4
4
  <p><%= t('.greeting', recipient: @resource.login, default: "Hello #{@resource.login}!") %></p>
5
5
 
6
6
  <p><%= t('.instruction', default: 'Someone has requested a link to change your password, and you can do this through the link below.') %></p>
@@ -3,7 +3,7 @@
3
3
  <% end %>
4
4
 
5
5
  <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
6
- <%= devise_error_messages! %>
6
+ <%= render "devise/shared/error_messages", resource: resource %>
7
7
  <fieldset>
8
8
  <%= f.hidden_field :reset_password_token %>
9
9
 
@@ -3,7 +3,7 @@
3
3
  <% end %>
4
4
 
5
5
  <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
6
- <%= devise_error_messages! %>
6
+ <%= render "devise/shared/error_messages", resource: resource %>
7
7
  <fieldset>
8
8
 
9
9
  <div class='form-group'>
@@ -334,6 +334,9 @@ da:
334
334
  content_type: Indholdstype (Content Type)
335
335
  date: Dato
336
336
  delete: Slet
337
+ explain_media_library_html: Upload images, video and audio here for use in
338
+ your blog posts and pages. Please note that <strong>all uploaded files will
339
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
337
340
  file_size: Filstørrelse
338
341
  filename: Filnavn
339
342
  media_library: Media Library
@@ -334,6 +334,9 @@ de:
334
334
  content_type: Content Type
335
335
  date: Date
336
336
  delete: Löschen
337
+ explain_media_library_html: Upload images, video and audio here for use in
338
+ your blog posts and pages. Please note that <strong>all uploaded files will
339
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
337
340
  file_size: Dateigröße
338
341
  filename: Dateiname
339
342
  media_library: Media Library
@@ -334,6 +334,9 @@ en:
334
334
  content_type: Content Type
335
335
  date: Date
336
336
  delete: Delete
337
+ explain_media_library_html: Upload images, video and audio here for use in
338
+ your blog posts and pages. Please note that <strong>all uploaded files will
339
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
337
340
  file_size: File Size
338
341
  filename: Filename
339
342
  media_library: Media Library
@@ -334,6 +334,9 @@ es-MX:
334
334
  content_type: Content Type
335
335
  date: Date
336
336
  delete: Eliminar
337
+ explain_media_library_html: Upload images, video and audio here for use in
338
+ your blog posts and pages. Please note that <strong>all uploaded files will
339
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
337
340
  file_size: Tama&ntilde;o del Archivo
338
341
  filename: Nombre del archivo
339
342
  media_library: Media Library
@@ -338,6 +338,9 @@ fr:
338
338
  content_type: Type de contenu
339
339
  date: Date
340
340
  delete: Supprimer
341
+ explain_media_library_html: Upload images, video and audio here for use in
342
+ your blog posts and pages. Please note that <strong>all uploaded files will
343
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
341
344
  file_size: Taille du fichier
342
345
  filename: Fichier
343
346
  media_library: Bibliothèque de médias
@@ -333,6 +333,9 @@ he:
333
333
  content_type: סוג התוכן
334
334
  date: תאריך
335
335
  delete: מחק
336
+ explain_media_library_html: Upload images, video and audio here for use in
337
+ your blog posts and pages. Please note that <strong>all uploaded files will
338
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
336
339
  file_size: גודל הקובץ
337
340
  filename: שם הקובץ
338
341
  media_library: Media Library
@@ -334,6 +334,9 @@ it:
334
334
  content_type: Tipo di contenuto
335
335
  date: Date
336
336
  delete: Elimina
337
+ explain_media_library_html: Upload images, video and audio here for use in
338
+ your blog posts and pages. Please note that <strong>all uploaded files will
339
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
337
340
  file_size: Dimensione
338
341
  filename: Nome del file
339
342
  media_library: Media Library
@@ -333,6 +333,9 @@ ja:
333
333
  content_type: コンテンツタイプ
334
334
  date: 日付
335
335
  delete: 削除
336
+ explain_media_library_html: Upload images, video and audio here for use in
337
+ your blog posts and pages. Please note that <strong>all uploaded files will
338
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
336
339
  file_size: ファイルサイズ
337
340
  filename: ファイル名
338
341
  media_library: Media Library
@@ -346,6 +346,9 @@ lt:
346
346
  content_type: Content Type
347
347
  date: Date
348
348
  delete: Trinti
349
+ explain_media_library_html: Upload images, video and audio here for use in
350
+ your blog posts and pages. Please note that <strong>all uploaded files will
351
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
349
352
  file_size: Dateigröße
350
353
  filename: Dateiname
351
354
  media_library: Media Library
@@ -333,6 +333,9 @@ nb-NO:
333
333
  content_type: Innholdstype (MIME Content Type)
334
334
  date: Dato
335
335
  delete: Slett
336
+ explain_media_library_html: Upload images, video and audio here for use in
337
+ your blog posts and pages. Please note that <strong>all uploaded files will
338
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
336
339
  file_size: Filstørrelse
337
340
  filename: Filnavn
338
341
  media_library: Media-bibliotek
@@ -334,9 +334,13 @@ nl:
334
334
  content_type: Content Type
335
335
  date: Datum
336
336
  delete: Verwijderen
337
+ explain_media_library_html: Upload hier plaatjes, video en audio om te gebruiken
338
+ in blog posts en pagina's. Let op dat <strong>alle geüploade bestanden openbaar
339
+ toegankelijk zijn, zelfs als ze niet gebruikt worden in een blog post of
340
+ pagina.</strong>.
337
341
  file_size: Bestandsgrootte
338
342
  filename: Bestandsnaam
339
- media_library: Media Library
343
+ media_library: Mediabibliotheek
340
344
  medium_size: Medium size
341
345
  no_resources: Er zijn nog geen media. Waarom begin je er niet een te maken?
342
346
  original_size: Original size
@@ -556,7 +560,7 @@ nl:
556
560
  logged_in_as: Logged in as %{login}
557
561
  logout_html: Log out &raquo;
558
562
  manage_users: Manage Users
559
- media_library: Media Library
563
+ media_library: Mediabibliotheek
560
564
  new: Nieuw
561
565
  new_article: Nieuw artikel
562
566
  new_media: New Media
@@ -358,6 +358,9 @@ pl:
358
358
  content_type: Typ treści
359
359
  date: Data
360
360
  delete: Usuń
361
+ explain_media_library_html: Upload images, video and audio here for use in
362
+ your blog posts and pages. Please note that <strong>all uploaded files will
363
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
361
364
  file_size: Rozmiar pliku
362
365
  filename: Nazwa pliku
363
366
  media_library: Biblioteka multimediów
@@ -335,6 +335,9 @@ pt-BR:
335
335
  content_type: Tipo de conteúdo
336
336
  date: Data
337
337
  delete: Remover
338
+ explain_media_library_html: Upload images, video and audio here for use in
339
+ your blog posts and pages. Please note that <strong>all uploaded files will
340
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
338
341
  file_size: Tamanho do arquivo
339
342
  filename: Nome do arquivo
340
343
  media_library: Biblioteca
@@ -346,6 +346,9 @@ ro:
346
346
  content_type: Tip de conținut (content type)
347
347
  date: Date
348
348
  delete: Delete
349
+ explain_media_library_html: Upload images, video and audio here for use in
350
+ your blog posts and pages. Please note that <strong>all uploaded files will
351
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
349
352
  file_size: Dimensiunea fișierului
350
353
  filename: Nume de fișier
351
354
  media_library: Media Library
@@ -358,6 +358,9 @@ ru:
358
358
  content_type: Content Type
359
359
  date: Дата
360
360
  delete: Удалить
361
+ explain_media_library_html: Upload images, video and audio here for use in
362
+ your blog posts and pages. Please note that <strong>all uploaded files will
363
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
361
364
  file_size: Размер Файла
362
365
  filename: Имя Файла
363
366
  media_library: Медиатека
@@ -579,7 +582,7 @@ ru:
579
582
  logged_in_as: Вы вошли как %{login}
580
583
  logout_html: Выйти »
581
584
  manage_users: Управление пользователями
582
- media_library: Файлы
585
+ media_library: Медиатека
583
586
  new: Добавить...
584
587
  new_article: Новый пост
585
588
  new_media: Новый файл
@@ -330,6 +330,9 @@ zh-CN:
330
330
  content_type: 內容類型
331
331
  date: 日期
332
332
  delete: 删除
333
+ explain_media_library_html: Upload images, video and audio here for use in
334
+ your blog posts and pages. Please note that <strong>all uploaded files will
335
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
333
336
  file_size: 檔案大小
334
337
  filename: 檔案名稱
335
338
  media_library: Media Library
@@ -331,6 +331,9 @@ zh-TW:
331
331
  content_type: 內容類型
332
332
  date: Date
333
333
  delete: 刪除
334
+ explain_media_library_html: Upload images, video and audio here for use in
335
+ your blog posts and pages. Please note that <strong>all uploaded files will
336
+ be publicly accessible even if they're not used in blog posts or pages</strong>.
334
337
  file_size: 檔案大小
335
338
  filename: 檔案名稱
336
339
  media_library: Media Library
data/config/routes.rb CHANGED
@@ -36,10 +36,11 @@ Rails.application.routes.draw do
36
36
  get "/pages/*name", to: "articles#view_page", format: false
37
37
  get "previews(/:id)", to: "articles#preview", format: false
38
38
  get "previews_pages(/:id)", to: "articles#preview_page", format: false
39
- get "check_password", to: "articles#check_password", format: false
40
39
  get "articles/markup_help/:id", to: "articles#markup_help", format: false
41
40
  get "articles/tag", to: "articles#tag", format: false
42
41
 
42
+ post "check_password", to: "articles#check_password", format: false
43
+
43
44
  # SetupController
44
45
  get "/setup", to: "setup#index", format: false
45
46
  post "/setup", to: "setup#create", format: false
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PublifyCore
4
- VERSION = "9.2.5"
4
+ VERSION = "9.2.8"
5
5
  end
@@ -31,7 +31,7 @@ class SpamProtection
31
31
  end
32
32
  end
33
33
 
34
- protected
34
+ private
35
35
 
36
36
  def scan_ip(ip_address)
37
37
  logger.info("[SP] Scanning IP #{ip_address}")
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.2.5
4
+ version: 9.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-10-11 00:00:00.000000000 Z
14
+ date: 2022-05-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: aasm
@@ -579,6 +579,7 @@ files:
579
579
  - app/assets/javascripts/bootstrap/modal.js
580
580
  - app/assets/javascripts/bootstrap/tab.js
581
581
  - app/assets/javascripts/bootstrap/transition.js
582
+ - app/assets/javascripts/check_password.js
582
583
  - app/assets/javascripts/cookies.js
583
584
  - app/assets/javascripts/datetimepicker.js
584
585
  - app/assets/javascripts/lang/da_DK.js