*/
protected function processRequest(string $type, Request $request, Response $response): Response
{
+ $tagsSeparator = $this->container->conf->get('general.tags_separator', ' ');
if ($this->container->loginManager->isLoggedIn() === true) {
$visibility = $this->container->sessionManager->getSessionParameter('visibility');
}
$sort = $request->getQueryParam('sort');
$searchTags = $request->getQueryParam('searchtags');
- $filteringTags = $searchTags !== null ? explode(' ', $searchTags) : [];
+ $filteringTags = $searchTags !== null ? explode($tagsSeparator, $searchTags) : [];
$tags = $this->container->bookmarkService->bookmarksCountPerTag($filteringTags, $visibility ?? null);
$tags = $this->formatTagsForCloud($tags);
}
- $searchTags = implode(' ', escape($filteringTags));
+ $tagsUrl = [];
+ foreach ($tags as $tag => $value) {
+ $tagsUrl[escape($tag)] = urlencode((string) $tag);
+ }
+
+ $searchTags = tags_array2str($filteringTags, $tagsSeparator);
+ $searchTags = !empty($searchTags) ? trim($searchTags, $tagsSeparator) . $tagsSeparator : '';
+ $searchTagsUrl = urlencode($searchTags);
$data = [
- 'search_tags' => $searchTags,
- 'tags' => $tags,
+ 'search_tags' => escape($searchTags),
+ 'search_tags_url' => $searchTagsUrl,
+ 'tags' => escape($tags),
+ 'tags_url' => $tagsUrl,
];
- $data = $this->executeHooks('tag' . $type, $data);
- foreach ($data as $key => $value) {
- $this->assignView($key, $value);
- }
+ $this->executePageHooks('render_tag' . $type, $data, 'tag.' . $type);
+ $this->assignAllView($data);
- $searchTags = !empty($searchTags) ? $searchTags .' - ' : '';
+ $searchTags = !empty($searchTags) ? trim(str_replace($tagsSeparator, ' ', $searchTags)) . ' - ' : '';
$this->assignView(
'pagetitle',
- $searchTags . t('Tag '. $type) .' - '. $this->container->conf->get('general.title', 'Shaarli')
+ $searchTags . t('Tag ' . $type) . ' - ' . $this->container->conf->get('general.title', 'Shaarli')
);
- return $response->write($this->render('tag.'. $type));
+ return $response->write($this->render('tag.' . $type));
}
/**
return $tagList;
}
-
- /**
- * @param mixed[] $data Template data
- *
- * @return mixed[] Template data after active plugins hook execution.
- */
- protected function executeHooks(string $template, array $data): array
- {
- $this->container->pluginManager->executeHooks(
- 'render_'. $template,
- $data,
- ['loggedin' => $this->container->loginManager->isLoggedIn()]
- );
-
- return $data;
- }
}