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,7 +28,7 @@ class Project < ActiveRecord::Base | ||
| 28 | class TransferError < StandardError; end | 28 | class TransferError < StandardError; end |
| 29 | 29 | ||
| 30 | attr_accessible :name, :path, :description, :default_branch, :issues_tracker, | 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 | :wiki_enabled, :public, :import_url, as: [:default, :admin] | 32 | :wiki_enabled, :public, :import_url, as: [:default, :admin] |
| 33 | 33 | ||
| 34 | attr_accessible :namespace_id, :creator_id, as: :admin | 34 | attr_accessible :namespace_id, :creator_id, as: :admin |
| @@ -74,6 +74,7 @@ class Project < ActiveRecord::Base | @@ -74,6 +74,7 @@ class Project < ActiveRecord::Base | ||
| 74 | message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } | 74 | message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } |
| 75 | validates :issues_enabled, :wall_enabled, :merge_requests_enabled, | 75 | validates :issues_enabled, :wall_enabled, :merge_requests_enabled, |
| 76 | :wiki_enabled, inclusion: { in: [true, false] } | 76 | :wiki_enabled, inclusion: { in: [true, false] } |
| 77 | + validates :issues_tracker_id, length: { within: 0..255 } | ||
| 77 | 78 | ||
| 78 | validates_uniqueness_of :name, scope: :namespace_id | 79 | validates_uniqueness_of :name, scope: :namespace_id |
| 79 | validates_uniqueness_of :path, scope: :namespace_id | 80 | validates_uniqueness_of :path, scope: :namespace_id |
| @@ -217,6 +218,10 @@ class Project < ActiveRecord::Base | @@ -217,6 +218,10 @@ class Project < ActiveRecord::Base | ||
| 217 | self.issues_tracker == Project.issues_tracker.default_value | 218 | self.issues_tracker == Project.issues_tracker.default_value |
| 218 | end | 219 | end |
| 219 | 220 | ||
| 221 | + def can_have_issues_tracker_id? | ||
| 222 | + self.issues_enabled && !self.used_default_issues_tracker? | ||
| 223 | + end | ||
| 224 | + | ||
| 220 | def services | 225 | def services |
| 221 | [gitlab_ci_service].compact | 226 | [gitlab_ci_service].compact |
| 222 | end | 227 | end |
app/views/admin/projects/_form.html.haml
| @@ -36,6 +36,10 @@ | @@ -36,6 +36,10 @@ | ||
| 36 | .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled }) | 36 | .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled }) |
| 37 | 37 | ||
| 38 | .clearfix | 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 | = f.label :merge_requests_enabled, "Merge Requests" | 43 | = f.label :merge_requests_enabled, "Merge Requests" |
| 40 | .input= f.check_box :merge_requests_enabled | 44 | .input= f.check_box :merge_requests_enabled |
| 41 | 45 |
app/views/projects/_form.html.haml
| @@ -28,6 +28,10 @@ | @@ -28,6 +28,10 @@ | ||
| 28 | = f.label :issues_tracker, "Issues tracker", class: 'control-label' | 28 | = f.label :issues_tracker, "Issues tracker", class: 'control-label' |
| 29 | .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled }) | 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 | .control-group | 35 | .control-group |
| 32 | = f.label :merge_requests_enabled, "Merge Requests", class: 'control-label' | 36 | = f.label :merge_requests_enabled, "Merge Requests", class: 'control-label' |
| 33 | .controls | 37 | .controls |
config/gitlab.yml.example
| @@ -7,8 +7,6 @@ | @@ -7,8 +7,6 @@ | ||
| 7 | # 2. Replace gitlab -> host with your domain | 7 | # 2. Replace gitlab -> host with your domain |
| 8 | # 3. Replace gitlab -> email_from | 8 | # 3. Replace gitlab -> email_from |
| 9 | 9 | ||
| 10 | -<<<<<<< HEAD | ||
| 11 | -<<<<<<< HEAD | ||
| 12 | production: &base | 10 | production: &base |
| 13 | # | 11 | # |
| 14 | # 1. GitLab app settings | 12 | # 1. GitLab app settings |
| @@ -43,9 +41,7 @@ production: &base | @@ -43,9 +41,7 @@ production: &base | ||
| 43 | ## External issues trackers | 41 | ## External issues trackers |
| 44 | issues_tracker: | 42 | issues_tracker: |
| 45 | redmine: | 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 | ## Use placeholders: | 45 | ## Use placeholders: |
| 50 | ## :project_id - Gitlab project identifier | 46 | ## :project_id - Gitlab project identifier |
| 51 | ## :issues_tracker_id - Project Name or Id in external issue tracker | 47 | ## :issues_tracker_id - Project Name or Id in external issue tracker |
spec/factories.rb
| @@ -31,6 +31,7 @@ FactoryGirl.define do | @@ -31,6 +31,7 @@ FactoryGirl.define do | ||
| 31 | 31 | ||
| 32 | factory :redmine_project, parent: :project do | 32 | factory :redmine_project, parent: :project do |
| 33 | issues_tracker { "redmine" } | 33 | issues_tracker { "redmine" } |
| 34 | + issues_tracker_id { "project_name_in_redmine" } | ||
| 34 | end | 35 | end |
| 35 | 36 | ||
| 36 | factory :group do | 37 | factory :group do |
spec/models/project_spec.rb
| @@ -60,6 +60,7 @@ describe Project do | @@ -60,6 +60,7 @@ describe Project do | ||
| 60 | it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) } | 60 | it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) } |
| 61 | it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) } | 61 | it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) } |
| 62 | it { should ensure_inclusion_of(:wiki_enabled).in_array([true, false]) } | 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 | it "should not allow new projects beyond user limits" do | 65 | it "should not allow new projects beyond user limits" do |
| 65 | project.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 1)) | 66 | project.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 1)) |
| @@ -223,4 +224,24 @@ describe Project do | @@ -223,4 +224,24 @@ describe Project do | ||
| 223 | end | 224 | end |
| 224 | end | 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 | end | 247 | end |