mirror of
https://github.com/suk-ws/ph-Bookshelf.git
synced 2024-12-05 09:26:52 +08:00
连接旧后端(取消书目录内的 Segment 支持)
This commit is contained in:
parent
669c3034a3
commit
40f6ebcfdf
@ -3,15 +3,10 @@
|
||||
|
||||
require_once "./src/Data/SiteMeta.php";
|
||||
require_once "./src/Data/PageMeta.php";
|
||||
require_once "./src/Utils/ParsedownExtend.php";
|
||||
require_once "./src/Utils/PageParse.php";
|
||||
require_once "./src/Utils/RequestNotExistException.php";
|
||||
require_once "./constant.php";
|
||||
|
||||
$parser = new ParsedownExtend();
|
||||
|
||||
$parser->setMarkupEscaped(false);
|
||||
$parser->setSafeMode(false);
|
||||
|
||||
try {
|
||||
|
||||
@ -60,7 +55,9 @@ try {
|
||||
|
||||
require "./template/header.php";
|
||||
|
||||
require "./template/demo.html";
|
||||
require "./template/nav.php";
|
||||
|
||||
require "./template/main.php";
|
||||
|
||||
require "./template/footer.php";
|
||||
|
||||
|
@ -55,6 +55,7 @@ class SiteMeta {
|
||||
}
|
||||
|
||||
public static function getCustomScriptContent (string $id): string {
|
||||
if (!file_exists("./data/$id.js")) return "";
|
||||
return file_get_contents("./data/$id.js");
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
require_once "./src/Data/PageMeta.php";
|
||||
require_once "./src/Element/BookCollection.php";
|
||||
require_once "./src/Element/BookContent/BookContented.php";
|
||||
|
||||
@ -54,7 +55,7 @@ class Book {
|
||||
}
|
||||
|
||||
public function getHtml (): string {
|
||||
return "<li id='book/$this->id' book-id='$this->id' class='link link-book" . (PageMeta::$book->getId()==$this->id?" active":"") . "'><a class='link' " . (PageMeta::$book->getId()==$this->id?"":" href='/$this->id'") . ">$this->name</a></li>";
|
||||
return "<a id='book/$this->id' book-id='$this->id' class='no-style menu-item" . (PageMeta::$book->getId()==$this->id?" current":"") . "' href='/$this->id'" . ">$this->name</a>";
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
require_once "./src/Data/PageMeta.php";
|
||||
require_once "./src/Element/Book.php";
|
||||
|
||||
class BookCollection {
|
||||
@ -72,11 +73,11 @@ class BookCollection {
|
||||
|
||||
public function getHtml (): string {
|
||||
$str = "";
|
||||
if ($this->name != self::ROOT) $str .= "<li class='book-collection fold" . ($this->getBook(PageMeta::$book->getId())==null?"":" on") . "'><a class='book-collection'>$this->name<i class='exc-trigger fa'></i></a><ul class='book-collection summary'>";
|
||||
if ($this->name != self::ROOT) $str .= "<div class='menu-item-parent" . ($this->getBook(PageMeta::$book->getId())==null?"":" active") . "'><a class='no-style menu-item'>$this->name</a><div class='children'>";
|
||||
foreach ($this->array as $node) {
|
||||
$str .= $node->getHtml();
|
||||
}
|
||||
if ($this->name != self::ROOT) $str .= "</ul></li>";
|
||||
if ($this->name != self::ROOT) $str .= "</div></div>";
|
||||
return $str;
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ class BookContented {
|
||||
}
|
||||
|
||||
public function getSummaryHtml (): string {
|
||||
return "<div id='in-book-nav-container'>" . $this->childs->getSummaryHtml() . "</div>";
|
||||
return $this->childs->getSummaryHtml();
|
||||
}
|
||||
|
||||
public function getPage (string $id): ?Page {
|
||||
|
@ -66,11 +66,11 @@ class Chapter {
|
||||
|
||||
public function getSummaryHtml (): string {
|
||||
$str = "";
|
||||
if ($this->parent != null) $str .= "<li class='chapter fold" . ($this->getPage(PageMeta::$page->getId())==null?"":" on") . "'><a class='page-chapter'>$this->name<i class='exc-trigger fa'></i></a><ul class='page-chapter summary'>";
|
||||
if ($this->parent != null) $str .= "<div class='menu-item-parent" . ($this->getPage(PageMeta::$page->getId())==null?"":" active") . "'><a class='no-style menu-item' href='javascript:'>$this->name</a><div class='children'>";
|
||||
foreach ($this->childs as $node) {
|
||||
$str .= $node->getSummaryHtml();
|
||||
}
|
||||
if ($this->parent != null) $str .= "</ul></li>";
|
||||
if ($this->parent != null) $str .= "</div></div>";
|
||||
return $str;
|
||||
}
|
||||
|
||||
|
@ -1,22 +1,19 @@
|
||||
<?php
|
||||
|
||||
require_once "./src/Data/PageMeta.php";
|
||||
require_once "./src/Element/BookContent/Chapter.php";
|
||||
require_once "./src/Element/BookContent/Segment.php";
|
||||
|
||||
class Page {
|
||||
|
||||
private string $id;
|
||||
private string $name;
|
||||
|
||||
/** @var Segment[] */
|
||||
private array $segues;
|
||||
private Chapter $parent;
|
||||
|
||||
public function __construct (string $id, string $name, Chapter $parent, array $childs = array()) {
|
||||
public function __construct (string $id, string $name, Chapter $parent) {
|
||||
$this->id = $id;
|
||||
$this->name = $name;
|
||||
$this->parent = $parent;
|
||||
$this->segues = $childs;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -40,9 +37,6 @@ class Page {
|
||||
throw new Exception("Book xml data missing attributes");
|
||||
for ($child = $xmlData->firstChild;$child != null ; $child = $child->nextSibling) {
|
||||
switch ($child->nodeName) {
|
||||
case "Segment":
|
||||
array_push($node->segues, Segment::parse($child, $node));
|
||||
break;
|
||||
case "#text":
|
||||
break;
|
||||
default:
|
||||
@ -60,37 +54,31 @@ class Page {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Segment[]
|
||||
*/
|
||||
public function getSegments (): array {
|
||||
return $this->segues;
|
||||
}
|
||||
|
||||
public function getParent (): Chapter {
|
||||
return $this->parent;
|
||||
}
|
||||
|
||||
public function getSummaryHtml (): string {
|
||||
$str =
|
||||
"<li id='page/$this->id' page-id='$this->id' class='page-contented chapter link-page " .
|
||||
(PageMeta::$page->getId()==$this->id?" active":"") .
|
||||
"'><a class='page-contented' " .
|
||||
(
|
||||
PageMeta::$page->getId()==$this->id ?
|
||||
"" :
|
||||
"href='/".PageMeta::$book->getId()."/".$this->id."' "
|
||||
) .
|
||||
">$this->name</a>";
|
||||
if (sizeof($this->segues) > 0) {
|
||||
$str .= "<ul class='page-contented summary'>";
|
||||
foreach ($this->segues as $node) {
|
||||
$str .= $node->getSummaryHtml();
|
||||
}
|
||||
$str .= "</ul>";
|
||||
}
|
||||
$str .= "</li>";
|
||||
return $str;
|
||||
// $str =
|
||||
// "<li id='page/$this->id' page-id='$this->id' class='page-contented chapter link-page " .
|
||||
// (PageMeta::$page->getId()==$this->id?" active":"") .
|
||||
// "'><a class='page-contented' " .
|
||||
// (
|
||||
// PageMeta::$page->getId()==$this->id ?
|
||||
// "" :
|
||||
// "href='/".PageMeta::$book->getId()."/".$this->id."' "
|
||||
// ) .
|
||||
// ">$this->name</a>";
|
||||
// if (sizeof($this->segues) > 0) {
|
||||
// $str .= "<ul class='page-contented summary'>";
|
||||
// foreach ($this->segues as $node) {
|
||||
// $str .= $node->getSummaryHtml();
|
||||
// }
|
||||
// $str .= "</ul>";
|
||||
// }
|
||||
// $str .= "</li>";
|
||||
// return $str;
|
||||
return "<a id='page/$this->id' page-id='$this->id' class='no-style menu-item" . (PageMeta::$page->getId()==$this->id?" current":"") . "' href='/".PageMeta::$book->getId()."/$this->id'" . ">$this->name</a>";
|
||||
}
|
||||
|
||||
public function getMarkdownContent (): string {
|
||||
|
@ -1,56 +0,0 @@
|
||||
<?php
|
||||
|
||||
require_once "./src/Element/BookContent/Page.php";
|
||||
|
||||
class Segment {
|
||||
|
||||
private string $id;
|
||||
private string $name;
|
||||
private Page $parent;
|
||||
|
||||
public function __construct (string $id, string $name, Page $parent) {
|
||||
$this->id = $id;
|
||||
$this->name = $name;
|
||||
$this->parent = $parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DOMNode $xmlData
|
||||
* @param Page $parent
|
||||
* @return Segment
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function parse (DOMNode $xmlData, Page $parent): Segment {
|
||||
if ($xmlData->hasAttributes()) {
|
||||
$attrName = $xmlData->attributes->getNamedItem("name");
|
||||
$attrId = $xmlData->attributes->getNamedItem("id");
|
||||
if ($attrName == null)
|
||||
if ($attrId == null) throw new Exception("Segment xml data missing attribute \"name\"");
|
||||
else throw new Exception("Segment xml data with id \"$attrId->nodeValue\" missing attribute \"name\"");
|
||||
else $name = $attrName->nodeValue;
|
||||
if ($attrId == null) throw new Exception("Segment xml data named \"$name\" missing attribute \"id\"");
|
||||
else $id = $attrId->nodeValue;
|
||||
} else
|
||||
throw new Exception("Segment xml data missing attributes");
|
||||
if ($xmlData->hasChildNodes())
|
||||
throw new Exception("Segment xml named \"$name\" have some children which are not supported");
|
||||
return new Segment($id, $name, $parent);
|
||||
}
|
||||
|
||||
public function getId (): string {
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function getName (): string {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function getParent (): Page {
|
||||
return $this->parent;
|
||||
}
|
||||
|
||||
public function getSummaryHtml (): string {
|
||||
return "<li class='page-segment chapter'><a href='" . (PageMeta::$page->getId()==$this->parent->getId()?"":"/".PageMeta::$book->getId()."/".$this->parent->getId()."") . "#$this->id'>$this->name</a></li>";
|
||||
}
|
||||
|
||||
}
|
@ -70,16 +70,6 @@ class Bookshelf {
|
||||
return $this->rootBook;
|
||||
}
|
||||
|
||||
public function getHtml (): string {
|
||||
$str = $this->links->getHtml();
|
||||
$str .= "<li class='divider block-start'></li><div class='summary-container" . (PageMeta::$isMainPage?" on":"") . "'>";
|
||||
$str .= $this->books->getHtml();
|
||||
$str .= "</div><li class='divider block-end'></li>";
|
||||
$str .= PageMeta::$book->getSummaryHtml();
|
||||
$str .= "";
|
||||
return $str;
|
||||
}
|
||||
|
||||
public function getBook (string $id): ?Book {
|
||||
return $this->books->getBook($id);
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ class Link {
|
||||
}
|
||||
|
||||
public function getHtml (): string {
|
||||
return "<li class='link'><a class='link' href='$this->href' target='_blank'>$this->name</a></li>";
|
||||
return "<a class='no-style menu-item' href='$this->href' target='_blank'>$this->name</a>";
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -72,11 +72,11 @@ class LinkCollection {
|
||||
|
||||
public function getHtml (): string {
|
||||
$str = "";
|
||||
if ($this->name != self::ROOT) $str .= "<li class='link-collection fold'><a class='link-collection chapter'>$this->name<i class='exc-trigger fa'></i></a><ul class='link-collection articles'>";
|
||||
if ($this->name != self::ROOT) $str .= "<div class='menu-item-parent'><a class='no-style menu-item' href='javascript:'>$this->name</a><div class='children'>";
|
||||
foreach ($this->array as $node) {
|
||||
$str .= $node->getHtml();
|
||||
}
|
||||
if ($this->name != self::ROOT) $str .= "</ul></li>";
|
||||
if ($this->name != self::ROOT) $str .= "</div></div>";
|
||||
return $str;
|
||||
}
|
||||
|
||||
|
8
template/main.php
Normal file
8
template/main.php
Normal file
@ -0,0 +1,8 @@
|
||||
<main id="main">
|
||||
<div id="page-tools">
|
||||
<button id="sidebar-show">☰</button>
|
||||
</div>
|
||||
<article id="article">
|
||||
<?php require "./template/raw-article.php" ?>
|
||||
</article>
|
||||
</main>
|
40
template/nav.php
Normal file
40
template/nav.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php require_once "./src/Data/SiteMeta.php" ?>
|
||||
<?php require_once "./src/Data/PageMeta.php" ?>
|
||||
<div id="nav-container" class="prevent-animation"><nav id="sidebar">
|
||||
<noscript id="noscript-warn">For now, javascript must be enabled to view this site!!</noscript>
|
||||
<address id="site-title"><?= SiteMeta::getBookshelf()->getSiteName() ?></address>
|
||||
<div id="menu-container" class="menu-container sidebar-card">
|
||||
<div id="menu-metas" class="menu">
|
||||
<div class="menu-item-parent">
|
||||
<a class="no-style menu-item" href="javascript:">Links</a>
|
||||
<div class="children">
|
||||
<?= SiteMeta::getBookshelf()->getLinks()->getHtml() ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-item-parent">
|
||||
<a class="no-style menu-item" href="javascript:">Books</a>
|
||||
<div class="children">
|
||||
<?= SiteMeta::getBookshelf()->getBooks()->getHtml() ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="menu-pages" class="menu">
|
||||
<?= PageMeta::$book->getSummaryHtml() ?>
|
||||
</div>
|
||||
<div id="menu-about" class="menu">
|
||||
<!-- <a class="no-style menu-item" href="https://sukazyo.cc" target="_blank">-->
|
||||
<!-- <span>hosted by Sukazyo Workshop</span><br>-->
|
||||
<!-- <small> | @author A.C.Sukazyo Eyre</small><br>-->
|
||||
<!-- <small> <object><a class="no-style" href="https://laple.me/">| @author Lapis Apple</a></object></small><br>-->
|
||||
<!-- <small> | @author github contributors&~&</small><br>-->
|
||||
<!-- <small> | CC BY-NC-SA</small><br>-->
|
||||
<!-- <small> | CC statement just for testing</small>-->
|
||||
<!-- </a>-->
|
||||
<a class="no-style menu-item" href="https://github.com/suk-ws/ph-Bookshelf" target="_blank">
|
||||
<span>published with ph-Bookshelf</span><br>
|
||||
<small><?=SiteMeta::getProgramVersion()?></small><br>
|
||||
<small>with BreadCardUI</small>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav></div>
|
12
template/raw-article.php
Normal file
12
template/raw-article.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
require_once "./src/Utils/ParsedownExtend.php";
|
||||
require_once "./src/Data/PageMeta.php";
|
||||
|
||||
$parser = new ParsedownExtend();
|
||||
|
||||
$parser->setMarkupEscaped(false);
|
||||
$parser->setSafeMode(false);
|
||||
|
||||
echo "<h1 id='phb-page-".PageMeta::$page->getId()."'>".PageMeta::$page->getName()."</h1>\n";
|
||||
echo $parser->text(PageMeta::$page->getMarkdownContent());
|
5
template/raw-book-contents.php
Normal file
5
template/raw-book-contents.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
require_once "./src/Data/PageMeta.php";
|
||||
|
||||
PageMeta::$page->getSummaryHtml();
|
Loading…
Reference in New Issue
Block a user