BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
8681cb31
Commit
8681cb31
authored
Feb 07, 2015
by
Nikita Verkhovin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add labels notes
parent
0a34f2dc
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
98 additions
and
7 deletions
+98
-7
labels_helper.rb
app/helpers/labels_helper.rb
+1
-1
note.rb
app/models/note.rb
+30
-0
issuable_base_service.rb
app/services/issuable_base_service.rb
+5
-0
update_service.rb
app/services/issues/update_service.rb
+7
-0
update_service.rb
app/services/merge_requests/update_service.rb
+10
-0
markdown.rb
lib/gitlab/markdown.rb
+16
-2
reference_extractor.rb
lib/gitlab/reference_extractor.rb
+9
-2
update_service_spec.rb
spec/services/issues/update_service_spec.rb
+10
-1
update_service_spec.rb
spec/services/merge_requests/update_service_spec.rb
+10
-1
No files found.
app/helpers/labels_helper.rb
View file @
8681cb31
...
@@ -7,7 +7,7 @@ module LabelsHelper
...
@@ -7,7 +7,7 @@ module LabelsHelper
label_color
=
label
.
color
||
Label
::
DEFAULT_COLOR
label_color
=
label
.
color
||
Label
::
DEFAULT_COLOR
text_color
=
text_color_for_bg
(
label_color
)
text_color
=
text_color_for_bg
(
label_color
)
content_tag
:span
,
class:
'label color-label'
,
style:
"background:
#{
label_color
}
;color:
#{
text_color
}
"
do
content_tag
:span
,
class:
'label color-label'
,
style:
"background
-color
:
#{
label_color
}
;color:
#{
text_color
}
"
do
label
.
name
label
.
name
end
end
end
end
...
...
app/models/note.rb
View file @
8681cb31
...
@@ -121,6 +121,36 @@ class Note < ActiveRecord::Base
...
@@ -121,6 +121,36 @@ class Note < ActiveRecord::Base
})
})
end
end
def
create_labels_change_note
(
noteable
,
project
,
author
,
added_labels
,
removed_labels
)
labels_count
=
added_labels
.
count
+
removed_labels
.
count
added_labels
=
added_labels
.
map
{
|
label
|
"~
#{
label
.
id
}
"
}.
join
(
' '
)
removed_labels
=
removed_labels
.
map
{
|
label
|
"~
#{
label
.
id
}
"
}.
join
(
' '
)
message
=
''
if
added_labels
.
present?
message
<<
"added
#{
added_labels
}
"
end
if
added_labels
.
present?
&&
removed_labels
.
present?
message
<<
' and '
end
if
removed_labels
.
present?
message
<<
"removed
#{
removed_labels
}
"
end
message
<<
' '
<<
'label'
.
pluralize
(
labels_count
)
body
=
"_
#{
message
.
capitalize
}
_"
create
(
noteable:
noteable
,
project:
project
,
author:
author
,
note:
body
,
system:
true
)
end
def
create_new_commits_note
(
noteable
,
project
,
author
,
commits
)
def
create_new_commits_note
(
noteable
,
project
,
author
,
commits
)
commits_text
=
ActionController
::
Base
.
helpers
.
pluralize
(
commits
.
size
,
'new commit'
)
commits_text
=
ActionController
::
Base
.
helpers
.
pluralize
(
commits
.
size
,
'new commit'
)
body
=
"Added
#{
commits_text
}
:
\n\n
"
body
=
"Added
#{
commits_text
}
:
\n\n
"
...
...
app/services/issuable_base_service.rb
View file @
8681cb31
...
@@ -10,4 +10,9 @@ class IssuableBaseService < BaseService
...
@@ -10,4 +10,9 @@ class IssuableBaseService < BaseService
Note
.
create_milestone_change_note
(
Note
.
create_milestone_change_note
(
issuable
,
issuable
.
project
,
current_user
,
issuable
.
milestone
)
issuable
,
issuable
.
project
,
current_user
,
issuable
.
milestone
)
end
end
def
create_labels_note
(
issuable
,
added_labels
,
removed_labels
)
Note
.
create_labels_change_note
(
issuable
,
issuable
.
project
,
current_user
,
added_labels
,
removed_labels
)
end
end
end
app/services/issues/update_service.rb
View file @
8681cb31
...
@@ -14,10 +14,17 @@ module Issues
...
@@ -14,10 +14,17 @@ module Issues
issue
.
update_nth_task
(
params
[
:task_num
].
to_i
,
false
)
issue
.
update_nth_task
(
params
[
:task_num
].
to_i
,
false
)
end
end
old_labels
=
issue
.
labels
.
to_a
if
params
.
present?
&&
issue
.
update_attributes
(
params
.
except
(
:state_event
,
if
params
.
present?
&&
issue
.
update_attributes
(
params
.
except
(
:state_event
,
:task_num
))
:task_num
))
issue
.
reset_events_cache
issue
.
reset_events_cache
if
issue
.
labels
!=
old_labels
create_labels_note
(
issue
,
issue
.
labels
-
old_labels
,
old_labels
-
issue
.
labels
)
end
if
issue
.
previous_changes
.
include?
(
'milestone_id'
)
if
issue
.
previous_changes
.
include?
(
'milestone_id'
)
create_milestone_note
(
issue
)
create_milestone_note
(
issue
)
end
end
...
...
app/services/merge_requests/update_service.rb
View file @
8681cb31
...
@@ -23,11 +23,21 @@ module MergeRequests
...
@@ -23,11 +23,21 @@ module MergeRequests
merge_request
.
update_nth_task
(
params
[
:task_num
].
to_i
,
false
)
merge_request
.
update_nth_task
(
params
[
:task_num
].
to_i
,
false
)
end
end
old_labels
=
merge_request
.
labels
.
to_a
if
params
.
present?
&&
merge_request
.
update_attributes
(
if
params
.
present?
&&
merge_request
.
update_attributes
(
params
.
except
(
:state_event
,
:task_num
)
params
.
except
(
:state_event
,
:task_num
)
)
)
merge_request
.
reset_events_cache
merge_request
.
reset_events_cache
if
merge_request
.
labels
!=
old_labels
create_labels_note
(
merge_request
,
merge_request
.
labels
-
old_labels
,
old_labels
-
merge_request
.
labels
)
end
if
merge_request
.
previous_changes
.
include?
(
'milestone_id'
)
if
merge_request
.
previous_changes
.
include?
(
'milestone_id'
)
create_milestone_note
(
merge_request
)
create_milestone_note
(
merge_request
)
end
end
...
...
lib/gitlab/markdown.rb
View file @
8681cb31
...
@@ -92,7 +92,7 @@ module Gitlab
...
@@ -92,7 +92,7 @@ module Gitlab
allowed_tags
=
ActionView
::
Base
.
sanitized_allowed_tags
allowed_tags
=
ActionView
::
Base
.
sanitized_allowed_tags
sanitize
text
.
html_safe
,
sanitize
text
.
html_safe
,
attributes:
allowed_attributes
+
%w(id class)
,
attributes:
allowed_attributes
+
%w(id class
style
)
,
tags:
allowed_tags
+
%w(table tr td th)
tags:
allowed_tags
+
%w(table tr td th)
end
end
...
@@ -128,6 +128,7 @@ module Gitlab
...
@@ -128,6 +128,7 @@ module Gitlab
(?<prefix>
\W
)? # Prefix
(?<prefix>
\W
)? # Prefix
( # Reference
( # Reference
@(?<user>
#{
NAME_STR
}
) # User name
@(?<user>
#{
NAME_STR
}
) # User name
|~(?<label>
\d
+) # Label ID
|(?<issue>([A-Z
\-
]+-)
\d
+) # JIRA Issue ID
|(?<issue>([A-Z
\-
]+-)
\d
+) # JIRA Issue ID
|
#{
PROJ_STR
}
?
\#
(?<issue>([a-zA-Z
\-
]+-)?
\d
+) # Issue ID
|
#{
PROJ_STR
}
?
\#
(?<issue>([a-zA-Z
\-
]+-)?
\d
+) # Issue ID
|
#{
PROJ_STR
}
?!(?<merge_request>
\d
+) # MR ID
|
#{
PROJ_STR
}
?!(?<merge_request>
\d
+) # MR ID
...
@@ -138,7 +139,7 @@ module Gitlab
...
@@ -138,7 +139,7 @@ module Gitlab
(?<suffix>
\W
)? # Suffix
(?<suffix>
\W
)? # Suffix
}x
.
freeze
}x
.
freeze
TYPES
=
[
:user
,
:issue
,
:merge_request
,
:snippet
,
:commit
].
freeze
TYPES
=
[
:user
,
:issue
,
:
label
,
:
merge_request
,
:snippet
,
:commit
].
freeze
def
parse_references
(
text
,
project
=
@project
)
def
parse_references
(
text
,
project
=
@project
)
# parse reference links
# parse reference links
...
@@ -214,6 +215,19 @@ module Gitlab
...
@@ -214,6 +215,19 @@ module Gitlab
end
end
end
end
def
reference_label
(
identifier
,
project
=
@project
,
_
=
nil
)
if
label
=
project
.
labels
.
find_by
(
id:
identifier
)
options
=
html_options
.
merge
(
class:
"gfm gfm-label
#{
html_options
[
:class
]
}
"
)
link_to
(
render_colored_label
(
label
),
project_issues_path
(
project
,
label_name:
label
.
name
),
options
)
end
end
def
reference_issue
(
identifier
,
project
=
@project
,
prefix_text
=
nil
)
def
reference_issue
(
identifier
,
project
=
@project
,
prefix_text
=
nil
)
if
project
.
default_issues_tracker?
if
project
.
default_issues_tracker?
if
project
.
issue_exists?
identifier
if
project
.
issue_exists?
identifier
...
...
lib/gitlab/reference_extractor.rb
View file @
8681cb31
module
Gitlab
module
Gitlab
# Extract possible GFM references from an arbitrary String for further processing.
# Extract possible GFM references from an arbitrary String for further processing.
class
ReferenceExtractor
class
ReferenceExtractor
attr_accessor
:users
,
:issues
,
:merge_requests
,
:snippets
,
:commits
attr_accessor
:users
,
:
labels
,
:
issues
,
:merge_requests
,
:snippets
,
:commits
include
Markdown
include
Markdown
def
initialize
def
initialize
@users
,
@issues
,
@merge_requests
,
@snippets
,
@commits
=
[],
[],
[],
[],
[]
@users
,
@labels
,
@issues
,
@merge_requests
,
@snippets
,
@commits
=
[],
[],
[],
[],
[],
[]
end
end
def
analyze
(
string
,
project
)
def
analyze
(
string
,
project
)
...
@@ -22,6 +23,12 @@ module Gitlab
...
@@ -22,6 +23,12 @@ module Gitlab
end
.
reject
(
&
:nil?
)
end
.
reject
(
&
:nil?
)
end
end
def
labels_for
(
project
=
nil
)
labels
.
map
do
|
entry
|
project
.
labels
.
where
(
id:
entry
[
:id
]).
first
end
.
reject
(
&
:nil?
)
end
def
issues_for
(
project
=
nil
)
def
issues_for
(
project
=
nil
)
issues
.
map
do
|
entry
|
issues
.
map
do
|
entry
|
if
should_lookup?
(
project
,
entry
[
:project
])
if
should_lookup?
(
project
,
entry
[
:project
])
...
...
spec/services/issues/update_service_spec.rb
View file @
8681cb31
...
@@ -5,6 +5,7 @@ describe Issues::UpdateService do
...
@@ -5,6 +5,7 @@ describe Issues::UpdateService do
let
(
:user
)
{
create
(
:user
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:user2
)
{
create
(
:user
)
}
let
(
:user2
)
{
create
(
:user
)
}
let
(
:issue
)
{
create
(
:issue
)
}
let
(
:issue
)
{
create
(
:issue
)
}
let
(
:label
)
{
create
(
:label
)
}
before
do
before
do
project
.
team
<<
[
user
,
:master
]
project
.
team
<<
[
user
,
:master
]
...
@@ -18,7 +19,8 @@ describe Issues::UpdateService do
...
@@ -18,7 +19,8 @@ describe Issues::UpdateService do
title:
'New title'
,
title:
'New title'
,
description:
'Also please fix'
,
description:
'Also please fix'
,
assignee_id:
user2
.
id
,
assignee_id:
user2
.
id
,
state_event:
'close'
state_event:
'close'
,
label_ids:
[
label
.
id
]
}
}
@issue
=
Issues
::
UpdateService
.
new
(
project
,
user
,
opts
).
execute
(
issue
)
@issue
=
Issues
::
UpdateService
.
new
(
project
,
user
,
opts
).
execute
(
issue
)
...
@@ -29,6 +31,8 @@ describe Issues::UpdateService do
...
@@ -29,6 +31,8 @@ describe Issues::UpdateService do
it
{
@issue
.
title
.
should
==
'New title'
}
it
{
@issue
.
title
.
should
==
'New title'
}
it
{
@issue
.
assignee
.
should
==
user2
}
it
{
@issue
.
assignee
.
should
==
user2
}
it
{
@issue
.
should
be_closed
}
it
{
@issue
.
should
be_closed
}
it
{
@issue
.
labels
.
count
.
should
==
1
}
it
{
@issue
.
labels
.
first
.
title
.
should
==
'Bug'
}
it
'should send email to user2 about assign of new issue'
do
it
'should send email to user2 about assign of new issue'
do
email
=
ActionMailer
::
Base
.
deliveries
.
last
email
=
ActionMailer
::
Base
.
deliveries
.
last
...
@@ -40,6 +44,11 @@ describe Issues::UpdateService do
...
@@ -40,6 +44,11 @@ describe Issues::UpdateService do
note
=
@issue
.
notes
.
last
note
=
@issue
.
notes
.
last
note
.
note
.
should
include
"Reassigned to
\@
#{
user2
.
username
}
"
note
.
note
.
should
include
"Reassigned to
\@
#{
user2
.
username
}
"
end
end
it
'should create system note about issue label edit'
do
note
=
@issue
.
notes
[
1
]
note
.
note
.
should
include
"Added ~
#{
label
.
id
}
label"
end
end
end
end
end
end
end
spec/services/merge_requests/update_service_spec.rb
View file @
8681cb31
...
@@ -5,6 +5,7 @@ describe MergeRequests::UpdateService do
...
@@ -5,6 +5,7 @@ describe MergeRequests::UpdateService do
let
(
:user2
)
{
create
(
:user
)
}
let
(
:user2
)
{
create
(
:user
)
}
let
(
:merge_request
)
{
create
(
:merge_request
,
:simple
)
}
let
(
:merge_request
)
{
create
(
:merge_request
,
:simple
)
}
let
(
:project
)
{
merge_request
.
project
}
let
(
:project
)
{
merge_request
.
project
}
let
(
:label
)
{
create
(
:label
)
}
before
do
before
do
project
.
team
<<
[
user
,
:master
]
project
.
team
<<
[
user
,
:master
]
...
@@ -18,7 +19,8 @@ describe MergeRequests::UpdateService do
...
@@ -18,7 +19,8 @@ describe MergeRequests::UpdateService do
title:
'New title'
,
title:
'New title'
,
description:
'Also please fix'
,
description:
'Also please fix'
,
assignee_id:
user2
.
id
,
assignee_id:
user2
.
id
,
state_event:
'close'
state_event:
'close'
,
label_ids:
[
label
.
id
]
}
}
end
end
...
@@ -35,6 +37,8 @@ describe MergeRequests::UpdateService do
...
@@ -35,6 +37,8 @@ describe MergeRequests::UpdateService do
it
{
@merge_request
.
title
.
should
==
'New title'
}
it
{
@merge_request
.
title
.
should
==
'New title'
}
it
{
@merge_request
.
assignee
.
should
==
user2
}
it
{
@merge_request
.
assignee
.
should
==
user2
}
it
{
@merge_request
.
should
be_closed
}
it
{
@merge_request
.
should
be_closed
}
it
{
@merge_request
.
labels
.
count
.
should
==
1
}
it
{
@merge_request
.
labels
.
first
.
title
.
should
==
'Bug'
}
it
'should execute hooks with update action'
do
it
'should execute hooks with update action'
do
expect
(
service
).
to
have_received
(
:execute_hooks
).
expect
(
service
).
to
have_received
(
:execute_hooks
).
...
@@ -51,6 +55,11 @@ describe MergeRequests::UpdateService do
...
@@ -51,6 +55,11 @@ describe MergeRequests::UpdateService do
note
=
@merge_request
.
notes
.
last
note
=
@merge_request
.
notes
.
last
note
.
note
.
should
include
"Reassigned to
\@
#{
user2
.
username
}
"
note
.
note
.
should
include
"Reassigned to
\@
#{
user2
.
username
}
"
end
end
it
'should create system note about merge_request label edit'
do
note
=
@merge_request
.
notes
[
1
]
note
.
note
.
should
include
"Added ~
#{
label
.
id
}
label"
end
end
end
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment