Semakin
Zákazník

Uživatelská příručka

SemaCalendar

SemaCalendar ukazuje na webu sdílené kalendáře Google a nechá návštěvníky rezervovat termín. Události se spravují v Googlu, web je jen zobrazuje; rezervace vznikají na webu a potvrzené se zapisují do Google kalendáře toho, u koho se rezervuje.

JoomlaPHPGoogleAktuální verze
5.2+, 6.x8.1+Calendar API, servisní účet1.0.0

1. Požadavky

  • Joomla 5.2 nebo novější, nebo Joomla 6
  • PHP 8.1 nebo novější s rozšířením openssl (podpis přístupu ke Googlu)
  • MySQL 8 nebo MariaDB 10.6+
  • Účet Google a projekt v Google Cloud se zapnutým Google Calendar API (bez poplatků)
  • Plánovač úloh Joomly – spouštěný při návštěvách webu, nebo lépe cronem hostingu

2. Jak začít

  1. Nainstalujte balíček SemaCalendar (Systém → Instalace → Rozšíření). Nainstaluje komponentu, modul, plugin plánovače a plugin ochrany soukromí.
  2. Založte servisní účet Google a nahrajte jeho klíč na server (kapitola Přístup do Google kalendáře).
  3. V Google kalendáři nasdílejte kalendář na e-mail servisního účtu.
  4. V administraci Komponenty → SemaCalendar → Kalendáře kalendář přidejte a klikněte na Ověřit přístup.
  5. Založte v Plánovači úlohu SemaCalendar – synchronizace kalendářů (kapitola Plánovaná úloha).
  6. Přidejte položku menu Kalendář nebo modul SemaCalendar.
  7. Pro rezervace založte Zdroje a Účely a položku menu Rezervace.

3. Přístup do Google kalendáře

Web se do Googlu přihlašuje servisním účtem – technickým účtem projektu Google Cloud. Žádné přihlašování osobním účtem ani souhlasná obrazovka: kalendář se servisnímu účtu jen nasdílí, stejně jako kolegovi.

  1. V Google Cloud konzoli založte projekt (nebo použijte existující) a zapněte v něm Google Calendar API.
  2. IAM a administrace → Servisní účty → Vytvořit servisní účet. Role nejsou potřeba.
  3. U servisního účtu Klíče → Přidat klíč → Vytvořit nový klíč → JSON. Stáhne se soubor s klíčem.
  4. Soubor nahrajte na server. Doporučené místo je mimo webový adresář (třeba o úroveň výš než public_html); cestu k němu zapište v Nastavení → Google kalendář → Cesta ke klíči.
    Necháte-li cestu prázdnou, web hledá klíč v administrator/components/com_semacalendar/keys/gcal.json. Složka je chráněná proti stažení, ale odinstalace komponenty ji smaže i s klíčem.
  5. E-mail servisního účtu (…@….iam.gserviceaccount.com, je i v souboru klíče jako client_email) použijte při sdílení kalendářů.

Časové pásmo v Nastavení určuje, v jakém čase se počítá pracovní doba a celodenní události. Výchozí je pásmo webu.

Na co si dát pozor

  • Klíč je heslo k vašim kalendářům. Neposílejte ho e-mailem a nenechávejte ho ve webovém adresáři bez ochrany.
  • Nástěnka komponenty upozorní, když klíč chybí nebo nejde přečíst.

4. Kalendáře

Komponenty → SemaCalendar → Kalendáře jsou kalendáře, které web zobrazuje.

  1. V Google kalendáři otevřete Nastavení a sdílení kalendáře, v části Sdílet s konkrétními lidmi přidejte e-mail servisního účtu. Pro zobrazení stačí Zobrazit všechny podrobnosti o událostech.
  2. V části Integrovat kalendář zkopírujte ID kalendáře (e-mailová adresa nebo …@group.calendar.google.com).
  3. V administraci Nový, vyplňte název a Adresu kalendáře Google (to ID) a uložte.
  4. Zaškrtněte kalendář a klikněte na Ověřit přístup. Hláška řekne, jestli ho Google servisnímu účtu ukáže.

Návštěvník vidí:

volbaco je na webu
Celé údajenázev, čas, místo, popis a vlastní stránka události
Název a časjen název a čas, bez místa a popisu
Jen obsazenočas jako „Obsazeno“, nic o události

Přístup (úroveň přístupu Joomly) určuje, kdo kalendář vidí vůbec – třeba jen přihlášení členové.

Dní zpět a Dní dopředu (karta Synchronizace) říkají, jaké období web drží. Okno se posouvá samo.

Na co si dát pozor

  • Události se v administraci needitují – zdroj pravdy je Google. Změnu udělejte v Google kalendáři, web ji převezme při další synchronizaci.
  • Popis události z Googlu se na webu čistí: zůstanou odkazy a základní formátování, skripty a vložené rámy ne.
  • Smazání kalendáře v administraci smaže jen jeho kopii na webu, Google kalendáře se nedotkne.

5. Plánovaná úloha

Události se do webu načítají plánovanou úlohou, ne při otevření stránky – web je díky tomu rychlý a nenarazí na limity Googlu.

  1. Systém → Naplánované úkoly → Nový → SemaCalendar – synchronizace kalendářů.
  2. Interval 5–15 minut. Jen kalendář č. nechte 0 (všechny).
  3. Uložte. Plánovač Joomly běží buď při návštěvách webu (Lenochův plánovač), nebo z cronu hostingu – na webu s malou návštěvností doporučujeme cron.

Tatáž úloha zároveň uvolňuje nepotvrzené rezervace, dopisuje potvrzené rezervace do Googlu, když to napoprvé nevyšlo, a anonymizuje staré rezervace.

Hned teď synchronizuje tlačítko Synchronizovat teď v seznamu Události nebo Synchronizovat u vybraných kalendářů.


6. Přehled a události

Přehled (nástěnka komponenty) ukazuje události a rezervace na příštích 14 dní a stav synchronizace každého kalendáře – kdy proběhla, kolik událostí má a jestli se kalendář nepodařilo načíst.

Události je seznam všeho, co web z Googlu převzal, s filtrem podle kalendáře a času. Jen ke čtení.


7. Kalendář na webu

Položka menu typu SemaCalendar → Kalendář:

  • Kalendáře – které kalendáře stránka ukáže (prázdné = všechny zveřejněné, které návštěvník smí vidět).
  • Výchozí pohled – měsíc, týden nebo seznam. Na mobilu se vždy ukáže seznam.
  • Týden od / do (hodina) – rozsah hodin týdenního pohledu.
  • Události bez JavaScriptu – kolik nejbližších událostí stránka vypíše vyhledávačům a prohlížečům bez JavaScriptu.

Událost kalendáře s viditelností Celé údaje má vlastní stránku s popisem, místem a strukturovanými daty pro vyhledávače.

Modul SemaCalendar ukazuje nejbližší události (rozvržení Výchozí) nebo malý měsíc (rozvržení month). Stránka kalendáře je položka menu typu Kalendář, na kterou modul odkáže a pod kterou se otevřou stránky událostí.

Vzhled jde přepsat v šabloně (html/com_semacalendar/…, html/mod_semacalendar/…, html/layouts/com_semacalendar/booking/calendar.php).


8. Rezervace termínů

Rezervace stojí na dvou věcech:

  • Zdroj – kdo nebo co se rezervuje: osoba, místnost, služba. Má pracovní dobu a volitelně svůj Google kalendář.
  • Účel – co se rezervuje: délka, místo, odstup mezi rezervacemi a které zdroje ho přijímají.

Zdroje

Komponenty → SemaCalendar → Zdroje → Nový:

  • Pracovní doba – dny 1 (pondělí) až 7 (neděle), rozsah dnů pomlčkou, časy čárkou, skupiny středníkem. Příklad: 1-5 09:00-12:00,13:00-17:00; 6 09:00-12:00.
  • Adresa kalendáře Google – nepovinná. Obsazené časy v tomto kalendáři blokují termíny a potvrzená rezervace se do něj zapíše. Kalendář musí být nasdílený se servisním účtem s právem Provádět změny událostí. Bez kalendáře jsou rezervace jen na webu.
  • E-mail pro rezervace – kam chodí kopie každé potvrzené a zrušené rezervace.
  • Předstih (hodiny) – nejméně kolik hodin předem jde rezervovat.
  • Rezervace dopředu (dny) – jak daleko dopředu sahá nabídka termínů.

Ověřit přístup u zdroje zkontroluje, že web do jeho kalendáře vidí.

Účely

Komponenty → SemaCalendar → Účely → Nový: název, Délka (minuty), Odstup (minuty) (čas na přejezd nebo přípravu kolem každé rezervace), Místo (jde do e-mailů i do události) a Zdroje. Účel bez zdroje rezervovat nejde.

Kód se vytvoří z názvu. Neměňte ho u účelu, na který míří položka menu.

Stránka rezervace

Položka menu typu SemaCalendar → Rezervace. Účel a Zdroj stránku zúží na jeden účel nebo zdroj; prázdné = návštěvník vybírá.

Návštěvník vybere den a čas v kalendáři volných termínů, vyplní jméno, e-mail, případně telefon a zprávu, odsouhlasí zpracování údajů a projde captchou.

Průběh rezervace

  1. Po odeslání formuláře se termín drží (Nastavení → Rezervace → Doba držení, výchozí 30 minut) a návštěvník dostane e-mail s odkazem.
  2. Na stránce z odkazu rezervaci potvrdí. Teprve potvrzená rezervace se zapíše do Google kalendáře zdroje; návštěvník dostane potvrzení s pozvánkou (invite.ics) do svého kalendáře a zdroj kopii.
  3. Nepotvrzený termín po uplynutí doby držení dostane další zájemce a plánovaná úloha rezervaci smaže.
  4. Z odkazu v potvrzení může návštěvník rezervaci zrušit. Zmizí z kalendáře zdroje, návštěvník dostane zrušení (cancel.ics) a zdroj kopii.

Dva lidé, kteří si vyberou tentýž termín, ho nedostanou oba: volnost se ověřuje při odeslání i znovu při potvrzení.

Rezervace v administraci

Komponenty → SemaCalendar → Rezervace – seznam s filtrem podle stavu, zdroje a účelu.

  • Potvrdit – potvrdí rezervaci za návštěvníka (třeba když domluvil termín telefonem). Návštěvník dostane potvrzení s pozvánkou.
  • Zrušit rezervaci – zruší ji; návštěvník dostane zrušení.
  • Zrušenou rezervaci jde dát do koše a smazat.

Nastavení rezervací

Nastavení → Rezervace: Doba držení (min), Captcha (výchozí = captcha z globálního nastavení webu), Text souhlasu u zaškrtávátka formuláře – doplňte do něj odkaz na své zásady ochrany osobních údajů.

E-maily

Pět e-mailů (potvrzení rezervace, rezervace potvrzena, rezervace zrušena, kopie zdroji o nové a o zrušené rezervaci) se upravuje v Systém → Šablony → Šablony zpráv, filtr SemaCalendar.

Na co si dát pozor

  • Formulář bez captchy je pro roboty otevřený. Zapněte captchu v globálním nastavení webu nebo v nastavení komponenty.
  • Zdroj nebo účel, který má rezervace, nejde smazat – nechte ho v koši.
  • Když Google zrovna nejde, rezervace se potvrdí i tak a do kalendáře ji dopíše plánovaná úloha. Seznam rezervací u ní napíše „Zatím není v kalendáři zdroje“.

9. Ochrana osobních údajů

Rezervace obsahuje jméno, e-mail, telefon a zprávu návštěvníka.

  • Žádost o export a výmaz – plugin Ochrana soukromí – SemaCalendar se zapojí do Uživatelé → Soukromí → Požadavky. Export přidá rezervace s e-mailem žádosti. Výmaz nadcházející rezervace nejdřív zruší (bez e-mailu) a pak všechny anonymizuje.
  • Anonymizace smaže jméno, e-mail, telefon a zprávu, i z události v Google kalendáři zdroje. Čas, účel a zdroj zůstanou pro přehled; v seznamu rezervací je místo kontaktu „Anonymizováno“.
  • Retence – Nastavení → Rezervace → Anonymizovat rezervace po (měsících), výchozí 24. Plánovaná úloha anonymizuje rezervace, které skončily dříve. 0 = nikdy. Lhůtu nastavte podle svých zásad zpracování osobních údajů; 24 měsíců je jen výchozí hodnota, ne právní doporučení.

Souhlas s cookies komponenta neřeší – žádné cookies pro měření nenastavuje.


10. Měření

Je-li na webu měřicí plugin SemaTrack (Sema SST), ohlásí mu komponenta každou rezervaci, kterou návštěvník potvrdí, jako událost booking_confirmed s účelem a zdrojem – bez osobních údajů. Rezervace potvrzená v administraci se nehlásí, není to konverze návštěvníka. Do GA4 nebo Meta událost pustí nastavení Sema SST.

Vypnout jde v Nastavení → Rezervace → Události pro Sema SST. Bez pluginu se nic neděje.


11. Aktualizace a odinstalace

Aktualizace přichází přes Systém → Aktualizace s klíčem ke stažení ze SemaHubu (Systém → Stránky aktualizací, SemaCalendar → Aktualizační klíč).

Odinstalace balíčku smaže všechny tabulky komponenty (kalendáře, události, zdroje, účely, rezervace) a výchozí složku s klíčem. Události v Google kalendářích zůstanou.

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í.