From 40e3e579ac235e7c096012a176934c216b7ad819 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Wed, 22 Jan 2020 17:30:32 +0100 Subject: [PATCH] FEAT #12842 TIME 1:00 filter on folders in resources lists --- .../resource/controllers/ResourceListController.php | 11 +++++++++++ src/frontend/service/filtersList.service.ts | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php index 660c3769471..f2963472876 100644 --- a/src/app/resource/controllers/ResourceListController.php +++ b/src/app/resource/controllers/ResourceListController.php @@ -281,6 +281,17 @@ class ResourceListController $where[] = 'doctypes.type_id in (?)'; $queryData[] = explode(',', $args['data']['doctypes']); } + if (!empty($args['data']['folders'])) { + $resourcesInFolders = FolderModel::getWithResources([ + 'select' => ['resources_folders.res_id'], + 'where' => ['resources_folders.folder_id in (?)'], + 'data' => [explode(',', $args['data']['folders'])] + ]); + $resourcesInFolders = array_column($resourcesInFolders, 'res_id'); + + $where[] = 'res_id in (?)'; + $queryData[] = $resourcesInFolders; + } if (!empty($args['data']['order']) && strpos($args['data']['order'], 'alt_identifier') !== false) { $order = 'order_alphanum(alt_identifier) ' . explode(' ', $args['data']['order'])[1]; diff --git a/src/frontend/service/filtersList.service.ts b/src/frontend/service/filtersList.service.ts index 6f016c50d5d..70c8d677efc 100644 --- a/src/frontend/service/filtersList.service.ts +++ b/src/frontend/service/filtersList.service.ts @@ -160,6 +160,14 @@ export class FiltersListService { filters += '&doctypes=' + doct.join(','); } + if (this.listsProperties[this.listsPropertiesIndex].folders.length > 0) { + let folders: any[] = []; + this.listsProperties[this.listsPropertiesIndex].folders.forEach((element: any) => { + folders.push(element.id); + }); + + filters += '&folders=' + folders.join(','); + } } return filters; } -- GitLab