DeployCenter
Verze 1.1, (*1)
Upozornění: Podpora Maintenance je dostupná zatím pouze v @dev verzi nikoliv @stable, takže pokud používáte
stable, poté implementuje pouze až k volání metody register() .. všechny řádky níže již jsou irelevantní., (*2)
Implementace v bootstrap.php, ideálně ihned po načtení autoloaderu z Composeru, aby se nestalo, že pád RobotLoadera způsobí nefunkčnost tohoto DeployCentra., (*3)
Zároveň systém volitelně podporuje tzv. údržbu, tj. pokud vystavujete změny a chtěli byste, aby Vám uživatelé nemohli zasahovat do stránky, když není kompletně vystavená.
Pak můžete po registraci DeployCentera zavolat metodu checkMaintenance, která v případě, že je údržba aktivní zobrazí "mainteance" šablonu, samozřejmě můžete použít vlastní zavoláním setMaintenanceTemplateFile., (*4)
register("debug");
// Debugger maintenance support (optional)
//$deploy->setMaintenanceTemplateFile("path/to/our/template.latte"); // If we want own maintenance template
$deploy->checkMaintenance(); // Check maintenance, if in progress kill page and show maintenance template
// Configure application
$configurator = new Nette\Config\Configurator;
...
?>
Pokud byste chtěli informovat uživatele chvíli před vystavení, je to možné pomocí komponenty AlertControl, které předáte objekt Maintenance.
Můžeme ho například v bootstrapu přidat do kontejneru jako službu:, (*5)
createContainer();
// Debugger center - add dynamic service Maintenance, for support AlertControl (optional)
$container->addService("maintenance", $deploy->getMaintenance());
...
?>
A poté například ve Vašem BasePresenter si vytvořit tuto komponentu:, (*6)
Pozn.: Bohužel zatím jsem nepřišel na způsob, jak se vyhnout volání kontextu, když je služba dynamicky předaná., (*7)
setMaintenance($this->context->getService("maintenance"));
return $alertControl;
}
}
?>
A v šabloně, kde chci mít onu hlášku v případě, že v blízké době (v tuto chvíli 10 minut) dojde k vystavení a možné nefunkčnosti stránek, vyrenderujeme komponentu:, (*8)
{control alertControl}