Semakin
Zákazník

Uživatelská příručka

Sema Cookie Consent for Joomla

Joomla rozšíření (package = plugin + komponenta) pro GDPR cookie consent banner s admin dashboardem a podporou Google Consent Mode v2.

JoomlaPHPAktuální verze
4.x, 5.x, 6.x8.1+1.0.6

1. Požadavky

  • Joomla 4.x, 5.x nebo 6.x
  • PHP 8.1 nebo novější
  • MySQL 5.7+ / MariaDB 10.3+

2. Instalace

Získání instalačního balíčku

Stáhněte ZIP soubor pkg_semacookieconsent-X.Y.Z.zip ze SemaHub (Semakin.cz).

Postup instalace

  1. Přihlaste se do administrace Joomla.
  2. Přejděte do System > Install > Extensions.
  3. Nahrajte ZIP soubor pkg_semacookieconsent-X.Y.Z.zip.
  4. Joomla nainstaluje oba díly najednou:
    • Plugin: plg_system_semacookieconsent (System – Sema Cookie Consent)
    • Komponenta: com_semacookieconsent (Sema Cookie Consent – admin dashboard a log)
  5. Plugin se automaticky povolí po instalaci (díky pkg_script.php).

Upgrade: Stejný postup jako instalace. Joomla použije method="upgrade" a zachová data v tabulce #__semacookieconsent_consents.

Migrace: Pokud na webu existuje stará tabulka #__cookie_consents (z předchozí implementace), instalační skript automaticky přenese data do nové tabulky.

3. Aktivace pluginu

Plugin se automaticky povolí při instalaci. Pokud je z nějakého důvodu vypnutý:

  1. System > Manage > Plugins
  2. Vyhledejte semacookieconsent nebo Cookie Consent.
  3. Klikněte na název pluginu a nastavte Status = Enabled.

Po povolení se na frontendu webu ihned objeví cookie consent banner (pokud návštěvník ještě neudělil souhlas).

4. Základní nastavení

Otevřete nastavení pluginu: System > Plugins > klik na název pluginu.

Nastavení je rozděleno do 6 karet (tabu):

KartaObsah
ObecnéPozice banneru, URL zásad cookies, expirace souhlasu, lišta pro znovuotevření
TextyVšechny texty v banneru (nadpis, popis, tlačítka, názvy kategorii)
BarvyBarva pozadí, textu, nadpisu, akcentu (tlačítka) a aktivního přepínače
KategoriePovolení/zakázání analytických a marketingových kategorii, cookies k mazání
Google Consent ModePovolení GCM v2, čekání na aktualizaci, region
PokročiléLogování souhlasu, rate limit, anonymizace IP, vyloučené stránky

Karta Obecné

ParametrVýchozíPopis
Pozice banneruDoleBanner se zobrazí dole (bottom) nebo nahoře (top) na stránce.
URL zásad cookies/pouziti-cookiesRelativní nebo absolutní URL stránky se zásadami používání cookies.
Expirace souhlasu (dny)365Po kolika dnech souhlas expiruje a banner se znovu zobrazí. Rozsah: 1–730.
Zobrazit lištu pro znovuotevřeníAnoPo udělení/odmítnění souhlasu se zobrazí malá lišta (s ikonou cookie), která umožní souhlas znovu upravit.

5. Texty banneru

Karta Texty umožňuje upravit všechny texty zobrazené v banneru. Každé pole je ve výchozím stavu prázdné – plugin automaticky použije překlad z jazykového souboru pro aktuální jazyk webu (CZ, EN, DE, SK). Pokud vyplníte vlastní text, bude použit na všech jazykových verzích webu. Viz kapitola 14. Vícejazyčný banner.

ParametrVýchozí (CZ)Popis
NadpisNastavení cookiesNadpis v banneru.
Popis(dynamicky dle kategorií)Hlavní text banneru. Pokud nevyplníte, text se automaticky přizpůsobí povoleným kategoriím (viz níže).
Tlačítko Přijmout všePřijmout všeText na tlačítku pro přijetí všech cookies.
Tlačítko Odmítnout všeOdmítnout všeText na tlačítku pro odmítnutí všech volitelných cookies.
Tlačítko NastaveníNastaveníText na tlačítku pro otevření detailu s kategoriemi.
Tlačítko UložitUložit nastaveníText na tlačítku pro uložení vlastního výběru kategorii.
Název nezbytnýchNezbytné cookiesNázev kategorie nezbytných cookies.
Popis nezbytnýchNutné pro správně fungování webu. Nelze vypnout.Popis kategorie nezbytných cookies.
Název statistickýchStatistické cookiesNázev kategorie statistických cookies.
Popis statistickýchPomáhají nám pochopit, jak návštěvníci používají web (Google Analytics).Popis kategorie statistických cookies.
Název marketingovýchMarketingové cookiesNázev kategorie marketingových cookies.
Popis marketingovýchPoužívají se pro cílenou reklamu a retargeting (Google Ads).Popis kategorie marketingových cookies.
Text odkazu na zásadyZásady používání cookiesText odkazu na stránku se zásadami cookies.
Text lišty pro znovuotevřeníNastavení cookiesText na liště pro znovuotevření banneru.

Dynamický popis banneru

Pokud pole Popis necháte prázdné (nebo ponecháte výchozí hodnotu), plugin automaticky zvolí text podle povolených kategorii:

Povolené kategorieText
Statistické + Marketingové„...Statistické a marketingové cookies používáme pouze s vaším souhlasem...“
Pouze Statistické„...Statistické cookies používáme pouze s vaším souhlasem...“
Pouze Marketingové„...Marketingové cookies používáme pouze s vaším souhlasem...“
Žádné (jen nezbytné)„Tento web používá pouze nezbytné cookies nutné pro fungování webu.“

Pokud vyplníte vlastní text, má vždy přednost před dynamickou logikou.

6. Barvy

Karta Barvy umožňuje přizpůsobit vzhled banneru barvám webu. Barvy se aplikují přes CSS custom properties.

ParametrVýchozíCSS propertyPopis
Barva pozadí#1e2533--scc-bgPozadí banneru.
Barva textu#ccd0d8--scc-textBarva hlavního textu.
Barva nadpisu#ffffff--scc-headingBarva nadpisu.
Barva akcentu (tlačítka)#e67e22--scc-accentBarva tlačítek a zvýrazněných prvků. Hover stav se automaticky ztmaví.
Barva aktivního přepínače#27ae60--scc-toggleBarva přepínače při zapnuté kategorii.

Pokud používáte vlastní CSS šablonu, můžete barvy přepsat přímo v CSS pomocí proměnných --scc-bg, --scc-text atd.

7. Kategorie cookies

Karta Kategorie určuje, které volitelně kategorie se v banneru zobrazují.

ParametrVýchozíPopis
Povolit kategorii StatistickéAnoZobrazí kategorii „Statistické cookies“ v banneru.
Povolit kategorii MarketingovéAnoZobrazí kategorii „Marketingové cookies“ v banneru.
Statistické cookies k mazání_ga,_gid,_gatČárkou oddělené názvy cookies, které se smažou při odmítnutí statistických.
Marketingové cookies k mazání_gcl_au,_fbp,_fbcČárkou oddělené názvy cookies, které se smažou při odmítnutí marketingových.

Jak mazání cookies funguje

Když návštěvník odmítne kategorii (nebo ji vypne v nastavení), JavaScript automaticky smaže všechny cookies uvedené v příslušném seznamu. Mazání probíhá pro aktuální doménu i s tečkou na začátku (.example.cz).

Od verze 1.0.6: Prázdné pole znamená "nemazat nic". Dříve se prázdná hodnota tiše nahradila vestavěným seznamem, takže pole nešlo vyprázdnit -- na webech bez Google Analytics a Google Ads plugin mazal cookies, které na nich nikdy nevznikly. Na nové instalaci, kde pole nikdy nikdo neuložil, platí dál výchozí hodnota z manifestu.

Doporučení: Seznamy uvádějte podle toho, co web skutečně ukládá, ne podle výchozích hodnot. Výchozí _ga,_gid,_gat a _gcl_au,_fbp,_fbc dají smysl jen tam, kde běží klientský Google tag nebo Facebook Pixel.

Kategorie Nezbytné

Kategorie „Nezbytné cookies“ je vždy zapnutá a nelze ji vypnout (přepínač je disabled). To odpovídá GDPR – nezbytné cookies nevyžadují souhlas.

Tip: Pokud web nepoužívá žádné tracking služby, můžete obě volitelně kategorie vypnout. Banner pak zobrazí pouze informaci o nezbytných cookies.

POZOR: Na webu se Semakin Server-side Tracking kategorii Statistické nevypínejte, i když za ni nic neběží. Consent bridge SST vyhodnocuje úroveň souhlasu jako "analytics a marketing = L2, jen analytics = L1" -- bez analytics spadne i při plném souhlasu na L0 a marketingové měření tiše přestane fungovat. Kategorii nechte zapnutou a v zásadách cookies poctivě uveďte, že aktuálně neukládá žádné cookies.

8. Google Consent Mode v2

Karta Google Consent Mode umožňuje integraci s Google Consent Mode v2 (GCM).

ParametrVýchozíPopis
Povolit Google Consent Mode v2NeZapne vkládání skriptů consent-mode.js do <head>.
Čekání na aktualizaci (ms)500Hodnota wait_for_update pro GCM – jak dlouho Google čeká na aktualizaci souhlasu. Rozsah: 0–10000.
Region (volitelně)(prázdné)Čárkou oddělené ISO 3166 kódy regionu (např. CZ,SK,DE). Prázdné = všechny regiony.

Jak GCM funguje

  1. Skript consent-mode.js se vloží synchronně do <head> (bez defer/async).
  2. Musí se načíst PŘED jakýmkoli gtag.js nebo Google Tag Managerem.
  3. Při načítání stránky přečte existující souhlas z localStorage a nastaví gtag('consent', 'default', ...).
  4. Když návštěvník změní souhlas v banneru, JavaScript zavolá gtag('consent', 'update', ...).

GCM consent typy

GCM typKategorie v banneruÚčel
analytics_storageStatistickéPovolení analytických cookies (GA4).
ad_storageMarketingovéPovolení reklamních cookies (Google Ads).
ad_user_dataMarketingovéPovolení odesílání uživatelských dat pro reklamu.
ad_personalizationMarketingovéPovolení personalizované reklamy.
functionality_storage–Vždy granted (funkcionální cookies).
security_storage–Vždy granted (bezpečnostní cookies).
personalization_storage–Vždy denied (personalizace není použitá).

Důležité: Pokud na webu nepoužíváte Google Analytics, Google Ads ani Google Tag Manager, nemusíte GCM zapínat. GCM je relevantní pouze pro weby s Google tracking službami.

9. Pokročilé nastavení

Karta Pokročilé obsahuje nastavení pro logování souhlasu a další technické parametry.

ParametrVýchozíPopis
Povolit logování souhlasuAnoZaznamenává každý souhlas/odmítnutí do databáze (GDPR audit log).
Rate limit (sekundy)5Minimální interval mezi dvěma logy souhlasu ze stejné session. Ochrana proti zneužití. Rozsah: 0–60.
Anonymizovat IP adresuNeIPv4: nuluje poslední oktet (např. 192.168.1.0). IPv6: nuluje posledních 80 bitů.
Vyloučené menu položky(prázdné)Čárkou oddělená ID menu položek Joomla, kde se banner nezobrazí.

Logování souhlasu

Když je logování zapnuté, každá akce návštěvníka („Přijmout vše“ / „Odmítnout vše“ / „Uložit nastavení“) odešle AJAX požadavek na server, který zaznamená:

  • UUID souhlasu (generované na klientovi, uložené v localStorage)
  • IP adresu (volitelně anonymizovanou)
  • User-Agent
  • Joomla user ID (pokud je přihlášený)
  • Stav každé kategorie (nezbytné/statistické/marketingové)
  • Typ akce (accept_all, reject_all, custom)
  • Datum a čas

Záznamy se ukládají do tabulky #__semacookieconsent_consents.

GDPR požadavek: Články 7 a 13 GDPR vyžadují prokazatelnost souhlasu. Log souhlasu je zákonným důkazem, že návštěvník souhlas udělil či odmítnul. Doporučujeme ponechat logování zapnuté.

10. Administrace – Dashboard

Po instalaci se v administraci objeví nová položka v bočním menu: Components > Sema Cookie Consent.

Dashboard

Zobrazení Dashboard ukazuje přehled souhlasu za posledních 30 dní:

KartaPopis
Celkem (30 dní)Celkový počet interakcí s bannerem za posledních 30 dní.
PřijatoPočet „Přijmout vše“ (zelené). Včetně procentuálního podílu.
OdmítnutoPočet „Odmítnout vše“ (červené). Včetně procentuálního podílu.
VlastníPočet „Uložit nastavení“ s vlastním výběrem (modré). Včetně procentuálního podílu.
Míra souhlasuProcento návštěvníků, kteří souhlasili se statistickými cookies (accept_all + custom s analytics). Zelená ≥ 50%, červená < 50%.
Celkem za celou dobuCelkový počet interakcí od instalace pluginu.
Denní trendTabulka s denním počtem interakcí za posledních 30 dní. Vizuální sloupcový graf.

11. Administrace – Log souhlasu

Zobrazení Log souhlasu ukazuje podrobný seznam všech zaznamenaných souhlasů.

Sloupce tabulky

SloupecPopis
IDPořadové číslo záznamu.
ID souhlasuUUID v4 generovaný na klientovi (unikátní identifikátor souhlasu).
IP adresaIP adresa návštěvníka (případně anonymizovaná).
NezbytnéZelená fajfka / šedé X. Nezbytné jsou vždy zapnuté.
StatistickéZelená fajfka (souhlas) / šedé X (odmítnutý).
MarketingovéZelená fajfka (souhlas) / šedé X (odmítnutý).
AkceTyp akce: accept_all (zelený štítek), reject_all (červený), custom (modrý).
DatumDatum a čas zaznamenání souhlasu.

Filtrování

FiltrPopis
Filtr dle akceZobrazit pouze Accept All / Reject All / Custom.
Datum odFiltrování od zadaného data.
Datum doFiltrování do zadaného data.
HledatFulltextové hledání v consent ID nebo IP adrese.

Řazení

Kliknutím na záhlaví sloupců ID nebo Datum změníte směr řazení.

12. CSV export

  1. V zobrazení Log souhlasu klikněte na tlačítko „Export CSV“ v panelu nástrojů.
  2. Stáhne se CSV soubor se všemi záznamy (respektuje aktuální filtry akce a data).
  3. Kódování: UTF-8 s BOM (pro správné zobrazení v Excelu).
  4. Oddělovač: středník (;).
  5. Název souboru: cookie-consents-RRRR-MM-DD.csv.

CSV obsahuje sloupce: ID, Consent ID, IP Address, User Agent, User ID, Necessary, Analytics, Marketing, Action, Created At.

13. Integrace se Semakin SST pluginem

Pokud na webu používáte Semakin Server-side Tracking plugin, Sema Cookie Consent s ním automaticky spolupracuje:

Consent bridge

  1. JavaScript banneru uloží souhlas do localStorage (klíč scc_cookie_consent).
  2. SST plugin čte tento klíč a mapuje na tři úrovně:
    • L0 (anonymous) – žádný souhlas, pouze nezbytné
    • L1 (analytics) – souhlas se statistickými cookies
    • L2 (marketing) – souhlas s marketingovými cookies
  3. SST plugin nastaví cookie semakin_sst_cl (hodnoty 0/1/2) pro consent bridge mezi JS a PHP.
  4. PHP čte cookie a podle úrovně souhlasu povoluje/zakazuje server-side tracking.

Cookies generované pluginy Semakin

Nezbytné (vždy):

CookieExpiracePopis
cookieconsent_status365 dníStav souhlasu (allow/deny) pro server-side kontrolu.
semakin_sst_cl24 hConsent bridge (localStorage → PHP). Pouze pokud je SST plugin.

Statistické (po souhlasu L1):

CookieExpiracePopis
semakin_sst_cid2 rokyGA4 client_id fallback (server-side). Pouze pokud je SST plugin.

Marketingové (po souhlasu L2):

CookieExpiracePopis
semakin_sst_gclid90 dníGoogle Ads click ID. Pouze pokud je SST plugin + Google Ads.
semakin_sst_heureka_optout2 hHeureka opt-out. Pouze pokud je SST plugin + Heureka.
hg_ocm_id30 dníHeureka OCM atribuce (nastavuje Heureka SDK).

14. Vícejazyčný banner

Plugin automaticky zobrazuje banner ve správném jazyce podle nastavení Joomla webu. Texty banneru se načítají z jazykových souborů, takže na vícejazyčném webu každý jazyk zobrazí banner ve svém jazyce.

Podporované jazyky

JazykTagStav
Englishen-GBIntegrováno
Češtinacs-CZIntegrováno
Deutschde-DEIntegrováno
Slovenčinask-SKIntegrováno

Jak to funguje

  • Všechna textová pole v kartě Texty jsou ve výchozím stavu prázdná.
  • Pokud je pole prázdné, plugin automaticky použije překlad z jazykového souboru pro aktuální jazyk webu.
  • Pokud vyplníte vlastní text, zobrazí se na všech jazykových verzích webu (přepíše automatický překlad).
  • Placeholder v poli ukazuje výchozí text pro referenci.

Vícejazyčná URL cookie policy

URL cookie policy (policy_url) také podporuje hodnoty pro každý jazyk zvlášť. Pole URL zásad cookies v kartě Obecné funguje stejně jako textová pole:

  • Prázdné (výchozí) = automatická URL z jazykového souboru pro aktuální jazyk webu.
  • Vlastní URL = stejná URL pro všechny jazyky (přepíše automatický překlad).

Výchozí URL dle jazyka:

JazykVýchozí URL
cs-CZ/pouziti-cookies
en-GB/cookie-policy
de-DE/cookie-richtlinie
sk-SK/pouzitie-cookies

Na vícejazyčném webu, kde každý jazyk má jinou URL cookie policy (např. /cs/o-nas/pouziti-cookies vs /en/about-us/cookie-policy), použijte Joomla Language Overrides k nastavení klíče PLG_SYSTEM_SEMACOOKIECONSENT_DEFAULT_POLICY_URL pro každý jazyk se správnou cestou.

Přidání nového jazyka

Možnost 1: Jazykový soubor (doporučeno)

  1. Vytvořte soubor /plugins/system/semacookieconsent/language/{TAG}/plg_system_semacookieconsent.ini (např. pl-PL pro polštinu).
  2. Zkopírujte obsah z en-GB/plg_system_semacookieconsent.ini.
  3. Přeložte všechny klíče začínající na PLG_SYSTEM_SEMACOOKIECONSENT_DEFAULT_ (19 klíčů).
  4. Admin labels (položky bez _DEFAULT_) můžete nechat anglické – ovlivňují jen admin rozhraní.

Možnost 2: Joomla Language Overrides

  1. V administraci Joomla přejděte do System > Language Overrides.
  2. Vyberte cílový jazyk a klikněte na New.
  3. Přepište klíče PLG_SYSTEM_SEMACOOKIECONSENT_DEFAULT_* svým překladem.

Fallback

Pokud jazyk webu nemá odpovídající jazykový soubor, Joomla automaticky použije angličtinu (en-GB).

Důležité: Po upgradu z verze 1.0.4 na 1.0.5 instalační skript automaticky vyčistí uložené výchozí texty z databáze, čímž aktivuje dynamický překlad. Pokud jste měli vlastní texty, zůstanou zachovány.

15. Odinstalace

Postup

  1. System > Manage > Extensions
  2. Vyhledejte Sema Cookie Consent.
  3. Odinstalujte package pkg_semacookieconsent.

Co se smaže

  • Plugin plg_system_semacookieconsent (PHP, JS, CSS, jazykové soubory)
  • Komponenta com_semacookieconsent (admin soubory, šablony)
  • Media soubory (media/plg_system_semacookieconsent/, media/com_semacookieconsent/)

Co se smaže z databáze

  • Tabulka #__semacookieconsent_consents (všechny záznamy o souhlasech)

Upozornění: Na rozdíl od některých jiných Sema rozšíření tato tabulka se při odinstalaci SMAŽE (definováno v uninstall.mysql.sql). Pokud potřebujete záznamy o souhlasech zachovat, proveďte před odinstalací CSV export.

16. Řešení problémů

Banner se nezobrazuje

  1. Ověřte, že plugin je povolený (Status = Enabled).
  2. Zkontrolujte, zda aktuální stránka není v seznamu Vyloučených menu položek.
  3. Ověřte, že návštěvník ještě neudělil souhlas (smažte scc_cookie_consent v localStorage prohlížeče a cookieconsent_status v cookies).
  4. Zkontrolujte konzoli prohlížeče (F12) na JavaScript chyby.
  5. Ověřte, že na stránce není jiný plugin, který blokuje onAfterRender.

Banner se zobrazuje, ale chybí CSS (nevypadá správně)

  1. Ověřte, že soubor existuje: {root}/media/plg_system_semacookieconsent/css/semacookieconsent.css.
  2. Pokud soubor chybí, plugin není správně nainstalován – přeinstalujte.
  3. Zkontrolujte, zda jiný plugin neodstraňuje CSS z <head>.

Google Consent Mode nefunguje

  1. Ověřte, že Povolit Google Consent Mode v2 je zapnuto v nastavení pluginu.
  2. Zkontrolujte zdrojový kód stránky (Ctrl+U) – consent-mode.js musí být v <head> PŘED jakýmkoli gtag.js nebo GTM skriptem.
  3. Zkontrolujte konzoli prohlížeče – dataLayer musí obsahovat consent událost s default hodnotami.

Log souhlasu je prázdný

  1. Ověřte, že Povolit logování souhlasu je zapnuto.
  2. Zkontrolujte, zda návštěvník skutečně klikl na tlačítko v banneru (obnovení stránky bez interakce nezaloguje nic).
  3. Zkontrolujte konzoli prohlížeče na chyby AJAX požadavku na com_ajax.
  4. Ověřte, že tabulka #__semacookieconsent_consents existuje v databázi.

Po upgradu se banner chová divně

  • Návštěvník musí provést hard refresh (Ctrl+Shift+R) pro načtení nových JS/CSS souborů.
  • Starší souhlas v localStorage může mít jinou strukturu – smazání scc_cookie_consent v localStorage a obnovení stránky problém vyřeší.

Dashboard ukazuje nulové hodnoty

  • Dashboard zobrazuje data za posledních 30 dní. Pokud v tomto období nebyly žádné interakce, je to očekávané.
  • Ověřte, že logování souhlasu je zapnuté.

Banner se zobrazuje na stránce, kde neměl

  • Přidejte Joomla menu item ID do pole Vyloučené menu položky v nastavení pluginu.
  • ID menu položky naleznete v Menus > [název menu] – sloupec ID.

Jak banner funguje (z pohledu návštěvníka)

  1. Návštěvník přijde na web a zobrazí se cookie consent banner.
  2. Má tři možnosti:
    • Přijmout vše – zapne všechny volitelné kategorie, banner se skryje.
    • Odmítnout vše – odmítne všechny volitelné kategorie, banner se skryje.
    • Nastavení – rozbalí detail s kategoriemi a přepínači.
  3. V detailu může návštěvník zapnout/vypnout jednotlivé kategorie (Statistické, Marketingové) a kliknout na Uložit nastavení.
  4. Po udělení/odmítnění souhlasu se zobrazí malá lišta (s ikonou cookie) pro znovuotevření banneru.
  5. Kliknutím na lištu se banner znovu otevře s předvyplněnými hodnotami.
  6. Souhlas je uložený v localStorage prohlížeče a expiruje po nastaveném počtu dnů (výchozí 365).

Uložení souhlasu

  • localStorage: Klíč scc_cookie_consent obsahuje JSON s detailním stavem všech kategorií a časovým razítkem.
  • localStorage: Klíč scc_consent_id obsahuje UUID v4 pro identifikaci souhlasu v logu.
  • Cookie: cookieconsent_status s hodnotou allow nebo deny pro server-side kontrolu.

Kontrolní seznam pro spuštění

  • Plugin nainstalován a povolen
  • URL zásad cookies nastavena a stránka existuje
  • Barvy přizpůsobeny designu webu
  • Kategorie nastavené podle používaných služeb (GA4, Google Ads, Facebook atd.)
  • Cookies k mazání odpovídají skutečně použitým cookies na webu
  • Google Consent Mode zapnut (pokud používáte Google služby)
  • Logování souhlasu zapnuto
  • Anonymizace IP zapnutá (doporučeno pro GDPR)
  • Stránka se zásadami cookies (/pouziti-cookies) je kompletní a aktuální
  • Stránka ochrany osobních údajů odkazuje na stránku cookies
  • Testovací souhlas udělen a záznam se objeví v Logu souhlasu
  • Dashboard ukazuje správná data

Jak to vypadá v administraci

Přehled souhlasů
Kolik návštěvníků souhlas dalo — a doložitelně, kdy a s čím.

Máte zájem o spolupráci?

Ozvěte se nám a probereme Váš projekt. Rádi Vám poradíme s výběrem řešení.