0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-24 18:30:27 +01:00

Add enabled? wrapper for CustomField extensions

Dieser Commit ist enthalten in:
Angus McLeod 2020-12-01 18:20:02 +11:00
Ursprung f6f77547d7
Commit 39ce7248a8
6 geänderte Dateien mit 51 neuen und 14 gelöschten Zeilen

Datei anzeigen

@ -1,5 +1,5 @@
{ {
"result": { "result": {
"covered_percent": 89.17 "covered_percent": 89.25
} }
} }

Datei anzeigen

@ -1,6 +1,6 @@
module CustomWizardCustomFieldPreloader module CustomWizardCustomFieldPreloader
def preload_custom_fields(objects, fields) def preload_custom_fields(objects, fields)
if objects.present? if objects.present? && cw_fields_enabled?
@cw_klass = objects.first.class.name.underscore @cw_klass = objects.first.class.name.underscore
if cw_fields.any? if cw_fields.any?
cw_fields.each do |field| cw_fields.each do |field|
@ -11,6 +11,10 @@ module CustomWizardCustomFieldPreloader
super(objects, fields) super(objects, fields)
end end
def cw_fields_enabled?
SiteSetting.custom_wizard_enabled && CustomWizard::CustomField.enabled?
end
def cw_fields def cw_fields
CustomWizard::CustomField.list_by(:klass, @cw_klass) CustomWizard::CustomField.list_by(:klass, @cw_klass)
end end

Datei anzeigen

@ -1,14 +1,17 @@
module CustomWizardCustomFieldSerializer module CustomWizardCustomFieldSerializer
def attributes(*args) def attributes(*args)
hash = super hash = super
@cw_klass = get_cw_class
if cw_fields.any? if cw_fields_enabled?
cw_fields.each do |field| @cw_klass = get_cw_class
if @cw_klass == "topic_view"
hash[field.name.to_sym] = object.topic.custom_fields["#{field.name}"] if cw_fields.any?
else cw_fields.each do |field|
hash[field.name.to_sym] = object.custom_fields["#{field.name}"] if @cw_klass == "topic_view"
hash[field.name.to_sym] = object.topic.custom_fields["#{field.name}"]
else
hash[field.name.to_sym] = object.custom_fields["#{field.name}"]
end
end end
end end
end end
@ -17,6 +20,10 @@ module CustomWizardCustomFieldSerializer
end end
private private
def cw_fields_enabled?
SiteSetting.custom_wizard_enabled && CustomWizard::CustomField.enabled?
end
def cw_fields def cw_fields
CustomWizard::CustomField.list_by(:serializers, @cw_klass) CustomWizard::CustomField.list_by(:serializers, @cw_klass)

Datei anzeigen

@ -122,6 +122,7 @@ class ::CustomWizard::CustomField
def self.reset def self.reset
@list = nil @list = nil
@any = nil
end end
def self.list def self.list
@ -199,4 +200,16 @@ class ::CustomWizard::CustomField
Discourse.clear_readonly! Discourse.clear_readonly!
Discourse.request_refresh! Discourse.request_refresh!
end end
def self.any?
if @any.nil?
@any = PluginStoreRow.where(plugin_name: NAMESPACE).exists?
else
@any
end
end
def self.enabled?
any?
end
end end

Datei anzeigen

@ -173,11 +173,13 @@ after_initialize do
CustomWizard::CustomField::CLASSES.keys.each do |klass| CustomWizard::CustomField::CLASSES.keys.each do |klass|
add_model_callback(klass, :after_initialize) do add_model_callback(klass, :after_initialize) do
CustomWizard::CustomField.list_by(:klass, klass.to_s).each do |field| if CustomWizard::CustomField.enabled?
klass.to_s CustomWizard::CustomField.list_by(:klass, klass.to_s).each do |field|
.classify klass.to_s
.constantize .classify
.register_custom_field_type(field.name, field.type.to_sym) .constantize
.register_custom_field_type(field.name, field.type.to_sym)
end
end end
end end

Datei anzeigen

@ -175,4 +175,15 @@ describe CustomWizard::CustomField do
expect(CustomWizard::CustomField.list_by(:klass, 'topic').length).to eq(1) expect(CustomWizard::CustomField.list_by(:klass, 'topic').length).to eq(1)
end end
end end
it "is enabled if there are custom fields" do
custom_field_json['custom_fields'].each do |field_json|
CustomWizard::CustomField.new(nil, field_json).save
end
expect(CustomWizard::CustomField.enabled?).to eq(true)
end
it "is not enabled if there are no custom fields" do
expect(CustomWizard::CustomField.enabled?).to eq(false)
end
end end