nur-sery/nur_src/v/html5/Html5BasicPageContainer.php

151 lines
3.9 KiB
PHP

<?php
namespace nur\v\html5;
use nur\A;
use nur\co;
use nur\session;
use nur\v\ly;
use nur\v\model\IBasicPage;
use nur\v\model\IPage;
class Html5BasicPageContainer extends Html5VanillaPageContainer {
/** @return bool faut-il fermer automatiquement la session avant l'affichage? */
protected function AUTOCLOSE_SESSION(): bool {
return static::AUTOCLOSE_SESSION;
} const AUTOCLOSE_SESSION = true;
function initConfig(): void {
parent::initConfig();
A::update_nx($this->config, [
"autoclose_session" => $this->AUTOCLOSE_SESSION(),
]);
}
function isAutocloseSession(): bool { return $this->config["autoclose_session"]; }
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();
$this->printContent();
$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 printStartHtml(): void {
$page = $this->page;
$page->beforePrintStartHtml();
parent::printStartHtml();
$page->afterPrintStartHtml();
}
function printStartHead(): void {
$page = $this->page;
$page->beforePrintStartHead();
parent::printStartHead();
$page->afterPrintStartHead();
}
function printCss(): void {
$page = $this->page;
$page->beforePrintCssLinks();
parent::printCssLinks();
$page->afterPrintCssLinks();
$page->beforePrintCss();
parent::printCss();
# $page est une instance de IPlugin et est traitée dans la méthode précédente
#$page->printCss();
$page->afterPrintCss();
}
function printJs(): void {
$page = $this->page;
$page->beforePrintJsLinks();
parent::printJsLinks();
$page->afterPrintJsLinks();
$page->beforePrintJs();
parent::printJs();
# $page est une instance de IPlugin et est traitée dans la méthode précédente
#$page->printJs();
$page->afterPrintJs();
}
function printScript(): void {
$page = $this->page;
$page->beforePrintScript();
$this->resolvePluginsScripts();
# $page est une instance de IPlugin et est traitée dans la méthode précédente
# cf Html5VanillaPageContainer#overrideSetup()
#$this->beforeCapture();
#$page->printScript();
#$this->captureScript();
#$this->beforeCapture();
#$page->printJquery();
#$this->captureJquery();
$this->printMergedScripts();
$page->afterPrintScript();
}
function printHeadTitle(): void {
$page = $this->page;
$page->beforePrintHeadTitle();
$page->printHeadTitle();
$page->afterPrintHeadTitle();
}
function printEndHead(): void {
$page = $this->page;
$page->beforePrintEndHead();
parent::printEndHead();
$page->afterPrintEndHead();
}
function printStartBody(): void {
$page = $this->page;
$page->beforePrintStartBody();
parent::printStartBody();
$page->afterPrintStartBody();
}
function printContent(): void {
$page = $this->page;
$page->beforePrintContent();
$page->printContent();
# s'assurer que le layout est correctement fermé
ly::end();
$page->afterPrintContent();
}
function printEndBody(): void {
$page = $this->page;
$page->beforePrintEndBody();
parent::printEndBody();
$page->afterPrintEndBody();
}
function printEndHtml(): void {
$page = $this->page;
$page->beforePrintEndHtml();
parent::printEndHtml();
$page->afterPrintEndHtml();
}
}