publify_core 9.2.5 → 9.2.8

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.

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