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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
45e4727f
Commit
45e4727f
authored
May 25, 2015
by
Douwe Maan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Set milestone on new issue when creating issue from index with milestone filter active.
parent
106cb511
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
100 additions
and
37 deletions
+100
-37
CHANGELOG
CHANGELOG
+1
-0
app/controllers/application_controller.rb
app/controllers/application_controller.rb
+4
-4
app/finders/README.md
app/finders/README.md
+1
-1
app/finders/issuable_finder.rb
app/finders/issuable_finder.rb
+83
-21
app/views/projects/issues/index.html.haml
app/views/projects/issues/index.html.haml
+1
-1
spec/finders/issues_finder_spec.rb
spec/finders/issues_finder_spec.rb
+8
-8
spec/finders/merge_requests_finder_spec.rb
spec/finders/merge_requests_finder_spec.rb
+2
-2
No files found.
CHANGELOG
View file @
45e4727f
...
...
@@ -6,6 +6,7 @@ v 7.12.0 (unreleased)
- Fix Zen Mode not closing with ESC key (Stan Hu)
- Allow HipChat API version to be blank and default to v2 (Stan Hu)
- Add file attachment support in Milestone description (Stan Hu)
- Set milestone on new issue when creating issue from index with milestone filter active.
- Add web hook support for note events (Stan Hu)
- Disable "New Issue" and "New Merge Request" buttons when features are disabled in project settings (Stan Hu)
- Remove Rack Attack monkey patches and bump to version 4.3.0 (Stan Hu)
...
...
app/controllers/application_controller.rb
View file @
45e4727f
...
...
@@ -289,14 +289,14 @@ class ApplicationController < ActionController::Base
def
get_issues_collection
set_filters_params
issues
=
IssuesFinder
.
new
.
execute
(
current_user
,
@filter_params
)
issues
@issuable_finder
=
IssuesFinder
.
new
(
current_user
,
@filter_params
)
@issuable_finder
.
execute
end
def
get_merge_requests_collection
set_filters_params
merge_requests
=
MergeRequestsFinder
.
new
.
execute
(
current_user
,
@filter_params
)
merge_requests
@issuable_finder
=
MergeRequestsFinder
.
new
(
current_user
,
@filter_params
)
@issuable_finder
.
execute
end
def
github_import_enabled?
...
...
app/finders/README.md
View file @
45e4727f
...
...
@@ -16,7 +16,7 @@ issues = project.issues_for_user_filtered_by(user, params)
Better use this:
```
ruby
issues
=
IssuesFinder
.
new
.
execute
(
project
,
user
,
filter
)
issues
=
IssuesFinder
.
new
(
project
,
user
,
filter
).
execute
```
It will help keep models thiner.
app/finders/issuable_finder.rb
View file @
45e4727f
...
...
@@ -23,10 +23,12 @@ class IssuableFinder
attr_accessor
:current_user
,
:params
def
execut
e
(
current_user
,
params
)
def
initializ
e
(
current_user
,
params
)
@current_user
=
current_user
@params
=
params
end
def
execute
items
=
init_collection
items
=
by_scope
(
items
)
items
=
by_state
(
items
)
...
...
@@ -40,6 +42,77 @@ class IssuableFinder
items
=
sort
(
items
)
end
def
group
return
@group
if
defined?
(
@group
)
@group
=
if
params
[
:group_id
].
present?
Group
.
find
(
params
[
:group_id
])
else
nil
end
end
def
project
return
@project
if
defined?
(
@project
)
@project
=
if
params
[
:project_id
].
present?
Project
.
find
(
params
[
:project_id
])
else
nil
end
end
def
search
params
[
:search
].
presence
end
def
milestones?
params
[
:milestone_title
].
present?
end
def
milestones
return
@milestones
if
defined?
(
@milestones
)
@milestones
=
if
milestones?
&&
params
[
:milestone_title
]
!=
NONE
Milestone
.
where
(
title:
params
[
:milestone_title
])
else
nil
end
end
def
assignee?
params
[
:assignee_id
].
present?
end
def
assignee
return
@assignee
if
defined?
(
@assignee
)
@assignee
=
if
assignee?
&&
params
[
:assignee_id
]
!=
NONE
User
.
find
(
params
[
:assignee_id
])
else
nil
end
end
def
author?
params
[
:author_id
].
present?
end
def
author
return
@author
if
defined?
(
@author
)
@author
=
if
author?
&&
params
[
:author_id
]
!=
NONE
User
.
find
(
params
[
:author_id
])
else
nil
end
end
private
def
init_collection
...
...
@@ -89,25 +162,19 @@ class IssuableFinder
end
def
by_group
(
items
)
if
params
[
:group_id
].
present?
items
=
items
.
of_group
(
Group
.
find
(
params
[
:group_id
]))
end
items
=
items
.
of_group
(
group
)
if
group
items
end
def
by_project
(
items
)
if
params
[
:project_id
].
present?
items
=
items
.
of_projects
(
params
[
:project_id
])
end
items
=
items
.
of_projects
(
project
.
id
)
if
project
items
end
def
by_search
(
items
)
if
params
[
:search
].
present?
items
=
items
.
search
(
params
[
:search
])
end
items
=
items
.
search
(
search
)
if
search
items
end
...
...
@@ -117,25 +184,24 @@ class IssuableFinder
end
def
by_milestone
(
items
)
if
params
[
:milestone_title
].
present?
milestone_ids
=
(
params
[
:milestone_title
]
==
NONE
?
nil
:
Milestone
.
where
(
title:
params
[
:milestone_title
]).
pluck
(
:id
))
items
=
items
.
where
(
milestone_id:
milestone_ids
)
if
milestones?
items
=
items
.
where
(
milestone_id:
milestones
.
try
(
:pluck
,
:id
))
end
items
end
def
by_assignee
(
items
)
if
params
[
:assignee_id
].
present
?
items
=
items
.
where
(
assignee_id:
(
params
[
:assignee_id
]
==
NONE
?
nil
:
params
[
:assignee_id
]
))
if
assignee
?
items
=
items
.
where
(
assignee_id:
assignee
.
try
(
:id
))
end
items
end
def
by_author
(
items
)
if
params
[
:author_id
].
present
?
items
=
items
.
where
(
author_id:
(
params
[
:author_id
]
==
NONE
?
nil
:
params
[
:author_id
]
))
if
author
?
items
=
items
.
where
(
author_id:
author
.
try
(
:id
))
end
items
...
...
@@ -155,10 +221,6 @@ class IssuableFinder
items
end
def
project
Project
.
where
(
id:
params
[
:project_id
]).
first
if
params
[
:project_id
].
present?
end
def
current_user_related?
params
[
:scope
]
==
'created-by-me'
||
params
[
:scope
]
==
'authored'
||
params
[
:scope
]
==
'assigned-to-me'
end
...
...
app/views/projects/issues/index.html.haml
View file @
45e4727f
...
...
@@ -14,7 +14,7 @@
=
render
'shared/issuable_search_form'
,
path:
namespace_project_issues_path
(
@project
.
namespace
,
@project
)
-
if
can?
current_user
,
:write_issue
,
@project
=
link_to
new_namespace_project_issue_path
(
@project
.
namespace
,
@project
,
issue:
{
assignee_id:
params
[
:assignee_id
],
milestone_id:
params
[
:milestone_id
]
}),
class:
"btn btn-new pull-left"
,
title:
"New Issue"
,
id:
"new_issue_link"
do
=
link_to
new_namespace_project_issue_path
(
@project
.
namespace
,
@project
,
issue:
{
assignee_id:
@issuable_finder
.
assignee
.
try
(
:id
),
milestone_id:
@issuable_finder
.
milestones
.
try
(
:first
).
try
(
:id
)
}),
class:
"btn btn-new pull-left"
,
title:
"New Issue"
,
id:
"new_issue_link"
do
%i
.fa.fa-plus
New Issue
...
...
spec/finders/issues_finder_spec.rb
View file @
45e4727f
...
...
@@ -26,37 +26,37 @@ describe IssuesFinder do
context
'scope: all'
do
it
'should filter by all'
do
params
=
{
scope:
"all"
,
state:
'opened'
}
issues
=
IssuesFinder
.
new
.
execute
(
user
,
params
)
issues
=
IssuesFinder
.
new
(
user
,
params
).
execute
expect
(
issues
.
size
).
to
eq
(
3
)
end
it
'should filter by assignee id'
do
params
=
{
scope:
"all"
,
assignee_id:
user
.
id
,
state:
'opened'
}
issues
=
IssuesFinder
.
new
.
execute
(
user
,
params
)
issues
=
IssuesFinder
.
new
(
user
,
params
).
execute
expect
(
issues
.
size
).
to
eq
(
2
)
end
it
'should filter by author id'
do
params
=
{
scope:
"all"
,
author_id:
user2
.
id
,
state:
'opened'
}
issues
=
IssuesFinder
.
new
.
execute
(
user
,
params
)
issues
=
IssuesFinder
.
new
(
user
,
params
).
execute
expect
(
issues
).
to
eq
([
issue3
])
end
it
'should filter by milestone id'
do
params
=
{
scope:
"all"
,
milestone_title:
milestone
.
title
,
state:
'opened'
}
issues
=
IssuesFinder
.
new
.
execute
(
user
,
params
)
issues
=
IssuesFinder
.
new
(
user
,
params
).
execute
expect
(
issues
).
to
eq
([
issue1
])
end
it
'should be empty for unauthorized user'
do
params
=
{
scope:
"all"
,
state:
'opened'
}
issues
=
IssuesFinder
.
new
.
execute
(
nil
,
params
)
issues
=
IssuesFinder
.
new
(
nil
,
params
).
execute
expect
(
issues
.
size
).
to
be_zero
end
it
'should not include unauthorized issues'
do
params
=
{
scope:
"all"
,
state:
'opened'
}
issues
=
IssuesFinder
.
new
.
execute
(
user2
,
params
)
issues
=
IssuesFinder
.
new
(
user2
,
params
).
execute
expect
(
issues
.
size
).
to
eq
(
2
)
expect
(
issues
).
not_to
include
(
issue1
)
expect
(
issues
).
to
include
(
issue2
)
...
...
@@ -67,13 +67,13 @@ describe IssuesFinder do
context
'personal scope'
do
it
'should filter by assignee'
do
params
=
{
scope:
"assigned-to-me"
,
state:
'opened'
}
issues
=
IssuesFinder
.
new
.
execute
(
user
,
params
)
issues
=
IssuesFinder
.
new
(
user
,
params
).
execute
expect
(
issues
.
size
).
to
eq
(
2
)
end
it
'should filter by project'
do
params
=
{
scope:
"assigned-to-me"
,
state:
'opened'
,
project_id:
project1
.
id
}
issues
=
IssuesFinder
.
new
.
execute
(
user
,
params
)
issues
=
IssuesFinder
.
new
(
user
,
params
).
execute
expect
(
issues
.
size
).
to
eq
(
1
)
end
end
...
...
spec/finders/merge_requests_finder_spec.rb
View file @
45e4727f
...
...
@@ -20,13 +20,13 @@ describe MergeRequestsFinder do
describe
"#execute"
do
it
'should filter by scope'
do
params
=
{
scope:
'authored'
,
state:
'opened'
}
merge_requests
=
MergeRequestsFinder
.
new
.
execute
(
user
,
params
)
merge_requests
=
MergeRequestsFinder
.
new
(
user
,
params
).
execute
expect
(
merge_requests
.
size
).
to
eq
(
2
)
end
it
'should filter by project'
do
params
=
{
project_id:
project1
.
id
,
scope:
'authored'
,
state:
'opened'
}
merge_requests
=
MergeRequestsFinder
.
new
.
execute
(
user
,
params
)
merge_requests
=
MergeRequestsFinder
.
new
(
user
,
params
).
execute
expect
(
merge_requests
.
size
).
to
eq
(
1
)
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