From 631873a56bdef8aea5ee367de719008f0ed72570 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Thu, 7 Oct 2021 02:05:44 +0200 Subject: [PATCH 1/3] updated lifecycle image --- cs/presenters.texy | 2 +- en/presenters.texy | 2 +- files/lifecycle2.gif | Bin 36257 -> 0 bytes files/lifecycle5.svg | 421 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 423 insertions(+), 2 deletions(-) delete mode 100644 files/lifecycle2.gif create mode 100644 files/lifecycle5.svg diff --git a/cs/presenters.texy b/cs/presenters.texy index 1bf9f29b9f..b3c310e11e 100644 --- a/cs/presenters.texy +++ b/cs/presenters.texy @@ -23,7 +23,7 @@ Obvykle se pod pojmem presenter myslí potomek třídy [api:Nette\Application\UI Tedy na počátku je mu předán požadavek. Není to přímo HTTP požadavek, ale objekt [api:Nette\Application\Request], do kterého byl HTTP požadavek přetransformován za pomoci routeru. S tímto objektem obvykle nepřijdeme do styku, neboť presenter zpracování požadavku chytře deleguje do dalších metod, které si teď ukážeme. -[* lifecycle2.gif *] *** *Životní cyklus presenteru* .<> +[* lifecycle5.svg *] *** *Životní cyklus presenteru* .<> Obrázek představuje seznam metod, které se postupně od shora dolů volají, pokud existují. Žádná z nich existovat nemusí, můžeme mít úplně prázdný presenter bez jediné metody a postavit na něm jednoduchý statický web. diff --git a/en/presenters.texy b/en/presenters.texy index 5e9ada0958..82ffd711ab 100644 --- a/en/presenters.texy +++ b/en/presenters.texy @@ -23,7 +23,7 @@ The job of the presenter is to process the request and return a response (which So at the beginning is a request. It is not directly an HTTP request, but an [api:Nette\Application\Request] object into which the HTTP request was transformed using a router. We usually do not come into contact with this object, because the presenter cleverly delegates the processing of the request to special methods, which we will now see. -[* lifecycle2.gif *] *** *Life cycle of presenter* .<> +[* lifecycle5.svg *] *** *Life cycle of presenter* .<> The figure shows a list of methods that are called sequentially from top to bottom, if they exists. None of them need to exist, we can have a completely empty presenter without a single method and build a simple static web on it. diff --git a/files/lifecycle2.gif b/files/lifecycle2.gif deleted file mode 100644 index 49a5a200d28cf6295c7f9aca4589dcc28f286321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36257 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 d`OR`hV?o+6r#iujPHL|6oz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From e532b59266036bcaac1a184bedc14c4533696e13 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Sat, 9 Oct 2021 00:50:20 +0200 Subject: [PATCH 2/3] global filters -> general --- cs/routing.texy | 10 +++++----- en/routing.texy | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cs/routing.texy b/cs/routing.texy index 68df180249..c1fb9c8e4c 100644 --- a/cs/routing.texy +++ b/cs/routing.texy @@ -327,10 +327,10 @@ Parametry `presenter`, `action` a `module` už mají předdefinované filtry, kt takže třeba v případě presenteru píšeme ``, nikoliv ``. -Globální filtry ---------------- +Obecné filtry +------------- -Vedle filtrů určených pro konkrétní parametry můžeme definovat též globální filtry, které obdrží asociativní pole všech parametrů, které mohou jakkoliv modifikovat a poté je vrátí. Globální filtry definujeme pod klíčem `null`. +Vedle filtrů určených pro konkrétní parametry můžeme definovat též obecné filtry, které obdrží asociativní pole všech parametrů, které mohou jakkoliv modifikovat a poté je vrátí. Obecné filtry definujeme pod klíčem `null`. ```php use Nette\Routing\Route; @@ -345,9 +345,9 @@ $router->addRoute('/', [ ]); ``` -Globální filtry dávají možnost upravit chování routy naprosto jakýmkoliv způsobem. Můžeme je použít třeba pro modifikaci parametrů na základě jiných parametrů. Například přeložení `` a `` na základě aktuální hodnoty parametru ``. +Obecné filtry dávají možnost upravit chování routy naprosto jakýmkoliv způsobem. Můžeme je použít třeba pro modifikaci parametrů na základě jiných parametrů. Například přeložení `` a `` na základě aktuální hodnoty parametru ``. -Pokud má parametr definovaný vlastní filtr a současně existuje globální filtr, provede se vlastní `FILTER_IN` před globálním a naopak globální `FILTER_OUT` před vlastním. Tedy uvnitř globálního filtru jsou hodnoty parametrů `presenter` resp. `action` zapsané ve stylu PascalCase resp. camelCase. +Pokud má parametr definovaný vlastní filtr a současně existuje obecný filtr, provede se vlastní `FILTER_IN` před obecným a naopak obecný `FILTER_OUT` před vlastním. Tedy uvnitř obecného filtru jsou hodnoty parametrů `presenter` resp. `action` zapsané ve stylu PascalCase resp. camelCase. Jednosměrky ONE_WAY diff --git a/en/routing.texy b/en/routing.texy index 4edd5770e9..30ac0c9f4d 100644 --- a/en/routing.texy +++ b/en/routing.texy @@ -327,10 +327,10 @@ The parameters `presenter`, `action` and `module` already have predefined filter so, for example, in the case of a presenter, we write `` instead of ``. -Global Filters --------------- +General Filters +--------------- -Besides filters for specific parameters, you can also define global filters that receive an associative array of all parameters that they can modify in any way and then return. Global filters are defined under `null` key. +Besides filters for specific parameters, you can also define general filters that receive an associative array of all parameters that they can modify in any way and then return. General filters are defined under `null` key. ```php use Nette\Routing\Route; @@ -345,9 +345,9 @@ $router->addRoute('/', [ ]); ``` -Global filters give you the ability to adjust the behavior of the route in absolutely any way. We can use them, for example, to modify parameters based on other parameters. For example, translation `` and `` based on the current value of parameter ``. +General filters give you the ability to adjust the behavior of the route in absolutely any way. We can use them, for example, to modify parameters based on other parameters. For example, translation `` and `` based on the current value of parameter ``. -If a parameter has a custom filter defined and a global filter exists at the same time, custom `FILTER_IN` is executed before the global and vice versa global `FILTER_OUT` is executed before the custom. Thus, inside the global filter are the values of the parameters `presenter` resp. `action` written in PascalCase resp. camelCase style. +If a parameter has a custom filter defined and a general filter exists at the same time, custom `FILTER_IN` is executed before the general and vice versa general `FILTER_OUT` is executed before the custom. Thus, inside the general filter are the values of the parameters `presenter` resp. `action` written in PascalCase resp. camelCase style. ONE_WAY flag From 58b8b9d15d6cd6bb03460b889742afb55ad62f00 Mon Sep 17 00:00:00 2001 From: discordDOTtest <60234533+discordDOTtest@users.noreply.github.com> Date: Sat, 9 Oct 2021 10:57:57 +0200 Subject: [PATCH 3/3] Update components.texy https://github.com/nette/application/blob/master/src/Application/UI/Presenter.php#L226 says the flash message expiration time is 30 seconds --- en/components.texy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/en/components.texy b/en/components.texy index 74a0ecfa01..e98b99514d 100644 --- a/en/components.texy +++ b/en/components.texy @@ -212,7 +212,7 @@ The signals may remind you a little bit AJAX: handlers that are called on the cu Flash Messages ============== -A component has its own storage of flash messages independent of the presenter. These are messages that, for example, inform about the result of the operation. An important feature of flash messages is that they are available in the template even after redirection. Even after being displayed, they will remain alive for another three seconds - for example, in case the user would unintentionally refresh the page - the message will not be lost. +A component has its own storage of flash messages independent of the presenter. These are messages that, for example, inform about the result of the operation. An important feature of flash messages is that they are available in the template even after redirection. Even after being displayed, they will remain alive for another thirty seconds - for example, in case the user would unintentionally refresh the page - the message will not be lost. Sending is done by the method [flashMessage |api:Nette\Application\UI\Control::flashMessage()]. The first parameter is the message text or the `stdClass` object representing the message. Optional second parameter is its type (error, warning, info, etc.). The method `flashMessage()` returns an instance of flash message as object stdClass to which you can pass information.