Výpis odkazu s ikonou podle typu souboru

Řešený problém

Chceme ke každému odkazu na soubor vygenerovat automaticky ikonu a informaci o velikosti souboru.

Požadujeme, aby formátování bylo stejné jak v seznamech, které jsou generované automaticky (např. sekce se všemi soubory ke stažení), tak v případech, kdy odkaz na soubor vkládá autor obsahu do článku.

Postup

Zobrazení ikony v automaticky generovaných seznamech je poměrně snadná věc. Zvolíme nějaký název režimu (v tomto příkladu je to "link") a v hlavním formátovači prezentace se definuje pravidlo pro asset typu Soubor, ve kterém se vypisují údaje o blobu obsaženém v souboru.

Výpis ikony souboru může vypadat například takto:

Předpokládá se tu existence složky, která obsahuje ikony. Vazba na ikony není podle jména dětského assetu, ale podle jména vlastnosti této složky (je efektivnější, a navíc umožňuje použít jednu ikonu pro více přípon souborů). Zároveň má složka vlastnosti s pojmenováním jednotlivých typů; názvy vlastností mají suffix "_name".

Výpis informace o velikosti souboru by měl používat nějakou rozumnou jednotku; zde pro jednoduchost předpokládáme, že vždycky bude stačit zobrazovat velikost v KB:

Tento režim výpisu je pak třeba volat ve všech šablonách vypisujících odkazy na nějaké soubory.

Zpřístupnit tento režim výpisu pro použití v obsahu článků editovaném vizuálním editorem je pak jen otázka další konfigurace. Použije se možnosti vkládat do článků reference na formátované assety. Je potřeba:

  1. definovat, které typy assetů se mohou používat v takových referencích a jaké jsou povolené režimy výpisu;
  2. definovat formátovač, který se použije při výpisu pro nahrazení takových referencí.

První krok se týká obsahu, druhý jeho prezentace.

Pro obsah se musí do konfigurace složky, která takový obsah obsahuje, doplnit pravidlo povolující režim "link" pro assety příslušného typu:

Takový krok je potřeba podniknout s rozmyslem: vzniká jím kontrakt pro prezentační logiku všech prezentací, ve kterých se tento obsah může používat. Správce prezentační logiky každé takové prezentace musí definovat, který formátovač se použije pro takový výpis, a musí zaručit, že bude obsahovat pravidlo pro režim "link" každé takové položky.

Tento formátovač se nastavuje referencí articleFormatter; nejlépe pro kořenovou sekci příslušné prezentace. V našem případě bychom mohli prostě použít hlavní formátovač. S ohledem na budoucí rozšiřování je ale vhodné tuto část prezentační logiky oddělit do samostatného assetu:

Z tohoto nového formátovače se bude hlavní formátovač volat:

Omezení

  • Informace o typu se odvozuje z přípony souboru. Je to jednodušší, než používat typ blobu.
  • Pokud se odkaz na soubor vkládá do těla článku, není možné nahradit titulek assetu se souborem vlastním názvem, který by se lišil článek od článku. Toto by bylo možné obejít použitím modulu, kdy by ale výsledný postup byl pro autora obsahu o něco málo komplikovanější.

Poznámky k různým verzím systému jNetPublish

Některé postupy použité v tomto příkladu jsou dostupné až od verze 3.5. V předchozích verzích je možné použít modul s assetem souboru jako parametrem.

Poznámky k verzi ke stažení

Tato verze se v několika bodech liší od předchozího popisu:

  • V pravidlech formátovače nejsou zalomené řádky a jsou odstraněné přebytečné mezery. To proto, aby ve výstupu nevznikaly mezery tam, kde je autor obsahu mít nechtěl.
  • Hlavní formátovač má další pravidla: pro typ Upoutávka (poradí si s běžným odkazem i s odkazem na soubor) a obecné pravidlo, kde lze předpokládat, že cílem je HTML dokument, o jehož velikosti není nic známo.

Stáhnout

Soubor k importu
XML soubor (cca 52 KB) obsahující assety ilustrující tento příklad.
Importem budou vytvořeny a případně i změněny některé složky a další assety.
Doporučujeme provést import ve vlastním projektu, aby bylo možné změny snadno zrušit. Po importu mohou být nutné další úpravy.

Přehled assetů v importu