mirror of
https://github.com/silverstripe/silverstripe-docsviewer
synced 2024-10-22 09:05:56 +00:00
FIX: Relative paths from index files showing wrong
This commit is contained in:
parent
ecac89c0c7
commit
113e997b09
@ -384,10 +384,20 @@ class DocumentationParser {
|
|||||||
// relative path (relative to module base folder), without the filename.
|
// relative path (relative to module base folder), without the filename.
|
||||||
// For "sapphire/en/current/topics/templates", this would be "templates"
|
// For "sapphire/en/current/topics/templates", this would be "templates"
|
||||||
$relativePath = dirname($page->getRelativePath());
|
$relativePath = dirname($page->getRelativePath());
|
||||||
|
|
||||||
|
if(strpos($page->getRelativePath(), 'index.md')) {
|
||||||
|
$relativeLink = $page->getRelativeLink();
|
||||||
|
} else {
|
||||||
|
$relativeLink = dirname($page->getRelativeLink());
|
||||||
|
}
|
||||||
|
|
||||||
if($relativePath == '.') {
|
if($relativePath == '.') {
|
||||||
$relativePath = '';
|
$relativePath = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($relativeLink == ".") {
|
||||||
|
$relativeLink = '';
|
||||||
|
}
|
||||||
|
|
||||||
// file base link
|
// file base link
|
||||||
$fileBaseLink = Director::makeRelative(dirname($page->getPath()));
|
$fileBaseLink = Director::makeRelative(dirname($page->getPath()));
|
||||||
@ -416,10 +426,10 @@ class DocumentationParser {
|
|||||||
// Rewrite public URL
|
// Rewrite public URL
|
||||||
if(preg_match('/^\//', $url)) {
|
if(preg_match('/^\//', $url)) {
|
||||||
// Absolute: Only path to module base
|
// Absolute: Only path to module base
|
||||||
$relativeUrl = Controller::join_links($baselink, $url);
|
$relativeUrl = Controller::join_links($baselink, $url, '/');
|
||||||
} else {
|
} else {
|
||||||
// Relative: Include path to module base and any folders
|
// Relative: Include path to module base and any folders
|
||||||
$relativeUrl = Controller::join_links($baselink, $relativePath, $url);
|
$relativeUrl = Controller::join_links($baselink, $relativeLink, $url, '/');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
class DocumentationParserTest extends SapphireTest {
|
class DocumentationParserTest extends SapphireTest {
|
||||||
|
|
||||||
protected $entity, $entityAlt, $page, $subPage, $subSubPage, $filePage, $metaDataPage;
|
protected $entity, $entityAlt, $page, $subPage, $subSubPage, $filePage, $metaDataPage, $indexPage;
|
||||||
|
|
||||||
public function tearDown() {
|
public function tearDown() {
|
||||||
parent::tearDown();
|
parent::tearDown();
|
||||||
@ -65,9 +65,120 @@ class DocumentationParserTest extends SapphireTest {
|
|||||||
DOCSVIEWER_PATH . '/tests/docs-parser/en/MetaDataTest.md'
|
DOCSVIEWER_PATH . '/tests/docs-parser/en/MetaDataTest.md'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->indexPage = new DocumentationPage(
|
||||||
|
$this->entity,
|
||||||
|
'index.md',
|
||||||
|
DOCSVIEWER_PATH. '/tests/docs/en/index.md'
|
||||||
|
);
|
||||||
|
|
||||||
$manifest = new DocumentationManifest(true);
|
$manifest = new DocumentationManifest(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testRelativeLinks() {
|
||||||
|
// index.md
|
||||||
|
$result = DocumentationParser::rewrite_relative_links(
|
||||||
|
$this->indexPage->getMarkdown(),
|
||||||
|
$this->indexPage
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: subfolder index](dev/docs/en/documentationparsertest/2.4/subfolder/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
// test.md
|
||||||
|
|
||||||
|
$result = DocumentationParser::rewrite_relative_links(
|
||||||
|
$this->page->getMarkdown(),
|
||||||
|
$this->page
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: subfolder index](dev/docs/en/documentationparsertest/2.4/subfolder/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: subfolder page](dev/docs/en/documentationparsertest/2.4/subfolder/subpage/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: http](http://silverstripe.org)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: api](api:DataObject)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
$result = DocumentationParser::rewrite_relative_links(
|
||||||
|
$this->subPage->getMarkdown(),
|
||||||
|
$this->subPage
|
||||||
|
);
|
||||||
|
|
||||||
|
# @todo this should redirect to /subpage/
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: relative](dev/docs/en/documentationparsertest/2.4/subfolder/subpage.md/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: absolute index](dev/docs/en/documentationparsertest/2.4/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
# @todo this should redirect to /
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: absolute index with name](dev/docs/en/documentationparsertest/2.4/index/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: relative index](dev/docs/en/documentationparsertest/2.4/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: relative parent page](dev/docs/en/documentationparsertest/2.4/test/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: absolute parent page](dev/docs/en/documentationparsertest/2.4/test/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = DocumentationParser::rewrite_relative_links(
|
||||||
|
$this->subSubPage->getMarkdown(),
|
||||||
|
$this->subSubPage
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: absolute index](dev/docs/en/documentationparsertest/2.4/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: relative index](dev/docs/en/documentationparsertest/2.4/subfolder/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: relative parent page](dev/docs/en/documentationparsertest/2.4/subfolder/subpage/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: relative grandparent page](dev/docs/en/documentationparsertest/2.4/test/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertContains(
|
||||||
|
'[link: absolute page](dev/docs/en/documentationparsertest/2.4/test/)',
|
||||||
|
$result
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testGenerateHtmlId() {
|
public function testGenerateHtmlId() {
|
||||||
$this->assertEquals('title-one', DocumentationParser::generate_html_id('title one'));
|
$this->assertEquals('title-one', DocumentationParser::generate_html_id('title one'));
|
||||||
$this->assertEquals('title-one', DocumentationParser::generate_html_id('Title one'));
|
$this->assertEquals('title-one', DocumentationParser::generate_html_id('Title one'));
|
||||||
@ -207,92 +318,7 @@ HTML;
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRelativeLinks() {
|
|
||||||
$result = DocumentationParser::rewrite_relative_links(
|
|
||||||
$this->page->getMarkdown(),
|
|
||||||
$this->page
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: subfolder index](dev/docs/en/documentationparsertest/2.4/subfolder/)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: subfolder page](dev/docs/en/documentationparsertest/2.4/subfolder/subpage)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: http](http://silverstripe.org)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: api](api:DataObject)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$result = DocumentationParser::rewrite_relative_links(
|
|
||||||
$this->subPage->getMarkdown(),
|
|
||||||
$this->subPage
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: relative](dev/docs/en/documentationparsertest/2.4/subfolder/subpage.md)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: absolute index](dev/docs/en/documentationparsertest/2.4/)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: absolute index with name](dev/docs/en/documentationparsertest/2.4/index)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: relative index](dev/docs/en/documentationparsertest/2.4/)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: relative parent page](dev/docs/en/documentationparsertest/2.4/test)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: absolute parent page](dev/docs/en/documentationparsertest/2.4/test)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$result = DocumentationParser::rewrite_relative_links(
|
|
||||||
$this->subSubPage->getMarkdown(),
|
|
||||||
$this->subSubPage
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: absolute index](dev/docs/en/documentationparsertest/2.4/)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: relative index](dev/docs/en/documentationparsertest/2.4/subfolder/)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: relative parent page](dev/docs/en/documentationparsertest/2.4/subfolder/subpage)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: relative grandparent page](dev/docs/en/documentationparsertest/2.4/test)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertContains(
|
|
||||||
'[link: absolute page](dev/docs/en/documentationparsertest/2.4/test)',
|
|
||||||
$result
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testRetrieveMetaData() {
|
public function testRetrieveMetaData() {
|
||||||
DocumentationParser::retrieve_meta_data($this->metaDataPage);
|
DocumentationParser::retrieve_meta_data($this->metaDataPage);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user