Skip to content

Commit 300b1f5

Browse files
Allow to define whether wikis are enabled by default
Since enablement of wikis is not handled through a module anymore, we have to treat them explicitly.
1 parent 334842d commit 300b1f5

9 files changed

Lines changed: 55 additions & 5 deletions

File tree

app/forms/settings/new_project_settings_form.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class NewProjectSettingsForm < ApplicationForm
3535
name: :default_projects_public
3636
)
3737

38+
f.check_box(
39+
name: :default_projects_wiki
40+
)
41+
3842
f.check_box_group(
3943
name: :default_projects_modules,
4044
label: I18n.t(:setting_default_projects_modules)

app/services/projects/set_attributes_service.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def set_default_attributes(attributes)
6060
attribute_keys = attributes.keys.map(&:to_s)
6161

6262
set_default_public(attribute_keys.include?("public"))
63+
set_default_wiki
6364
set_default_module_names(attribute_keys.include?("enabled_module_names"))
6465
set_default_types(attribute_keys.intersect?(%w[types type_ids project_types]))
6566
set_default_active_work_package_custom_fields(attribute_keys.include?("work_package_custom_fields"))
@@ -70,6 +71,10 @@ def set_default_public(provided)
7071
model.public = Setting.default_projects_public? unless provided
7172
end
7273

74+
def set_default_wiki
75+
model.build_wiki(start_page: "Wiki", enabled: Setting.default_projects_wiki?) if model.wiki.nil?
76+
end
77+
7378
def set_default_module_names(provided)
7479
model.enabled_module_names = Setting.default_projects_modules if !provided && model.enabled_module_names.empty?
7580
end

config/constants/settings/definition.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ class Definition
372372
},
373373
default_projects_modules: {
374374
default: -> {
375-
base_modules = %w[calendar board_view work_package_tracking gantt news costs wiki]
375+
base_modules = %w[calendar board_view work_package_tracking gantt news costs]
376376
if Setting.real_time_text_collaboration_enabled?
377377
base_modules + %w[documents]
378378
else
@@ -384,6 +384,9 @@ class Definition
384384
default_projects_public: {
385385
default: false
386386
},
387+
default_projects_wiki: {
388+
default: true
389+
},
387390
demo_projects_available: {
388391
default: false
389392
},

config/locales/en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5422,6 +5422,7 @@ en:
54225422
setting_default_language: "Default language"
54235423
setting_default_projects_modules: "Default enabled modules for new projects"
54245424
setting_default_projects_public: "New projects are public by default"
5425+
setting_default_projects_wiki: "Enables wiki functionality for new projects by default"
54255426
setting_diff_max_lines_displayed: "Max number of diff lines displayed"
54265427
setting_disable_password_login: "Disable password authentication"
54275428
setting_display_subprojects_work_packages: "Display subprojects work packages on main projects by default"

docs/installation-and-operations/configuration/environment/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,9 @@ OPENPROJECT_DAYS__PER__MONTH (default=20) This will define what is considered a
197197
OPENPROJECT_DEFAULT__AUTO__HIDE__POPUPS (default=true) Whether to automatically hide success notifications by default
198198
OPENPROJECT_DEFAULT__COMMENT__SORT__ORDER (default="asc") Default sort order for activities
199199
OPENPROJECT_DEFAULT__LANGUAGE (default="en") Default language
200-
OPENPROJECT_DEFAULT__PROJECTS__MODULES (default=["calendar", "board_view", "work_package_tracking", "gantt", "news", "costs", "wiki"]) Default enabled modules for new projects
200+
OPENPROJECT_DEFAULT__PROJECTS__MODULES (default=["calendar", "board_view", "work_package_tracking", "gantt", "news", "costs"]) Default enabled modules for new projects
201201
OPENPROJECT_DEFAULT__PROJECTS__PUBLIC (default=false) New projects are public by default
202+
OPENPROJECT_DEFAULT__PROJECTS__WIKI (default=true) Enables wiki functionality for new projects by default
202203
OPENPROJECT_DEMO__PROJECTS__AVAILABLE (default=false)
203204
OPENPROJECT_DEMO__VIEW__OF__TYPE__GANTT__SEEDED (default=false)
204205
OPENPROJECT_DEMO__VIEW__OF__TYPE__TEAM__PLANNER__SEEDED (default=false)

spec/models/setting_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@
564564
describe "default_projects_modules conditional default" do
565565
shared_examples "base modules unchanged" do
566566
it "includes the base modules" do
567-
base_modules = %w[calendar board_view work_package_tracking gantt news costs wiki]
567+
base_modules = %w[calendar board_view work_package_tracking gantt news costs]
568568
expect(Settings::Definition[:default_projects_modules].default).to include(*base_modules)
569569
end
570570
end

spec/requests/api/v3/projects/copy/copy_resource_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@
159159
expect(project).to be_present
160160

161161
expect(source_project.wiki.pages.count).to eq 1
162-
expect(project.wiki).to be_nil
162+
expect(project.wiki.pages.count).to eq 0
163163

164164
expect(source_project.work_packages.count).to eq 1
165165
expect(project.work_packages.count).to eq 1

spec/services/projects/copy_service_integration_spec.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1306,7 +1306,9 @@ def copy_of(original_work_package)
13061306
expect(project_copy.work_packages.count).to eq 0
13071307
expect(project_copy.forums.count).to eq 0
13081308
# Default wiki page
1309-
expect(project_copy.wiki).to be_nil
1309+
expect(project_copy.wiki).to be_present
1310+
expect(project_copy.wiki.enabled?).to eq(source.wiki.enabled?)
1311+
expect(project_copy.wiki.pages.count).to eq 0
13101312
expect(project_copy.queries.count).to eq 0
13111313
expect(project_copy.versions.count).to eq 0
13121314
expect(project_copy.phases.count).to eq 0

spec/services/projects/set_attributes_service_spec.rb

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,40 @@
159159
end
160160
end
161161

162+
describe "wiki default value" do
163+
context "when enabling wikis by default", with_settings: { default_projects_wiki: true } do
164+
it "enables the wiki" do
165+
expect(subject.result.wiki).to be_enabled
166+
end
167+
168+
context "and when the project already has a disabled wiki" do
169+
before do
170+
project.build_wiki(enabled: false)
171+
end
172+
173+
it "keeps the wiki disabled" do
174+
expect(subject.result.wiki).not_to be_enabled
175+
end
176+
end
177+
end
178+
179+
context "when disabling wikis by default", with_settings: { default_projects_wiki: false } do
180+
it "creates the wiki, but disabled" do
181+
expect(subject.result.wiki).not_to be_enabled
182+
end
183+
184+
context "and when the project already has an enabled wiki" do
185+
before do
186+
project.build_wiki(enabled: true)
187+
end
188+
189+
it "keeps the wiki enabled" do
190+
expect(subject.result.wiki).to be_enabled
191+
end
192+
end
193+
end
194+
end
195+
162196
describe "enabled_module_names default value", with_settings: { default_projects_modules: ["lorem", "ipsum"] } do
163197
context "with a value for enabled_module_names provided" do
164198
let(:call_attributes) do

0 commit comments

Comments
 (0)