Komponenta načítající skripty a styly s podporou spojování souborů, widgetovým voláním, externí minimalizací obsahu souborů, na straně serveru nastavenými proměnnými v CSS a JavaScriptu, …
| Zdrojové kódy (github) | http://github.com/…ek/WebLoader |
| Fórum | http://forum.nette.org/…as-webloader |
| Autor | Jan Marek |
| Licence | MIT |
Instalace
Zkopírujte obsah složky WebLoader do své aplikace.
Příklad použití
CSS
Továrnička komponenty v presenteru:
protected function createComponentCss()
{
$css = new CssLoader;
// cesta na disku ke zdroji
$css->sourcePath = WWW_DIR . "/css";
// cesta na webu ke zdroji (kvůli absolutizaci cest v css souboru)
$css->sourceUri = Environment::getVariable("baseUri") . "css";
// cesta na webu k cílovému adresáři
$css->tempUri = Environment::getVariable("baseUri") . "webtemp";
// cesta na disku k cílovému adresáři
$css->tempPath = WWW_DIR . "/webtemp";
return $css;
}
Použití v šabloně:
{control css 'base.css', 'layout.css', 'subfolder/text.css'}
JavaScript
Továrnička komponenty v presenteru:
protected function createComponentJs()
{
$js = new JavaScriptLoader;
$js->tempUri = Environment::getVariable("baseUri") . "webtemp";
$js->tempPath = WWW_DIR . "/webtemp";
$js->sourcePath = WWW_DIR . "/js";
return $js;
}
Použití v šabloně:
{control js 'jquery.js', 'lightbox.js', 'web.js'}
Minimalizovaný JavaScript pomocí filtrů a třídy JavaScriptPacker
Továrnička komponenty v presenteru:
protected function createComponentPackedJs()
{
// předpokládá existenci továrničky výše
$js = $this->createComponentJs();
// přidá filtr, což je jakýkoliv callback
$js->filters[] = array($this, "packJs");
return $js;
}
public function packJs($code)
{
$packer = new JavaScriptPacker($code, "None");
return $packer->pack();
}
Použití v šabloně:
{control packedJs 'jquery.js', 'lightbox.js', 'web.js'}
Jiné chvování při production a development módu
Továrnička komponenty v presenteru:
protected function createComponentSmartJs()
{
// předpokládá existenci továrničky výše
$js = $this->createComponentJs();
// při development módu vypne spojování souborů
$js->joinFiles = Environment::isProduction();
// v production módu zapne minimalizaci javascriptu
if (Environment::isProduction()) {
$js->filters[] = array($this, "packJs");
}
return $js;
}
public function packJs($code)
{
$packer = new JavaScriptPacker($code, "None");
return $packer->pack();
}
CSS s proměnnými pomocí filtru VariablesFilter
Továrnička komponenty v presenteru:
protected function createComponentCssWithVariables()
{
// proměnné filtru je možné nastavit buď přímo v konstruktoru
$filter = new VariablesFilter(array(
"cervena" => "red",
"zelena" => "green",
));
// nebo pomocí setteru
$filter->setVariable("modra", "blue");
// podobu proměnné v css souboru lze nastavit také
// $filter->setDelimiter("{", "}");
// výchozí hodnoty jsou {{$ a }}
// nastavení filtru
$css->filter[] = array($filter, "apply");
return $css;
}
CSS soubor:
body {background: {{$cervena}}}
h1 {color: {{$modra}}}
p {color: {{$zelena}}}
Výstup:
body {background: red}
h1 {color: blue}
p {color: green}
Použití v šabloně:
{control cssWithVariables 'colors.css'}
V JavaScriptu lze proměnné výhodně použít pro nastavování URL adres na různé presentery či signály.
API
Součástí WebLoaderu jsou čtyři třídy: CssLoader,
JavaScriptLoader, jejich abstraktní předek WebLoader
a filtr VariablesFilter.
WebLoader
Veřejné proměnné
| název | význam | výchozí hodnota |
|---|---|---|
| sourcePath | zdrojová složka, cesta na disku | |
| sourceUri | zdrojová složka, adresa | |
| tempPath | cílová složka, cesta na disku | |
| tempUri | cílová složka, adresa | |
| joinFiles | spojovat soubory do jednoho | true |
| generatedFileNamePrefix | prefix názvu generovaných souborů | "generated-" |
| filters | Pole filtrů. Filtry jsou libovolné callbacky, které berou jako parametr řetězec a vracejí také řetězec. | array() |
Veřejné metody
| název | význam | parametry | vrací |
|---|---|---|---|
| getElement | abstraktní | string |
Nette\Web\Html nebo string |
| render | renderuje komponentu | volitelně soubory k vygenerování | |
| getFiles | získat pole soubor | array(string) |
|
| addFile | přidat soubor pokud existuje | string |
|
| addFiles | přidat více souborů | array(string) |
|
| removeFile | odebrat soubor | string |
|
| removeFiles | odebrat více souborů | array(string) |
|
| clear | odebrat všechny soubory | ||
| getLastModified | datum změny nejnovějšího souboru | volitelně pole souborů, jinak zjištuje hodnotu z aktuálně přidaných souborů | timestamp |
| getGeneratedFilename | Název vygenerovaného souboru ze souborů. Hodnota závisí na názvu a času změny souborů. | volitelně pole souborů, jinak zjištuje hodnotu z aktuálně přidaných souborů | string |
| getContent | obsah vygenerovaného souboru | volitelně pole souborů, jinak zjištuje hodnotu z aktuálně přidaných souborů | string |
CssLoader
Veřejné proměnné
| název | význam | výchozí hodnota |
|---|---|---|
| media | obsah atributu media tagu link | |
| absolutizeUrls | přepisovat hodnoty url(...) v CSS souborech na jejich
absolutní formu |
true |
Veřejné metody
| název | význam | parametry | vrací |
|---|---|---|---|
| getElement | generuje tag link | hodnota atributu href | Nette\Web\Html |
| getGeneratedFilename | přepsaná metoda, přidává koncovku css | volitelně pole souborů, jinak zjištuje hodnotu z aktuálně přidaných souborů | string |
JavaScriptLoader
Veřejné metody
| název | význam | parametry | vrací |
|---|---|---|---|
| getElement | generuje tag script | hodnota atributu src | Nette\Web\Html |
| getGeneratedFilename | přepsaná metoda, přidává koncovku js | volitelně pole souborů, jinak zjištuje hodnotu z aktuálně přidaných souborů | string |
VariablesFilter
Veřejné metody
| název | význam | parametry | vrací |
|---|---|---|---|
| konstruktor | volitelně přijme asociativní pole array('promenna' =>
'hodnota') |
asociativní pole | |
| setVariable | nastaví proměnnou | string název, string hodnota |
|
| setDelimiter | Nastaví tvar proměnných na první parametr + název proměnné +
druhý parametr. Výchozí hodnoty jsou {{$
a }} |
string začátek proměnné, string ukončení
proměnné |
|
| apply | provede náhradu proměnných | string |
string |
Historie
Komentáře 
RDPanek | 1. 6. 2011, 7:31 | comment
Parádní doplněk, nyní můžu YUI compresoru zahodit :-)

patrikneeb | 10. 3. 2010, 10:02 | comment
Css loader
radek 27: ereg – This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0.