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/SiteMeta.php";
|
||||||
require_once "./src/Data/PageMeta.php";
|
require_once "./src/Data/PageMeta.php";
|
||||||
require_once "./src/Utils/ParsedownExtend.php";
|
|
||||||
require_once "./src/Utils/PageParse.php";
|
require_once "./src/Utils/PageParse.php";
|
||||||
require_once "./src/Utils/RequestNotExistException.php";
|
require_once "./src/Utils/RequestNotExistException.php";
|
||||||
require_once "./constant.php";
|
|
||||||
|
|
||||||
$parser = new ParsedownExtend();
|
|
||||||
|
|
||||||
$parser->setMarkupEscaped(false);
|
|
||||||
$parser->setSafeMode(false);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@ -60,7 +55,9 @@ try {
|
|||||||
|
|
||||||
require "./template/header.php";
|
require "./template/header.php";
|
||||||
|
|
||||||
require "./template/demo.html";
|
require "./template/nav.php";
|
||||||
|
|
||||||
|
require "./template/main.php";
|
||||||
|
|
||||||
require "./template/footer.php";
|
require "./template/footer.php";
|
||||||
|
|
||||||
|
@ -55,6 +55,7 @@ class SiteMeta {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static function getCustomScriptContent (string $id): string {
|
public static function getCustomScriptContent (string $id): string {
|
||||||
|
if (!file_exists("./data/$id.js")) return "";
|
||||||
return file_get_contents("./data/$id.js");
|
return file_get_contents("./data/$id.js");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
require_once "./src/Data/PageMeta.php";
|
||||||
require_once "./src/Element/BookCollection.php";
|
require_once "./src/Element/BookCollection.php";
|
||||||
require_once "./src/Element/BookContent/BookContented.php";
|
require_once "./src/Element/BookContent/BookContented.php";
|
||||||
|
|
||||||
@ -54,7 +55,7 @@ class Book {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getHtml (): string {
|
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
|
<?php
|
||||||
|
|
||||||
|
require_once "./src/Data/PageMeta.php";
|
||||||
require_once "./src/Element/Book.php";
|
require_once "./src/Element/Book.php";
|
||||||
|
|
||||||
class BookCollection {
|
class BookCollection {
|
||||||
@ -72,11 +73,11 @@ class BookCollection {
|
|||||||
|
|
||||||
public function getHtml (): string {
|
public function getHtml (): string {
|
||||||
$str = "";
|
$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) {
|
foreach ($this->array as $node) {
|
||||||
$str .= $node->getHtml();
|
$str .= $node->getHtml();
|
||||||
}
|
}
|
||||||
if ($this->name != self::ROOT) $str .= "</ul></li>";
|
if ($this->name != self::ROOT) $str .= "</div></div>";
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ class BookContented {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getSummaryHtml (): string {
|
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 {
|
public function getPage (string $id): ?Page {
|
||||||
|
@ -66,11 +66,11 @@ class Chapter {
|
|||||||
|
|
||||||
public function getSummaryHtml (): string {
|
public function getSummaryHtml (): string {
|
||||||
$str = "";
|
$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) {
|
foreach ($this->childs as $node) {
|
||||||
$str .= $node->getSummaryHtml();
|
$str .= $node->getSummaryHtml();
|
||||||
}
|
}
|
||||||
if ($this->parent != null) $str .= "</ul></li>";
|
if ($this->parent != null) $str .= "</div></div>";
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
require_once "./src/Data/PageMeta.php";
|
||||||
require_once "./src/Element/BookContent/Chapter.php";
|
require_once "./src/Element/BookContent/Chapter.php";
|
||||||
require_once "./src/Element/BookContent/Segment.php";
|
|
||||||
|
|
||||||
class Page {
|
class Page {
|
||||||
|
|
||||||
private string $id;
|
private string $id;
|
||||||
private string $name;
|
private string $name;
|
||||||
|
|
||||||
/** @var Segment[] */
|
|
||||||
private array $segues;
|
|
||||||
private Chapter $parent;
|
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->id = $id;
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
$this->parent = $parent;
|
$this->parent = $parent;
|
||||||
$this->segues = $childs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,9 +37,6 @@ class Page {
|
|||||||
throw new Exception("Book xml data missing attributes");
|
throw new Exception("Book xml data missing attributes");
|
||||||
for ($child = $xmlData->firstChild;$child != null ; $child = $child->nextSibling) {
|
for ($child = $xmlData->firstChild;$child != null ; $child = $child->nextSibling) {
|
||||||
switch ($child->nodeName) {
|
switch ($child->nodeName) {
|
||||||
case "Segment":
|
|
||||||
array_push($node->segues, Segment::parse($child, $node));
|
|
||||||
break;
|
|
||||||
case "#text":
|
case "#text":
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -60,37 +54,31 @@ class Page {
|
|||||||
return $this->name;
|
return $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Segment[]
|
|
||||||
*/
|
|
||||||
public function getSegments (): array {
|
|
||||||
return $this->segues;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getParent (): Chapter {
|
public function getParent (): Chapter {
|
||||||
return $this->parent;
|
return $this->parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getSummaryHtml (): string {
|
public function getSummaryHtml (): string {
|
||||||
$str =
|
// $str =
|
||||||
"<li id='page/$this->id' page-id='$this->id' class='page-contented chapter link-page " .
|
// "<li id='page/$this->id' page-id='$this->id' class='page-contented chapter link-page " .
|
||||||
(PageMeta::$page->getId()==$this->id?" active":"") .
|
// (PageMeta::$page->getId()==$this->id?" active":"") .
|
||||||
"'><a class='page-contented' " .
|
// "'><a class='page-contented' " .
|
||||||
(
|
// (
|
||||||
PageMeta::$page->getId()==$this->id ?
|
// PageMeta::$page->getId()==$this->id ?
|
||||||
"" :
|
// "" :
|
||||||
"href='/".PageMeta::$book->getId()."/".$this->id."' "
|
// "href='/".PageMeta::$book->getId()."/".$this->id."' "
|
||||||
) .
|
// ) .
|
||||||
">$this->name</a>";
|
// ">$this->name</a>";
|
||||||
if (sizeof($this->segues) > 0) {
|
// if (sizeof($this->segues) > 0) {
|
||||||
$str .= "<ul class='page-contented summary'>";
|
// $str .= "<ul class='page-contented summary'>";
|
||||||
foreach ($this->segues as $node) {
|
// foreach ($this->segues as $node) {
|
||||||
$str .= $node->getSummaryHtml();
|
// $str .= $node->getSummaryHtml();
|
||||||
}
|
// }
|
||||||
$str .= "</ul>";
|
// $str .= "</ul>";
|
||||||
}
|
// }
|
||||||
$str .= "</li>";
|
// $str .= "</li>";
|
||||||
return $str;
|
// 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 {
|
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;
|
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 {
|
public function getBook (string $id): ?Book {
|
||||||
return $this->books->getBook($id);
|
return $this->books->getBook($id);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ class Link {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getHtml (): string {
|
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 {
|
public function getHtml (): string {
|
||||||
$str = "";
|
$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) {
|
foreach ($this->array as $node) {
|
||||||
$str .= $node->getHtml();
|
$str .= $node->getHtml();
|
||||||
}
|
}
|
||||||
if ($this->name != self::ROOT) $str .= "</ul></li>";
|
if ($this->name != self::ROOT) $str .= "</div></div>";
|
||||||
return $str;
|
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