13 import(
'lib.pkp.classes.plugins.GenericPlugin');
15 define(
'BROWSEBYSECTION_DEFAULT_PER_PAGE', 30);
16 define(
'BROWSEBYSECTION_NMI_TYPE',
'BROWSEBYSECTION_NMI_');
23 public function register($category, $path, $mainContextId = NULL) {
24 $success = parent::register($category, $path);
25 if (!
Config::getVar(
'general',
'installed') || defined(
'RUNNING_UPGRADE'))
return $success;
30 HookRegistry::register(
'Templates::Manager::Sections::SectionForm::AdditionalMetadata', array($this,
'addSectionFormFields'));
46 return __(
'plugins.generic.browseBySection.name');
53 return __(
'plugins.generic.browseBySection.description');
70 if ($this->
getEnabled() && $page ===
'section') {
71 $this->
import(
'pages/BrowseBySectionHandler');
72 define(
'HANDLER_CLASS',
'BrowseBySectionHandler');
90 $fields[] =
'browseByEnabled';
91 $fields[] =
'browseByPath';
92 $fields[] =
'browseByPerPage';
106 $fields[] =
'browseByDescription';
126 $output .= $smarty->fetch($this->
getTemplateResource(
'controllers/grids/settings/section/form/sectionFormAdditionalFields.tpl'));
140 $sectionForm = $args[0];
143 $contextId = $context ? $context->getId() : CONTEXT_ID_NONE;
146 $section = $sectionDao->getById($sectionForm->getSectionId(), $contextId);
149 $sectionForm->setData(
'browseByEnabled', $section->getData(
'browseByEnabled'));
150 $sectionForm->setData(
'browseByPath', $section->getData(
'browseByPath'));
151 $sectionForm->setData(
'browseByPerPage', $section->getData(
'browseByPerPage'));
152 $sectionForm->setData(
'browseByDescription', $section->getData(
'browseByDescription'));
166 $sectionForm =& $args[0];
169 $sectionForm->setData(
'browseByEnabled',
$request->getUserVar(
'browseByEnabled'));
170 $sectionForm->setData(
'browseByPath',
$request->getUserVar(
'browseByPath'));
171 $sectionForm->setData(
'browseByPerPage',
$request->getUserVar(
'browseByPerPage'));
172 $sectionForm->setData(
'browseByDescription',
$request->getUserVar(
'browseByDescription',
null));
185 $sectionForm = $args[0];
186 $section = $sectionDao->getById($sectionForm->getSectionId(),
Application::getRequest()->getContext()->getId());
188 $section->setData(
'browseByEnabled', $sectionForm->getData(
'browseByEnabled'));
189 $section->setData(
'browseByDescription', $sectionForm->getData(
'browseByDescription'));
192 $browseByPath = $sectionForm->getData(
'browseByPath') ? $sectionForm->getData(
'browseByPath') :
'';
193 if (empty($browseByPath)) {
196 $section->setData(
'browseByPath', preg_replace(
'/[^A-Za-z0-9-_]/',
'', str_replace(
' ',
'-', $browseByPath)));
199 $browseByPerPage = $sectionForm->getData(
'browseByPerPage') ? $sectionForm->getData(
'browseByPerPage') :
'';
200 if (!ctype_digit((
string) $browseByPerPage)) {
201 $browseByPerPage =
null;
203 $section->setData(
'browseByPerPage', $browseByPerPage);
205 $sectionDao->updateObject($section);
220 $contextId = $context ? $context->getId() : CONTEXT_ID_NONE;
223 $sections = $sectionDao->getByContextId($contextId);
225 while ($section = $sections->next()) {
226 if ($section->getData(
'browseByEnabled')) {
227 $types[BROWSEBYSECTION_NMI_TYPE . $section->getId()] = array(
228 'title' => __(
'plugins.generic.browseBySection.navMenuItem', array(
'name' => $section->getLocalizedTitle())),
229 'description' => __(
'plugins.generic.browseBySection.navMenuItem.description'),
244 $navigationMenuItem =& $args[0];
245 $typePrefixLength = strlen(BROWSEBYSECTION_NMI_TYPE);
247 if (substr($navigationMenuItem->getType(), 0, $typePrefixLength) === BROWSEBYSECTION_NMI_TYPE) {
250 $contextId = $context ? $context->getId() : CONTEXT_ID_NONE;
251 $sectionId = substr($navigationMenuItem->getType(), $typePrefixLength);
253 $section = $sectionDao->getById($sectionId, $contextId);
254 if (!$section->getData(
'browseByEnabled')) {
255 $navigationMenuItem->setIsDisplayed(
false);
257 $sectionPath = $section->getData(
'browseByPath') ? $section->getData(
'browseByPath') : $sectionId;
258 $dispatcher =
$request->getDispatcher();
259 $navigationMenuItem->setUrl($dispatcher->url(
265 htmlspecialchars($sectionPath)
280 $rootNode = $doc->documentElement;
286 $sections = $sectionDao->getByContextId($context->getId());
287 while ($section = $sections->next()) {
288 if ($section->getData(
'browseByEnabled')) {
289 $sectionPath = $section->getData(
'browseByPath') ? $section->getData(
'browseByPath') : $section->getId();
291 $url = $doc->createElement(
'url');
292 $url->appendChild($doc->createElement(
'loc', htmlspecialchars(
$request->url($context->getPath(),
'section',
'view', $sectionPath), ENT_COMPAT,
'UTF-8')));
293 $rootNode->appendChild($url);