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
7d5ee418
Commit
7d5ee418
authored
Feb 27, 2019
by
Heinrich Lee Yu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor groups and projects boards actions
Move common functionality to BoardsActions concern
parent
f06a649c
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
58 additions
and
82 deletions
+58
-82
app/controllers/concerns/boards_actions.rb
app/controllers/concerns/boards_actions.rb
+54
-0
app/controllers/groups/boards_controller.rb
app/controllers/groups/boards_controller.rb
+1
-38
app/controllers/projects/boards_controller.rb
app/controllers/projects/boards_controller.rb
+1
-38
spec/controllers/groups/boards_controller_spec.rb
spec/controllers/groups/boards_controller_spec.rb
+1
-3
spec/controllers/projects/boards_controller_spec.rb
spec/controllers/projects/boards_controller_spec.rb
+1
-3
No files found.
app/controllers/concerns/boards_actions.rb
0 → 100644
View file @
7d5ee418
# frozen_string_literal: true
module
BoardsActions
include
Gitlab
::
Utils
::
StrongMemoize
extend
ActiveSupport
::
Concern
included
do
include
BoardsResponses
before_action
:redirect_to_recent_board
,
only: :index
before_action
:boards
,
only: :index
before_action
:board
,
only: :show
end
def
index
respond_with_boards
end
def
show
# Add / update the board in the recent visits table
Boards
::
Visits
::
CreateService
.
new
(
parent
,
current_user
).
execute
(
board
)
if
request
.
format
.
html?
respond_with_board
end
private
def
redirect_to_recent_board
return
if
request
.
format
.
json?
if
recently_visited
=
Boards
::
Visits
::
LatestService
.
new
(
board_parent
,
current_user
).
execute
board_path
=
case
board_parent
when
Project
namespace_project_board_path
(
id:
recently_visited
.
board_id
)
when
Group
group_board_path
(
id:
recently_visited
.
board_id
)
end
redirect_to
board_path
end
end
def
boards
strong_memoize
(
:boards
)
do
Boards
::
ListService
.
new
(
parent
,
current_user
).
execute
end
end
def
board
strong_memoize
(
:board
)
do
boards
.
find
(
params
[
:id
])
end
end
end
app/controllers/groups/boards_controller.rb
View file @
7d5ee418
# frozen_string_literal: true
# frozen_string_literal: true
class
Groups::BoardsController
<
Groups
::
ApplicationController
class
Groups::BoardsController
<
Groups
::
ApplicationController
include
Boards
Response
s
include
Boards
Action
s
include
RecordUserLastActivity
include
RecordUserLastActivity
before_action
:assign_endpoint_vars
before_action
:assign_endpoint_vars
before_action
:boards
,
only: :index
before_action
:redirect_to_recent_board
,
only: :index
def
index
respond_with_boards
end
def
show
@board
=
boards
.
find
(
params
[
:id
])
# add/update the board in the recent visited table
Boards
::
Visits
::
CreateService
.
new
(
@board
.
group
,
current_user
).
execute
(
@board
)
if
request
.
format
.
html?
respond_with_board
end
private
private
def
boards
@boards
||=
Boards
::
ListService
.
new
(
group
,
current_user
).
execute
end
def
assign_endpoint_vars
def
assign_endpoint_vars
@boards_endpoint
=
group_boards_url
(
group
)
@boards_endpoint
=
group_boards_url
(
group
)
@namespace_path
=
group
.
to_param
@namespace_path
=
group
.
to_param
@labels_endpoint
=
group_labels_url
(
group
)
@labels_endpoint
=
group_labels_url
(
group
)
end
end
def
serialize_as_json
(
resource
)
resource
.
as_json
(
only:
[
:id
])
end
def
includes_board?
(
board_id
)
boards
.
any?
{
|
board
|
board
.
id
==
board_id
}
end
def
redirect_to_recent_board
return
if
request
.
format
.
json?
recently_visited
=
Boards
::
Visits
::
LatestService
.
new
(
group
,
current_user
).
execute
if
recently_visited
&&
includes_board?
(
recently_visited
.
board_id
)
redirect_to
(
group_board_path
(
id:
recently_visited
.
board_id
),
status: :found
)
end
end
end
end
app/controllers/projects/boards_controller.rb
View file @
7d5ee418
# frozen_string_literal: true
# frozen_string_literal: true
class
Projects::BoardsController
<
Projects
::
ApplicationController
class
Projects::BoardsController
<
Projects
::
ApplicationController
include
Boards
Response
s
include
Boards
Action
s
include
IssuableCollections
include
IssuableCollections
before_action
:check_issues_available!
before_action
:check_issues_available!
before_action
:authorize_read_board!
,
only:
[
:index
,
:show
]
before_action
:authorize_read_board!
,
only:
[
:index
,
:show
]
before_action
:boards
,
only: :index
before_action
:assign_endpoint_vars
before_action
:assign_endpoint_vars
before_action
:redirect_to_recent_board
,
only: :index
def
index
respond_with_boards
end
def
show
@board
=
boards
.
find
(
params
[
:id
])
# add/update the board in the recent visited table
Boards
::
Visits
::
CreateService
.
new
(
@board
.
project
,
current_user
).
execute
(
@board
)
if
request
.
format
.
html?
respond_with_board
end
private
private
def
boards
@boards
||=
Boards
::
ListService
.
new
(
project
,
current_user
).
execute
end
def
assign_endpoint_vars
def
assign_endpoint_vars
@boards_endpoint
=
project_boards_path
(
project
)
@boards_endpoint
=
project_boards_path
(
project
)
@bulk_issues_path
=
bulk_update_project_issues_path
(
project
)
@bulk_issues_path
=
bulk_update_project_issues_path
(
project
)
...
@@ -39,22 +20,4 @@ class Projects::BoardsController < Projects::ApplicationController
...
@@ -39,22 +20,4 @@ class Projects::BoardsController < Projects::ApplicationController
def
authorize_read_board!
def
authorize_read_board!
access_denied!
unless
can?
(
current_user
,
:read_board
,
project
)
access_denied!
unless
can?
(
current_user
,
:read_board
,
project
)
end
end
def
serialize_as_json
(
resource
)
resource
.
as_json
(
only:
[
:id
])
end
def
includes_board?
(
board_id
)
boards
.
any?
{
|
board
|
board
.
id
==
board_id
}
end
def
redirect_to_recent_board
return
if
request
.
format
.
json?
recently_visited
=
Boards
::
Visits
::
LatestService
.
new
(
project
,
current_user
).
execute
if
recently_visited
&&
includes_board?
(
recently_visited
.
board_id
)
redirect_to
(
namespace_project_board_path
(
id:
recently_visited
.
board_id
),
status: :found
)
end
end
end
end
spec/controllers/groups/boards_controller_spec.rb
View file @
7d5ee418
...
@@ -33,11 +33,9 @@ describe Groups::BoardsController do
...
@@ -33,11 +33,9 @@ describe Groups::BoardsController do
it
'renders template if visited board is not found'
do
it
'renders template if visited board is not found'
do
temporary_board
=
create
(
:board
,
group:
group
)
temporary_board
=
create
(
:board
,
group:
group
)
visited
=
create
(
:board_group_recent_visit
,
group:
temporary_board
.
group
,
board:
temporary_board
,
user:
user
)
create
(
:board_group_recent_visit
,
group:
temporary_board
.
group
,
board:
temporary_board
,
user:
user
)
temporary_board
.
delete
temporary_board
.
delete
allow_any_instance_of
(
Boards
::
Visits
::
LatestService
).
to
receive
(
:execute
).
and_return
(
visited
)
list_boards
list_boards
expect
(
response
).
to
render_template
:index
expect
(
response
).
to
render_template
:index
...
...
spec/controllers/projects/boards_controller_spec.rb
View file @
7d5ee418
...
@@ -39,11 +39,9 @@ describe Projects::BoardsController do
...
@@ -39,11 +39,9 @@ describe Projects::BoardsController do
it
'renders template if visited board is not found'
do
it
'renders template if visited board is not found'
do
temporary_board
=
create
(
:board
,
project:
project
)
temporary_board
=
create
(
:board
,
project:
project
)
visited
=
create
(
:board_project_recent_visit
,
project:
temporary_board
.
project
,
board:
temporary_board
,
user:
user
)
create
(
:board_project_recent_visit
,
project:
temporary_board
.
project
,
board:
temporary_board
,
user:
user
)
temporary_board
.
delete
temporary_board
.
delete
allow_any_instance_of
(
Boards
::
Visits
::
LatestService
).
to
receive
(
:execute
).
and_return
(
visited
)
list_boards
list_boards
expect
(
response
).
to
render_template
:index
expect
(
response
).
to
render_template
:index
...
...
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