Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew8xx8 <avk@8xx8.ru>2013-02-11 18:17:43 +0400
committerAndrew8xx8 <avk@8xx8.ru>2013-02-28 16:11:13 +0400
commit0afdf39dbcc50eb5889be08e5b1aaefe162e456c (patch)
treecf78d15203985ca45dc18511451551cd0b6e9423
parent62de22c142d0ad9d956e7f6dae2eef4559d38436 (diff)
New field added
-rw-r--r--app/models/project.rb7
-rw-r--r--app/views/admin/projects/_form.html.haml4
-rw-r--r--app/views/projects/_form.html.haml4
-rw-r--r--config/gitlab.yml.example6
-rw-r--r--spec/factories.rb1
-rw-r--r--spec/models/project_spec.rb21
6 files changed, 37 insertions, 6 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 612a318c968..e47e2a094f2 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -28,7 +28,7 @@ class Project < ActiveRecord::Base
class TransferError < StandardError; end
attr_accessible :name, :path, :description, :default_branch, :issues_tracker,
- :issues_enabled, :wall_enabled, :merge_requests_enabled,
+ :issues_enabled, :wall_enabled, :merge_requests_enabled, :issues_tracker_id,
:wiki_enabled, :public, :import_url, as: [:default, :admin]
attr_accessible :namespace_id, :creator_id, as: :admin
@@ -74,6 +74,7 @@ class Project < ActiveRecord::Base
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
validates :issues_enabled, :wall_enabled, :merge_requests_enabled,
:wiki_enabled, inclusion: { in: [true, false] }
+ validates :issues_tracker_id, length: { within: 0..255 }
validates_uniqueness_of :name, scope: :namespace_id
validates_uniqueness_of :path, scope: :namespace_id
@@ -217,6 +218,10 @@ class Project < ActiveRecord::Base
self.issues_tracker == Project.issues_tracker.default_value
end
+ def can_have_issues_tracker_id?
+ self.issues_enabled && !self.used_default_issues_tracker?
+ end
+
def services
[gitlab_ci_service].compact
end
diff --git a/app/views/admin/projects/_form.html.haml b/app/views/admin/projects/_form.html.haml
index 657a66f98ec..9049dcd6791 100644
--- a/app/views/admin/projects/_form.html.haml
+++ b/app/views/admin/projects/_form.html.haml
@@ -36,6 +36,10 @@
.input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled })
.clearfix
+ = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label'
+ .input= f.text_field :issues_tracker_id, class: "xxlarge", disabled: !@project.can_have_issues_tracker_id?
+
+ .clearfix
= f.label :merge_requests_enabled, "Merge Requests"
.input= f.check_box :merge_requests_enabled
diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml
index 7072d78d3ef..c9d623182e3 100644
--- a/app/views/projects/_form.html.haml
+++ b/app/views/projects/_form.html.haml
@@ -28,6 +28,10 @@
= f.label :issues_tracker, "Issues tracker", class: 'control-label'
.input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled })
+ .clearfix
+ = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label'
+ .input= f.text_field :issues_tracker_id, class: "xxlarge", disabled: !@project.can_have_issues_tracker_id?
+
.control-group
= f.label :merge_requests_enabled, "Merge Requests", class: 'control-label'
.controls
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 93824e86853..cc38b3a45ce 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -7,8 +7,6 @@
# 2. Replace gitlab -> host with your domain
# 3. Replace gitlab -> email_from
-<<<<<<< HEAD
-<<<<<<< HEAD
production: &base
#
# 1. GitLab app settings
@@ -43,9 +41,7 @@ production: &base
## External issues trackers
issues_tracker:
redmine:
- ## If not nil Issues link in project page will be replaced to this
- url: "http://redmine.sample"
- ## If not nil links from /#\d/ entities from commit messages will replaced to this
+ ## If not nil, links from /#\d/ entities from commit messages will replaced to this
## Use placeholders:
## :project_id - Gitlab project identifier
## :issues_tracker_id - Project Name or Id in external issue tracker
diff --git a/spec/factories.rb b/spec/factories.rb
index b846f0a4325..41766859468 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -31,6 +31,7 @@ FactoryGirl.define do
factory :redmine_project, parent: :project do
issues_tracker { "redmine" }
+ issues_tracker_id { "project_name_in_redmine" }
end
factory :group do
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index c5603f52f6a..44f4cd4a737 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -60,6 +60,7 @@ describe Project do
it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) }
it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) }
it { should ensure_inclusion_of(:wiki_enabled).in_array([true, false]) }
+ it { should ensure_length_of(:issues_tracker_id).is_within(0..255) }
it "should not allow new projects beyond user limits" do
project.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 1))
@@ -223,4 +224,24 @@ describe Project do
end
end
+ describe :can_have_issues_tracker_id? do
+ let(:project) { create(:project) }
+ let(:ext_project) { create(:redmine_project) }
+
+ it "should be true for projects with external issues tracker if issues enabled" do
+ ext_project.can_have_issues_tracker_id?.should be_true
+ end
+
+ it "should be false for projects with internal issue tracker if issues enabled" do
+ project.can_have_issues_tracker_id?.should be_false
+ end
+
+ it "should be always false if issues disbled" do
+ project.issues_enabled = false
+ ext_project.issues_enabled = false
+
+ project.can_have_issues_tracker_id?.should be_false
+ ext_project.can_have_issues_tracker_id?.should be_false
+ end
+ end
end