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
Boxiang Sun
gitlab-ce
Commits
55f4ddad
Commit
55f4ddad
authored
Aug 11, 2017
by
Mehdi Lahmam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add an option to list only archived projects
Closes #35994
parent
d184f27e
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
57 additions
and
6 deletions
+57
-6
app/finders/admin/projects_finder.rb
app/finders/admin/projects_finder.rb
+7
-1
app/finders/projects_finder.rb
app/finders/projects_finder.rb
+13
-4
app/models/project.rb
app/models/project.rb
+1
-0
app/views/shared/projects/_dropdown.html.haml
app/views/shared/projects/_dropdown.html.haml
+4
-1
changelogs/unreleased/35994-archived-projects-only.yml
changelogs/unreleased/35994-archived-projects-only.yml
+5
-0
spec/features/admin/admin_projects_spec.rb
spec/features/admin/admin_projects_spec.rb
+8
-0
spec/features/dashboard/archived_projects_spec.rb
spec/features/dashboard/archived_projects_spec.rb
+7
-0
spec/finders/admin/projects_finder_spec.rb
spec/finders/admin/projects_finder_spec.rb
+6
-0
spec/finders/projects_finder_spec.rb
spec/finders/projects_finder_spec.rb
+6
-0
No files found.
app/finders/admin/projects_finder.rb
View file @
55f4ddad
...
@@ -43,7 +43,13 @@ class Admin::ProjectsFinder
...
@@ -43,7 +43,13 @@ class Admin::ProjectsFinder
end
end
def
by_archived
(
items
)
def
by_archived
(
items
)
items
.
non_archived
unless
params
[
:archived
].
present?
if
params
[
:archived
]
==
'only'
items
.
archived
elsif
params
[
:archived
].
blank?
items
.
non_archived
else
items
end
end
end
def
by_personal
(
items
)
def
by_personal
(
items
)
...
...
app/finders/projects_finder.rb
View file @
55f4ddad
...
@@ -125,9 +125,18 @@ class ProjectsFinder < UnionFinder
...
@@ -125,9 +125,18 @@ class ProjectsFinder < UnionFinder
end
end
def
by_archived
(
projects
)
def
by_archived
(
projects
)
# Back-compatibility with the places where `params[:archived]` can be set explicitly to `false`
if
params
[
:non_archived
]
params
[
:non_archived
]
=
!
Gitlab
::
Utils
.
to_boolean
(
params
[
:archived
])
if
params
.
key?
(
:archived
)
projects
.
non_archived
elsif
params
.
key?
(
:archived
)
# Back-compatibility with the places where `params[:archived]` can be set explicitly to `false`
params
[
:non_archived
]
?
projects
.
non_archived
:
projects
if
params
[
:archived
]
==
'only'
projects
.
archived
elsif
Gitlab
::
Utils
.
to_boolean
(
params
[
:archived
])
projects
else
projects
.
non_archived
end
else
projects
end
end
end
end
end
app/models/project.rb
View file @
55f4ddad
...
@@ -247,6 +247,7 @@ class Project < ActiveRecord::Base
...
@@ -247,6 +247,7 @@ class Project < ActiveRecord::Base
scope
:joined
,
->
(
user
)
{
where
(
'namespace_id != ?'
,
user
.
namespace_id
)
}
scope
:joined
,
->
(
user
)
{
where
(
'namespace_id != ?'
,
user
.
namespace_id
)
}
scope
:starred_by
,
->
(
user
)
{
joins
(
:users_star_projects
).
where
(
'users_star_projects.user_id'
:
user
.
id
)
}
scope
:starred_by
,
->
(
user
)
{
joins
(
:users_star_projects
).
where
(
'users_star_projects.user_id'
:
user
.
id
)
}
scope
:visible_to_user
,
->
(
user
)
{
where
(
id:
user
.
authorized_projects
.
select
(
:id
).
reorder
(
nil
))
}
scope
:visible_to_user
,
->
(
user
)
{
where
(
id:
user
.
authorized_projects
.
select
(
:id
).
reorder
(
nil
))
}
scope
:archived
,
->
{
where
(
archived:
true
)
}
scope
:non_archived
,
->
{
where
(
archived:
false
)
}
scope
:non_archived
,
->
{
where
(
archived:
false
)
}
scope
:for_milestones
,
->
(
ids
)
{
joins
(
:milestones
).
where
(
'milestones.id'
=>
ids
).
distinct
}
scope
:for_milestones
,
->
(
ids
)
{
joins
(
:milestones
).
where
(
'milestones.id'
=>
ids
).
distinct
}
scope
:with_push
,
->
{
joins
(
:events
).
where
(
'events.action = ?'
,
Event
::
PUSHED
)
}
scope
:with_push
,
->
{
joins
(
:events
).
where
(
'events.action = ?'
,
Event
::
PUSHED
)
}
...
...
app/views/shared/projects/_dropdown.html.haml
View file @
55f4ddad
...
@@ -15,8 +15,11 @@
...
@@ -15,8 +15,11 @@
=
link_to
filter_projects_path
(
archived:
nil
),
class:
(
"is-active"
unless
params
[
:archived
].
present?
)
do
=
link_to
filter_projects_path
(
archived:
nil
),
class:
(
"is-active"
unless
params
[
:archived
].
present?
)
do
Hide archived projects
Hide archived projects
%li
%li
=
link_to
filter_projects_path
(
archived:
true
),
class:
(
"is-active"
if
params
[
:archived
].
present?
)
do
=
link_to
filter_projects_path
(
archived:
true
),
class:
(
"is-active"
if
Gitlab
::
Utils
.
to_boolean
(
params
[
:archived
])
)
do
Show archived projects
Show archived projects
%li
=
link_to
filter_projects_path
(
archived:
'only'
),
class:
(
"is-active"
if
params
[
:archived
]
==
'only'
)
do
Show archived projects only
-
if
current_user
-
if
current_user
%li
.divider
%li
.divider
%li
%li
...
...
changelogs/unreleased/35994-archived-projects-only.yml
0 → 100644
View file @
55f4ddad
---
title
:
Add an option to list only archived projects
merge_request
:
13492
author
:
Mehdi Lahmam (@mehlah)
type
:
added
spec/features/admin/admin_projects_spec.rb
View file @
55f4ddad
...
@@ -36,6 +36,14 @@ describe "Admin::Projects" do
...
@@ -36,6 +36,14 @@ describe "Admin::Projects" do
expect
(
page
).
to
have_content
(
archived_project
.
name
)
expect
(
page
).
to
have_content
(
archived_project
.
name
)
expect
(
page
).
to
have_xpath
(
"//span[@class='label label-warning']"
,
text:
'archived'
)
expect
(
page
).
to
have_xpath
(
"//span[@class='label label-warning']"
,
text:
'archived'
)
end
end
it
'renders only archived projects'
,
js:
true
do
find
(
:css
,
'#sort-projects-dropdown'
).
click
click_link
'Show archived projects only'
expect
(
page
).
to
have_content
(
archived_project
.
name
)
expect
(
page
).
not_to
have_content
(
project
.
name
)
end
end
end
describe
"GET /admin/projects/:namespace_id/:id"
do
describe
"GET /admin/projects/:namespace_id/:id"
do
...
...
spec/features/dashboard/archived_projects_spec.rb
View file @
55f4ddad
...
@@ -26,6 +26,13 @@ RSpec.describe 'Dashboard Archived Project' do
...
@@ -26,6 +26,13 @@ RSpec.describe 'Dashboard Archived Project' do
expect
(
page
).
to
have_link
(
archived_project
.
name
)
expect
(
page
).
to
have_link
(
archived_project
.
name
)
end
end
it
'renders only archived projects'
do
click_link
'Show archived projects only'
expect
(
page
).
to
have_content
(
archived_project
.
name
)
expect
(
page
).
not_to
have_content
(
project
.
name
)
end
it
'searchs archived projects'
,
:js
do
it
'searchs archived projects'
,
:js
do
click_button
'Last updated'
click_button
'Last updated'
click_link
'Show archived projects'
click_link
'Show archived projects'
...
...
spec/finders/admin/projects_finder_spec.rb
View file @
55f4ddad
...
@@ -118,6 +118,12 @@ describe Admin::ProjectsFinder do
...
@@ -118,6 +118,12 @@ describe Admin::ProjectsFinder do
it
{
is_expected
.
to
match_array
([
archived_project
,
shared_project
,
public_project
,
internal_project
,
private_project
])
}
it
{
is_expected
.
to
match_array
([
archived_project
,
shared_project
,
public_project
,
internal_project
,
private_project
])
}
end
end
context
'archived=only'
do
let
(
:params
)
{
{
archived:
'only'
}
}
it
{
is_expected
.
to
eq
([
archived_project
])
}
end
end
end
context
'filter by personal'
do
context
'filter by personal'
do
...
...
spec/finders/projects_finder_spec.rb
View file @
55f4ddad
...
@@ -123,6 +123,12 @@ describe ProjectsFinder do
...
@@ -123,6 +123,12 @@ describe ProjectsFinder do
it
{
is_expected
.
to
match_array
([
public_project
,
internal_project
,
archived_project
])
}
it
{
is_expected
.
to
match_array
([
public_project
,
internal_project
,
archived_project
])
}
end
end
describe
'filter by archived only'
do
let
(
:params
)
{
{
archived:
'only'
}
}
it
{
is_expected
.
to
eq
([
archived_project
])
}
end
describe
'filter by archived for backward compatibility'
do
describe
'filter by archived for backward compatibility'
do
let
(
:params
)
{
{
archived:
false
}
}
let
(
:params
)
{
{
archived:
false
}
}
...
...
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