97 lines
2.9 KiB
PHP
97 lines
2.9 KiB
PHP
|
<?php
|
||
|
namespace nur\v\html5;
|
||
|
|
||
|
use nur\co;
|
||
|
use nur\session;
|
||
|
use nur\v\ly;
|
||
|
use nur\v\model\IBasicPage;
|
||
|
use nur\v\model\INavigablePage;
|
||
|
use nur\v\model\IPage;
|
||
|
use nur\v\navbar;
|
||
|
use nur\v\v;
|
||
|
|
||
|
class Html5NavigablePageContainer extends Html5BasicPageContainer {
|
||
|
protected function overridePrint(IPage $page): void {
|
||
|
if ($this->isAutocloseSession()) session::close();
|
||
|
if ($page instanceof IBasicPage) {
|
||
|
if ($page->haveContent()) {
|
||
|
$this->doResolveConfig();
|
||
|
$this->haveOutput = true;
|
||
|
$this->printStartHtml();
|
||
|
$this->printStartHead();
|
||
|
$this->printCss();
|
||
|
$this->printJs();
|
||
|
$this->printScript();
|
||
|
$this->printHeadTitle();
|
||
|
$this->printEndHead();
|
||
|
$this->printStartBody();
|
||
|
if ($page instanceof INavigablePage) {
|
||
|
$showNavigation = $page->navigationShowNavigation();
|
||
|
$implementsOwnLayout = $page->navigationImplementsOwnLayout();
|
||
|
$containerOptions = $page->CONTAINER_OPTIONS();
|
||
|
} else {
|
||
|
$showNavigation = false;
|
||
|
$containerOptions = null;
|
||
|
}
|
||
|
if ($showNavigation) {
|
||
|
$page->beforePrintStartNavigation();
|
||
|
if ($implementsOwnLayout) $page->printStartNavigation();
|
||
|
else $this->printStartNavigation($page->NAVBAR_OPTIONS());
|
||
|
$page->afterPrintStartNavigation();
|
||
|
|
||
|
$page->beforePrintNavigation();
|
||
|
$page->printNavigation();
|
||
|
$page->afterPrintNavigation();
|
||
|
|
||
|
$page->beforePrintEndNavigation();
|
||
|
if ($implementsOwnLayout) $page->printEndNavigation();
|
||
|
else $this->printEndNavigation();
|
||
|
$page->afterPrintEndNavigation();
|
||
|
|
||
|
$page->beforePrintStartContainer();
|
||
|
if ($implementsOwnLayout) $page->printStartContainer();
|
||
|
else $this->printStartContainer($containerOptions);
|
||
|
$page->afterPrintStartContainer();
|
||
|
} else {
|
||
|
$this->printStartContainer($containerOptions);
|
||
|
}
|
||
|
$this->printContent();
|
||
|
# s'assurer que le layout est correctement fermé
|
||
|
ly::end();
|
||
|
if ($showNavigation) {
|
||
|
$page->beforePrintEndContainer();
|
||
|
if ($implementsOwnLayout) $page->printEndContainer();
|
||
|
else $this->printEndContainer();
|
||
|
$page->afterPrintEndContainer();
|
||
|
} else {
|
||
|
$this->printEndContainer();
|
||
|
}
|
||
|
$this->printEndBody();
|
||
|
$this->printEndHtml();
|
||
|
}
|
||
|
} else {
|
||
|
# si ce n'est pas une instance de IBasicPage, l'imprimer tel quel
|
||
|
if ($page->haveContent()) {
|
||
|
$this->haveOutput = true;
|
||
|
co::_write([$this->page]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function printStartNavigation(?array $options): void {
|
||
|
navbar::start($options);
|
||
|
}
|
||
|
|
||
|
function printEndNavigation(): void {
|
||
|
navbar::end();
|
||
|
}
|
||
|
|
||
|
function printStartContainer(?array $options): void {
|
||
|
co::_print(v::sdiv(["class" => ["container"]]));
|
||
|
}
|
||
|
|
||
|
function printEndContainer(): void {
|
||
|
co::_print(v::ediv());
|
||
|
}
|
||
|
}
|