From 0a4be9b1f128c3707b76f48d4273c3fc39e412b1 Mon Sep 17 00:00:00 2001 From: Daniel Berthereau Date: Mon, 4 Jun 2018 00:00:00 +0200 Subject: [PATCH] Added the possibility to limit the references to a pool with a query. --- Module.php | 72 +++------------------ config/module.config.php | 1 + config/module.ini | 4 +- data/scripts/upgrade.php | 72 +++++++++++++++++++++ src/Controller/Site/ReferenceController.php | 14 +++- src/Form/ReferenceBlockForm.php | 8 +++ src/Mvc/Controller/Plugin/Reference.php | 62 ++++++++++++++---- src/Site/BlockLayout/Reference.php | 18 ++++-- src/View/Helper/Reference.php | 21 +++--- view/common/reference-list.phtml | 2 + view/common/reference-tree.phtml | 2 + view/reference/site/reference/browse.phtml | 5 +- 12 files changed, 184 insertions(+), 97 deletions(-) create mode 100644 data/scripts/upgrade.php diff --git a/Module.php b/Module.php index 14c311d..c84373a 100644 --- a/Module.php +++ b/Module.php @@ -35,74 +35,17 @@ public function install(ServiceLocatorInterface $serviceLocator) $this->manageSettings($serviceLocator->get('Omeka\Settings'), 'install'); } - public function upgrade($oldVersion, $newVersion, - ServiceLocatorInterface $serviceLocator - ) { - $settings = $serviceLocator->get('Omeka\Settings'); - $config = require __DIR__ . '/config/module.config.php'; - - // The reference plugin is not available during upgrade. - include_once __DIR__ . '/src/Mvc/Controller/Plugin/Reference.php'; - $entityManager = $serviceLocator->get('Omeka\EntityManager'); - $controllerPluginManager = $serviceLocator->get('ControllerPluginManager'); - $api = $controllerPluginManager->get('api'); - $referencePlugin = new Mvc\Controller\Plugin\Reference($entityManager, $api); - - if (version_compare($oldVersion, '3.4.5', '<')) { - $referenceSlugs = $settings->get('reference_slugs'); - foreach ($referenceSlugs as $slug => &$slugData) { - $slugData['term'] = $slugData['id']; - unset($slugData['id']); - } - $settings->set('reference_slugs', $referenceSlugs); - - $tree = $settings->get('reference_tree_hierarchy', ''); - $settings->set( - 'reference_tree_hierarchy', - $referencePlugin->convertTreeToLevels($tree) - ); - - $defaultConfig = $config[strtolower(__NAMESPACE__)]['config']; - $settings->set( - 'reference_resource_name', - $defaultConfig['reference_resource_name'] - ); - $settings->set( - 'reference_total', - $defaultConfig['reference_total'] - ); - } - - if (version_compare($oldVersion, '3.4.7', '<')) { - $tree = $settings->get('reference_tree_hierarchy', ''); - $treeString = $referencePlugin->convertFlatLevelsToTree($tree); - $settings->set( - 'reference_tree_hierarchy', - $referencePlugin->convertTreeToLevels($treeString) - ); - - $entityManager = $serviceLocator->get('Omeka\EntityManager'); - $repository = $entityManager->getRepository(\Omeka\Entity\SitePageBlock::class); - $blocks = $repository->findBy(['layout' => 'reference']); - foreach ($blocks as $block) { - $data = $block->getData(); - if (empty($data['reference']['tree']) || $data['reference']['mode'] !== 'tree') { - continue; - } - $treeString = $referencePlugin->convertFlatLevelsToTree($data['reference']['tree']); - $data['reference']['tree'] = $referencePlugin->convertTreeToLevels($treeString); - $block->setData($data); - $entityManager->persist($block); - } - $entityManager->flush(); - } - } - public function uninstall(ServiceLocatorInterface $serviceLocator) { $this->manageSettings($serviceLocator->get('Omeka\Settings'), 'uninstall'); } + public function upgrade($oldVersion, $newVersion, + ServiceLocatorInterface $serviceLocator + ) { + require_once 'data/scripts/upgrade.php'; + } + protected function manageSettings($settings, $process, $key = 'config') { $config = require __DIR__ . '/config/module.config.php'; @@ -217,7 +160,8 @@ public function getConfigForm(PhpRenderer $renderer) $form->setData($data); $html = '

'; $html .= $renderer->translate('This config allows to create routed pages for all sites.'); // @translate - $html .= ' ' . $renderer->translate('References can be created inside pages via blocks too.'); // @translate + $html .= ' ' . $renderer->translate('References are limited by the pool of the site.'); // @translate + $html .= ' ' . $renderer->translate('References can be created inside pages via blocks too, with any resource pool.'); // @translate $html .= '

'; $html .= $renderer->formCollection($form); return $html; diff --git a/config/module.config.php b/config/module.config.php index 6c93c5a..5663cf9 100644 --- a/config/module.config.php +++ b/config/module.config.php @@ -120,6 +120,7 @@ 'type' => 'properties', 'tree' => [], 'resource_name' => 'items', + 'query' => '', ], 'options' => [ 'query_type' => 'eq', diff --git a/config/module.ini b/config/module.ini index 5233515..7cbf15b 100644 --- a/config/module.ini +++ b/config/module.ini @@ -8,5 +8,5 @@ author_link = "https://github.com/Daniel-KM" module_link = "https://github.com/Daniel-KM/Omeka-S-module-Reference" support_link = "https://github.com/Daniel-KM/Omeka-S-module-Reference/issues" configurable = true -version = "3.4.8" -omeka_version_constraint = "^1.0.0" +version = "3.4.9" +omeka_version_constraint = "^1.1.0" diff --git a/data/scripts/upgrade.php b/data/scripts/upgrade.php new file mode 100644 index 0000000..2e97843 --- /dev/null +++ b/data/scripts/upgrade.php @@ -0,0 +1,72 @@ +get('Omeka\Settings'); +$connection = $services->get('Omeka\Connection'); +$config = require dirname(dirname(__DIR__)) . '/config/module.config.php'; + +// The reference plugin is not available during upgrade. +include_once dirname(dirname(__DIR__)) . '/src/Mvc/Controller/Plugin/Reference.php'; +$entityManager = $services->get('Omeka\EntityManager'); +$controllerPluginManager = $services->get('ControllerPluginManager'); +$api = $controllerPluginManager->get('api'); +$referencePlugin = new Mvc\Controller\Plugin\Reference($entityManager, $api); + +if (version_compare($oldVersion, '3.4.5', '<')) { + $referenceSlugs = $settings->get('reference_slugs'); + foreach ($referenceSlugs as $slug => &$slugData) { + $slugData['term'] = $slugData['id']; + unset($slugData['id']); + } + $settings->set('reference_slugs', $referenceSlugs); + + $tree = $settings->get('reference_tree_hierarchy', ''); + $settings->set( + 'reference_tree_hierarchy', + $referencePlugin->convertTreeToLevels($tree) + ); + + $defaultConfig = $config[strtolower(__NAMESPACE__)]['config']; + $settings->set( + 'reference_resource_name', + $defaultConfig['reference_resource_name'] + ); + $settings->set( + 'reference_total', + $defaultConfig['reference_total'] + ); +} + +if (version_compare($oldVersion, '3.4.7', '<')) { + $tree = $settings->get('reference_tree_hierarchy', ''); + $treeString = $referencePlugin->convertFlatLevelsToTree($tree); + $settings->set( + 'reference_tree_hierarchy', + $referencePlugin->convertTreeToLevels($treeString) + ); + + $repository = $entityManager->getRepository(\Omeka\Entity\SitePageBlock::class); + $blocks = $repository->findBy(['layout' => 'reference']); + foreach ($blocks as $block) { + $data = $block->getData(); + if (empty($data['reference']['tree']) || $data['reference']['mode'] !== 'tree') { + continue; + } + $treeString = $referencePlugin->convertFlatLevelsToTree($data['reference']['tree']); + $data['reference']['tree'] = $referencePlugin->convertTreeToLevels($treeString); + $block->setData($data); + $entityManager->persist($block); + } + $entityManager->flush(); +} + +if (version_compare($oldVersion, '3.4.9', '<')) { + // Append item pool (query) to reference block. + $sql = <<<'SQL' +UPDATE site_page_block +SET data = CONCAT('{"reference":{"order":{"alphabetic":"ASC"},"query":[],', SUBSTR(data, 15)) +WHERE layout = "reference"; +SQL; + $connection->exec($sql); +} diff --git a/src/Controller/Site/ReferenceController.php b/src/Controller/Site/ReferenceController.php index 5abdf92..594d40d 100644 --- a/src/Controller/Site/ReferenceController.php +++ b/src/Controller/Site/ReferenceController.php @@ -29,10 +29,14 @@ public function browseAction() $resourceName = $settings->get('reference_resource_name', 'resources'); + $query = ['site_id' => $this->currentSite()->id()]; + $view = new ViewModel(); $view->setVariable('references', $slugs); $view->setVariable('types', array_keys($types)); $view->setVariable('resourceName', $resourceName); + $view->setVariable('query', $query); + $view->setVariable('site', $this->currentSite()); return $view; } @@ -54,23 +58,25 @@ public function listAction() $term = $slugData['term']; $type = $slugData['type']; $resourceName = $settings->get('reference_resource_name', 'resources'); + $query = ['site_id' => $this->currentSite()->id()]; $output = $this->params()->fromQuery('output'); if ($output === 'json') { - $references = $this->reference()->getList($term, $type, $resourceName); + $references = $this->reference()->getList($term, $type, $resourceName, $query); $view = new JsonModel($references); return $view; } - $total = $this->reference()->count($term, $type, $resourceName); + $total = $this->reference()->count($term, $type, $resourceName, $query); $view = new ViewModel(); $view->setVariable('total', $total); $view->setVariable('label', $slugData['label']); $view->setVariable('term', $term); $view->setVariable('args', [ - 'type' => $slugData['type'], + 'type' => $type, 'resource_name' => $resourceName, + 'query' => $query, ]); $view->setVariable('options', [ 'query_type' => $settings->get('reference_query_type', 'eq'), @@ -94,6 +100,7 @@ public function treeAction() $term = $settings->get('reference_tree_term', 'dcterms:subject'); $type = 'properties'; $resourceName = $settings->get('reference_resource_name', 'resources'); + $query = ['site_id' => $this->currentSite()->id()]; $references = $settings->get('reference_tree_hierarchy', []); @@ -103,6 +110,7 @@ public function treeAction() 'term' => $term, 'type' => $type, 'resource_name' => $resourceName, + 'query' => $query, ]); $view->setVariable('options', [ 'query_type' => $settings->get('reference_query_type', 'eq'), diff --git a/src/Form/ReferenceBlockForm.php b/src/Form/ReferenceBlockForm.php index b37ea22..693e2d6 100644 --- a/src/Form/ReferenceBlockForm.php +++ b/src/Form/ReferenceBlockForm.php @@ -92,6 +92,14 @@ public function init() ], ], ]); + $referenceFieldset->add([ + 'name' => 'query', + 'type' => Element\Text::class, + 'options' => [ + 'label' => 'Query to limit resources', // @translate + 'info' => 'Limit the reference to a particular subset of resources, for example a site, via an advanced search query.', // @translate + ], + ]); $this->add([ 'name' => 'o:block[__blockIndex__][o:data][options]', diff --git a/src/Mvc/Controller/Plugin/Reference.php b/src/Mvc/Controller/Plugin/Reference.php index c3e50bf..48d30e1 100644 --- a/src/Mvc/Controller/Plugin/Reference.php +++ b/src/Mvc/Controller/Plugin/Reference.php @@ -45,17 +45,18 @@ public function __construct(EntityManager $entityManager, Api $api) * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param string $type "properties" (default) or "resource_classes". * @param string $resourceName All resources types if empty. + * @param array $query An api search formatted query to limit results. * @param int $perPage * @param int $page One-based page number. * @return Reference|array|null The result or null if called directly, else * this view plugin. */ - public function __invoke($term = null, $type = null, $resourceName = null, $perPage = null, $page = null) + public function __invoke($term = null, $type = null, $resourceName = null, $query = null, $perPage = null, $page = null) { if (empty($term)) { return $this; } - return $this->getList($term, $type, $resourceName, $perPage, $page); + return $this->getList($term, $type, $resourceName, $query, $perPage, $page); } /** @@ -64,11 +65,12 @@ public function __invoke($term = null, $type = null, $resourceName = null, $perP * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param string $type "properties" (default) or "resource_classes". * @param string $resourceName + * @param array $query An api search formatted query to limit results. * @param int $perPage * @param int $page One-based page number. * @return array Associative array with total and first record ids. */ - public function getList($term, $type = null, $resourceName = null, $perPage = null, $page = null) + public function getList($term, $type = null, $resourceName = null, $query = null, $perPage = null, $page = null) { $type = $type === 'resource_classes' ? 'resource_classes' : 'properties'; @@ -82,7 +84,7 @@ public function getList($term, $type = null, $resourceName = null, $perPage = nu return; } - $references = $this->getReferencesList($termId, $type, $entityClass, [], $perPage, $page); + $references = $this->getReferencesList($termId, $type, $entityClass, $query, [], $perPage, $page, null); return $references; } @@ -246,9 +248,10 @@ public function convertFlatLevelsToTree(array $levels) * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param string $type "properties" (default) or "resource_classes". * @param string $resourceName + * @param array $query An api search formatted query to limit results. * @return int The number of references if only one resource name is set. */ - public function count($term, $type = null, $resourceName = null) + public function count($term, $type = null, $resourceName = null, $query = null) { $type = $type === 'resource_classes' ? 'resource_classes' : 'properties'; @@ -262,7 +265,7 @@ public function count($term, $type = null, $resourceName = null) return; } - return $this->countReferences($termId, $type, $entityClass); + return $this->countReferences($termId, $type, $entityClass, $query); } /** @@ -270,7 +273,7 @@ public function count($term, $type = null, $resourceName = null) * * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param array $args Specify the references with "type", "resource_name", - * "per_page" and "page". + * "query", "per_page" and "page". * @param array $options Options to display references. Values are booleans: * - raw: Show references as raw text, not links (default to false) * - skiplinks: Add the list of letters at top and bottom of the page @@ -299,11 +302,12 @@ public function displayListForTerm($term, array $args = [], array $options = []) $options = $this->cleanOptions($options); + $query = empty($args['query']) ? null : $args['query']; $perPage = empty($args['per_page']) ? null : (int) $args['per_page']; $page = empty($args['page']) ? null : (int) $args['page']; $output = $options['link_to_single'] ? 'withFirst' : 'list'; - $references = $this->getReferencesList($termId, $type, $entityClass, [], $perPage, $page, $output); + $references = $this->getReferencesList($termId, $type, $entityClass, $query, [], $perPage, $page, $output); $controller = $this->getController(); $partial = $controller->viewHelpers()->get('partial'); @@ -313,6 +317,7 @@ public function displayListForTerm($term, array $args = [], array $options = []) 'type' => $type, 'resourceName' => $resourceName, 'options' => $options, + 'query' => $query, 'perPage' => $perPage, 'page' => $page, ]); @@ -366,7 +371,7 @@ public function displayListForTerm($term, array $args = [], array $options = []) * * @param array $referenceLevels References and levels to show. * @param array $args Specify the references with "term" (dcterms:subject by - * default), "type" and "resource_name" + * default), "type", "resource_name", and "query" * @param array $options Options to display the references. Values are booleans: * - raw: Show subjects as raw text, not links (default to false) * - link_to_single: Link to single resource, else to browse even when there @@ -401,6 +406,8 @@ public function displayTree($references, array $args, array $options = []) $resourceName = $this->mapEntityToResourceName($entityClass); + $query = empty($args['query']) ? null : $args['query']; + $options['mode'] = 'tree'; $options = $this->cleanOptions($options); @@ -425,7 +432,7 @@ public function displayTree($references, array $args, array $options = []) $branches[] = $branch; $lowerBranches[] = $hasMb ? mb_strtolower($branch) : strtolower($branch); } - $totals = $this->getReferencesList($termId, $type, $entityClass, $lowerBranches, null, null, $output); + $totals = $this->getReferencesList($termId, $type, $entityClass, $query, $lowerBranches, null, null, $output); } // Simple tree. else { @@ -436,7 +443,7 @@ public function displayTree($references, array $args, array $options = []) : array_map(function($v) { return strtolower(key($v)); }, $references); - $totals = $this->getReferencesList($termId, $type, $entityClass, $lowerReferences, null, null, $output); + $totals = $this->getReferencesList($termId, $type, $entityClass, $query, $lowerReferences, null, null, $output); } $lowerTotals = []; @@ -550,6 +557,7 @@ protected function cleanOptions($options) * @param int $termId May be the resource class id. * @param string $type "properties" (default) or "resource_classes". * @param string $entityClass + * @param array $query An api search formatted query to limit results. * @param array $values Allow to limit the answer to the specified values. * @param int $perPage * @param int $page One-based page number. @@ -561,6 +569,7 @@ protected function getReferencesList( $termId, $type, $entityClass, + $query = null, $values = [], $perPage = null, $page = null, @@ -631,6 +640,20 @@ protected function getReferencesList( ]); } + // TODO Allow to use a query for resources. + // TODO Use a temporary table or use get the qb from the adapter. + if ($query && $entityClass !== \Omeka\Entity\Resource::class) { + $resourceName = $this->mapEntityToResourceName($entityClass); + $ids = $this->api->search($resourceName, $query, ['returnScalar' => 'id'])->getContent(); + if ($ids) { + $qb + ->andWhere('resource.id IN (:ids)') + ->setParameter('ids', $ids); + } else { + return []; + } + } + if ($values) { $qb ->andWhere('value.value IN (:values)') @@ -680,9 +703,10 @@ protected function getReferencesList( * @param int $termId May be the resource class id. * @param string $type "properties" or "resource_classes". * @param string $entityClass + * @param array $query An api search formatted query to limit results. * @return int The number of references if only one entity class is set. */ - protected function countReferences($termId, $type, $entityClass) + protected function countReferences($termId, $type, $entityClass, $query = null) { $entityManager = $this->entityManager; $qb = $entityManager->createQueryBuilder(); @@ -719,6 +743,20 @@ protected function countReferences($termId, $type, $entityClass) ->innerJoin($entityClass, 'res', 'WITH', 'resource.id = res.id'); } + // TODO Allow to use a query for resources. + // TODO Use a temporary table or use get the qb from the adapter. + if ($query && $entityClass !== \Omeka\Entity\Resource::class) { + $resourceName = $this->mapEntityToResourceName($entityClass); + $ids = $this->api->search($resourceName, $query, ['returnScalar' => 'id'])->getContent(); + if ($ids) { + $qb + ->andWhere('resource.id IN (:ids)') + ->setParameter('ids', $ids); + } else { + return 0; + } + } + $totalRecords = $qb->getQuery()->getSingleScalarResult(); return $totalRecords; } diff --git a/src/Site/BlockLayout/Reference.php b/src/Site/BlockLayout/Reference.php index 533f640..92c0a73 100644 --- a/src/Site/BlockLayout/Reference.php +++ b/src/Site/BlockLayout/Reference.php @@ -33,7 +33,7 @@ class Reference extends AbstractBlockLayout /** * @var array */ - protected $defaultSettings; + protected $defaultSettings = []; /** * @param Api $api @@ -68,6 +68,7 @@ public function form(PhpRenderer $view, SiteRepresentation $site, $addedBlock = empty($block); if ($addedBlock) { $data = $this->defaultSettings; + $data['reference']['query'] = 'site_id=' . $site->id(); } else { $data = $block->data(); } @@ -91,6 +92,8 @@ public function form(PhpRenderer $view, SiteRepresentation $site, ? $this->referencePlugin->convertLevelsToTree($data['reference']['tree']) : ''; + $data['reference']['query'] = urldecode(http_build_query($data['reference']['query'], "\n", '&', PHP_QUERY_RFC3986)); + // TODO Fix set data for radio buttons. $form->setData([ 'o:block[__blockIndex__][o:data][reference]' => $data['reference'], @@ -128,10 +131,12 @@ public function render(PhpRenderer $view, SitePageBlockRepresentation $block) $total = count($data['reference']['tree']); break; case 'list': - $term = $args['term']; - $type = $args['type']; - $resourceName = $args['resource_name']; - $total = $this->referencePlugin->count($term, $type, $resourceName); + $total = $this->referencePlugin->count( + $args['term'], + $args['type'], + $args['resource_name'], + $args['query'] + ); break; } @@ -187,6 +192,9 @@ public function onHydrate(SitePageBlock $block, ErrorStore $errorStore) $data['reference']['resource_name'] = 'items'; } + parse_str($data['reference']['query'], $query); + $data['reference']['query'] = $query; + $data['reference']['termId'] = $this->api->searchOne($data['reference']['type'], [ 'term' => $data['reference']['term'], ])->getContent()->id(); diff --git a/src/View/Helper/Reference.php b/src/View/Helper/Reference.php index 6005ae1..9b4e769 100644 --- a/src/View/Helper/Reference.php +++ b/src/View/Helper/Reference.php @@ -27,17 +27,18 @@ public function __construct(ReferencePlugin $reference) * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param string $type "properties" (default) or "resource_classes". * @param string $resourceName All resources types if empty. + * @param array $query An api search formatted query to limit results. * @param int $perPage * @param int $page One-based page number. * @return Reference|array|null The result or null if called directly, else * this view helper. */ - public function __invoke($term = null, $type = null, $resourceName = null, $perPage = null, $page = null) - { + public function __invoke($term = null, $type = null, $resourceName = null, $query = null, $perPage = null, $page = null) + { if (empty($term)) { return $this; } - return $this->reference->getList($term, $type, $resourceName, $perPage, $page); + return $this->reference->getList($term, $type, $resourceName, $query, $perPage, $page); } /** @@ -46,13 +47,14 @@ public function __invoke($term = null, $type = null, $resourceName = null, $perP * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param string $type "properties" (default) or "resource_classes". * @param string $resourceName + * @param array $query An api search formatted query to limit results. * @param int $perPage * @param int $page One-based page number. * @return array Associative array with total and first record ids. */ - public function getList($term, $type = null, $resourceName = null, $perPage = null, $page = null) + public function getList($term, $type = null, $resourceName = null, $query = null, $perPage = null, $page = null) { - return $this->reference->getList($term, $type, $resourceName, $perPage, $page); + return $this->reference->getList($term, $type, $resourceName, $query, $perPage, $page); } /** @@ -76,11 +78,12 @@ public function getTree($references = null) * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param string $type "properties" (default) or "resource_classes". * @param string $resourceName + * @param array $query An api search formatted query to limit results. * @return int The number of references if only one resource name is set. */ - public function count($term, $type = null, $resourceName = null) + public function count($term, $type = null, $resourceName = null, $query = null) { - return $this->reference->count($term, $type, $resourceName); + return $this->reference->count($term, $type, $resourceName, $query); } /** @@ -88,7 +91,7 @@ public function count($term, $type = null, $resourceName = null) * * @param int|string|PropertyRepresentation|ResourceClassRepresentation $term * @param array $args Specify the references with "type", "resource_name", - * "per_page" and "page". + * "query", "per_page" and "page". * @param array $options Options to display references. Values are booleans: * - raw: Show references as raw text, not links (default to false) * - skiplinks: Add the list of letters at top and bottom of the page @@ -147,7 +150,7 @@ public function displayListForTerm($term, array $args = [], array $options = []) * @param array $referenceLevels Flat associative array of references to * show with reference as key and level as value. * @param array $args Specify the references with "term" (dcterms:subject by - * default), "type" and "resource_name" + * default), "type", "resource_name", and "query". * @param array $options Options to display the references. Values are booleans: * - raw: Show subjects as raw text, not links (default to false) * - expanded: Show tree as expanded (defaul to config) diff --git a/view/common/reference-list.phtml b/view/common/reference-list.phtml index 495f5af..558c5dd 100644 --- a/view/common/reference-list.phtml +++ b/view/common/reference-list.phtml @@ -1,4 +1,6 @@ headLink()->prependStylesheet($this->assetUrl('css/reference.css', 'Reference')); diff --git a/view/common/reference-tree.phtml b/view/common/reference-tree.phtml index 07ab82f..007f9e4 100644 --- a/view/common/reference-tree.phtml +++ b/view/common/reference-tree.phtml @@ -1,4 +1,6 @@ headLink()->appendStylesheet($this->assetUrl('vendor/jquery-simplefolders/main.css', 'Reference')); $this->headScript()->appendFile($this->assetUrl('vendor/jquery-simplefolders/main.js', 'Reference')); diff --git a/view/reference/site/reference/browse.phtml b/view/reference/site/reference/browse.phtml index 0fa79a6..a2dd119 100644 --- a/view/reference/site/reference/browse.phtml +++ b/view/reference/site/reference/browse.phtml @@ -3,6 +3,7 @@ $escape = $this->plugin('escapeHtml'); $this->htmlElement('body')->appendAttribute('class', 'reference browse list'); $siteSlug = $this->params()->fromRoute('site-slug'); $resourceName = empty($resourceName) ? 'resources' : $resourceName; +$query = empty($query) ? ['site_id' => $site->id()] : $query; ?>

translate('References'); ?>

@@ -15,7 +16,7 @@ $resourceName = empty($resourceName) ? 'resources' : $resourceName; $slugData): ?>
  • hyperlink( - sprintf('%s (%d)', $slugData['label'], $this->reference()->count($slugData['term'], $slugData['type'], $resourceName)), + sprintf('%s (%d)', $slugData['label'], $this->reference()->count($slugData['term'], $slugData['type'], $resourceName, $query)), $this->url('site/reference/list', ['site-slug' => $siteSlug, 'slug' => $slug]), ['title' => sprintf($this->translate('Browse %s'), $slugData['label'])] ); @@ -44,7 +45,7 @@ $resourceName = empty($resourceName) ? 'resources' : $resourceName;
  • hyperlink( - sprintf('%s (%d)', $slugData['label'], $this->reference()->count($slugData['term'], $slugData['type'], $resourceName)), + sprintf('%s (%d)', $slugData['label'], $this->reference()->count($slugData['term'], $slugData['type'], $resourceName, $query)), $this->url('site/reference/list', ['site-slug' => $siteSlug, 'slug' => $slug]), ['title' => sprintf($this->translate('Browse %s'), $slugData['label'])] );