Microsoft Defender nově podporuje linuxové desktopy.
Oficiální Epic Games Launcher je v nové preview verzi poprvé dostupný i pro Linux (FAQ). Pracuje se na novém Easy Anti-Cheatu pro Linux (EAC Linux v2) a podpoře hry Fortnite na Linuxu.
Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.8. Novinky zahrnují lepší podporu vzdálené plochy, sdílení a nahrávání obrazovky a řadu drobností napříč uživatelským rozhraním (úplný seznam změn, shrnutí ve wiki).
Apple představil 7palcový displej Apple HomeView s podporou Apple Intelligence a Siri AI pro ovládání chytré domácnosti, novou řadu vybavení chytré domácnosti Apple Home Collection, další generaci HomePodu mini a novou Apple TV 4K. Apple HomeView není v Evropské unii v prodeji, jelikož umělá inteligence Siri v rámci systému iOS v EU momentálně není k dispozici. Apple spolupracuje s EU a snaží se najít cestu, jak situaci vyřešit.
KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.
Byl vydán Mozilla Firefox 158.0. Stejně jako Chrome 155 s podporou JPEG XL (test). Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 158 bude brzy k dispozici také na Flathubu a Snapcraftu.
Svobodný kancelářský balík ONLYOFFICE (Wikipedie) byl vydán ve verzi 10.0. Jak online Docs, tak i offline Desktop Editors. Přehled novinek také na YouTube.
Mozilla představuje Firefox Enterprise určený jako podnikový prohlížeč pro organizace s přísnými požadavky na bezpečnost, správu a dodržování předpisů. S profesionální podporou. Dostupný je zatím ve Francii, Německu, Rakousku a Švýcarsku.
Kybernetický útok zasáhl nejméně 150 supermarketů Intermarché a několik prodejen řetězců Leclerc a Coopérative U. Chladicí jednotky napadených obchodních domů byly nastaveny na nepřetržité odmrazování a teplota v nich mnohdy vystouala až nad 50°C. Škody napáchané na chlazeném a mraženém zboží budou patrně dosahovat miliónů eur.
… více »Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).
Nejprve bych se rád čtenářům omluvil za větší pauzu mezi jednotlivými díly, ale bohužel se mi nedostávalo času. Lepší zprávou, i když ne už moc aktuální, je, že 30. listopadu 2006 vyšla nová verze Smarty 2.6.15 a hned 1. prosince 2006 vyšla verze Smarty 2.6.16, protože ve verzi vydané o den dříve se vyskytla chyba. Changelog popisuje jednotlivé změny oproti předchozím verzím.
Smarty umožňuje v šablonách používat matematické výpočty. Ty lze zapisovat přímo, způsobem obdobným, jak jsme zvyklí z PHP, nebo pomocí prostředí math. Rozhodneme-li se provádět zápis přímo, což je nejjednodušší metoda, pokud nepotřebujeme složité vzorce, úpravu výstupu apod., může použití vypadat následovně:
{* Jednoduche priklady *}
{$promenna + 1}
{$promenna_1 * $promenna_2}
{* Slozitejsi priklady *}
{$promenna_1 - $promenna_2.klic_1 * $promenna_2.klic_2 % $promenna_3}
{assign var="vysledek" value="`$promenna_1 * $promenna_2`"}
Příklad jednoduše znázorňuje, jak použít co nejjednodušeji matematické možnosti ve Smarty. Zajímavým může být poslední řádek, který ukazuje, jakým způsobem lze výsledek výpočtu uložit do proměnné. K uložení slouží funkce assign. Aby byl obsah parametru zpracován a teprve pak uložen do proměnné, musíme matematický zápis uzavřít do zpětných apostrofů (`).
Chceme-li však použít více možnosti matematiky, které Smarty nabízí, je vhodné využít funkce math. Ta umožňuje nejen složitější zápisy, ale také nastavení formátu výsledku, okamžité přiřazení výsledku proměnné, zápis vzorců pomocí přiřazení hodnot jednotlivým proměnným v matematickém výrazu.
Příklad 1 - Obvod obdélníku
{* $sirka = 4, $vyska = 5 *}
{math equation="2 * (x + y)" x=$sirka y=$vyska}
Příklad 2 - Obvod obdélníku s konfiguračním souborem
{* #sirka# = 4, #vyska# = 5 *}
{math equation="2 * (x + y)" x=#sirka# y=#vyska#}
Příklad 3 - Obvod obdélníku s uložením výsledku do proměnné
{* $sirka = 4, $vyska = 5 *}
{math equation="2 * (x + y)" x=$sirka y=$vyska assign="obvod"}
Příklad 4 - Obvod obdélníku s definicí formátu výsledku
{math equation="2 * (x + y)" x=8.9895 y=1.2549 format="%.2f" assign="obvod"}
Pro určení formátu výsledku lze použít formátovací řetězce známé pro funkci printf jazyka PHP.
Smarty umožňuje na jednotlivé proměnné aplikovat tzv. modifikátory. Ty se používají k úpravě obsahu proměnných na úrovni šablon. Syntaze použití modifikátorů na proměnné je následující: $promenna|modifikator:parametry. Důležitou poznámkou, než se začneme přímo zabývat použitím modifikátorů, je, že modifikátor je aplikován na proměnnou, resp. její obsah. Pokud ale použijeme modifikátor na pole, bude aplikován na každý jeho prvek. Chceme-li použít modifikátor na pole jako celek, použijeme před názvem modifikátoru symbol @ (zavináč). Jednoduchým příkladem může být následující výpis:
{* Vypise pocet prvku v poli *}
{$array|@count}
Modifikátor capitalize změní první písmeno každého slova v řetězci na velké. Ve výchozím nastavení nedochází k úpravě prvního písmene. Je-li následováno číslicí a použijeme-li parametr true, bude k úpravě docházet. Efekt parametru a použití modifikátoru je patrný z následujícího výpisu. Funkce modifikátoru je shodná s PHP funkcí
ucfirst().
{* Promenna $foo obsahuje retezec "toto je test v3" *}
{$foo|capitalize}
{* Vystup: Toto Je Test v3 *}
{$foo|capitalize:true}
{* Vystup: Toto Je Test V3 *}
Modifikátor cat slouží ke konkatenaci (spojení) dvou řetězců. Nemá žádné parametry umožňující upravit jeho chování, jediným parametrem je řetězec, který má být připojen.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|cat:' - snad posledni
'}
{* Vystup: toto je test - snad posledni
*}
Modifikátor count_ existuje ve Smarty v několika variantách,
prvním je count_characters, druhým count_words,
třetím count_sentences a posledním count_paragraphs. Již z názvu by mohlo být patrné k čemu jednotlivé modifikátory slouží. Postupně tedy - počet znaků v proměnné, počet slov v proměnné, počet vět v proměnné a nakonec počet odstavců v proměnné. Pouze count_characters umožňuje použití parametru ovlivňující funkci modifikátoru. Výchozí nastavení je na false, což znamená, že bílé znaky nebudou započítávány do výsledného počtu znaků. Chceme-li, aby tomu bylo naopak, bílé znaky byly započítávány, nastavíme parametr na true.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|count_characters}
{* Vystup: 10 *}
{$foo|count_characters:true}
{* Vystup: 12 *}
{$foo|count_words}
{* Vystup: 3 *}
{* Promenna $foo obsahuje retezec "Toto je test. Mam rad Linux." *}
{$foo|count_sentences}
{* Vystup: 2 *}
{* Promenna $foo obsahuje retezec "Toto je test.\n Mam rad Linux." *}
{$foo|count_paragraphs}
{* Vystup: 2 *}
Tento modifikátor slouží pro formátování výstupního data a času dle zadaných kritérií. Pro formátování data a času slouží zástupné znaky, které se používají pro PHP funkci strftime().
{$smarty.now|date_format:"%d.%m.%Y"}
{* Vystup: 19.01.2007 - vystup samozrejme zavisi na dni pouziti sablony
*}
Modifikátor kontrolující, zda-li byla proměnné přiřazena nějaká hodnota, tedy jestli není prázdná. Pokud je proměnná prázdná, je jí přiřazena hodnota, která byla předána modifikátoru jako jeho parametr.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|default:'hodnota'}
{* Vystup: toto je test *}
{* Promenna $foo_2 nebyla inicializovana *}
{$foo_2|default:'hodnota'}
{* Vystup: hodnota *}
Modifikátor slouží k úpravě proměnné dle zadaných pravidel. Převádí "nevhodné" znaky, jakými mohou být např. apostrofy, na entity, upravuje tvar e-mailové adresy, aby zamezil zpracování roboty (jmeno@domena.cz převede na jmeno[AT]domena[DOT]cz) apod. Parametry použití tohoto modifikátoru jsou dostupné z dokumentace.
{* Promenna $foo obsahuje retezec "jmeno@domena.cz" *}
{$foo|escape:'mail'}
{* Vystup: jmeno[AT]domena[DOT]cz *}
Modifikátor sloužící k odsazení textu o určitý počet (ve výchozím nastavení 4) znaků (výchozí je mezera, lze upravit). Tento modifikátor má tedy dva parametry, jejichž pořadí je potřeba dodržet.
{* Promenna $foo obsahuje retezec "Radek 1\nRadek 2\Radek 3" *}
{$foo|indent:5:"\t"}
{* Vystup: kazdy radek bude odsazet o pet tabelatoru *}
Modifikátor převadí obsah proměnné na malá písmena.
{* Promenna $foo obsahuje retezec "Toto Je TEST" *}
{$foo|lower}
{* Vystup: toto je test *}
Modifikátor převadí všechny znaky nového řádku \n
na HTML ekvivalent <br />.
{* Promenna $foo obsahuje retezec "Radek 1\nRadek 2\nRadek 3" *}
{$foo|nl2br}
{* Vystup: Radek 1<br />Radek 2<br />Radek 3 *}
Modifikátor funguje podobně jako PHP funkce preg_replace(), a používá stejné zástupné znaky v regulárních výrazech. Nahrazení textu dle regulárního výrazu.
{* Promenna $foo obsahuje retezec "Radek\t1\nRadek\t2\nRadek\t3" *}
{$foo|regex_replace:"/[\r\t\n]/":" "}
{* Vystup: Radek 1 Radek 2 Radek 3 *}
Modifikátor má obdobnou funkci jako regex_replace s tím rozdílem, že neumožňuje použití regulárních výrazů. Dochází tedy pouze k náhradě hledaného řetězce za jiný.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|replace:'je':'neni'}
{* Vystup: toto neni test *}
Modifikátor umožňuje vložit libovolný znak (výchozí je mezera) mezi znaky v proměnné.
{* Promenna $foo obsahuje retezec "toto je test" *}
{$foo|spacify}
{* Vystup: t o t o j e t e s t *}
{$foo|spacify:"!"}
{* Vystup: t!o!t!o! !j!e! !t!e!s!t! *}
Modifikátor slouží k formátování řetězce dle formátovacích znaků, které jsou shodné jako u funkce sprintf().
{* Promenna $foo obsahuje retezec "3.1415" *}
{$foo|string_format:"%d"}
{* Vystup: 3 *}
{$foo|string_format:"%.2f"}
{* Vystup: 3.14 *}
Modifikátor slouží k nahrazení opakujících se mezer, nových řádků a tabelátorů jednou mezerou (výchozí nastavení), případně libovolným řetězcem, definovaným parametrem.
{* Promenna $foo obsahuje retezec "Toto \t je\n test" *}
{$foo|strip}
{* Vystup: Toto je test *}
{$foo|strip:"-"}
{* Vystup: Toto-je-test *}
Modifikátor slouží k odstranění všech HTML tagů v proměnné a jejich nahrazení jednou mezerou. Pokud chceme, aby došlo k nahrazení bez mezery, použijeme parametr false - jako výchozí je definováno true.
{* Promenna $foo obsahuje retezec "Toto je <b>test</b>" *}
{$foo|strip_tags}
{* Vystup: Toto je test *}
{$foo|strip_tags:false}
{* Vystup: Toto je test *}
Modifikátor slouží k "oříznutí" řetězce. K upřesnění funkce slouží čtyři parametry. První udává počet znaků, na které má být řetězec zkrácen (výchozí nastavení 80 znaků), druhý parametr udává, jakým řetězcem má být oříznutý text následován (výchozí ...), třetí parametr určuje, zda je povoleno oříznutí řetězce v půlce slova, nebo zda-li se má provést odříznutí před tímto slovem (ve výchozím nastavení na false - nedělit slova). Poslední parametr určuje, že bude vypsáno poslední slovo řetězce a podle toho se přizpůsobí oříznutí. Vysvětlování se může zdát složité, nejlepší je vyzkoušet si funkci modifikátoru v praxi, nebo se podívat na výpis kódu.
{* Promenna $foo obsahuje retezec "Toto je delsi retezec k testovani *}
{$foo|truncate:10}
{* Vystup: Toto je... *}
{$foo|truncate:10:"!"}
{* Vystup: Toto je! *}
{$foo|truncate:10:"-":true}
{* Vystup: Toto je de- *}
{$foo|truncate:15:"-":false:true}
{* Vystup: Toto je... testovani*}
Modifikátor převádí obsah proměnné na velká písmena.
{* Promenna $foo obsahuje retezec "Toto je test" *}
{$foo|upper}
{* Vystup: TOTO JE TEST *}
Modifikátor pracující na podobném principu jako truncate s tím rozdílem, že text neořezává, ale řeší jeho zalamování. První parametr udává, po kolika znacích (výchozí 80) má dojít k zalomení textu, druhý parametr udává, jaký znak se má pro zalomení použít (výchozí \n).
{* Promenna $foo obsahuje retezec "Toto je delsi retezec k testovani *}
{$foo|wordwrap:15}
{* Vystup: Toto je delsi\nretezec k\ntestovani *}
{$foo|wordwrap:15:"<br />}
{* Vystup: Toto je delsi<br />retezec k<br />testovani *}
Veškeré výše popsané modifikátory lze libovolně vhodně kombinovat. Následuje několik takových ukázek, z kterých by mělo být zřejmé, jak kombinaci modifikátorů zapisovat. Z výpisu je i vidět, že závisí na pořadí zápisu modifikátorů (modifikátory jsou aplikovány směrem od proměnné).
{* Promenna $foo obsahuje retezec "Toto je retezec k testu *}
{$foo|upper|spacify}
{* Vystup: T O T O J E R E T E Z E C K T E S T U *}
{$foo|upper|spacify|truncate:15}
{* Vystup: T O T O J E... *}
{* Nejprve byl retezec zvetsen, pote vlozeny mezery a pak oriznut *}
{* Pocet mezer se tedy promitl do poctu znaku k oriznuti *}
{$foo|upper|truncate:15|spacify}
{* Vystup: T O T O J E R E T E Z E C . . . *}
{* Nejprve byl retezec zvetsen, pote oriznut a pak vlozeny mezery *}
{* Vlozeni mezer se tedy promitlo na ... vlozenych modifikatorem truncate *}
V příštím díle se seznámíme s vestavěnými funkcemi šablonovacího systému Smarty. Abych alespoň předběžně nastínil, tak prozradím, že mezi tyto funkce patří např. podmínky a různé cykly. Více ale až v příštím díle seriálu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
strftime() lze použít %e tak, aby byl vypisován den v měsíci bez předchozí nuly. Čísla 1 - 9 budou předsazena mezerou, zbývající čísla nebudou nijak ovlivněna. Něco podobného pro měsíc jsem nikde neviděl a nenašel, ale určitě by se to dalo vyřešit na úrovni vlastního pluginu. Téma vlastních pluginů bude v tomto seriálu také probráno a váš problém by mohl vyústit v jeden z ukázkových příkladů
{$var|unserialize|var_export:True|string_format:"<?php\n%s\n?>"|highlight_string}
ma to sice jeden mensi bug, ale jako ukazka to staci.
Tohle vrací den. měsíc. rok, ale s nulou před číslem měsíce.{$myDate|date_format:"%e. %m. %Y"}
Tohle nulu odstraní:{$myDate|date_format:"%e. %#m. %Y"}
Jestli to chcete mít funky, tak na to můžete jít i takhle:{assign var="myDateTimestamp" value=$myDate|strtotime}
{"j. n. Y"|date:$myDateTimestamp}
(převzato odsud)