Skip to content

Commit

Permalink
Integrate views to the side modal
Browse files Browse the repository at this point in the history
  • Loading branch information
jardakotesovec committed Oct 3, 2024
1 parent 8cd735f commit 95b3535
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 10 deletions.
2 changes: 1 addition & 1 deletion api/v1/_submissions/PKPBackendSubmissionsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ public function getViewsCount(Request $illuminateRequest): JsonResponse
}
$currentUser = $request->getUser();

$dashboardViews = Repo::submission()->getDashboardViews($context, $currentUser);
$dashboardViews = Repo::submission()->getDashboardViews($context, $currentUser, [], true);

return response()->json(
$dashboardViews->map(fn (DashboardView $view) => $view->getCount()),
Expand Down
2 changes: 1 addition & 1 deletion classes/submission/DashboardView.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class DashboardView
const TYPE_REVIEWER_ASSIGNMENTS_ARCHIVED = 'reviewer-assignments-archived';

// The number of submissions in the view
protected int $count;
protected int $count = 0;

public function __construct(
protected string $type, // View type, used also as the unique ID of the view's front-end part
Expand Down
8 changes: 6 additions & 2 deletions classes/submission/Repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@ public function getUrlSubmissionWizard(Context $context, ?int $submissionId = nu
/**
* Get all views, views count to be retrieved separately due to performance reasons
*/
public function getDashboardViews(Context $context, User $user, array $selectedRoleIds = []): Collection
public function getDashboardViews(Context $context, User $user, array $selectedRoleIds = [], bool $includeCount = false): Collection
{
$types = DashboardView::getTypes()->flip();
$roleDao = DAORegistry::getDAO('RoleDAO'); /** @var RoleDAO $roleDao */
Expand All @@ -809,7 +809,11 @@ public function getDashboardViews(Context $context, User $user, array $selectedR
$views = $this->mapDashboardViews($types, $context, $user, $canAccessUnassignedSubmission);
$filteredViews = $this->filterViewsByUserRoles($views, $roleIds);

return $this->setViewsCount($filteredViews);
if($includeCount) {
return $this->setViewsCount($filteredViews);
}

return $filteredViews;
}

/**
Expand Down
65 changes: 59 additions & 6 deletions classes/template/PKPTemplateManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
use APP\facades\Repo;
use APP\file\PublicFileManager;
use APP\submission\Submission;
use PKP\submission\DashboardView;
use APP\template\TemplateManager;
use Exception;
use Illuminate\Support\Str;
Expand Down Expand Up @@ -986,26 +987,78 @@ public function setupBackendPage()
if (count(array_intersect([Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_SUB_EDITOR, Role::ROLE_ID_ASSISTANT, Role::ROLE_ID_REVIEWER, Role::ROLE_ID_AUTHOR], $userRoles))) {
if(Config::getVar('features', 'enable_new_submission_listing')) {
if (count(array_intersect([Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_SUB_EDITOR, Role::ROLE_ID_ASSISTANT], $userRoles))) {
$dashboardViews = Repo::submission()->getDashboardViews($request->getContext(), $request->getUser(), [Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN, Role::ROLE_ID_SUB_EDITOR, Role::ROLE_ID_ASSISTANT]);
$requestedPage = $router->getRequestedPage($request);
$requestedOp = $router->getRequestedOp($request);
$requestedViewId = $request->getUserVar('currentViewId');
$viewsData = $dashboardViews->map(function (DashboardView $dashboardView) use ($router, $request,$requestedOp, $requestedPage, $requestedViewId) {
$data = $dashboardView->getData();
return [
'id' => $data['id'],
'name' => $data['name'],
'isCurrent' => $requestedPage === 'dashboard' && $requestedOp === 'editorial' && $requestedViewId === $data['id'],
'url' => $router->url($request, null, 'dashboard', 'editorial',null,['currentViewId'=>$data['id']]),
'badge' => ['slot' => '-']
];
});

$viewsData['newSubmission'] = [
'name' => __('author.submit.startHereTitle'),
'url' => $router->url($request, null, 'submission')
];

$menu['dashboards'] = [
'name' => __('navigation.dashboards'),
'url' => $router->url($request, null, 'dashboard', 'editorial'),
'isCurrent' => $router->getRequestedPage($request) === 'dashboards',
'icon' => 'Dashboard',
'submenu' => $viewsData
];
}
if(count(array_intersect([ Role::ROLE_ID_REVIEWER], $userRoles))) {
$dashboardViews = Repo::submission()->getDashboardViews($request->getContext(), $request->getUser(), [Role::ROLE_ID_REVIEWER]);
$requestedPage = $router->getRequestedPage($request);
$requestedOp = $router->getRequestedOp($request);
$requestedViewId = $request->getUserVar('currentViewId');
$viewsData = $dashboardViews->map(function (DashboardView $dashboardView) use ($router, $request,$requestedOp, $requestedPage, $requestedViewId) {
$data = $dashboardView->getData();
return [
'id' => $data['id'],
'name' => $data['name'],
'isCurrent' => $requestedPage === 'dashboard' && $requestedOp === 'reviewAssignments' && $requestedViewId === $data['id'],
'url' => $router->url($request, null, 'dashboard', 'reviewAssignments',null,['currentViewId'=>$data['id']]),
'badge' => ['slot' => '-']
];
});
$menu['reviewAssignments'] = [
'name' => __('navigation.reviewAssignments'),
'url' => $router->url($request, null, 'dashboard', 'reviewAssignments'),
'isCurrent' => $router->getRequestedPage($request) === 'reviewAssignments',
'submenu' => $viewsData,
'icon' => 'ReviewAssignments',
];
}
if(count(array_intersect([ Role::ROLE_ID_AUTHOR], $userRoles))) {
$dashboardViews = Repo::submission()->getDashboardViews($request->getContext(), $request->getUser(), [Role::ROLE_ID_AUTHOR]);
$requestedPage = $router->getRequestedPage($request);
$requestedOp = $router->getRequestedOp($request);
$requestedViewId = $request->getUserVar('currentViewId');
$viewsData = $dashboardViews->map(function (DashboardView $dashboardView) use ($router, $request,$requestedOp, $requestedPage, $requestedViewId) {
$data = $dashboardView->getData();
return [
'id' => $data['id'],
'name' => $data['name'],
'isCurrent' => $requestedPage === 'dashboard' && $requestedOp === 'mySubmissions' && $requestedViewId === $data['id'],
'url' => $router->url($request, null, 'dashboard', 'mySubmissions',null,['currentViewId'=>$data['id']]),
'badge' => ['slot' => '-']
];
});

$viewsData['newSubmission'] = [
'name' => __('author.submit.startHereTitle'),
'url' => $router->url($request, null, 'submission')
];


$menu['mySubmissions'] = [
'name' => __('navigation.mySubmissions'),
'url' => $router->url($request, null, 'dashboard', 'mySubmissions'),
'isCurrent' => $router->getRequestedPage($request) === 'mySubmissions',
'submenu' => $viewsData,
'icon' => 'MySubmissions',
];
}
Expand Down

0 comments on commit 95b3535

Please sign in to comment.