mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-05 03:41:24 +08:00
Moderation settings (topic/reply approval, slow mode, auto-close, auto-bump) are currently buried inside the Settings tab in the simplified category editor. A dedicated tab makes these settings more discoverable. This commit extracts the moderation section into its own tab, visible in the advanced tabs section after "Settings". Only the simplified layout is affected since the legacy layout is about to be removed.
231 lines
6.1 KiB
Ruby
231 lines
6.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Pages
|
|
class Category < PageObjects::Pages::Base
|
|
def visit(category)
|
|
page.visit("/c/#{category.id}")
|
|
self
|
|
end
|
|
|
|
def visit_settings(category)
|
|
page.visit("/c/#{category.slug}/edit/settings")
|
|
self
|
|
end
|
|
|
|
def visit_moderation(category)
|
|
page.visit("/c/#{category.slug}/edit/moderation")
|
|
self
|
|
end
|
|
|
|
def visit_general(category, subcategory = nil)
|
|
if subcategory
|
|
page.visit("/c/#{category.slug}/#{subcategory.slug}/edit/general")
|
|
else
|
|
page.visit("/c/#{category.slug}/edit/general")
|
|
end
|
|
self
|
|
end
|
|
|
|
def visit_edit_template(category)
|
|
page.visit("/c/#{category.slug}/edit/topic-template")
|
|
self
|
|
end
|
|
|
|
def visit_edit_localizations(category)
|
|
page.visit("/c/#{category.slug}/edit/localizations")
|
|
end
|
|
|
|
def visit_categories
|
|
page.visit("/categories")
|
|
self
|
|
end
|
|
|
|
def visit_new_category
|
|
page.visit("/new-category/setup")
|
|
self
|
|
end
|
|
|
|
def visit_security(category)
|
|
page.visit("/c/#{category.slug}/edit/security")
|
|
self
|
|
end
|
|
|
|
def visit_tags(category)
|
|
page.visit("/c/#{category.slug}/edit/tags")
|
|
self
|
|
end
|
|
|
|
def visit_appearance(category)
|
|
visit_images(category)
|
|
self
|
|
end
|
|
|
|
def visit_images(category)
|
|
page.visit("/c/#{category.slug}/edit/images")
|
|
self
|
|
end
|
|
|
|
def back_to_category
|
|
find(".edit-category .back-button").click
|
|
self
|
|
end
|
|
|
|
def save_settings
|
|
if page.has_css?(".admin-changes-banner", wait: 0)
|
|
find(".admin-changes-banner .btn-primary").click
|
|
else
|
|
find("#save-category").click
|
|
end
|
|
self
|
|
end
|
|
|
|
def toggle_setting(setting, text = "")
|
|
find(".edit-category-tab .#{setting} label.checkbox-label", text: text, visible: :all).click
|
|
self
|
|
end
|
|
|
|
def has_form_template_enabled?
|
|
find(".d-toggle-switch .toggle-template-type", visible: false)["aria-checked"] == "true"
|
|
end
|
|
|
|
D_EDITOR_SELECTOR = ".d-editor"
|
|
|
|
def has_d_editor?
|
|
page.has_selector?(D_EDITOR_SELECTOR)
|
|
end
|
|
|
|
def has_no_d_editor?
|
|
page.has_no_selector?(D_EDITOR_SELECTOR)
|
|
end
|
|
|
|
def has_selected_template?(template_name)
|
|
has_css?(".select-category-template .select-kit-header[data-name='#{template_name}']")
|
|
end
|
|
|
|
def toggle_form_templates
|
|
PageObjects::Components::DToggleSwitch.new(".toggle-template-type").toggle
|
|
self
|
|
end
|
|
|
|
def toggle_advanced_settings
|
|
PageObjects::Components::DToggleSwitch.new(".d-toggle-switch__checkbox").toggle
|
|
self
|
|
end
|
|
|
|
def toggle_checkbox(label_text)
|
|
find("label.checkbox-label", text: label_text).click
|
|
self
|
|
end
|
|
|
|
def toggle_form_container(title)
|
|
find(".form-kit__container", text: title).find("label.d-toggle-switch__label").click
|
|
self
|
|
end
|
|
|
|
def select_form_template(template_name)
|
|
find(".select-category-template").click
|
|
find(".select-kit-collection .select-kit-row", text: template_name).click
|
|
find(".select-category-template").click
|
|
end
|
|
|
|
def new_topic_button
|
|
find("#create-topic")
|
|
end
|
|
|
|
def category_box(category)
|
|
find(".category-boxes .category-box[data-category-id='#{category.id}']")
|
|
end
|
|
|
|
CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR = ".category-navigation .nav-item_new"
|
|
|
|
def has_no_new_topics?
|
|
page.has_no_css?(CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR)
|
|
end
|
|
|
|
def has_new_topics?
|
|
page.has_css?(CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR)
|
|
end
|
|
|
|
def click_new
|
|
page.find(CATEGORY_NAVIGATION_NEW_NAV_ITEM_SELECTOR).click
|
|
end
|
|
|
|
def click_setting_tab(name)
|
|
find(".edit-category-nav .edit-category-#{name}").click
|
|
self
|
|
end
|
|
|
|
def click_edit_category
|
|
find(".navigation-controls .edit-category").click
|
|
self
|
|
end
|
|
|
|
def has_public_access_message?
|
|
page.has_content?(
|
|
I18n.t(
|
|
"js.category.permissions.everyone_full_access",
|
|
everyone_group: ::Group[:everyone].name,
|
|
),
|
|
)
|
|
end
|
|
|
|
def has_no_public_access_message?
|
|
page.has_no_content?(
|
|
I18n.t(
|
|
"js.category.permissions.everyone_full_access",
|
|
everyone_group: ::Group[:everyone].name,
|
|
),
|
|
)
|
|
end
|
|
|
|
def has_setting_tab?(tab_name)
|
|
tab_css = ".edit-category-#{tab_name}"
|
|
page.has_css?(tab_css)
|
|
end
|
|
|
|
def has_no_setting_tab?(tab_name)
|
|
tab_css = ".edit-category-#{tab_name}"
|
|
page.has_no_css?(tab_css)
|
|
end
|
|
|
|
def has_category_title?(title)
|
|
page.has_css?(".category-header h1", text: title)
|
|
end
|
|
|
|
def topic_posting_review_mode_chooser(simplified: true)
|
|
if simplified
|
|
PageObjects::Components::SelectKit.new(
|
|
".form-kit__field[data-name='category_setting.topic_posting_review_mode'] .combo-box",
|
|
)
|
|
else
|
|
PageObjects::Components::SelectKit.new(".topic-posting-review-mode .combo-box")
|
|
end
|
|
end
|
|
|
|
def topic_posting_review_group_chooser(simplified: true)
|
|
if simplified
|
|
PageObjects::Components::SelectKit.new(".form-kit .group-chooser")
|
|
else
|
|
PageObjects::Components::SelectKit.new(".topic-posting-review-mode .group-chooser")
|
|
end
|
|
end
|
|
|
|
def has_posting_review_groups_error?
|
|
page.has_content?(I18n.t("js.category.validations.groups_required"))
|
|
end
|
|
|
|
def has_no_posting_review_groups_error?
|
|
page.has_no_content?(I18n.t("js.category.validations.groups_required"))
|
|
end
|
|
|
|
def has_topic_posting_review_mode?(mode, simplified: true)
|
|
topic_posting_review_mode_chooser(simplified: simplified).has_selected_value?(mode)
|
|
end
|
|
|
|
def has_topic_posting_review_groups?(group, simplified: true)
|
|
topic_posting_review_group_chooser(simplified: simplified).has_selected_value?(group.id)
|
|
end
|
|
end
|
|
end
|
|
end
|