Skip to content

Nasazení klienta

Jan Rychtář edited this page Apr 15, 2024 · 66 revisions

Nasazení klienta

Instalace

  1. Stáhněte zip archiv zde

  2. Obsah archivu nahrajte do složky, na kterou máte nasměrovaný web server s doménou pro klienta.

Konfigurace klienta

Ve složce /assets/ vytvořte složku shared, kde budete mít všechny vlastní lokální soubory, zejména:

  • /assets/shared/favicon.ico - favicon webu
  • /assets/shared/style.css - vlastní styly. Pokud možno nepoužívejte pro přestylování aplikace, ale pro stylování vlastních stránek (stránka s informacemi, patička)
  • /assets/shared/globals.js - konfigurační soubor

globals.js

V souboru u /assets/shared/globals.js nastavte proměnné

  • APP_GLOBAL.share_url Šablona pro persistentní odkazy, např. https://kramerius.lib.cas.cz/uuid/${UUID}, není-li vyplněno, použije se DOMENA_KLIENTA/uuid/${UUID}. Pokud nemáte klienta v rootu, pak použijte DOMENA_KLIENTA/CESTA_KE_KLIENTOVI/uuid/${UUID}. Pokud má klient přístup k více Krameriům, pak např. https://www.digitalniknihovna.cz/${KRAMERIUS}/uuid/${UUID}

  • APP_GLOBAL.ga4 Google Analytics 4 ID, např. 'G-XXX'

  • APP_GLOBAL.ga4clientId Identifikátor klientské aplikace při použití stejného GA ID pro více instalací, např. 'www.digitalniknihovna.cz'

  • APP_GLOBAL.matomo Matomo Tracker Url

  • APP_GLOBAL.matomoSiteId Matomo Site Id

  • APP_GLOBAL.enablePeriodicalVolumesYearsLayout (true|false) Povolit/zakázat zobrazení přes roky u seznamu ročníků

  • APP_GLOBAL.enablePeriodicalIsssuesCalendarLayout (true|false) Povolit/zakázat zobrazení přes kalendář u seznamu čísel

  • APP_GLOBAL.defaultPeriodicalVolumesLayout (grid|years) Výchozí zobrazení u seznamu ročníků

  • APP_GLOBAL.defaultPeriodicalIssuesLayout (grid|calendar) Výchozí zobrazení u seznamu čísel

  • APP_GLOBAL.bigHomeLogo (true|false) Velké logo na hlavní stránce

  • APP_GLOBAL.hideHomeTitle (true|false) Pokud true, pak se skryje název na hlavní stránce (pouze v kombinaci s velkým logem a jedním Krameriem)

  • APP_GLOBAL.publicFilterDefault (true|false) Výchozí stav zaškrtávátka Pouze veřejné

  • APP_GLOBAL.aboutPage Viz níž Stránka s informacemi

  • APP_GLOBAL.faqPage Viz níž Stránka s FAQ

  • APP_GLOBAL.footer Viz níž Patička na hlavní stránce

  • APP_GLOBAL.newestAll (true|false) Na hlavní stránce v záložce Nejnovější se zobrazí i neveřejné dokumenty

  • APP_GLOBAL.actions Viz níž Akce v prohlížečce

  • APP_GLOBAL.defaultLanguage výchozí jazyk, např. 'cs'

  • APP_GLOBAL.languages seznamu dostupných jazyků, např. ['cs', 'en', 'de', 'sk']

  • APP_GLOBAL.googleMapsApiKey Google Maps API Key, viz níž Hledání přes pozici na podkladové mapě

  • APP_GLOBAL.cookiebar (true|false) Povolit/zakázat Cookie lištu, viz níž Cookie lišta

  • APP_GLOBAL.citationServiceUrl URL citační služby. Pokud není uvedena, použije se výchozí https://citace.kramerius.cloud

  • APP_GLOBAL.krameriusList Seznam dostupných Krameriů. Pokud bude v seznamu více než jeden Kramerius, pak bude klient fungovat v režimu více Krameriů. Na Hlavní stránce půjde Kramerius vybrat přes logo a cesta url bude začínat kódem Krameria. Každý Kramerius v seznamu je definovaný následujícími atributy.

    • title Titulek na hlavní stránce a v navbaru, např. 'Moravská zemská knihovna', viz Konfigurace hlavní strany

    • titles Stejně jako title slouží jako titulek na hlavní stránce a v navbaru, ale lze lokalizovat, viz Konfigurace hlavní strany

    • subtitle Podtitulek na hlavní stránce, např. 'Digitální knihovna Kramerius', viz Konfigurace hlavní strany

    • subtitles Stejně jako subtitle slouží jako podtitulek na hlavní stránce, ale lze lokalizovat, viz Konfigurace hlavní strany

    • code Kód Krameria použitý v režimu více Krameriů, např. 'mzk'

    • logo Logo v navbaru, např. 'http://registr.digitalniknihovna.cz/libraries/mzk/logo'

    • logoHome Logo na hlavní stránce (pokud není použito, použije se logo)

    • url Url Krameria, např. 'https://kramerius.mzk.cz'

    • richCollections (true|false) Vlastní stránka pro seznam sbírek (vyžaduje přidělení obrázků a popisů ke sbírkám).

    • joinedDoctypes (true|false) Pokud máte solr ve verzi 6 a vyšší, pak true, jinak false.

    • lemmatization (true|false) Kramerius podporuje lemmatizaci.

    • iiif (true|false) Kramerius podporuje IIIF Image API.

    • customRightMessage (true|false) Používat rightMsg hlášku z Krameria u neveřejného dokumentu.

    • doctypes seznam typů dokumentu u hledání, např. ['monograph', 'periodical', 'map', 'sheetmusic']

    • filters , seznam polí které lze procházet a filtrovat, např. ['access', 'doctypes', 'authors', 'keywords', 'geonames', 'collections', 'locations', 'languages']

    • originLink (true|false) Odkaz na Původ titulu

    • hiddenLocks (true|false) Schování zámečků

    • mapSearch (true|false) viz níž Hledání přes pozici na podkladové mapě

    • licences Nastavení licencí, viz Konfigurace licencí

    • auth Viz níž Konfigurace přihlášení

    • version (5|7) verze Krameria, výchozí hodnota 5, v případě Krameira 7, zadejte 7

    • keycloak Konfigurace keycloaku

    • termsPage Stránka s podmínkami použití před keycloak loginem, viz Konfigurace keycloaku

    • adminClientUrl url admin klienta

    • folders Uživatelské seznamy

    • curatorListsCardsVertical (true|false) Vzhled kurátorských karet, viz Konfigurace hlavní strany

    • curatorLists Kurátorské seznamy, viz Konfigurace hlavní strany

    • curatorKeywords Kurátorská klíčová slova, viz Konfigurace hlavní strany

Cookie lišta

Pro aktivaci Cookie lišty je potřeba nastavit APP_GLOBAL.cookiebar: true

Potom se bude používat Google Analytics pouze až potom, co uživatel dá souhlas s používání všech cookies nebo jen analytických cookies.

Podobně se bude používat lokální uložiště pro uživatelské preference (jazyk, naposledy navštívené, typ zobrazení výtisků/ročníků periodika a další) až potom, co uživatel dá souhlas s používání všech cookies nebo jen preferenčních cookies.

Hledání přes pozici na podkladové mapě

Georeferencované objekty je možné vyhledat přes průnik souřadnic na výřezu zobrazené podkladové mapy. Pro aktivaci této funkce je potřeba

  • mít v Krameriovi nějaké georeferencované objekty
  • nastavit APP_GLOBAL.krameriusList.mapSearch: true
  • nastavit APP_GLOBAL.googleMapsApiKey: '_KEY_', kde _KEY_ je platný Google Maps API Key (návod jak ho získat)

Pokud nemůžete/nechcete používat vlastní Google Maps API Key, tak můžete požádat Moravskou zemskou knihovnu o poskytnutí jejího klíče - pro tento klíč je pak potřeba povolit vaši doménu.

Stránka s informacemi

V konfiguraci klienta se nastaví cesty k html souborům s informacemi v češtině a angličtině:

APP_GLOBAL.aboutPage: {
    cs: '/assets/shared/about.cs.html',
    en: '/assets/shared/about.en.html'
}

Používejte jen základní html tagy (h3,h4,h5,p,a,i,b, ...) pro definici struktury a obsahu. Dokument nestylujte, zobrazení nechte na klientovi.

Stránka s informacemi není povinná. Pokud v konfiguraci APP_GLOBAL.aboutPage neuvedete, pak v toolbaru odkaz na informace nebude.

Stránka s FAQ

V konfiguraci klienta se nastaví cesty k html souborům s informacemi v češtině a angličtině:

APP_GLOBAL.faqPage: {
    cs: '/assets/shared/faq.cs.html',
    en: '/assets/shared/faq.en.html'
}

Používejte jen základní html tagy (h3,h4,h5,p,a,i,b, ...) pro definici struktury a obsahu. Dokument nestylujte, zobrazení nechte na klientovi.

Stránka s FAQ není povinná. Pokud v konfiguraci APP_GLOBAL.faqPage neuvedete, pak v toolbaru odkaz na FAQ nebude.

Patička na hlavní stránce

V konfiguraci klienta se nastaví cesty k html souborům pro patičku na hlavní stránce v češtině a angličtině:

APP_GLOBAL.footer: {
    cs: '/assets/shared/footer.cs.html',
    en: '/assets/shared/footer.en.html'
}

Patička na hlavní stráce není povinná. Pokud patičku nechcete, pak v konfiguraci APP_GLOBAL.footer nevyplňujte.

Zobrazení dostupnosti

Dostupnost se bude zobrazovat podle nastavení v poli krameriusList.filters

  • pokud pole obsahuje filtr 'accessibility', pak se použije původní způsob dostupnosti - Veřejné a Neveřejné podle policy
  • pokud pole obsahuje filtr 'access', pak se použije nový způsob dostupnosti - Veřejné, Po přihlášení a V knihovně podle kombinace policy a licencí

Akce v prohlížečce

U každé akce je možné určit, jestli má být zobrazena vždy ('always'), nikdy ('never'), jen u veřejných dokumentů ('public')

U akcí Příprava k tisku, Stáhnout PDF, JPEG stránky, Textový přepis stránky, Vybrat text a Výřez obrázku je dostupná ještě možnost jen dostupné (available) - stránky které jsou z jakéhokiliv důvodu zpřístupněny.

Při používání licencí je možné zobrazení akci dál upřesnit pro každou licenci zvlášť, viz Konfigurace licencí

Příklad

actions: {
  pdf: 'public',
  print: 'public',
  jpeg: 'available',
  text: 'available',
  citation: 'always',
  metadata: 'always',
  share: 'always',
  selection: 'public',
  crop: 'public'
}

Jednotlivé akce

  • pdf - tlačítko pro stažení PDF
  • print - tlačítko pro přípravu k tisku
  • jpeg - tlačítko pro zobrazení JPEG stránky
  • text - tlačítko pro zobrazení TXT stránky
  • citation - tlačítko pro zobrazení citace
  • metadata - tlačítko pro zobrazení metadata
  • share - tlačítko pro zobrazení sdílení
  • selection - tlačítko pro výběr textu na stránce
  • crop - tlačítko pro výřez obrázku

Konfigurace keycloaku (K7)

Keycloak konfigurace přesunuta do jádra. V klientovi se jen nastaví, že se má používat keycloak autentizace. Příklad

...
keycloak: true,
termsPage: {
  cs: '/assets/shared/terms/terms.cs.html',
  en: '/assets/shared/terms/terms.en.html'
},
termsPage2: {
  cs: '/assets/shared/terms/terms2.cs.html',
  en: '/assets/shared/terms/terms2.en.html'
},
termsUrl: {
  cs: 'https://kramerius.k7-test.mzk.cz/assets/shared/terms/terms_of_use.html',
  en: 'https://kramerius.k7-test.mzk.cz/assets/shared/terms/terms_of_use.html?lang=en'
},
...

Volitelně je možné zadat termsPage2, které se zobrazí pod odsouhlasení podmínek a tlačítko přihlášení.

Pokud je uvedeno termsUrl, se u souhlasu s podmínkami v textu "Souhlasím s podmínkami použití" změní text "podmínkami použití" na odkaz vedoucí na uvedené url.

Konfigurace přihlášení (K5)

Příklad

auth: {
  logoutUrl: 'https://dnnt.mzk.cz/Shibboleth.sso/Logout',
  loginUrl: 'https://dnnt.mzk.cz/podminky-zpristupneni'
}

Použití společně s licencemi, viz Konfigurace licencí

Příklad konfigurace

var APP_GLOBAL = { share_url: "https://kramerius.mzk.cz/uuid/${UUID}", ga: "ABC", enablePeriodicalVolumesYearsLayout: true, enablePeriodicalIsssuesCalendarLayout: true, defaultPeriodicalVolumesLayout: "years", defaultPeriodicalIssuesLayout: "calendar", publicFilterDefault: false, bigHomeLogo: true, hideHomeTitle: false, newestAll: true, aboutPage: { cs: '/assets/shared/about.cs.html', en: '/assets/shared/about.en.html', }, footer: { cs: '/assets/shared/footer.cs.html', en: '/assets/shared/footer.cs.html', }, actions: { pdf: 'public', print: 'public', jpeg: 'available', text: 'available', citation: 'always', metadata: 'always', share: 'always', selection: 'public', crop: 'public' }, defaultLanguage: 'cs', languages: ['cs', 'en', 'de', 'sk'], krameriusList: [ { title: 'Moravská zemská knihovna', code: "mzk", logo: 'https://kramerius.mzk.cz/assets/shared/logo.png', url: 'https://kramerius.mzk.cz', iiif: true, richCollections: true, joinedDoctypes: true, mapSearch: true, customRightMessage: true, doctypes: ['periodical', 'monograph', 'map', 'graphic', 'archive', 'manuscript', 'soundrecording', 'sheetmusic'], filters: ['access', 'licences', 'doctypes', 'authors', 'keywords', 'geonames', 'collections', 'locations', 'languages'] } ] }


## Konfigurace web serveru
Je potřeba přesměrovat všechny requesty na neexistující stránky na stránku /index.html (aplikace se ve skutečnosti skládá pouze z této jediné stránky).

### Apache
V adresáři s aplikací vytvořit soubor .htaccess s následujícím obsahem

RewriteEngine On

If the request is a file, folder or symlink that exists, serve it up

RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+)$ - [S=1]

otherwise, serve your index.html app

RewriteRule ^(.+)$ /index.html


### Nginx
V /etc/nginx/sites-enabled/default
Přidat do definice serveru:

location / { try_files $uri $uri/ /index.html; }


Např.

server { listen 80 default_server; listen [::]:80 default_server; root /home/kramerius/client; index index.html; server_name kramerius.example.com; location / { try_files $uri $uri/ /index.html; } }