Dokumentace
Dokumentace obsahuje nápovědu ke konfiguraci RON Portálu.
Dokumentace k XML formulářům je samostatně zde.
Požadavky na systém
- PHP - aktuální podporovaná verze - viz http://php.net/supported-versions.php
- webový server kompatibilní s PHP, např. IIS, Apache
- prohlížeče Firefox, Chrome, Edge
doporučujeme používat vždy aktuální verze webových prohlížečů
Nastavení časové zóny v PHP.ini
date.timezone = "Europe/Prague"
bez toho může PHP hlásit warning:
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
reset IIS serveru z příkazového řádku
net stop w3svc
net start w3svc
Použití znakové sady UTF-8
- pokud ovladač databáze umožňuje načítání dat v UTF-8 (umožňuje to například sqlsrv), lze zapnout v _appdbset.php:
$charset = 'utf-8';
Špatné zobrazení diakritiky načtené z databáze (některá písmenka jsou bez háčků, např. č, ř)
- chyba se vyskytuje obvykle na anglických windows
- je potřeba v nastavení windows změnit "jazyk pro programy které nepodporují unicode"
Připojení k databází pomocí Windows Authentication
- výhoda: v _appdbset.php nemusí být jméno a heslo databázového uživatele
- s připojením přes ODBC funguje i ve starších verzích, s připojením přes sqlsrv funguje od Portálu verze 4.901.133
Je potřeba povolit přístup do databáze uživateli, pod kterým běží php procesy spouštěné z IIS - (Na Windows 10 obvykle IIS APPPOOL\DefaultAppPool)
Na Windows 10 jsem použil tento postup v SQL Management studiu:
- Pod Security - Logins přidat uživatele (zaškrtnout Windows Authentication, zadat IIS APPPOOL\DefaultAppPool)
- Pod Databases - [DATABAZE_RON] - Security - Users přidat uživatele
- User type = Windows User
- User name = zadat nějaké jméno, třeba IIS
- Login name = IIS APPPOOL\DefaultAppPool
- Membership - vybrat db_datareader a db_datawriter
Pokud webserver poběží na jiném počítači než SQL Server, tak asi bude potřeba použít doménový účet a přenastavit IIS - netestoval jsem.
Pokud je na webserveru vypnut anonymní přístup (obvykle kvůli automatickému přihlášení), tak asi i připojení k databázi bude pod přihlášeným uživatelem - netestoval jsem
Pak v _appdbset.php zadat:
$db_user = null;
$db_password = null;
Načítání velkých dat (obrázků, dokumentů) z databáze
Pokud se databáze připojuje přes ODBC, je potřeba v php.ini nastavit dostatečně velkou hodnotu pro maximální velikost datového pole, např:
odbc.defaultlrl = 2000000
Stejně tak je potřeba nastavit limity v případě přímého připojení přes MSSQL:
mssql.textlimit = 2000000
mssql.textsize = 2000000
Oracle
- na starších verzích PHP (do 5.5) funguje rozšíření php_oci.dll
- na novějších verzích PHP (od 5.6) lze použít php_oci8_12c.dll případně novější
je k tomu potřeba mít nainstalované knihovny Oracle - např. Instant Client, ke stažení zde:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html8
Soubory musí být u php.exe nebo v cestě.
Mělo by stačit nakopírovat k php.exe tyto soubory:
oci.dll, ociw32.dll, oraociei12.dll, oraons.dll
Odesílání emailů
- aby bylo možné z portálu posílat automatické emaily (např. při schvalování absencí), musí se nastavit mailserver
- nastavení se provede v souboru _email_set.php (soubor nakopírujte ze složky install do kořene portálu)
- najčastěji se používá odesílání mailu pomocí phpmaileru ($usephpmailer = true), protože mailserver vyžaduje uživatelské jméno a heslo
- pro otestování emailu použijte stránku ...?menuid=emailtest (uživatel, který test provádí musí mít právo Nastavení Portálu = Vše)
- původní email_test.php, který se používal dříve provede redirect na správnou stránku ?menuid=emailtest
- příklady nastavení a nějaké tipy pro řešení problémů jsou v souboru install/_email_set.examples
Uživatelské texty a překlady
- zobrazované texty jsou uloženy v *.ini souborech v adresáři lang (pro každý jazyk je tam podadresář)
- soubory ron_strings.ini a app_strings.ini se načítají vždy, ostatní soubory se načítají jen v případě potřeby
(například kapacity.ini se načítají pro plánování kapacit)
- uživatelský překlad textů je možné zapsat v souboru (pokud neexistuje, vytvořte si jej)
- user/user_strings.ini (načítá se vždy)
- user/user_strings.cz.ini, user/user_strings.eng.ini, atd. - načítá se pro příslušnou jazykovou verzi (cz, eng, atd.)
- pro zjištění identifikátoru textu je možné vypnout překlady pomocí url parameteru translate=0
Uživatelská práva
V aplikaci je možné přidat nové typy práv:
- editace_mv_<kod_casove_slozky> - právo pro editaci měsíčního výsledku konkrétní časové složky
- vkladani_mzdpol_<kod_mzdove_polozky> - právo pro vkládání a editaci konkrétní mzdové položky
- absence_<kod_operace> - plánování absence s konkrétní operací
- absence_schval_<kod_operace> - schvalování absence s konkrétní operací
- pkniha_schval1_<cislo_browseru> - schvalování záznamů v pokladní knize
- pkniha_prohl_<cislo_browseru>
- pkniha_vloz_<cislo_browseru>
- slcesty_ucet_<typ_radku_uctovani> - právo pro vkládání a editaci řádku účtování služební cesty se zadaným typem účtování
- monitorovani_<kod_sloupce> - právo pro zobrazení konkrétního sloupce monitorování. Kódy lze najít v Portálu - Nastavení Portálu - Monitorování - v položce Sloupce sestavy
(např. monitorovani_casoperace, monitorovani_fotoimg a podobně)
Nastavení překladů
- výchozí jazyk se nastaví pomocí řádku:
$defaultlang = "cz";
- jako hodnotu je místo "cz" možné zadat jakýkoliv adresář s překladem, např. eng, sk
- nastavení uživatele je uloženo v cookies prohlížeče, takže při příštím spuštění se
použije poslední uživatelem zvolený jazyk
- je možné nastavit jazyk nového uživatele "natvrdo" (nepoužije se hodnota z cookies) zadáním
$g_language = "cz";
Chybová hláška Internal server error 500
- podrobný popis chyby by měl být v logu PHP (ke stažení na stránce menuid=admin)
Nejčastější příčiny
- do rootu intrawebu není nakopírován soubor _appdbset.php nebo _coding.php
- špatné nastavení připojení k databázi, nebo není v PHP.ini zapnuto rozšíření pro danou databázi
(chybová hláška se v tomto případě zobrazí ihned po přihlášení)
- špatně nastavená práva na PHP nebo obsah Intrawebu
(chybová hláška se zobrazí ihned při pokusu o zobrazení jakékoliv PHP stránky)
- špatně nastavené připojení k mailserveru
(zobrazí se při odesílání emailu)
- špatně nastavené připojení k LDAP serveru
(zobrazí se při přihlášení pomocí LDAP)
- v php.ini není nastaven soubor error_log a přitom je zapnuto log_errors
Debug mód
- Debug mód je nutné povolit v _appdbset.php:
$enabledebugmode = 1;
- po zadání parametru debug=1 v URL se pak budou zobrazovat debugovací hlášky:
http:// .... ?debug=1
Zobrazování warningů a "zdechání" Intrawebu
- zkontrolujte v php.ini nastavení
- log_errors - zkuste nastavit na Off
- error_log - pokud je log_errors=On, tak zde musí být správná hodnota
Uživatelská úprava stylů (vzhled, barvy, písma)
- uživatelské styly můžete nastavit přímo v Portálu, menu Nastavení Portálu, záložka Uživatelské styly CSS
- nebo vytvořte v rootu intrawebu soubor s_user.css a v něm nadefinujte požadované změny css stylů
Další uživatelské soubory:
user_beforeshow.php - načte se těsně před zobrazením HTML
user_session.php - načte se před session_start
Úprava a přízpůsobení vzhledu Intrawebu
- zkopírujte soubor s_user.css z podadresáře Install do hlavního adresáře Intrawebu
V tomto souboru můžete následně provádět uživatelské úpravy stylu stránek
Úpravu stylu můžeme provést také na zakázku (včetně grafického návrhu nebo podle Vašeho vlastního návrhu)
V některých formulářích je možné zobrazit i odkazy na stáhnutí tiskových sestav:
- Zpracovaná docházka - zobrazují se formuláře s kódem začínajícím ZpracovanaDochazka...
- Služební cesta - zobrazují se sestavy s kódem SluzebniCesta_... a do sestavy je předána proměnná IdSluzebniCesty
- Detail absence - zobrazují se sestavy Absence_... a jsou definované proměnné poradi a datumOd
Spouštění skriptů
Pro správnou funkčnost je potřeba
- v nastavení Intrawebu být nastaveno spouštění agentů
- mít vytvořený skript s příslušným jménem. Po zobrazení nastavevní Intrawebu je možné skript vytvořit jako událost.
Tisk
- musí být nasteveno spouštění agentů (remote executor)
- v _appdbset musí být správně nastaveny parametry pro připojení k report serveru, např:
$reportserver = 'localhost';
$reportserverport = 9090;
$showReports = true; // nepovinne - zobrazi polozku Tisk v menu
Tisk z XML - tag <report> - viz dokumentace k XML
Připojení na databázi z Linuxu
jednou z možností je použítí zastaralého rozšíření mssql s knihovnou FreeTDS
Konfigurace v php.ini:
mssql.charset = CP1250
(toto lze zadat i primo v _appdbset.php pomoci ini_set('mssql.charset', 'CP1250');
Příklad konfigurace freetds.conf (obvykle v /etc/freetds.conf) - nutno upravit podle vlastního nastavení
[jmeno-serveru]
host = jmeno-serveru
instance = SQLExpress
tds version = 7.0
client charset = cp1250
další možností je použití ODBC v kombinaci s FreeTDS. Konfigurace ODBC je popsána zde:
http://www.freetds.org/userguide/odbcconnattr.htm
Pokud se nekdy zobrazuje: Chyba v SQL dotazu! Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.
tak pravděpodobně není nastaveno tds version = 7.0 (případně 8 atd)
Vitrína – parametry v url:
1. kodjidelny - do url se zadá číslo terminálů, např. „&kodjidelny=1“
h
2. cena - do url se zadá, zda se má zobrazit cena, např. „&cena=1“ pro zobrazení ceny u položky a „&cena=0“ pro její skrytí
3. pocetsloupcu – do url se nastaví v kolika sloupcích se mají položky zobrazovat.
Pro nastavení zobrazení max. 8 položek na výšku se nemusí zadávat nic. Implicítně je nastaven počet sloupců na hodnotu 2.
Pro zobrazení max. 8 položek na šířku je potřeba zadat parametr „&pocetsloupcu=4“, tedy zobrazí se 8 položek ve 4 sloupcích.
Lze samozřejmě zobrazit položek více, pro rovnoměrné rozložení po obrazovce je potřeba zvýšit počet sloupců.
Warning Null value is Eliminated by an Aggregate or Other SET Operation
PHP Warning: odbc_execute(): SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Warning: Null value is eliminated by an aggregate or other SET operation., SQL state 01003 in SQLExecute in D:\RON\WEB\db\odbc.php on line 132
Zobrazuji se např. ve zpracované docházce (konkrétně to dělá načtení schválení docházky)
Dělá to v případě, že jsou povolené warningy (na produkčním serveru by neměly být) a v ODBC zdroji je zaškrtnuto "Use ANSI nulls, paddings and warnings"
viz
https://blog.sqlauthority.com/2015/02/13/sql-server-warning-null-value-is-eliminated-by-an-aggregate-or-other-set-operation/