Commit c7cb7599e23a37f3ff97522a43bbd97222d86774

Authored by Dmitriy Zaporozhets
2 parents 3811e434 cc1eb965

Merge pull request #5022 from amacarthur/config-public-project

make public/private setting for project creation configurable
app/contexts/projects/create_context.rb
... ... @@ -16,7 +16,8 @@ module Projects
16 16 wiki_enabled: default_features.wiki,
17 17 wall_enabled: default_features.wall,
18 18 snippets_enabled: default_features.snippets,
19   - merge_requests_enabled: default_features.merge_requests
  19 + merge_requests_enabled: default_features.merge_requests,
  20 + public: default_features.public
20 21 }
21 22  
22 23 @project = Project.new(default_opts.merge(params))
... ...
app/views/projects/new.html.haml
... ... @@ -2,8 +2,12 @@
2 2 .project-edit-errors
3 3 = render 'projects/errors'
4 4 .project-edit-content
5   - %p.slead
6   - New projects are private by default. You choose who can see the project and commit to repository.
  5 + - if Gitlab.config.gitlab.default_projects_features.public
  6 + %p.slead
  7 + New projects are public by default. Any signed in user can see your project but cannot commit to it unless granted access.
  8 + - else
  9 + %p.slead
  10 + New projects are private by default. You choose who can see the project and commit to repository.
7 11 %hr
8 12 = form_for @project, remote: true do |f|
9 13 .control-group.project-name-holder
... ...
config/gitlab.yml.example
... ... @@ -58,6 +58,7 @@ production: &base
58 58 wiki: true
59 59 wall: false
60 60 snippets: false
  61 + public: false
61 62  
62 63 ## External issues trackers
63 64 issues_tracker:
... ...
config/initializers/1_settings.rb
... ... @@ -75,6 +75,7 @@ Settings.gitlab.default_projects_features['merge_requests'] = true if Settings.g
75 75 Settings.gitlab.default_projects_features['wiki'] = true if Settings.gitlab.default_projects_features['wiki'].nil?
76 76 Settings.gitlab.default_projects_features['wall'] = false if Settings.gitlab.default_projects_features['wall'].nil?
77 77 Settings.gitlab.default_projects_features['snippets'] = false if Settings.gitlab.default_projects_features['snippets'].nil?
  78 +Settings.gitlab.default_projects_features['public'] = false if Settings.gitlab.default_projects_features['public'].nil?
78 79  
79 80 #
80 81 # Gravatar
... ...
spec/contexts/projects_create_context_spec.rb
... ... @@ -30,6 +30,37 @@ describe Projects::CreateContext do
30 30 it { @project.owner.should == @user }
31 31 it { @project.namespace.should == @group }
32 32 end
  33 +
  34 + context 'respect configured public setting' do
  35 + before(:each) do
  36 + @settings = double("settings")
  37 + @settings.stub(:issues) { true }
  38 + @settings.stub(:merge_requests) { true }
  39 + @settings.stub(:wiki) { true }
  40 + @settings.stub(:wall) { true }
  41 + @settings.stub(:snippets) { true }
  42 + stub_const("Settings", Class.new)
  43 + Settings.stub_chain(:gitlab, :default_projects_features).and_return(@settings)
  44 + end
  45 +
  46 + context 'should be public when setting is public' do
  47 + before do
  48 + @settings.stub(:public) { true }
  49 + @project = create_project(@user, @opts)
  50 + end
  51 +
  52 + it { @project.public.should be_true }
  53 + end
  54 +
  55 + context 'should be private when setting is not public' do
  56 + before do
  57 + @settings.stub(:public) { false }
  58 + @project = create_project(@user, @opts)
  59 + end
  60 +
  61 + it { @project.public.should be_false }
  62 + end
  63 + end
33 64 end
34 65  
35 66 def create_project(user, opts)
... ...