Add previous and next links to the pages, fixes #93
This commit is contained in:
parent
6e38c56a12
commit
18a34beac3
@ -33,7 +33,6 @@ class Generate extends SymfonyCommand
|
|||||||
|
|
||||||
// Generate the tree
|
// Generate the tree
|
||||||
$daux->generateTree();
|
$daux->generateTree();
|
||||||
$daux->getProcessor()->manipulateTree($daux->tree);
|
|
||||||
|
|
||||||
// Generate the documentation
|
// Generate the documentation
|
||||||
$daux->getGenerator()->generateAll($input, $output, $width);
|
$daux->getGenerator()->generateAll($input, $output, $width);
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
use Symfony\Component\Console\Output\NullOutput;
|
use Symfony\Component\Console\Output\NullOutput;
|
||||||
use Todaymade\Daux\ContentTypes\ContentTypeHandler;
|
use Todaymade\Daux\ContentTypes\ContentTypeHandler;
|
||||||
use Todaymade\Daux\Tree\Builder;
|
use Todaymade\Daux\Tree\Builder;
|
||||||
|
use Todaymade\Daux\Tree\Content;
|
||||||
|
use Todaymade\Daux\Tree\Directory;
|
||||||
use Todaymade\Daux\Tree\Root;
|
use Todaymade\Daux\Tree\Root;
|
||||||
|
|
||||||
class Daux
|
class Daux
|
||||||
@ -173,6 +175,41 @@ class Daux
|
|||||||
$this->tree->getEntries()[$key]->setTitle($node);
|
$this->tree->getEntries()[$key]->setTitle($node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enhance the tree with processors
|
||||||
|
$this->getProcessor()->manipulateTree($this->tree);
|
||||||
|
|
||||||
|
// Sort the tree one last time before it is finalized
|
||||||
|
$this->sortTree($this->tree);
|
||||||
|
|
||||||
|
$this->finalizeTree($this->tree);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function sortTree(Directory $current) {
|
||||||
|
$current->sort();
|
||||||
|
foreach ($current->getEntries() as $entry) {
|
||||||
|
if ($entry instanceof Directory) {
|
||||||
|
$this->sortTree($entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function finalizeTree(Directory $current, $prev = null)
|
||||||
|
{
|
||||||
|
foreach ($current->getEntries() as $entry) {
|
||||||
|
if ($entry instanceof Directory) {
|
||||||
|
$prev = $this->finalizeTree($entry, $prev);
|
||||||
|
} elseif ($entry instanceof Content) {
|
||||||
|
if ($prev) {
|
||||||
|
$prev->setNext($entry);
|
||||||
|
$entry->setPrevious($prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
$prev = $entry;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,7 +74,9 @@ class ContentPage extends \Todaymade\Daux\Format\Base\ContentPage
|
|||||||
'markdown' => $this->content,
|
'markdown' => $this->content,
|
||||||
'request' => $params['request'],
|
'request' => $params['request'],
|
||||||
'content' => $this->convertPage($this->content),
|
'content' => $this->convertPage($this->content),
|
||||||
'breadcrumbs' => $params['html']['breadcrumbs']
|
'breadcrumbs' => $params['html']['breadcrumbs'],
|
||||||
|
'prev' => $this->file->getPrevious(),
|
||||||
|
'next' => $this->file->getNext(),
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($page['breadcrumbs']) {
|
if ($page['breadcrumbs']) {
|
||||||
|
@ -74,7 +74,7 @@ class Processor
|
|||||||
* phase, with this you can change the markdown parser or add
|
* phase, with this you can change the markdown parser or add
|
||||||
* a completely different file type.
|
* a completely different file type.
|
||||||
*
|
*
|
||||||
* @return \Todaymade\Daux\Format\Base\ContentTypes\ContentType[]
|
* @return \Todaymade\Daux\ContentTypes\ContentType[]
|
||||||
*/
|
*/
|
||||||
public function addContentType()
|
public function addContentType()
|
||||||
{
|
{
|
||||||
|
@ -37,7 +37,6 @@ class Server
|
|||||||
|
|
||||||
// Improve the tree with a processor
|
// Improve the tree with a processor
|
||||||
$daux->generateTree();
|
$daux->generateTree();
|
||||||
$daux->getProcessor()->manipulateTree($daux->tree);
|
|
||||||
|
|
||||||
$server = new static($daux);
|
$server = new static($daux);
|
||||||
|
|
||||||
|
@ -7,6 +7,16 @@ class Content extends Entry
|
|||||||
*/
|
*/
|
||||||
protected $content;
|
protected $content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Content
|
||||||
|
*/
|
||||||
|
protected $previous;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Content
|
||||||
|
*/
|
||||||
|
protected $next;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@ -26,4 +36,46 @@ class Content extends Entry
|
|||||||
{
|
{
|
||||||
$this->content = $content;
|
$this->content = $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Content
|
||||||
|
*/
|
||||||
|
public function getPrevious()
|
||||||
|
{
|
||||||
|
return $this->previous;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Content $previous
|
||||||
|
*/
|
||||||
|
public function setPrevious($previous)
|
||||||
|
{
|
||||||
|
$this->previous = $previous;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Content
|
||||||
|
*/
|
||||||
|
public function getNext()
|
||||||
|
{
|
||||||
|
return $this->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Content $next
|
||||||
|
*/
|
||||||
|
public function setNext($next)
|
||||||
|
{
|
||||||
|
$this->next = $next;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dump()
|
||||||
|
{
|
||||||
|
$dump = parent::dump();
|
||||||
|
|
||||||
|
$dump['prev'] = $this->getPrevious() ? $this->getPrevious()->getUrl() : '';
|
||||||
|
$dump['next'] = $this->getNext() ? $this->getNext()->getUrl() : '';
|
||||||
|
|
||||||
|
return $dump;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ class Directory extends Entry
|
|||||||
{
|
{
|
||||||
// Separate the values into buckets to sort them separately
|
// Separate the values into buckets to sort them separately
|
||||||
$buckets = [
|
$buckets = [
|
||||||
|
'index' => [],
|
||||||
'numeric' => [],
|
'numeric' => [],
|
||||||
'normal' => [],
|
'normal' => [],
|
||||||
'down_numeric' => [],
|
'down_numeric' => [],
|
||||||
@ -23,6 +24,11 @@ class Directory extends Entry
|
|||||||
foreach ($this->children as $key => $entry) {
|
foreach ($this->children as $key => $entry) {
|
||||||
$name = $entry->getName();
|
$name = $entry->getName();
|
||||||
|
|
||||||
|
if ($name == 'index' || $name == '_index') {
|
||||||
|
$buckets['index'][$key] = $entry;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($name[0] == "-") {
|
if ($name[0] == "-") {
|
||||||
if (is_numeric($name[1])) {
|
if (is_numeric($name[1])) {
|
||||||
$exploded = explode("_", $name);
|
$exploded = explode("_", $name);
|
||||||
|
@ -31,5 +31,14 @@
|
|||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<?= $page['content']; ?>
|
<?= $page['content']; ?>
|
||||||
|
|
||||||
|
<?php if(!empty($page['prev']) || !empty($page['next'])) { ?>
|
||||||
|
<nav>
|
||||||
|
<ul class="pager">
|
||||||
|
<?php if(!empty($page['prev'])) { ?><li><a href="<?= $base_url . $page['prev']->getUrl() ?>">Previous</a></li><?php } ?>
|
||||||
|
<?php if(!empty($page['next'])) { ?><li><a href="<?= $base_url . $page['next']->getUrl() ?>">Next</a></li><?php } ?>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<?php } ?>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ class DirectoryTest extends \PHPUnit_Framework_TestCase {
|
|||||||
array(["A_File", "01_A_File"], ["01_A_File", "A_File"]),
|
array(["A_File", "01_A_File"], ["01_A_File", "A_File"]),
|
||||||
array(["A_File", "01_Continuing", "-01_Coming", "-02_Soon"], ["01_Continuing", "A_File", "-01_Coming", "-02_Soon"]),
|
array(["A_File", "01_Continuing", "-01_Coming", "-02_Soon"], ["01_Continuing", "A_File", "-01_Coming", "-02_Soon"]),
|
||||||
array(["01_Getting_Started", "API_Calls", "200_Something_Else-Cool", "_5_Ways_to_Be_Happy"], ["01_Getting_Started", "200_Something_Else-Cool", "_5_Ways_to_Be_Happy", "API_Calls"]),
|
array(["01_Getting_Started", "API_Calls", "200_Something_Else-Cool", "_5_Ways_to_Be_Happy"], ["01_Getting_Started", "200_Something_Else-Cool", "_5_Ways_to_Be_Happy", "API_Calls"]),
|
||||||
|
array(["01_Getting_Started", "API_Calls", "index", "200_Something_Else-Cool", "_5_Ways_to_Be_Happy"], ["index", "01_Getting_Started", "200_Something_Else-Cool", "_5_Ways_to_Be_Happy", "API_Calls"]),
|
||||||
array(["Before_but_after", "A_File", "Continuing"], ["A_File", "Before_but_after", "Continuing"]),
|
array(["Before_but_after", "A_File", "Continuing"], ["A_File", "Before_but_after", "Continuing"]),
|
||||||
array(["01_GitHub_Flavored_Markdown", "Code_Test", "05_Code_Highlighting"], ["01_GitHub_Flavored_Markdown", "05_Code_Highlighting", "Code_Test"]),
|
array(["01_GitHub_Flavored_Markdown", "Code_Test", "05_Code_Highlighting"], ["01_GitHub_Flavored_Markdown", "05_Code_Highlighting", "Code_Test"]),
|
||||||
);
|
);
|
||||||
|
2
themes/daux/css/theme.min.css
vendored
2
themes/daux/css/theme.min.css
vendored
File diff suppressed because one or more lines are too long
2
themes/daux/less/bootstrap/bootstrap.less
vendored
2
themes/daux/less/bootstrap/bootstrap.less
vendored
@ -31,7 +31,7 @@
|
|||||||
@import "navbar.less";
|
@import "navbar.less";
|
||||||
//@import "breadcrumbs.less";
|
//@import "breadcrumbs.less";
|
||||||
//@import "pagination.less";
|
//@import "pagination.less";
|
||||||
//@import "pager.less";
|
@import "pager.less";
|
||||||
//@import "labels.less";
|
//@import "labels.less";
|
||||||
//@import "badges.less";
|
//@import "badges.less";
|
||||||
//@import "jumbotron.less";
|
//@import "jumbotron.less";
|
||||||
|
Loading…
Reference in New Issue
Block a user