Commit 0afdf39dbcc50eb5889be08e5b1aaefe162e456c
1 parent
62de22c1
Exists in
master
and in
4 other branches
New field added
Showing
6 changed files
with
37 additions
and
6 deletions
Show diff stats
app/models/project.rb
... | ... | @@ -28,7 +28,7 @@ class Project < ActiveRecord::Base |
28 | 28 | class TransferError < StandardError; end |
29 | 29 | |
30 | 30 | attr_accessible :name, :path, :description, :default_branch, :issues_tracker, |
31 | - :issues_enabled, :wall_enabled, :merge_requests_enabled, | |
31 | + :issues_enabled, :wall_enabled, :merge_requests_enabled, :issues_tracker_id, | |
32 | 32 | :wiki_enabled, :public, :import_url, as: [:default, :admin] |
33 | 33 | |
34 | 34 | attr_accessible :namespace_id, :creator_id, as: :admin |
... | ... | @@ -74,6 +74,7 @@ class Project < ActiveRecord::Base |
74 | 74 | message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } |
75 | 75 | validates :issues_enabled, :wall_enabled, :merge_requests_enabled, |
76 | 76 | :wiki_enabled, inclusion: { in: [true, false] } |
77 | + validates :issues_tracker_id, length: { within: 0..255 } | |
77 | 78 | |
78 | 79 | validates_uniqueness_of :name, scope: :namespace_id |
79 | 80 | validates_uniqueness_of :path, scope: :namespace_id |
... | ... | @@ -217,6 +218,10 @@ class Project < ActiveRecord::Base |
217 | 218 | self.issues_tracker == Project.issues_tracker.default_value |
218 | 219 | end |
219 | 220 | |
221 | + def can_have_issues_tracker_id? | |
222 | + self.issues_enabled && !self.used_default_issues_tracker? | |
223 | + end | |
224 | + | |
220 | 225 | def services |
221 | 226 | [gitlab_ci_service].compact |
222 | 227 | end | ... | ... |
app/views/admin/projects/_form.html.haml
... | ... | @@ -36,6 +36,10 @@ |
36 | 36 | .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled }) |
37 | 37 | |
38 | 38 | .clearfix |
39 | + = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label' | |
40 | + .input= f.text_field :issues_tracker_id, class: "xxlarge", disabled: !@project.can_have_issues_tracker_id? | |
41 | + | |
42 | + .clearfix | |
39 | 43 | = f.label :merge_requests_enabled, "Merge Requests" |
40 | 44 | .input= f.check_box :merge_requests_enabled |
41 | 45 | ... | ... |
app/views/projects/_form.html.haml
... | ... | @@ -28,6 +28,10 @@ |
28 | 28 | = f.label :issues_tracker, "Issues tracker", class: 'control-label' |
29 | 29 | .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled }) |
30 | 30 | |
31 | + .clearfix | |
32 | + = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label' | |
33 | + .input= f.text_field :issues_tracker_id, class: "xxlarge", disabled: !@project.can_have_issues_tracker_id? | |
34 | + | |
31 | 35 | .control-group |
32 | 36 | = f.label :merge_requests_enabled, "Merge Requests", class: 'control-label' |
33 | 37 | .controls | ... | ... |
config/gitlab.yml.example
... | ... | @@ -7,8 +7,6 @@ |
7 | 7 | # 2. Replace gitlab -> host with your domain |
8 | 8 | # 3. Replace gitlab -> email_from |
9 | 9 | |
10 | -<<<<<<< HEAD | |
11 | -<<<<<<< HEAD | |
12 | 10 | production: &base |
13 | 11 | # |
14 | 12 | # 1. GitLab app settings |
... | ... | @@ -43,9 +41,7 @@ production: &base |
43 | 41 | ## External issues trackers |
44 | 42 | issues_tracker: |
45 | 43 | redmine: |
46 | - ## If not nil Issues link in project page will be replaced to this | |
47 | - url: "http://redmine.sample" | |
48 | - ## If not nil links from /#\d/ entities from commit messages will replaced to this | |
44 | + ## If not nil, links from /#\d/ entities from commit messages will replaced to this | |
49 | 45 | ## Use placeholders: |
50 | 46 | ## :project_id - Gitlab project identifier |
51 | 47 | ## :issues_tracker_id - Project Name or Id in external issue tracker | ... | ... |
spec/factories.rb
spec/models/project_spec.rb
... | ... | @@ -60,6 +60,7 @@ describe Project do |
60 | 60 | it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) } |
61 | 61 | it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) } |
62 | 62 | it { should ensure_inclusion_of(:wiki_enabled).in_array([true, false]) } |
63 | + it { should ensure_length_of(:issues_tracker_id).is_within(0..255) } | |
63 | 64 | |
64 | 65 | it "should not allow new projects beyond user limits" do |
65 | 66 | project.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 1)) |
... | ... | @@ -223,4 +224,24 @@ describe Project do |
223 | 224 | end |
224 | 225 | end |
225 | 226 | |
227 | + describe :can_have_issues_tracker_id? do | |
228 | + let(:project) { create(:project) } | |
229 | + let(:ext_project) { create(:redmine_project) } | |
230 | + | |
231 | + it "should be true for projects with external issues tracker if issues enabled" do | |
232 | + ext_project.can_have_issues_tracker_id?.should be_true | |
233 | + end | |
234 | + | |
235 | + it "should be false for projects with internal issue tracker if issues enabled" do | |
236 | + project.can_have_issues_tracker_id?.should be_false | |
237 | + end | |
238 | + | |
239 | + it "should be always false if issues disbled" do | |
240 | + project.issues_enabled = false | |
241 | + ext_project.issues_enabled = false | |
242 | + | |
243 | + project.can_have_issues_tracker_id?.should be_false | |
244 | + ext_project.can_have_issues_tracker_id?.should be_false | |
245 | + end | |
246 | + end | |
226 | 247 | end | ... | ... |