mirror of
https://github.com/discourse/discourse.git
synced 2024-12-14 01:43:57 +08:00
DEV: Allow specifying button class in reviewable action definitions (#8093)
This avoids the need for using `@extend` in SCSS, which can be problematic in plugins For context, see https://review.discourse.org/t/fix-make-compatible-with-debundled-plugin-css-assets-feature/5297/7
This commit is contained in:
parent
67e8fbc480
commit
68fc799380
|
@ -9,7 +9,7 @@
|
|||
disabled=reviewableUpdating}}
|
||||
{{else}}
|
||||
{{d-button
|
||||
class=(concat "reviewable-action " (dasherize first.id))
|
||||
class=(concat "reviewable-action " (dasherize first.id) " " first.button_class)
|
||||
icon=first.icon
|
||||
action=(action "perform" first)
|
||||
translatedLabel=first.label
|
||||
|
|
|
@ -259,10 +259,6 @@
|
|||
.reviewable-action,
|
||||
.reviewable-action-dropdown {
|
||||
margin-right: 0.5em;
|
||||
|
||||
&.delete-user {
|
||||
@extend .btn-danger;
|
||||
}
|
||||
}
|
||||
}
|
||||
padding-bottom: 1em;
|
||||
|
|
|
@ -267,10 +267,11 @@ protected
|
|||
end
|
||||
end
|
||||
|
||||
def build_action(actions, id, icon:, bundle: nil, client_action: nil, confirm: false)
|
||||
def build_action(actions, id, icon:, button_class: nil, bundle: nil, client_action: nil, confirm: false)
|
||||
actions.add(id, bundle: bundle) do |action|
|
||||
prefix = "reviewables.actions.#{id}"
|
||||
action.icon = icon
|
||||
action.button_class = button_class
|
||||
action.label = "#{prefix}.title"
|
||||
action.description = "#{prefix}.description"
|
||||
action.client_action = client_action
|
||||
|
|
|
@ -29,6 +29,7 @@ class ReviewableQueuedPost < Reviewable
|
|||
if pending? && guardian.can_delete_user?(created_by)
|
||||
actions.add(:delete_user) do |action|
|
||||
action.icon = 'trash-alt'
|
||||
action.button_class = 'btn-danger'
|
||||
action.label = 'reviewables.actions.delete_user.title'
|
||||
action.confirm_message = 'reviewables.actions.delete_user.confirm'
|
||||
end
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ReviewableActionSerializer < ApplicationSerializer
|
||||
attributes :id, :icon, :label, :confirm_message, :description, :client_action
|
||||
attributes :id, :icon, :button_class, :label, :confirm_message, :description, :client_action
|
||||
|
||||
def label
|
||||
I18n.t(object.label)
|
||||
|
|
|
@ -33,11 +33,11 @@ class Reviewable < ActiveRecord::Base
|
|||
end
|
||||
|
||||
class Action < Item
|
||||
attr_accessor :icon, :label, :description, :confirm_message, :client_action
|
||||
attr_accessor :icon, :button_class, :label, :description, :confirm_message, :client_action
|
||||
|
||||
def initialize(id, icon = nil, label = nil)
|
||||
def initialize(id, icon = nil, button_class = nil, label = nil)
|
||||
super(id)
|
||||
@icon, @label = icon, label
|
||||
@icon, @button_class, @label = icon, button_class, label
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -118,6 +118,12 @@ RSpec.describe ReviewableQueuedPost, type: :model do
|
|||
end
|
||||
|
||||
context "delete_user" do
|
||||
it "has the correct button class" do
|
||||
expect(reviewable.actions_for(Guardian.new(moderator)).to_a.
|
||||
find { |a| a.id == :delete_user }.button_class).
|
||||
to eq("btn-danger")
|
||||
end
|
||||
|
||||
it "deletes the user and rejects the post" do
|
||||
other_reviewable = Fabricate(:reviewable_queued_post, created_by: reviewable.created_by)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user