EN | CS | Přihlásit | Registrovat

WebLoader

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
generatedFile­NamePrefix 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
getGeneratedFi­lename 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
getGeneratedFi­lename 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
getGeneratedFi­lename 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 {{$}} string začátek proměnné, string ukončení proměnné  
apply provede náhradu proměnných string string

Historie


Komentáře Comments feed

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.

Login to submit a comment