Config()->get('documentation', 'modules')) !== null) { $path = str_replace('{module}', $module, $path); if (is_dir($path)) { return $path; } } if ($suppressErrors) { return null; } throw new Zend_Controller_Action_Exception( sprintf($this->translate('Documentation for module \'%s\' is not available'), $module), 404 ); } /** * List modules which are enabled and having the 'doc' directory */ public function indexAction() { $moduleManager = Icinga::app()->getModuleManager(); $modules = array(); foreach ($moduleManager->listInstalledModules() as $module) { $path = $this->getPath($module, $moduleManager->getModuleDir($module, '/doc'), true); if ($path !== null) { $modules[] = $moduleManager->getModule($module, false); } } $this->view->modules = $modules; } /** * Assert that the given module is installed * * @param string $moduleName * * @throws Zend_Controller_Action_Exception If the required parameter 'moduleName' is empty or if the * given module is not installed */ protected function assertModuleInstalled($moduleName) { if (empty($moduleName)) { throw new Zend_Controller_Action_Exception( sprintf($this->translate('Missing parameter \'%s\''), 'moduleName'), 404 ); } $moduleManager = Icinga::app()->getModuleManager(); if (! $moduleManager->hasInstalled($moduleName)) { throw new Zend_Controller_Action_Exception( sprintf($this->translate('Module \'%s\' is not installed'), $moduleName), 404 ); } } /** * View the toc of a module's documentation * * @see assertModuleInstalled() */ public function tocAction() { $module = $this->getParam('moduleName'); $this->assertModuleInstalled($module); $this->view->moduleName = $module; try { $this->renderToc( $this->getPath($module, Icinga::app()->getModuleManager()->getModuleDir($module, '/doc')), $module, 'doc/module/chapter', array('moduleName' => $module) ); } catch (DocException $e) { throw new Zend_Controller_Action_Exception($e->getMessage(), 404); } } /** * View a chapter of a module's documentation * * @throws Zend_Controller_Action_Exception If the required parameter 'chapterId' is missing or if an error in * the documentation module's library occurs * @see assertModuleInstalled() */ public function chapterAction() { $module = $this->getParam('moduleName'); $this->assertModuleInstalled($module); $chapter = $this->getParam('chapter'); if ($chapter === null) { throw new Zend_Controller_Action_Exception( sprintf($this->translate('Missing parameter %s'), 'chapter'), 404 ); } $this->view->moduleName = $module; try { $this->renderChapter( $this->getPath($module, Icinga::app()->getModuleManager()->getModuleDir($module, '/doc')), $chapter, 'doc/module/chapter', array('moduleName' => $module) ); } catch (DocException $e) { throw new Zend_Controller_Action_Exception($e->getMessage(), 404); } } /** * View a module's documentation as PDF * * @see assertModuleInstalled() */ public function pdfAction() { $module = $this->getParam('moduleName'); $this->assertModuleInstalled($module); $this->renderPdf( $this->getPath($module, Icinga::app()->getModuleManager()->getModuleDir($module, '/doc')), $module, 'doc/module/chapter', array('moduleName' => $module) ); } }