diff --git a/app/controllers/api/v0/instances_controller.rb b/app/controllers/api/v0/instances_controller.rb index cd8fef8e8..17cb8fbda 100644 --- a/app/controllers/api/v0/instances_controller.rb +++ b/app/controllers/api/v0/instances_controller.rb @@ -8,6 +8,7 @@ module Api context: ApplicationConfig["FOREM_CONTEXT"], cover_image_url: Settings::General.main_social_image, description: Settings::Community.community_description, + display_in_directory: Settings::UserExperience.display_in_directory, logo_image_url: Settings::General.logo_png, name: Settings::Community.community_name, registered_users_count: User.registered.estimated_count, diff --git a/app/models/settings/user_experience.rb b/app/models/settings/user_experience.rb index f7ef81796..736c8ce23 100644 --- a/app/models/settings/user_experience.rb +++ b/app/models/settings/user_experience.rb @@ -22,5 +22,6 @@ module Settings # a public forem could have more fine-grained authentication (listings ar private etc.) in future setting :public, type: :boolean, default: 0 setting :tag_feed_minimum_score, type: :integer, default: 0 + setting :display_in_directory, type: :boolean, default: true end end diff --git a/app/views/admin/settings/forms/_user_experience.html.erb b/app/views/admin/settings/forms/_user_experience.html.erb index d8edd7fe2..de7c1050e 100644 --- a/app/views/admin/settings/forms/_user_experience.html.erb +++ b/app/views/admin/settings/forms/_user_experience.html.erb @@ -72,6 +72,15 @@

+
+ <%= f.check_box :display_in_directory, checked: Settings::UserExperience.display_in_directory, class: "crayons-checkbox" %> +
+ <%= admin_config_label :display_in_directory, model: Settings::UserExperience %> +

+ Do you want this Forem to be displayed in the Forem Directory? +

+
+
<%= render "update_setting_button", f: f %> diff --git a/spec/requests/admin/configs_spec.rb b/spec/requests/admin/configs_spec.rb index b5142d0f0..0f8b8e84b 100644 --- a/spec/requests/admin/configs_spec.rb +++ b/spec/requests/admin/configs_spec.rb @@ -805,6 +805,15 @@ RSpec.describe "/admin/customization/config", type: :request do } expect(Settings::UserExperience.public).to eq(is_public) end + + it "updates display_in_directory to false" do + default_value = Settings::UserExperience.get_default(:display_in_directory) + expect do + post admin_settings_user_experiences_path, params: { + settings_user_experience: { display_in_directory: false } + } + end.to change(Settings::UserExperience, :display_in_directory).from(default_value).to(false) + end end describe "Credits" do diff --git a/spec/requests/api/v0/instances_spec.rb b/spec/requests/api/v0/instances_spec.rb index 3eb8033a5..cdb4ae267 100644 --- a/spec/requests/api/v0/instances_spec.rb +++ b/spec/requests/api/v0/instances_spec.rb @@ -9,6 +9,7 @@ RSpec.describe "Api::V0::Instances", type: :request do expect(response.parsed_body["context"]).to eq ApplicationConfig["FOREM_CONTEXT"] expect(response.parsed_body["cover_image_url"]).to eq Settings::General.main_social_image expect(response.parsed_body["description"]).to eq Settings::Community.community_description + expect(response.parsed_body["display_in_directory"]).to eq Settings::UserExperience.display_in_directory expect(response.parsed_body["logo_image_url"]).to eq Settings::General.logo_png expect(response.parsed_body["name"]).to eq Settings::Community.community_name expect(response.parsed_body["registered_users_count"]).to eq User.registered.estimated_count