WebJET novinky 12/2018

Nová verzia WebJET 8.5 zlepšuje používateľské rozhranie, prináša skupiny šablón a zlepšuje bezpečnosť.

Použiteľnosť (UX)

Vo WebJET 8.5 sme vylepšili používateľské rozhranie administrácie. Vizuálne sme zmenšili výšku hlavičky, čo umožní zobraziť viac informácií v rovnako veľkom okne. Viaceré časti sme upravili tak, aby neboli potrebné záložky - filter sme presunuli priamo do tabuľky pre jednoduché filtrovanie stĺpcov. Príkladom je tabuľka zoznamu šablón, alebo tabuľka konfigurácie.

V editore sme zladili odsadenia, upravili ikony na presun do sidebaru atď. Upravili sme aj prepínač nastavenia zobrazovania web stránky na posuvník s jednoznačným popisom spôsobu zobrazenia.

Zlepšili sme aj UX zoznamu stránok - lepšie sa zobrazujú scrollbary, zafixovali sme názov stránky pri posúvaní vpravo, zlepšili sme možnosti nastavovania stĺpcov (dá sa presne nastaviť, ktoré stĺpce chcete zobraziť). Podobnou zmenou prešla aj sekcia šablóny a konfigurácia.

Úpravy v editore stránok

V editore stránok sme spravili viacero úprav, do budúcnosti je dôležitá kompatibilita s CSS frameworkom Bootstrap verzie 4. Postupne sme začali pridávať kompatibilitu s jeho značením CSS tried. Doplnili sme aj nastavenie adresy stránky pri časovom publikovaní (doteraz sa URL adresa stránky pri časovom publikovaní nezmenila, zostala adresa pôvodnej stránky). Nová verzia umožňuje s časovým publikovaním zmeniť aj adresu stránky.

Médiá tejto stránky

Od verzie WebJET 8.0 sa zobrazuje v súboroch sekcia Médiá tejto stránky. Reálne ale bolo umiestnenie spojené s adresárom stránky a nie stránkou samotnou. Ak ste mali napr. v adresári s novinkami viac web stránok (noviniek), boli súbory spoločné pre všetky stránky.

V novej verzii sa lokalita pre Média tejto stránky generuje samostatne aj pre podstránky v adresári. Názov sa generuje podľa poslednej časti URL adresy stránky. Pre hlavnú stránku adresára sa nič nemení, zmena sa týka len podstránok.

Správanie sa dá vypnúť nastavením konf. premennej elfinderCreateFolderForPages na false, kedy aj podstránky budú zdieľať rovnaký adresár pre súbory a obrázky (stav ako v starších verziách).

Médiá

Prerobili sme správu skupín médií na samostatnú databázovú tabuľku. V predchádzajúcich verziách sa skupiny médií evidovali ako voľné textové pole priamo v pridanom médiu a keď ste zmazali všetky médiá v určitej skupine, stratila sa vám aj samotná skupina z výberového poľa skupín médií. Nedali sa tak napr. vopred definovať skupiny médií.

Nová verzia samostatne definuje skupiny médií, ktoré sa zobrazujú vo výberovom poli pri pridávaní média.

Zároveň sme prerobili zobrazenie médií v editore stránok na modernú tabuľku v JavaScripte, ktorá zrýchľuje prácu pridávania a editácie médií a umožňuje zmeniť poradie médií jednoduchým drag & drop.

Pridali sme aj zobrazenie Médiá tejto stránky pri výbere odkazu a obrázku a doplnili sme zapisovanie dátumu uloženia média (pre korektné plánovanie zobrazenia do budúcnosti).

Upravili sme radenie položiek - pôvodná (stará) verzia radila podľa mena skupiny a následne podľa priority, administrácia ale len podľa priority. Zjednotili sme radenie na verziu len podľa priority bez ohľadu na názov skupiny.

Skupiny šablón

Nová vlastnosť vytvárania skupín šablón - je tak lepšie možné kategorizovať šablóny do skupín a nastavovať skupinovo vlastnosti pre JSP šablónu (meno projektu, adresár s JSP, ...).

Skupina šablón rieši viaceré problémy:

  • Odstraňuje neprehľadnosť na veľkom projekte, kde je veľa šablón. V zozname šablón je pridaný nový stĺpec, v ktorom je názov priradenej skupiny. Pomocou tohto stĺpca sa dá jednoducho vyfiltrovať zoznam šablón len pre danú skupinu.
  • Odstraňuje komplikovanú správu metadát stránky pomocou textových kľúčov. Skupine šablón sa nastavujú rôzne metadáta ako autor, developer, generátor atď. a tie sa potom dedia pre všetky šablóny, ktoré majú danú skupinu priradenú. Redaktor tak vie jednoduchým spôsobom zmeniť všetky informácie nastavované do SEO atribútov pohodlne na jednom mieste.
  • Rieši neprehľadnosť v zozname JSP súborov,  pri nastavovaní poľa "HTML šablóna" pri upravovaní virtuálnej šablóny. V novej verzii sa vo výberovom poli zobrazia len JSP súbory (šablóny), ktoré patria k zvolenej skupine šablón (namiesto zobrazenia všetkých JSP súborov - čo bolo neprehľadné). Skupina má priradený adresár a automaticky zobrazuje len JSP súbory z tohto adresára.
  • Odstránila sa komplikovaná správa zmenených textov, ktoré boli viazané na ID šablóny. Skupina šablón obsahuje pole "Prefix textových kľúčov". Pomocou neho viete zmeniť napr. názov "Voľné pole A" v stránke na "GPS súradnice" pre všetky šablóny v skupine. Stačí nastaviť nový text pomocou prefixu. Predstavme si, že má skupina nastavený prefix na "testujemPrefix". Stači vytvoriť nový textový kľúč s názvom testujemPrefix.editor.field_a a hodnotou GPS súradnice. Ten sa nastaví všetkým šablónam v skupine. Doteraz bolo potrebné každej šablóne nastavovať kľúč zvlášť, keďže sa namiesto prefixu používalo ID šablóny.
  • Odstraňuje problémy pri migrácií šablón medzi prostrediami. Ak ste doteraz migrovali šablóny medzi prostrediami, vznikal problém, že pri exportovaných textových kľúčoch na základe ID šablóny sa pri importe na nové prostredie nezhodovalo ID šablóny. Skupina šablón pracuje s prefixom pre textové kľúče, takže si viete vyexportovať všetky texty, ktoré obsahujú nastavený prefix, a na druhom prostredí je úplne jedno, aké má šablóna ID, dôležité je, aby mala skupina šablón nastavený rovnaký prefix pre textové kľúče.

Na skupinu šablón je napojený Ninja starter kit, čo je v podstate pripravená základná šablóna, ktorá už má v sebe vyriešené najrôznejšie problémy, s ktorými sa stretávame pri realizácií projektu. Obsahuje predpripravenú stromovú adresárovú štruktúru pre štýly, skripty, obrázky atď. vytvorenú podľa konvencií pre dosiahnutie čo najlepšieho manažovateľného stavu. Šablóna má taktiež pripravenú JSP šablónu, v ktorej už je vložený sémantický HTML skelet webovej stránky. V hlavičke sú vložené potrebné metadáta pre dodržanie moderných štandardov, ako aj dosiahnutie čo najlepšej optimalizácie stránky pre vyhľadávače.

Správa skupín šablón

Pre správu skupín šablón bol vytvorený nový modul "Zoznam skupín šablón".

V module sa nachádza zoznam všetkých vytvorených skupín. Skupina sa dá upraviť a zmazať (ak sa nepoužíva v žiadnej stránke). Zoznam skupín sa načítava vo východiskovom jazyku, no je možné si jazyk prepnúť pomocou poľa "jazyk pre úpravu textov". Rovnako pri úprave skupiny sa hodnoty nastavujú pre jazyk, ktorý je vybraný v poli "Jazyk pre úpravu textov".

Vlastnosti skupiny šablón

Skupina šablón disponuje textovými poľami, ktorých hodnota sa prenáša do všetkých šablón, ktoré sú ku skupine priradené. Tieto hodnoty je možné nastaviť pre každý jazyk zvlášť. Ak pre špecifický jazyk nie je hodnota nastavená, tak sa použije hodnota nastavená pre východiskový jazyk.

Nastavenie skupiny virtuálnej šablóne

Každej virtuálnej šablóne sa nastavuje "Skupina šablón". V modálnom okne pre úpravu šablóny sme pridali nové pole "Skupina šablón", v ktorom je zoznam všetkých dostupných skupín. Pole "HTML Šablóna" zobrazuje len dostupné JSP súbory, ktoré patria pod vybranú skupinu (nachádzajú sa fyzicky v adresári, ktorý má skupina nastavený). V tomto zozname sa nezobrazujú čiastkové JSP súbory, ktoré sú v podadresári s názvom "include". Ak potrebujete HTML šablónu rozdeliť do viacerých JSP súborov, napr. header.jsp a footer.jsp, tak tieto súbory je dobré mať vložené práve v adresári "include", aby sa nezobrazili vo výberovom poli.

Vkladanie kódu

Pridali sme plugin codesnippet pre možnosť editácie kódu v <pre><code>KOD</code></pre> elemente. Plugin zachováva text (kód) bez ovplyvňovania editorom (interne kód uchováva v data atribúte). Nestane sa, že editor zmení formátovanie kódu (napr. medzery, taby, riadkovanie). Dvojklikom do elementu zobrazíte editor kódu v popup okne, v ktorom môžete kód bezpečne upravovať.

Bootstrap 4

Vo viacerých projektoch sme začali používať novú verziu CSS frameworku Bootstrap verzie 4. Odporúčame používať štandardnú verziu a nekompilovať si vlastnú z scss súborov. CSS pre šablóny v spojení so skupinami šablón je výhodné spravovať samostatne v scss súboroch a pripojiť skompilovaný css súbor cez combine s bootstrap CSS súborom.

V editore sme pre podporu Bootstrap 4 spravili nasledovné zmeny:

  • pridané výnimky pre obrázky - ak majú CSS triedu img-fluid, card-img-top alebo w- (napr. w-100), nenastaví sa obrázku inline štýl width a height (obrázok sa prispôsobuje kontajneru).

Ďalšie úpravy editora

  • Editor - upravený dialóg pre editáciu existujúceho odkazu pre prípad, že A element má nastavený v CSS štýle atribút display: block, alebo inline-block. Rieši to problém s editáciou textu linku, ktorá sa pri štandardnej editácii ukončí po napísaní medzery. Upravená verzia po kliknutí do linku zobrazí dialóg, v ktorom je možné zmeniť text linku aj odkaz (rovnako ako pre tlačidlá).
  • Editor - pri vytvorení odkazu na súbor (URL začína na /files) sa automaticky nastaví target=_blank pre otváranie odkazu do nového okna (napr. pdf súboru a podobne), aby návštevník zostal na pôvodnej stránke.
  • Editor - schvaľovanie - upravené zobrazenie dialógu schvaľovania, pokiaľ ide o prvé uloženie stránky - nezobrazí sa porovnanie, ale len daná verzia stránky (porovnáva sa dátum uloženia aktuálnej stránky a histórie, pokiaľ je v rozmedzí 1 sekundy).
  • Editor - opravené vkladanie odkazu v dialógu vloženia odkazu do poľa URL cez CTRL+V v IE 11.
  • Web stránky - pridaná nová možnosť zobrazovania zoznamu stránok pre redaktora s obmedzenými právami na adresáre stránok. Štandardne sa každý povolený adresár zobrazí samostatne v jednom riadku. Po novom je zobrazenie možné prepnúť do rozbaľovacieho stromu (podobne ako pri plných právach) s obmedzením na povolené adresáre. Funkcia sa zapne nastavením konf. premennej userEditableTreeMenuType na hodnotu tree (predvolene má hodnotu rows).
  • Atribúty stránky - doplnené ukladanie atribútov stránky aj pre multikategórie (uloženie atribútov pre stránky vo viacerých adresároch).
  • Atribúty stránky - doplnené filtrovanie stránok multikategórií (stránka vo viacerých adresároch) pre vyhľadávanie (API volanie getAtributesTable) sa do výsledkov nastaví hlavná stránka (aby nedochádzalo k duplicitám vo výslednej tabuľke).
  • Formuláre - upravené porovnávanie regulárneho výrazu s hodnotou z formuláru ˘ (porovnáva sa výraz upravený na malé písmená)
  • Formuláre - nová konf. premenná formmailResetFormAfterSend (štandardne true) - ak je nastavené na true, po úspešnom odoslaní sa vyčistí formulár, nastavenie na false má zmysel, ak je napr. potrebné formulár po odoslaní ešte vytlačiť (nevymazať zadané údaje).
  • Formuláre - nová konf. premenná formmailScrollTopAfterSend (štandardne true) - ak je nastavené na true, odscroluje sa stránka po odoslaní na vrch formuláru (aby bolo vidno hlásenie o úspešnom odoslaní).
  • Formuláre - tlačidlo - pridané automatické nastavenie textu tlačidla Odoslať a názvu bSubmit (pre nové tlačidlo), aby pri vkladaní štandardného tlačidla odoslať nebolo potrebné nič zadávať.
  • Formuláre - odoslaný HTML email je obalený do DIV elementu s CSS triedou WebJETMailWrapper (na BODY elemente CSS trieda WebJETMailBody zostáva) z dôvodu štýlovania v mail klientoch, ktoré odstraňujú BODY element (napr. Outlook).
  • Formulár ľahko - vypnutá spam ochrana pri generovaní emailu, aby sa nezobrazovalo varovanie o vypnutom JavaScripte v odoslanom emaile.
  • Formulár ľahko - pridaná podpora generovania možností pre výberové polia (SELECT tag) z číselníka. V šablóne je možné použiť výraz {enumeration-options|ID_ČÍSELNÍKA|MENO_VALUE|MENO_LABEL} na mieste, kde sa majú vygenerovať OPTION tagy. Napríklad:
    components.formsimple.input.organizacia=<div class="form-group"><label for="${id}">${label}${tooltip}</label> <select class="${classes}form-control" data-name="${label}" id="${id}" name="${id}" >{enumeration-options|1|string1|string2}</select>${cs-error}</div>
    následne je možné jednoducho v číselníkoch upravovať položky výberového poľa (aj centrálne pre viaceré formuláre).
  • Formulár ľahko - pridaná možnosť písania názvov a popisov (label) cez wysiwyg editor (umožní formátovať text - tučné písmo, kurzíva a podobne). Pri programovaní HTML kódu blokov použite značku {labelSanitized} na atribútoch id a name (odstráni HTML kód z názvu poľa).
  • Klonovanie štruktúry - upravené porovnanie jazyka bez ohľadu na veľkosť písmen (je možné klonovať aj iné prefixy ako jazykové, napr. podľa mena projektu).
  • Súbory - doplnené zmazanie fulltext indexu súboru po zmazaní súboru/adresára vo /files priečinku.
  • Súbory - pridaná možnosť usporiadať zoznam web stránok podľa priority (riešené simuláciou atribútu veľkosti). V okne je potrebné si prepnúť možnosť Zoradiť na hodnotu Podľa veľkosti. V pravej časti sa následne adresáre/stránky zoradia podľa priority usporiadania. Zaškrtnutím možnosti Tiež stromové zobrazenie sa takto usporiada aj stromová štruktúra v ľavej časti. Nastavenie sa aplikuje aj na štandardné súbory, kde je vhodné si spôsob usporiadania prepnúť naspäť na Podľa mena.

Aplikácie

Tlačové správy/novinky

Pridali sme možnosť kontrolovať duplicitu stránky/novinky v rámci viacerých aplikácií Novinky vložených v stránke (kontroluje sa jedinečnosť docid). V stránke môžete mať vložených viacero aplikácií novinky, pri ktorom toto nastavenie spôsobí, že sa vám už zobrazená stránka (novinka) nezobrazí duplicitne.

Rieši to aj problémy, ak potrebujete novinky vypisovať s rôznym dizajnom, napr. prvú zobrazenú vo veľkom boxe a pod ňou štandardný zoznam. Môžete to spraviť dvoma aplikáciami novinky s rôznym dizajnom. Ak sa novinka zobrazí v prvej aplikácii (kde zobrazíte len jednu najnovšiu), v druhej aplikácii so štandardným zoznamom sa už nezobrazí.

Pre šablóny noviniek sme pridali nasledovné vylepšenia:

  • pridaná možnosť získať autora novinky volaním napr. actionBean.author($doc).email
  • pridaný objekt MediaDB pre možnosť získania médií k stránke v novinkách. Vo velocity šablóne je možné použiť volanie typu:
        #foreach($media in $MediaDB.getMedia($doc, "SKUPINA"))
          $media.mediaTitleSk
        #end
  • pridaný objekt pageParams pre možnosť získania nastavených parametrov, použijete ho ako $pageParams.getString("meno", "defaultHodnota"), $pageParams.getIntValue("meno", -1), $pageParams.getBooleanValue("meno", false), pričom druhý parameter je predvolená hodnota (ak meno nie je nastavené)
     

Anketa ľahko

Nová aplikácia pre vytváranie jednoduchých ankiet vložených priamo do stránky. Aplikácia umožňuje zadefinovať text otázky a možné odpovede. Hlasovanie je zaznamenané v databáze a je naviazané na aktuálnu session (návštevu stránky). Neodporúčame anketu použiť pre hlasovania, v ktorých je potrebné zabezpečiť jedinečnosť hlasovania prihláseným používateľom.

Informačné systémy verejnej správy

Spravili sme úpravy pre zosúladenie s požiadavkami informačných systémov verejnej správy (ISVS):

  • Menu  - pridaná CSS trieda externalLink na odkazy smerujúce na iný web (začínajúce na http) pre možnosť vizuálneho odlíšenia takéhoto odkazu (pridanie ikony).
  • Mapa stránok - pre verziu ul-li sa k externým linkám generuje CSS trieda externalLink pre možnosť vizuálneho označenia externých odkazov.

GDPR - správa cookies

Do aplikácie GDPR sme pridali sekciu pre správu cookies - ich definovanie a popis - s možnosťou napojenia na modul Skripty (povolenie skriptov podľa kategórii cookies).

Umožňuje to návštevníkovi stránky voľbu typov vkladaných scriptov (marketingové, povinné, technické...). Zoznam kategórií cookie sa nastavuje v konf. premennej cookieManagerClassifications, názov cookie, do ktorej sa preferencie návštevníka ukladajú, sa nastavuje v konf. premennej enableClassificationCookieName.

Aplikácia umožňuje popis cookie definovať vo viacerých jazykoch podľa jazykových mutácií stránky.

Výsledkom je zobrazenie stránky Prehlásenie o cookies na web stránke, v ktorej návštevník stránky môže určiť, aké cookies a priradené skripty povoľuje použiť. Takáto povinnosť je od mája 2019.

Ďalšie zmeny v aplikáciách

  • Archív súborov / Súbory - doplnená integrácia archívu súborov do dialógu vloženia odkazu do stránky (zapne sa nastavením konf. premennej elfinderFileArchiveEnabled na true). Umožňuje to vkladať odkaz na súbor v archíve priamo zo štandardného dialógu vloženia súboru.
  • Archív súborov - pridané vyhľadávanie v archíve súborov. Možnosti vyhľadávania sa povoľujú konf. premennými fileArchivUseSubStringSearch*.
  • Basket/eshop - upravená bootstrap verzia pre vkladanie objednávkového formuláru, pri produktovej stránke odkazuje na rodičovskú stránku (zoznam produktov).
  • Hromadný mail - pridaná možnosť importovať zoznam odhlásených emailov.
  • Hromadný mail / GDPR - upravená komponenta pre prihlasovanie (subscribe) - zoznam email skupín sa vypíše vždy (doteraz sa nevypísal, ak obsahoval len jednu položku) - pre GDPR musí vždy dôjsť k jasnému zaškrtnutiu, nemôže byť automatické.
  • Používatelia - registrácia - do dialógu pre registráciu používateľa pridané pole groupIdsEditable, do ktorého je možné zadať zoznam ID skupín, ktoré používateľ pri registrácii volí (typicky news skupiny). Zabezpečí to možnosť zrušenia registrácie používateľa v danej skupine v editácii profilu (pretože, keď nezaškrtne pole, tak backend o tom nemá informáciu a použije skupinu, ktorú používateľ už má priradenú). Vďaka nastaveniu parametra groupIdsEditable vie aj backend, aké skupiny má možnosť používateľ zvoliť a vie, ktoré nezaškrtol.
  • Používatelia - v registračnom formulári sa automaticky zobrazí zoznam skupín, do ktorých sa má možnosť pridať používateľ (nastavené podľa zoznamu ID skupín z poľa skupiny používateľov, do ktorých má používateľ možnosť prihlásenia, alebo odhlásenia).
  • Quiz - pridaná možnosť definovať typ kvízu s bodovanými odpoveďami (nielen správna/nesprávna, ale odpoveď s definovaným počtom bodov).
  • Reštauračné menu - pridaná možnosť definovania typov jedál (polievka, hlavné jedlo...) cez číselník s názvom "reštauračné menu kategórie". Ak tento číselník existuje, automaticky sa výberové pole Typ jedla preberá z tohto číselníka.
  • Vloženie dokumentu - pridaná podpora Médiá tejto stránky pri vkladaní dokumentu.

Zlepšenie výkonu

Stránkam sme pridali možnosť nastaviť globálne cache čas (vyžadovaný je zapnutý režim nginxProxyMode). Cez konfiguračnú premennú nginxProxyModePageCacheTime môžete nastaviť čas v sekundách, ktorý sa pri vygenerovaní stránky nastaví do HTTP hlavičky Cache-Control. V takomto režime bude zobrazenie a prechod medzi stránkami návštevníkmi subjektívne rýchlejší (stránka sa zapamätá v prehliadači aj na proxy serveroch).

Okrem toho sme upravili:

  • Admin prihlásenie - pridaná možnosť nastaviť čas striedania pozadí na prihlasovacej obrazovke, užitočné, ak sa pripájate cez Remote Desktop a zmena pozadia vám spomaľuje pripojenie. Čas striedania pozadia sa nastavuje v konf. premennej adminLogonBgTime (počet milisekúnd striedania).
  • Cachovanie - po zmene konf. premenných cacheStaticContentSuffixes alebo cacheStaticContentSuffixes sa zmena prejaví okamžite (bez potreby reštartu servera).

Bezpečnostné vylepšenia

Do auditu sme pridali možnosť NEvyhľadania výrazu zadaním prefixu NOT do poľa Opis a upravili sme získanie IP adresy používateľa za proxy (ignorovaný je výraz unknown, ktorý sa v niektorých prípadoch v HTTP hlavičke X-forwarded-for prenášal).

Zlepšili sme bezpečnosť pri čítaní JPA beanov pre viaceré domény v jednom WebJETe (v režime enableStaticFilesExternalDir na true). Automaticky sa pre JPA operácie pridáva ID domény do SQL podmienok. Zoznam JPA tried, ktoré podporujú režim viacerých domén (majú databázový stĺpec domain_id), sa nastavuje v konf. premennej jpaFilterByDomainIdBeanList.

CSRF ochrana

Z dôvodu možných CSRF zraniteľností sme sprísnili kontrolu referer hlavičky v prípade prihláseného administrátora. Predchádzajúca verzia vyhodnotila prázdnu referer hlavičku ako korektnú a ochranu nevykonala. Keďže prehliadače dnes referer hlavičku z dôvodu ochrany súkromia neposielajú, toto už nemôžeme považovať za korektné a prázdna hlavička referer je vyhodnotená ako neplatná.

Táto kontrola je dôležitá ako ochrana pred volaním napr. mazania stránky z napadnutej cudzej stránky, ktorú máte otvorenú v inej záložke prehliadača.

Referer hlavičku kontrolujeme pre všetky POST requesty a pre GET requesty obsahujúce parameter v URL. Výnimky pre systémové stránky (napr. schvaľovací odkaz z emailu) sú definované v konf. premennej xsrfUrlExceptionSystem (odporúčame nemeniť) a pre váš web v xsrfUrlException (ak potrebujete pridať výnimky pre konkrétnu inštaláciu WebJETu).

V konf. premennej xsrfParamNameException je možné definovať zoznam bezpečných parametrov, ktoré sa preskočia pri testovaní, či GET požiadavka obsahuje parameter. Prednastavená je na hodnotu: docid,_logLevel,combineEnabled,groupid. Takéto parametre nie sú pre detekciu XSRF útoku považované za parametre a sú preskočené.

Upravili sme aj nasledovné vlastnosti:

  • Pre upload súborov v Stripes formulároch (použitý parameter __sfu=1) sa automaticky kontroluje CSRF token generovaný Stripes formulárom (ak sa nezhoduje, upload súborov sa nevykoná).
  • Zrušený prenos session ID v parametri pri uploade súborov (bol potrebný pre flash verziu multi uploadu), flash už nie je podporovaný, veríme, že fallback na flash sa už nepoužíva (všetky aktuálne prehliadače už podporujú HTML 5 multiupload).
  • Pri JSP chybe a prihlásenom administrátorovi sa kompletné chybové hlásenie (stack trace) zobrazí len ak má administrátor právo na modul Audit. Ak nemá, zobrazí sa len všeobecná chyba (nastala chyba pri vykonávaní komponenty xxx).
     

Ďalšie bezpečnostné zmeny

  • Opravené možné XSS, CSRF a Directory Traversal zraniteľnosti v administrácii.
  • Admin - vylepšené presmerovanie z aplikácie v admin časti po odhlásení (namiesto chyby 403 sa zobrazí prihlásenie do administrácie).
  • Editor - upravený spôsob prenosu dát medzi editorom a popup oknom nastavenia aplikácie z GET na POST (niektoré firewally v korporátnom prostredí mohli mať nastavené obmedzenia pre dlhé URL adresy).
  • Email - nová konf. premenná emailProtectionSenderName, ktorou je možné nahradiť meno odosielateľa na všetkých emailoch (podobne ako email sa nahradí konf. premennou emailProtectionSenderEmail). Štandardne je prázdna (použije sa nastavený odosielateľ), možné je nastaviť ju na fixné meno odosielateľa alebo na hodnotu sama-as-email pre nastavenie rovnakej hodnoty ako email odosielateľa. 
  • Používatelia - hromadné operácie - pri voľbe Autorizuj a zapnutom hashovaní hesiel (štandard pre WebJET 8) sa používateľom vygeneruje nové heslo a zašle sa do emailu.
  • Práva - opravené nastavenie cesty pre multidomain WebJET k priečinkom podľa štruktúry (opravené dvojité pridanie doménového aliasu).
  • Prihlásenie - rozšírená možnosť prihlasovania cez URL parametre aj pre štandardných používateľov, prihlásenie funguje pridaním parametra doFilterLogon=true a parametrov username a password. Napríklad www.domena.sk/sk/?doFilterLogon=true&username=xxx&password=bbb
  • Prihlásenie - prihlásenie cez URL parameter doFilterLogon=true rozšírené o možnosť zadania mena a hesla cez Base64 kódovaný parameter token vo formáte username:password pričom na začiatok base64 musí byť pridaný náhodný znak - aby token nešlo dekódovať priamo, ale až ako substring(1). Napríklad www.domena.sk/sk/?doFilterLogon=true&token=xxx
  • Prihlásenie - prihlásenie cez URL parameter doFilterLogon je možné nastaviť na redirect po prihlásení nastavením parametra doFilterLogon na hodnotu redir namiesto true. Presmeruje sa na zadanú stránku, ale z URL adresy sa odstránia parametre (aby nezostali zobrazené v prehliadači). Napríklad www.domena.sk/sk/?doFilterLogon=redir&token=xxx
  • Upload (XHR) - doplnené odstraňovanie špeciálnych znakov, ak sa jedná o upload do /images alebo /files adresára (aby v názve nezostala diakritika a medzery - rovnako ako v menu Súbory).
  • Vyhľadávanie - upravené generovanie snippetu (pridaná detekcia neuzatvoreného HTML tagu - prevencia pred html injection).

Systémové zmeny

Pre odosielanie emailu sme zapli podporu vkladania mena odosielateľa s diakritikou (doteraz sa diakritika automaticky odstraňovala). Po aktualizácii vám teda nastane zmena v odosielaných emailoch. Kódovanie sa použije podľa nastavenia web sídla (štandardne utf-8).

Konfigurácia pre domény

Pridali sme podporu hľadania konfiguračných premenných podľa domény stránky. Je to užitočné, ak potrebujete mať nastavené konfiguračné premenné pre každú spravovanú doménu rozdielne (napr. googleMapsApiKey).

Funkcia sa zapne nastavením konf. premennej constantsAliasSearch na hodnotu true.

Následne namiesto menoPremennej môžete vytvoriť premennú www.domena.sk-menoPremennej, ktorá sa použije na zadanej doméne. Ak máte definované doménové aliasy (cez konf. premennú multiDomainAlias:wwww.domena.sk), je možné použiť namiesto domény alias.

Pre multiweb sme zaviedli a upravili nasledovné konfiguračné premenné:

  • Multiweb - pridaná podpora makra {DOMAIN_ALIAS} pre konf. premennú fbrowserAlwaysShowFolders. Teraz je možné zapísať napr.:
    /templates/{DOMAIN_ALIAS}/*
    /components/{DOMAIN_ALIAS}/*
    a podobné hodnoty pre jednoduchšie nastavenie adresárov pre všetky domény.
  • Multiweb - nová konf. premenná fbrowserDefaultWritableFolders - zoznam adresárov (každý na novom riadku), na ktoré získa používateľ automaticky práva, ak nemá žiadne definované (v režime fbrowserShowOnlyWritableFolders true). Vhodné na multiweb, kde viete nastaviť predvolené práva (vie vykonať aj makro {DOMAIN_ALIAS}. Odporúčame nastaviť na:
    /images/*
    /files/*
    /templates/{DOMAIN_ALIAS}/*
    /components/{DOMAIN_ALIAS}/*

 

Volanie servletov

Preprogramovali sme spôsob volania servletov - URL adresy typu /admin/thumb, /thumb, /admin/elfinder-connector, /to.pdf, /topdf/, /captcha.jpg atď. Ak vám tieto adresy po aktualizácii nefungujú, skontrolujte si definíciu verzie Servlet API v súbore /WEB-INF/web.xml. Skontrolujte si definíciu hneď v prvom tagu web-app (kde je umiestnená verzia). Správna verzia je minimálne 3.0:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

ak máte definovanú staršiu verziu 2.4, stačí upraviť tag <web-app podľa vyššie uvedeného príkladu.

Spring framework

Postupne prechádzame na využívanie Spring frameworku, ktorý je medzi Java programátormi považovaný za štandard vývoja web aplikácií. Do Springu transformujeme staré časti WebJETu naprogramované v starom Struts frameworku a pridávame  podporu programovania nových aplikácií/modulov v Springu.

  • Spring - nová verzia prihlasovania do administrácie s využitím Spring frameworku, zobrazí sa pri volaní /admin/login (zatiaľ neaktívne).
  • Web stránky - vlastnosti adresára - nová verzia cez Spring (zatiaľ neaktívna).
  • Spring - nová premenná springAddPackages - zoznam packages pre scanovanie Spring beanov pri inicializácií WebJETu.
  • Spring - pridaná podpora používania Spring web ako aplikácií/modulov pre WebJET.
  • Spring - pri prihlasovaní do administrácie sa korektne nastavia aj Spring práva (credentials) pre REST služby, je tak možné nastaviť práva na metódy ich anotovaním v java kóde.
  • Spring - už pri inicializácii sa nastaví správna hodnota do Constants.getInstallName() pre lepšie získanie properties súborov (získanie súborov aj podľa mena inštalácie).

Prekladové texty

Upravili sme získavanie prekladových textov - ak neexistuje preklad v EN jazyku a zároveň konf. premenná defaultLanguage je nastavená na napr. CZ jazyk, tak sa najskôr hľadá preklad v CZ jazyku. Ak neexistuje ani v CZ, hľadá sa v SK jazyku.

Pôvodná verzia pracovala tak, že ak nenašla v EN jazyku, hľadala hneď v SK jazyku - nebrala do úvahy nastavenie konf. premennej defaultLanguage.

Otváranie odkazov na súbory

Pridali sme možnosť definovať prípony, pre ktoré sa v prehliadači vynúti uloženie súboru (namiesto jeho zobrazenia v prehliadači). Zoznam začiatkov prípon sa definuje v konf. premennej forceDownloadSuffixes (napr. .doc,.xls,.pdf) a aplikuje sa na súbory z adresárov /images a /files (nastaví sa HTTP hlavička Content-Disposition: attachment).

Výsledkom je, že po kliknutí na odkaz takéhoto súboru prehliadač zobrazí dialóg uloženia súboru namiesto jeho priameho zobrazenia (napr. pri PDF alebo XML súboroch).

Ďalšie systémové zmeny

  • API - refaktoring kódu (zmena tried) kvôli postupnej príprave migrácie na WebJET 9. Viacero statických podporných metód zmigrovaných do package sk.iway.iwcm.common (mená tried rovnaké ako pôvodne s príponou Tools). Je potrebné upraviť custom JSP súbory zmenou napr. SearchAction.getCheckInputParams() na sk.iway.iwcm.common.SearchTools.getCheckInputParams(). Kvôli kompatibilite zostali aj pôvodné metódy, sú označené ako deprecated.
  • Datatables - aktualizovaná verzia, pridané samostatné pluginy.
  • Editácia textov - pri editácii textu doplnená informácia o tom, že pre zvolený jazyk nie je definovaný preklad (po zmene výberového poľa s jazykom).
  • Kalendár udalostí - pridané REST služby pre integráciu s fullcalendar.io.
  • Konfigurácia - doplnená propagácia zmeny konf. premennej multiDomainAlias pri cluster prostredí na jednotlivé uzly.
  • Konfigurácia - pridaná možnosť prebratia HTTP portu servera nastavením konf. premennej httpServerPort na hodnotu -1. Umožní to mať na serveri viacero HTTP konektorov s rôznym portom.
  • Monitorovanie servera - pridaná možnosť prepnúť WebJET do režimu údržby, pri ktorom komponenta monitor.jsp generuje na výstup text UNAVAILABLE, tento režim sa zapne konf. premennou monitorMaintenanceMode nastavenou na hodnotu true.
  • Perex skupiny - pridaná aktualizácia clustra po uložení perex skupiny.
  • Používateľ - pridaná možnosť v administrácii pri editácii / vytváraní používateľa zmeniť pole Firma a Pozícia na výberové pole. Hodnoty sa berú z konf. premennej usersCompanyList, kde je buď zoznam firiem oddelených znakom |, alebo hodnota enumeration_XX, kde XX je ID číselníka so zoznamom firiem. Pre pozíciu sa hodnoty berú z konf. premennej usersPositionList rovnakým spôsobom.
  • REST - pridaná podpora generovania swagger dokumentácie k REST službám na URL /swagger-ui.html (potrebná autorizácia admin kontom).
  • Súbory - pridaná podpora pre vkladanie odkazov z aplikácie Archív súborov (pri vytváraní linku alebo externom odkaze), zapne sa nastavením konf. premennej elfinderEnableFileArchiv na true

Iné zmeny (changelog)

Ostatné zmeny z changelogu, ktoré nie sú uvedené vyššie.

  • Administrácia - opravené možné chybné zobrazenie fontu na Windows 10 (font Open Sans).
  • Basket/eshop - opravené nastavenie možností doručenia čítaním z adresára /System/ModeOfTransport. Meno adresára je možné zmeniť v konf. premennej basketTransportGroupName.
  • Editácia textov - opravený export viacriadkových textov (napr. šablóny noviniek) v properties formáte.
  • Editor obrázkov - pridaná podpora súborov s príponou .jpeg (v staršej verzii sa .jpeg obrázok v editore obrázkov nezobrazil).
  • Firefox - upravené nastavovanie výšky popup okna v administrácii - zrušená pôvodná výnimka pre starý Firefox, ktorá znemožňovala meniť veľkosť okna. Aktuálny Firefox sa už správa rovnako ako ostatné prehliadače a oknu je možné meniť veľkosť.
  • Hromadný email - upravená veľkosť okna pre priame zadanie emailov (aby bolo vidno tlačidlo odoslať).
  • Klonovanie štruktúry - opravené možné zacyklenie aktualizácie hodnoty groupIds pri klonovaní.
  • Novinky - opravené čítanie z MS SQL pri nastavenom parametri perexNotRequired=false.
  • Používatelia - upravené zobrazenia na novú verziu Datatables (vizuálne úpravy, zjednotenie JS kódu).
  • Sendmail / formuláre - pridané auditovanie stack trace pri chybe odosielania mailu (pre lepšiu informáciu o dôvode problému).
  • Súbory - opravená kontrola existencie súboru, ak obsahuje spojky (na serveri sa spojky odstraňovali, ale na frontende sa porovnali bez odstránenia, čo spôsobilo nezobrazenie dialógu pre potvrdenie prepísania súboru).
  • Súbory - upravená editácia súboru v sekcii WEB stránky - zobrazí sa štandardný editor stránok namiesto chyby JSON (web stránky je tak možné editovať aj v sekcii Súbory).
  • Šablóny - pri editácii šablóny doplnená kontrola docid pre hlavičky/pätičky voči zobrazenému zoznamu. Ak sa v zozname nenachádza (napr. je z inej domény), doplní sa do zoznamu (aj s cestou k adresáru, kde sa nachádza, aby to bolo zrejmé).

Ďalšie blogy

card img
JAVA: Platiť či neplatiť?

V poslednej dobe sme zaznamenali u našich zákazníkov ako aj všeobecne vo svete rôznorodé reakcie o tom, “čo vraj zas Oracle spáchal na JAVE“. Tie sa pohybovali na hysterickej škále od stavov: “Reimplementujeme naše riešenia nad inou platformou“, cez zlatú strednú cestu (pragmatický prístup), až pod druhý extrém: “Vezmeme si úver na zalincencovanie nášho X-sto uzlového prostredia“.

18.03.2019

card img
InterWay na ITAPA 2018

Máme za sebou úspešné, veľmi významné podujatie v oblasti IT - ITAPA 2018. Aj tento rok sa spoločnosť InterWay zapojila a opätovne tento IT kongres podporila ako Strieborný partner. Celý kongres sa konal v dňoch 13.-14.novembra v priestoroch hotela Crowne Plaza v Bratislave.

23.11.2018

card img
IwayDay 2018

IwayDay v znamení revolúcie. Zmeny nás sprevádzajú na každom rohu, my v IW nespíme a prispôsobujeme sa im. Aj preto sme tohtoročný, už šiesty ročník IwayDay, niesli v duchu InterWay 4.0.

17.10.2018

card img
Teambuilding - Návrat ku koreňom

Prichádzajúce leto značí nielen voľnejšie dovolenkové obdobie a dlhé letné večery, ale u nás v InterWay je to aj zvesťou blížiaceho sa letného teambuildingu. Počas troch dní si spoločne oddýchneme od emailov, oblekov, vyzváňajúcich telefónov a pohrúžime sa do príjemnej, pohodovej atmosféry.

25.06.2018

card img
WebJET novinky 5/2018

WebJET v novej verzii 8.4 prináša nové aplikácie Formulár ľahko, GDPR, Číselníky a mnoho ďalších vylepšení na backende aj frontende.

25.05.2018

card img
IWAY RUN TEAM - ČSOB štafetový polmaratón

Podporujeme našich zamestnancov v ich športových aktivitách, a preto sme sa zúčastnili príjemného športového podujatia s názvom ČSOB maratón.

09.04.2018

© 2019 InterWay, a. s. Všetky práva vyhradené | Ochrana osobných údajov
Tieto stránky generuje redakčný systém WebJET.