summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorAndrew8xx8 <avk@8xx8.ru>2013-01-23 18:13:28 +0400
committerAndrew8xx8 <avk@8xx8.ru>2013-02-28 16:10:00 +0400
commite6d2e5696186cc81b7d9a12af25e00528ca2cc30 (patch)
tree03143c6f52988ee4740105f015c641b068c37548 /app
parent8f621c9e064afe1465728143d71f0658053d55ad (diff)
downloadgitlab-ce-e6d2e5696186cc81b7d9a12af25e00528ca2cc30.tar.gz
Issue tracker field added to projects
Diffstat (limited to 'app')
-rw-r--r--app/helpers/issues_helper.rb27
-rw-r--r--app/models/project.rb6
-rw-r--r--app/views/projects/_form.html.haml4
3 files changed, 36 insertions, 1 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index ed7e3e869c0..030f9af3697 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -40,4 +40,31 @@ module IssuesHelper
def issues_active_milestones
@project.milestones.active.order("id desc").all
end
+
+ def url_for_issue(issue_id)
+ if @project.issues_tracker == Project.issues_tracker.default_value
+ url = project_issue_url project_id: @project, id: issue_id
+ else
+ url = Settings[:issues_tracker][@project.issues_tracker]["issues_url"]
+ url.gsub(':id', issue_id.to_s).gsub(':project_id', @project.id.to_s)
+ end
+ end
+
+ def title_for_issue(issue_id)
+ if issue = @project.issues.where(id: issue_id).first
+ issue.title
+ else
+ ""
+ end
+ end
+
+ def issue_exists?(issue_id)
+ return false if @project.nil?
+
+ if @project.issues_tracker == Project.issues_tracker.default_value
+ @project.issues.where(id: issue_id).first.present?
+ else
+ true
+ end
+ end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 6ff2a3698df..9ba3080cb14 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -11,6 +11,7 @@
# creator_id :integer
# default_branch :string(255)
# issues_enabled :boolean default(TRUE), not null
+# issues_tracker :string not null
# wall_enabled :boolean default(TRUE), not null
# merge_requests_enabled :boolean default(TRUE), not null
# wiki_enabled :boolean default(TRUE), not null
@@ -22,10 +23,11 @@ require "grit"
class Project < ActiveRecord::Base
include Gitolited
+ extend Enumerize
class TransferError < StandardError; end
- attr_accessible :name, :path, :description, :default_branch,
+ attr_accessible :name, :path, :description, :default_branch, :issues_tracker,
:issues_enabled, :wall_enabled, :merge_requests_enabled,
:wiki_enabled, :public, :import_url, as: [:default, :admin]
@@ -93,6 +95,8 @@ class Project < ActiveRecord::Base
scope :joined, ->(user) { where("namespace_id != ?", user.namespace_id) }
scope :public_only, -> { where(public: true) }
+ enumerize :issues_tracker, :in => (Settings[:issues_tracker].keys).append(:gitlab), :default => :gitlab
+
class << self
def abandoned
project_ids = Event.select('max(created_at) as latest_date, project_id').
diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml
index 0336654dc69..7072d78d3ef 100644
--- a/app/views/projects/_form.html.haml
+++ b/app/views/projects/_form.html.haml
@@ -25,6 +25,10 @@
%span.descr Lightweight issue tracking system for this project
.control-group
+ = f.label :issues_tracker, "Issues tracker", class: 'control-label'
+ .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled })
+
+ .control-group
= f.label :merge_requests_enabled, "Merge Requests", class: 'control-label'
.controls
= f.check_box :merge_requests_enabled