getRequest(); if ($request->getContext()) { $config['filters'][] = $this->getSectionFilters($this->includeActiveSectionFiltersOnly); } if ($this->includeIssuesFilter) { $issueAutosuggestField = new FieldSelectIssues('issueIds', [ 'label' => __('issue.issues'), 'value' => [], 'apiUrl' => $request->getDispatcher()->url($request, Application::ROUTE_API, $request->getContext()->getPath(), 'issues'), ]); $config['filters'][] = [ 'filters' => [ [ 'title' => __('issue.issues'), 'param' => 'issueIds', 'value' => [], 'filterType' => 'pkp-filter-autosuggest', 'component' => 'field-select-issues', 'autosuggestProps' => $issueAutosuggestField->getConfig(), ] ] ]; } return $config; } /** * Get an array of workflow stages supported by the current app * * @return array */ public function getWorkflowStages() { return [ [ 'param' => 'stageIds', 'value' => WORKFLOW_STAGE_ID_SUBMISSION, 'title' => __('manager.publication.submissionStage'), ], [ 'param' => 'stageIds', 'value' => WORKFLOW_STAGE_ID_EXTERNAL_REVIEW, 'title' => __('manager.publication.reviewStage'), ], [ 'param' => 'stageIds', 'value' => WORKFLOW_STAGE_ID_EDITING, 'title' => __('submission.copyediting'), ], [ 'param' => 'stageIds', 'value' => WORKFLOW_STAGE_ID_PRODUCTION, 'title' => __('manager.publication.productionStage'), ], ]; } /** * Compile the sections for passing as filters * * @param bool $excludeInactive show inactive section filters or not * * @return array */ public function getSectionFilters($excludeInactive = false) { $request = Application::get()->getRequest(); $context = $request->getContext(); $sections = Repo::section()->getSectionList($context->getId(), $excludeInactive); // Use an autosuggest field if the list of submissions is too long if (count($sections) > 5) { $autosuggestField = new FieldAutosuggestPreset('sectionIds', [ 'label' => __('section.sections'), 'value' => [], 'options' => array_values(array_map(function ($section) { return [ 'value' => (int) $section['id'], 'label' => $section['title'], ]; }, $sections)), ]); return [ 'filters' => [ [ 'title' => __('section.sections'), 'param' => 'sectionIds', 'filterType' => 'pkp-filter-autosuggest', 'component' => 'field-autosuggest-preset', 'value' => [], 'autosuggestProps' => $autosuggestField->getConfig(), ] ], ]; } return [ 'heading' => __('section.sections'), 'filters' => array_map(function ($section) { return [ 'param' => 'sectionIds', 'value' => (int) $section['id'], 'title' => $section['title'], ]; }, $sections), ]; } }