mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
2d391565e4
Static topics are the seeded topics that are automatically created for every Discourse instance to hold the content for the FAQ, ToS and Privacy pages. These topics are allowed to bypass the minimum title length checks when they're edited by admins:
ba27ee1637/app/assets/javascripts/discourse/app/models/composer.js (L487-L496)
However, on the server-side, the "quality title" validations aren't skipped for static topics and that can cause confusion for admins when they change the title of a static topic to something that's short enough to fail the quality title validations. This commit ignores all quality title validations on static topics when they're edited by admins.
Internal topic: t/75745.
25 lines
738 B
Ruby
25 lines
738 B
Ruby
# frozen_string_literal: true
|
|
|
|
require 'text_sentinel'
|
|
require 'text_cleaner'
|
|
|
|
class QualityTitleValidator < ActiveModel::EachValidator
|
|
def validate_each(record, attribute, value)
|
|
return if Discourse.static_doc_topic_ids.include?(record.id) && record.acting_user&.admin?
|
|
|
|
sentinel = TextSentinel.title_sentinel(value)
|
|
|
|
if !sentinel.valid?
|
|
if !sentinel.seems_meaningful?
|
|
record.errors.add(attribute, :is_invalid_meaningful)
|
|
elsif !sentinel.seems_unpretentious?
|
|
record.errors.add(attribute, :is_invalid_unpretentious)
|
|
elsif !sentinel.seems_quiet?
|
|
record.errors.add(attribute, :is_invalid_quiet)
|
|
else
|
|
record.errors.add(attribute, :is_invalid)
|
|
end
|
|
end
|
|
end
|
|
end
|