getRequest(); $context = $request->getContext(); $config = parent::getConfig(); $config['apiUrl'] = $this->apiUrl; $config['count'] = $this->count; $config['getParams'] = $this->getParams; $config['lazyLoad'] = $this->lazyLoad; $config['itemsMax'] = $this->itemsMax; // URL to add a new submission if ($context->getData('disableSubmissions')) { $config['allowSubmissions'] = false; } $config['addUrl'] = $request->getDispatcher()->url( $request, Application::ROUTE_PAGE, null, 'submission' ); // URL to view info center for a submission $config['infoUrl'] = $request->getDispatcher()->url( $request, Application::ROUTE_COMPONENT, null, 'informationCenter.SubmissionInformationCenterHandler', 'viewInformationCenter', null, ['submissionId' => '__id__'] ); // URL to assign a participant $config['assignParticipantUrl'] = $request->getDispatcher()->url( $request, Application::ROUTE_COMPONENT, null, 'grid.users.stageParticipant.StageParticipantGridHandler', 'addParticipant', null, ['submissionId' => '__id__', 'stageId' => '__stageId__'] ); $config['filters'] = [ [ 'filters' => [ [ 'param' => 'isOverdue', 'value' => true, 'title' => __('common.overdue'), ], [ 'param' => 'isIncomplete', 'value' => true, 'title' => __('submissions.incomplete'), ], ], ], [ 'heading' => __('settings.roles.stages'), 'filters' => $this->getWorkflowStages(), ], [ 'heading' => __('submission.list.activity'), 'filters' => [ [ 'title' => __('submission.list.daysSinceLastActivity'), 'param' => 'daysInactive', 'value' => 30, 'min' => 1, 'max' => 180, 'filterType' => 'pkp-filter-slider', ] ] ] ]; if ($this->includeCategoriesFilter) { $categoryFilter = []; $categoryFilter = $this->getCategoryFilters($this->categories); if ($categoryFilter) { $config['filters'][] = $categoryFilter; } } if ($this->includeAssignedEditorsFilter) { $assignedEditorsField = new FieldSelectUsers('assignedTo', [ 'label' => __('editor.submissions.assignedTo'), 'value' => [], 'apiUrl' => $request->getDispatcher()->url( $request, Application::ROUTE_API, $context->getPath(), 'users', null, null, ['roleIds' => [Role::ROLE_ID_MANAGER, Role::ROLE_ID_SUB_EDITOR]] ), ]); $config['filters'][] = [ 'filters' => [ [ 'title' => __('editor.submissions.assignedTo'), 'param' => 'assignedTo', 'value' => [], 'filterType' => 'pkp-filter-autosuggest', 'component' => $assignedEditorsField->component, 'autosuggestProps' => $assignedEditorsField->getConfig(), ] ] ]; } // Provide required constants $templateMgr = TemplateManager::getManager($request); $templateMgr->setConstants([ 'STATUS_QUEUED' => PKPSubmission::STATUS_QUEUED, 'STATUS_PUBLISHED' => PKPSubmission::STATUS_PUBLISHED, 'STATUS_DECLINED' => PKPSubmission::STATUS_DECLINED, 'STATUS_SCHEDULED' => PKPSubmission::STATUS_SCHEDULED, 'WORKFLOW_STAGE_ID_SUBMISSION' => WORKFLOW_STAGE_ID_SUBMISSION, 'WORKFLOW_STAGE_ID_INTERNAL_REVIEW' => WORKFLOW_STAGE_ID_INTERNAL_REVIEW, 'WORKFLOW_STAGE_ID_EXTERNAL_REVIEW' => WORKFLOW_STAGE_ID_EXTERNAL_REVIEW, 'WORKFLOW_STAGE_ID_EDITING' => WORKFLOW_STAGE_ID_EDITING, 'WORKFLOW_STAGE_ID_PRODUCTION' => WORKFLOW_STAGE_ID_PRODUCTION, 'STAGE_STATUS_SUBMISSION_UNASSIGNED' => Repo::submission()::STAGE_STATUS_SUBMISSION_UNASSIGNED, 'REVIEW_ROUND_STATUS_PENDING_REVIEWERS' => ReviewRound::REVIEW_ROUND_STATUS_PENDING_REVIEWERS, 'REVIEW_ROUND_STATUS_REVIEWS_READY' => ReviewRound::REVIEW_ROUND_STATUS_REVIEWS_READY, 'REVIEW_ROUND_STATUS_REVIEWS_COMPLETED' => ReviewRound::REVIEW_ROUND_STATUS_REVIEWS_COMPLETED, 'REVIEW_ROUND_STATUS_REVIEWS_OVERDUE' => ReviewRound::REVIEW_ROUND_STATUS_REVIEWS_OVERDUE, 'REVIEW_ROUND_STATUS_REVISIONS_REQUESTED' => ReviewRound::REVIEW_ROUND_STATUS_REVISIONS_REQUESTED, 'REVIEW_ROUND_STATUS_REVISIONS_SUBMITTED' => ReviewRound::REVIEW_ROUND_STATUS_REVISIONS_SUBMITTED, 'REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW' => ReviewRound::REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW, 'REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW_SUBMITTED' => ReviewRound::REVIEW_ROUND_STATUS_RESUBMIT_FOR_REVIEW_SUBMITTED, 'REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_AWAITING_RESPONSE, 'REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_RESPONSE_OVERDUE, 'REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_REVIEW_OVERDUE, 'REVIEW_ASSIGNMENT_STATUS_ACCEPTED' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_ACCEPTED, 'REVIEW_ASSIGNMENT_STATUS_RECEIVED' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_RECEIVED, 'REVIEW_ASSIGNMENT_STATUS_COMPLETE' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_COMPLETE, 'REVIEW_ASSIGNMENT_STATUS_THANKED' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_THANKED, 'REVIEW_ASSIGNMENT_STATUS_CANCELLED' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_CANCELLED, 'REVIEW_ASSIGNMENT_STATUS_REQUEST_RESEND' => ReviewAssignment::REVIEW_ASSIGNMENT_STATUS_REQUEST_RESEND, 'REVIEW_ROUND_STATUS_RECOMMENDATIONS_READY' => ReviewRound::REVIEW_ROUND_STATUS_RECOMMENDATIONS_READY, 'REVIEW_ROUND_STATUS_RECOMMENDATIONS_COMPLETED' => ReviewRound::REVIEW_ROUND_STATUS_RECOMMENDATIONS_COMPLETED, ]); $templateMgr->setLocaleKeys([ 'common.lastActivity', 'editor.submissionArchive.confirmDelete', 'submission.list.empty', 'submission.submit.newSubmissionSingle', 'submission.review', 'submissions.incomplete', 'submission.list.assignEditor', 'submission.list.copyeditsSubmitted', 'submission.list.currentStage', 'submission.list.discussions', 'submission.list.dualWorkflowLinks', 'submission.list.galleysCreated', 'submission.list.infoCenter', 'submission.list.reviewAssignment', 'submission.list.responseDue', 'submission.list.reviewCancelled', 'submission.list.reviewComplete', 'submission.list.reviewDue', 'submission.list.reviewerWorkflowLink', 'submission.list.reviewsCompleted', 'submission.list.revisionsSubmitted', 'submission.list.viewSubmission', ]); return $config; } /** * Compile the categories for passing as filters * * @param array $categories * * @return array */ public function getCategoryFilters($categories = []) { $request = Application::get()->getRequest(); if ($categories) { // Use an autosuggest field if the list of categories is too long if (count($categories) > 5) { $autosuggestField = new FieldAutosuggestPreset('categoryIds', [ 'label' => __('category.category'), 'value' => [], 'options' => array_map(function ($category) { return [ 'value' => (int) $category['id'], 'label' => $category['title'], ]; }, $categories), ]); return [ 'filters' => [ [ 'title' => __('category.category'), 'param' => 'categoryIds', 'filterType' => 'pkp-filter-autosuggest', 'component' => 'field-autosuggest-preset', 'value' => [], 'autosuggestProps' => $autosuggestField->getConfig(), ] ], ]; } return [ 'heading' => __('category.category'), 'filters' => array_map(function ($category) { return [ 'param' => 'categoryIds', 'value' => (int) $category['id'], 'title' => $category['title'], ]; }, $categories), ]; } return []; } }