function testGetBreadcrumbTitle() { $entity = new DocumentationEntity('testmodule', null, BASE_PATH . '/sapphiredocs/tests/docs/'); $page = new DocumentationPage(); $page->setRelativePath('test.md'); $page->setEntity($entity); $this->assertEquals("Testmodule - Test", $page->getBreadcrumbTitle()); $page = new DocumentationPage(); $page->setRelativePath('subfolder/subpage.md'); $page->setEntity(new DocumentationEntity('mymodule', null, BASE_PATH . '/sapphiredocs/tests/docs/')); $this->assertEquals('Mymodule - Subfolder - Subpage', $page->getBreadcrumbTitle()); }
/** * Return the summary / index text for this entity. Either pulled * from an index file or some other summary field * * @return DocumentationPage */ function getIndexPage($version, $lang = 'en') { $path = $this->getPath($version, $lang); $absFilepath = Controller::join_links($path, 'index.md'); if (file_exists($absFilepath)) { $relativeFilePath = str_replace($path, '', $absFilepath); $page = new DocumentationPage(); $page->setRelativePath($relativeFilePath); $page->setEntity($this); $page->setLang($lang); $page->setVersion($version); return $page; } return false; }
function testRewritingRelativeLinksToFiles() { $folder = '/sapphiredocs/tests/docs-parser/'; $page = new DocumentationPage(); $page->setRelativePath('file-download.md'); $page->setEntity(new DocumentationEntity('parser', '2.4', BASE_PATH . $folder)); $parsed = DocumentationParser::parse($page, $folder); $this->assertContains(Controller::join_links($folder, '/en/_images/external_link.png'), $parsed); $this->assertContains(Controller::join_links($folder, '/en/_images/test.tar.gz'), $parsed); }
/** * Return the children from a given entity sorted by Title using natural ordering. * It is used for building the tree of the page. * * @param DocumentationEntity path * @param string - an optional path within a entity * @param bool enable several recursive calls (more than 1 level) * @param string - version to use * @param string - lang to use * * @throws Exception * @return DataObjectSet */ public static function get_pages_from_folder($entity, $relativePath = false, $recursive = true, $version = 'trunk', $lang = 'en') { $output = new DataObjectSet(); $pages = array(); if (!$entity instanceof DocumentationEntity) { user_error("get_pages_from_folder must be passed a entity", E_USER_ERROR); } $path = $entity->getPath($version, $lang); if (self::is_registered_entity($entity)) { self::get_pages_from_folder_recursive($path, $relativePath, $recursive, $pages); } else { return user_error("{$entity} is not registered", E_USER_WARNING); } if (count($pages) > 0) { natsort($pages); foreach ($pages as $key => $pagePath) { // get file name from the path $file = ($pos = strrpos($pagePath, '/')) ? substr($pagePath, $pos + 1) : $pagePath; $page = new DocumentationPage(); $page->setTitle(self::clean_page_name($file)); $relative = str_replace($path, '', $pagePath); // if no extension, put a slash on it if (strpos($relative, '.') === false) { $relative .= '/'; } $page->setEntity($entity); $page->setRelativePath($relative); $page->setVersion($version); $page->setLang($lang); $output->push($page); } } return $output; }
/** * @return DocumentationPage */ function getPage() { $entity = $this->getEntity(); if (!$entity) { return false; } $version = $this->getVersion(); $lang = $this->getLang(); $absFilepath = DocumentationService::find_page($entity, $this->Remaining, $version, $lang); if ($absFilepath) { $relativeFilePath = str_replace($entity->getPath($version, $lang), '', $absFilepath); $page = new DocumentationPage(); $page->setRelativePath($relativeFilePath); $page->setEntity($entity); $page->setLang($lang); $page->setVersion($version); return $page; } return false; }