Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
9cf1f69c
Commit
9cf1f69c
authored
Dec 14, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/note_milestone_events'
parents
69c18903
b79e0088
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
124 additions
and
41 deletions
+124
-41
app/assets/stylesheets/sections/events.scss
app/assets/stylesheets/sections/events.scss
+6
-3
app/controllers/milestones_controller.rb
app/controllers/milestones_controller.rb
+2
-1
app/models/event.rb
app/models/event.rb
+17
-6
app/models/milestone.rb
app/models/milestone.rb
+6
-1
app/models/note.rb
app/models/note.rb
+8
-0
app/observers/activity_observer.rb
app/observers/activity_observer.rb
+18
-9
app/roles/note_event.rb
app/roles/note_event.rb
+21
-0
app/views/dashboard/index.atom.builder
app/views/dashboard/index.atom.builder
+1
-1
app/views/events/_event.html.haml
app/views/events/_event.html.haml
+7
-7
app/views/events/event/_note.html.haml
app/views/events/event/_note.html.haml
+23
-0
app/views/groups/show.atom.builder
app/views/groups/show.atom.builder
+1
-1
spec/models/event_spec.rb
spec/models/event_spec.rb
+1
-1
spec/observers/activity_observer_spec.rb
spec/observers/activity_observer_spec.rb
+13
-11
No files found.
app/assets/stylesheets/sections/events.scss
View file @
9cf1f69c
...
...
@@ -31,7 +31,6 @@
*
*/
.event-item
{
min-height
:
40px
;
border-bottom
:
1px
solid
#eee
;
.event-title
{
color
:
#333
;
...
...
@@ -50,14 +49,18 @@
}
}
.avatar
{
width
:
32px
;
position
:
relative
;
top
:
-3px
;
}
.event_icon
{
position
:
relative
;
float
:
right
;
border
:
1px
solid
#EEE
;
padding
:
5px
;
@include
border-radius
(
5px
);
background
:
#F9F9F9
;
margin-left
:
10px
;
top
:
-6px
;
img
{
width
:
20px
;
}
...
...
@@ -71,7 +74,7 @@
}
}
padding
:
1
5
px
5px
;
padding
:
1
6
px
5px
;
&
:last-child
{
border
:none
}
.wll
:hover
{
background
:none
}
...
...
app/controllers/milestones_controller.rb
View file @
9cf1f69c
...
...
@@ -43,6 +43,7 @@ class MilestonesController < ProjectResourceController
def
create
@milestone
=
@project
.
milestones
.
new
(
params
[
:milestone
])
@milestone
.
author_id_of_changes
=
current_user
.
id
if
@milestone
.
save
redirect_to
project_milestone_path
(
@project
,
@milestone
)
...
...
@@ -52,7 +53,7 @@ class MilestonesController < ProjectResourceController
end
def
update
@milestone
.
update_attributes
(
params
[
:milestone
])
@milestone
.
update_attributes
(
params
[
:milestone
]
.
merge
(
author_id_of_changes:
current_user
.
id
)
)
respond_to
do
|
format
|
format
.
js
...
...
app/models/event.rb
View file @
9cf1f69c
...
...
@@ -15,6 +15,7 @@
#
class
Event
<
ActiveRecord
::
Base
include
NoteEvent
include
PushEvent
attr_accessible
:project
,
:action
,
:data
,
:author_id
,
:project_id
,
...
...
@@ -58,12 +59,14 @@ class Event < ActiveRecord::Base
end
end
# Next events currently enabled for system
# - push
# - new issue
# - merge request
def
allowed?
push?
||
issue?
||
merge_request?
||
membership_changed?
def
proper?
if
push?
true
elsif
membership_changed?
true
else
(
issue?
||
merge_request?
||
note?
||
milestone?
)
&&
target
end
end
def
project_name
...
...
@@ -94,6 +97,14 @@ class Event < ActiveRecord::Base
action
==
self
.
class
::
Reopened
end
def
milestone?
target_type
==
"Milestone"
end
def
note?
target_type
==
"Note"
end
def
issue?
target_type
==
"Issue"
end
...
...
app/models/milestone.rb
View file @
9cf1f69c
...
...
@@ -13,7 +13,8 @@
#
class
Milestone
<
ActiveRecord
::
Base
attr_accessible
:title
,
:description
,
:due_date
,
:closed
attr_accessible
:title
,
:description
,
:due_date
,
:closed
,
:author_id_of_changes
attr_accessor
:author_id_of_changes
belongs_to
:project
has_many
:issues
...
...
@@ -67,4 +68,8 @@ class Milestone < ActiveRecord::Base
def
open?
!
closed
end
def
author_id
author_id_of_changes
end
end
app/models/note.rb
View file @
9cf1f69c
...
...
@@ -121,4 +121,12 @@ class Note < ActiveRecord::Base
def
downvote?
note
.
start_with?
(
'-1'
)
||
note
.
start_with?
(
':-1:'
)
end
def
noteable_type_name
if
noteable_type
.
present?
noteable_type
.
downcase
else
"wall"
end
end
end
app/observers/activity_observer.rb
View file @
9cf1f69c
class
ActivityObserver
<
ActiveRecord
::
Observer
observe
:issue
,
:merge_request
observe
:issue
,
:merge_request
,
:note
,
:milestone
def
after_create
(
record
)
Event
.
create
(
project:
record
.
project
,
target_id:
record
.
id
,
target_type:
record
.
class
.
name
,
action:
Event
.
determine_action
(
record
),
author_id:
record
.
author_id
)
event_author_id
=
record
.
author_id
# Skip status notes
if
record
.
kind_of?
(
Note
)
&&
record
.
note
.
include?
(
"_Status changed to "
)
return
true
end
if
event_author_id
Event
.
create
(
project:
record
.
project
,
target_id:
record
.
id
,
target_type:
record
.
class
.
name
,
action:
Event
.
determine_action
(
record
),
author_id:
event_author_id
)
end
end
def
after_save
(
record
)
if
record
.
changed
.
include?
(
"closed"
)
if
record
.
changed
.
include?
(
"closed"
)
&&
record
.
author_id_of_changes
Event
.
create
(
project:
record
.
project
,
target_id:
record
.
id
,
...
...
app/roles/note_event.rb
0 → 100644
View file @
9cf1f69c
module
NoteEvent
def
note_commit_id
target
.
noteable_id
end
def
note_short_commit_id
note_commit_id
[
0
..
8
]
end
def
note_commit?
target
.
noteable_type
==
"Commit"
end
def
note_target
target
.
noteable
end
def
note_target_id
target
.
noteable_id
end
end
app/views/dashboard/index.atom.builder
View file @
9cf1f69c
...
...
@@ -7,7 +7,7 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://sear
xml.updated @events.maximum(:updated_at).strftime("%Y-%m-%dT%H:%M:%SZ") if @events.any?
@events.each do |event|
if event.
allowed
?
if event.
proper
?
event = EventDecorator.decorate(event)
xml.entry do
event_link = event.feed_url
...
...
app/views/events/_event.html.haml
View file @
9cf1f69c
-
if
event
.
allowed
?
-
if
event
.
proper
?
%div
.event-item
=
event_image
(
event
)
%span
.cgray.right
#{
time_ago_in_words
(
event
.
created_at
)
}
ago.
=
image_tag
gravatar_icon
(
event
.
author_email
),
class:
"avatar s24"
-
if
event
.
push?
=
render
"events/event/push"
,
event:
event
.clearfix
-
elsif
event
.
note?
=
render
"events/event/note"
,
event:
event
-
else
=
render
"events/event/common"
,
event:
event
.clearfix
%span
.cgray.right
=
time_ago_in_words
(
event
.
created_at
)
ago.
.clearfix
app/views/events/event/_note.html.haml
0 → 100644
View file @
9cf1f69c
.event-title
%span
.author_name
=
link_to_author
event
%span
.event_label
commented on
#{
event
.
target
.
noteable_type_name
}
-
if
event
.
target
and
event
.
note_target
-
if
event
.
note_commit?
=
link_to
event
.
note_short_commit_id
,
project_commit_path
(
event
.
project
,
event
.
note_commit_id
),
class:
"commit_short_id"
-
else
=
link_to
[
event
.
project
,
event
.
note_target
]
do
%strong
=
truncate
event
.
note_target_id
-
else
%strong
(deleted)
at
-
if
event
.
project
=
link_to_project
event
.
project
-
else
=
event
.
project_name
.event-body
%span
.hint
%i
.icon-comment
=
truncate
event
.
target
.
note
,
length:
70
app/views/groups/show.atom.builder
View file @
9cf1f69c
...
...
@@ -7,7 +7,7 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://sear
xml.updated @events.maximum(:updated_at).strftime("%Y-%m-%dT%H:%M:%SZ") if @events.any?
@events.each do |event|
if event.
allowed
?
if event.
proper
?
event = EventDecorator.decorate(event)
xml.entry do
event_link = event.feed_url
...
...
spec/models/event_spec.rb
View file @
9cf1f69c
...
...
@@ -59,7 +59,7 @@ describe Event do
end
it
{
@event
.
push?
.
should
be_true
}
it
{
@event
.
allowed
?
.
should
be_true
}
it
{
@event
.
proper
?
.
should
be_true
}
it
{
@event
.
new_branch?
.
should
be_true
}
it
{
@event
.
tag?
.
should
be_false
}
it
{
@event
.
branch_name
.
should
==
"master"
}
...
...
spec/observers/activity_observer_spec.rb
View file @
9cf1f69c
...
...
@@ -34,15 +34,17 @@ describe ActivityObserver do
it
{
@event
.
target
.
should
==
@issue
}
end
#describe "Issue commented" do
#before do
#@issue = create(:issue, project: project)
#@note = create(:note, noteable: @issue, project: project)
#@event = Event.last
#end
#it_should_be_valid_event
#it { @event.action.should == Event::Commented }
#it { @event.target.should == @note }
#end
describe
"Issue commented"
do
before
do
Note
.
observers
.
enable
:activity_observer
do
@issue
=
create
(
:issue
,
project:
project
)
@note
=
create
(
:note
,
noteable:
@issue
,
project:
project
,
author:
@issue
.
author
)
@event
=
Event
.
last
end
end
it_should_be_valid_event
it
{
@event
.
action
.
should
==
Event
::
Commented
}
it
{
@event
.
target
.
should
==
@note
}
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