Commit 0afdf39dbcc50eb5889be08e5b1aaefe162e456c

Authored by Andrew8xx8
1 parent 62de22c1

New field added

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 &lt; 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 &lt; 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: &amp;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
... ... @@ -31,6 +31,7 @@ FactoryGirl.define do
31 31  
32 32 factory :redmine_project, parent: :project do
33 33 issues_tracker { "redmine" }
  34 + issues_tracker_id { "project_name_in_redmine" }
34 35 end
35 36  
36 37 factory :group do
... ...
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
... ...