summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/gfm_auto_complete.js.coffee2
-rw-r--r--app/controllers/projects/issues_controller.rb2
-rw-r--r--app/controllers/projects/merge_requests_controller.rb2
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/helpers/events_helper.rb2
-rw-r--r--app/helpers/issues_helper.rb10
-rw-r--r--app/models/concerns/issuable.rb12
-rw-r--r--app/models/event.rb12
-rw-r--r--app/models/merge_request.rb4
-rw-r--r--app/models/project.rb2
-rw-r--r--app/views/events/event/_common.html.haml2
-rw-r--r--app/views/projects/issues/_issue.html.haml2
-rw-r--r--app/views/projects/issues/show.html.haml2
-rw-r--r--app/views/projects/merge_requests/_merge_request.html.haml2
-rw-r--r--app/views/projects/merge_requests/show/_mr_title.html.haml2
-rw-r--r--app/views/search/_result.html.haml4
16 files changed, 46 insertions, 18 deletions
diff --git a/app/assets/javascripts/gfm_auto_complete.js.coffee b/app/assets/javascripts/gfm_auto_complete.js.coffee
index e22761e57a4..77091da8f61 100644
--- a/app/assets/javascripts/gfm_auto_complete.js.coffee
+++ b/app/assets/javascripts/gfm_auto_complete.js.coffee
@@ -44,7 +44,7 @@ GitLab.GfmAutoComplete =
tpl: @Issues.template
callbacks:
before_save: (issues) ->
- $.map issues, (i) -> id: i.id, title: sanitize(i.title), search: "#{i.id} #{i.title}"
+ $.map issues, (i) -> id: i.iid, title: sanitize(i.title), search: "#{i.iid} #{i.title}"
input.one "focus", =>
$.getJSON(@dataSource).done (data) ->
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index a7f515ac851..4b6e22e3607 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -91,7 +91,7 @@ class Projects::IssuesController < Projects::ApplicationController
protected
def issue
- @issue ||= @project.issues.find(params[:id])
+ @issue ||= @project.issues.find_by_iid!(params[:id])
end
def authorize_modify_issue!
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index d135cf05b9e..235247f3e52 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -132,7 +132,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
def merge_request
- @merge_request ||= @project.merge_requests.find(params[:id])
+ @merge_request ||= @project.merge_requests.find_by_iid!(params[:id])
end
def authorize_modify_merge_request!
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 9e88d0b4757..9b4fe5a9b5b 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -104,7 +104,7 @@ class ProjectsController < Projects::ApplicationController
def autocomplete_sources
@suggestions = {
emojis: Emoji.names,
- issues: @project.issues.select([:id, :title, :description]),
+ issues: @project.issues.select([:iid, :title, :description]),
members: @project.team.members.sort_by(&:username).map { |user| { username: user.username, name: user.name } }
}
diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index 8433e72dc24..3db010966c5 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -109,7 +109,7 @@ module EventsHelper
else
link_to event_note_target_path(event) do
content_tag :strong do
- "#{event.note_target_type} ##{truncate event.note_target_id}"
+ "#{event.note_target_type} ##{truncate event.note_target_iid}"
end
end
end
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 4f433f3c60d..5977c9cbae2 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -37,23 +37,23 @@ module IssuesHelper
end
end
- def url_for_issue(issue_id)
+ def url_for_issue(issue_iid)
return "" if @project.nil?
if @project.used_default_issues_tracker?
- url = project_issue_url project_id: @project, id: issue_id
+ url = project_issue_url project_id: @project, id: issue_iid
else
url = Gitlab.config.issues_tracker[@project.issues_tracker]["issues_url"]
- url.gsub(':id', issue_id.to_s)
+ url.gsub(':id', issue_iid.to_s)
.gsub(':project_id', @project.id.to_s)
.gsub(':issues_tracker_id', @project.issues_tracker_id.to_s)
end
end
- def title_for_issue(issue_id)
+ def title_for_issue(issue_iid)
return "" if @project.nil?
- if @project.used_default_issues_tracker? && issue = @project.issues.where(id: issue_id).first
+ if @project.used_default_issues_tracker? && issue = @project.issues.where(iid: issue_iid).first
issue.title
else
""
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 91fb323825d..fb08a5aa750 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -16,6 +16,8 @@ module Issuable
validates :author, presence: true
validates :title, presence: true, length: { within: 0..255 }
+ validate :set_iid, on: :create
+ validates :iid, presence: true, numericality: true
scope :authored, ->(user) { where(author_id: user) }
scope :assigned_to, ->(u) { where(assignee_id: u.id)}
@@ -24,6 +26,7 @@ module Issuable
scope :unassigned, -> { where("assignee_id IS NULL") }
scope :of_projects, ->(ids) { where(project_id: ids) }
+
delegate :name,
:email,
to: :author,
@@ -44,6 +47,15 @@ module Issuable
end
end
+ def set_iid
+ max_iid = project.send(self.class.name.tableize).maximum(:iid)
+ self.iid = max_iid.to_i + 1
+ end
+
+ def to_param
+ iid.to_s
+ end
+
def today?
Date.today == created_at.to_date
end
diff --git a/app/models/event.rb b/app/models/event.rb
index 5c7c5be4190..095a06c956b 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -256,6 +256,10 @@ class Event < ActiveRecord::Base
target.commit_id
end
+ def target_iid
+ target.respond_to?(:iid) ? target.iid : target_id
+ end
+
def note_short_commit_id
note_commit_id[0..8]
end
@@ -280,6 +284,14 @@ class Event < ActiveRecord::Base
end
end
+ def note_target_iid
+ if note_target.respond_to?(:iid)
+ note_target.iid
+ else
+ note_target_id
+ end.to_s
+ end
+
def wall_note?
target.noteable_type.blank?
end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index b7df2e40a16..d525ad17537 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -250,6 +250,10 @@ class MergeRequest < ActiveRecord::Base
(source_project.root_ref? source_branch) || for_fork?
end
+ def project
+ target_project
+ end
+
private
def dump_commits(commits)
diff --git a/app/models/project.rb b/app/models/project.rb
index c5ae7a767de..a40cea2ad39 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -197,7 +197,7 @@ class Project < ActiveRecord::Base
def issue_exists?(issue_id)
if used_default_issues_tracker?
- self.issues.where(id: issue_id).first.present?
+ self.issues.where(iid: issue_id).first.present?
else
true
end
diff --git a/app/views/events/event/_common.html.haml b/app/views/events/event/_common.html.haml
index 6989f862f47..a9d3adf41df 100644
--- a/app/views/events/event/_common.html.haml
+++ b/app/views/events/event/_common.html.haml
@@ -2,7 +2,7 @@
%span.author_name= link_to_author event
%span.event_label{class: event.action_name}= event_action_name(event)
- if event.target
- %strong= link_to "##{event.target_id}", [event.project, event.target]
+ %strong= link_to "##{event.target_iid}", [event.project, event.target]
- else
%strong= gfm event.target_title
at
diff --git a/app/views/projects/issues/_issue.html.haml b/app/views/projects/issues/_issue.html.haml
index 0f3c4f752eb..b9a2c18efdc 100644
--- a/app/views/projects/issues/_issue.html.haml
+++ b/app/views/projects/issues/_issue.html.haml
@@ -4,7 +4,7 @@
= check_box_tag dom_id(issue,"selected"), nil, false, 'data-id' => issue.id, class: "selected_issue", disabled: !can?(current_user, :modify_issue, issue)
.issue-title
- %span.light= "##{issue.id}"
+ %span.light= "##{issue.iid}"
= link_to_gfm truncate(issue.title, length: 100), project_issue_path(issue.project, issue), class: "row_title"
.issue-info
diff --git a/app/views/projects/issues/show.html.haml b/app/views/projects/issues/show.html.haml
index fc6faa9c19d..d36a831432d 100644
--- a/app/views/projects/issues/show.html.haml
+++ b/app/views/projects/issues/show.html.haml
@@ -1,5 +1,5 @@
%h3.page-title
- Issue ##{@issue.id}
+ Issue ##{@issue.iid}
%small
created at
diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml
index 276436a9c8e..933d78bcbfb 100644
--- a/app/views/projects/merge_requests/_merge_request.html.haml
+++ b/app/views/projects/merge_requests/_merge_request.html.haml
@@ -1,6 +1,6 @@
%li{ class: mr_css_classes(merge_request) }
.merge-request-title
- %span.light= "##{merge_request.id}"
+ %span.light= "##{merge_request.iid}"
= link_to_gfm truncate(merge_request.title, length: 80), project_merge_request_path(merge_request.target_project, merge_request), class: "row_title"
- if merge_request.merged?
%small.pull-right
diff --git a/app/views/projects/merge_requests/show/_mr_title.html.haml b/app/views/projects/merge_requests/show/_mr_title.html.haml
index 7dfc995121f..096a9167645 100644
--- a/app/views/projects/merge_requests/show/_mr_title.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_title.html.haml
@@ -1,5 +1,5 @@
%h3.page-title
- = "Merge Request ##{@merge_request.id}:"
+ = "Merge Request ##{@merge_request.iid}:"
&nbsp;
-if @merge_request.for_fork?
%span.label-branch
diff --git a/app/views/search/_result.html.haml b/app/views/search/_result.html.haml
index fac5fdfd0b1..5f7540d1b16 100644
--- a/app/views/search/_result.html.haml
+++ b/app/views/search/_result.html.haml
@@ -23,7 +23,7 @@
%li
merge request:
= link_to [merge_request.target_project, merge_request] do
- %span ##{merge_request.id}
+ %span ##{merge_request.iid}
%strong.term
= truncate merge_request.title, length: 50
- if merge_request.for_fork?
@@ -37,7 +37,7 @@
%li
issue:
= link_to [issue.project, issue] do
- %span ##{issue.id}
+ %span ##{issue.iid}
%strong.term
= truncate issue.title, length: 50
%span.light (#{issue.project.name_with_namespace})