====== Javascript/PHP Komunikácia ======
===== Tvorba html stránky =====
Pre správne fungovanie html verzie je nutná správna tvorba .tpl súboru danej stránky. Pretože OMEGA, má svoj vlastný systém generovania a publikovania html stránok je nutné ako prvé správne vytvorenie tpl, z ktorého sa daná html stránka následne ponúkne prehliadaču.
Ako prvé je nutné mať doplnený **smarty plugin** (adresár //smarty_plugins//) **function.mergeFiles.php** o **funkciu importParseYaml** nachádza sa napr. vo vetve **duch/merge7**. \\
Táto funkcia má nastarosti korektné načítanie dát z Yaml súboru a ich vloženie v správnom tvare do daného tpl súboru.
Do tpl súboru sa je nutné načítanie js a css určitým spôsobom a to následovne
{mergeFiles
type="css"
assign="tmpCssFileName"
outputDir="`$app->public_dir`web"
expireDays=10
files=""
yaml_file="testss/testss.yaml"
}
{mergeFiles
type="js"
assign="tmpJsFileName"
outputDir="`$app->public_dir`web"
expireDays=10
files=""
yaml_file="testss/testss.yaml"
}
Predtým je nutné vytvoriť v adresári modulu, adresár //form_data// a sem nahrať **yaml súbor**, ktorý je uvedený v yaml_file položke.\\
Yaml súbor obsahuje následovný tvar
css:
- main.css
- jquery-ui.min.css
- jquery-ui.structure.css
- jquery-ui.theme.css
- html/tabs/css/class_tab.css
- html/window/css/class_window.css
- html/calendar/css/calendar.css
- html/calendar/css/datapicker.css
- html/context_menu/css/class_contextMenu.css
- html/tree/css/class_tree.css
- html/gantt_planner/css/class_gantt_planner.css
- jsSmartSearch/ssearch.css
js:
- terminal.x/jquery-1.10.2.js
- terminal.x/jquery-ui.js
- function.js
- sha3.js
- md5.js
- comm_class.js
- html/includer/js/class_includer.js
- html/calendar/js/calendar_class.js
- html/calendar/js/calendar_function.js
- html/window/js/class_window.js
- html/tabs/js/class_tab.js
- html/tree/js/class_tree.js
- html/context_menu/js/class_contextMenu.js
- html/gantt_planner/js/class_gantt_planner.js
- js_smartSearch.js
module_js:
- testss.js
module_css:
- testss.css
**Dôležité** je dodržanie poradia jednotlivých súborov tak aj uvedenie //css// a //module_css//. Ako prvé sa zadáva skupina //css// a //js// toto sú css a js súbory uložené v hlavnej adresárovej štruktúre omegy a budú nahraté ako prvé, **pozor** dodržanie poradia jednotlivých súborov.
Následne sa zadávajú //module_css// a //module_js//, toto sú už súbory v adresári modulu.
**Cesta** pre js a css je relatívna voči \css\ a \js\, pre modul sa zadávajú už len názvy súbor, samozrejme plati ak je podadresár v css tak je ho nutné uviesť do danej cesty.
===== Komunikácia medzi JavaScriptom a PHP =====
Nutné súbory \\
**comm_class.js** v adresari //./js// \\
a
**commJs.class.php** v adresari //./include// \\
Pre správne fungovanie je nutné mať taktiež kompletné verzie jquery a jquery-ui.
Následne v javascripte pre danú stránku je nutné sa komunikácia inicializuje následovne
var t = new js_comunication();
var settings = {
test1:"test1",
test2:"test2"
};
t.addRawRequest( //tento request volá súbor v hlavnej štruktúre omegy t.j. /include/niečo
"url cesta k route napr. http://studio2.local/r/cool_uri",
"nasledne názov súboru case sensitive / metóda napr. testClass/testCall",
this, //tu si treba uvedomiť, kde sme t.j. či sa nenachádzame v zakladom javascripte alebo vo funkci alebo v jquery, pretože toto je návratový zdroj kam sa požiadavka vráti
[settings,"názov callBack funkcie kam sa má vrátiť výsledok z PHP", arguments]);
t.sendData();
v prípade, že sa jedná o požiadavku na modul je nutné podobné zadanie ale
var t = new js_comunication();
var settings = {
test1:"test1",
test2:"test2"
};
t.addRawRequest( //tento request volá modul súbor v hlavnej štruktúre omegy t.j. /modules/nazovModulu/include/testClass.class.php
"url cesta k route napr. http://studio2.local/r/cool_uri",
"module:nasledne názov súboru case sensitive / metóda napr. modul:testClass/testCall",
this, //tu si treba uvedomiť, kde sme t.j. či sa nenachádzame v zakladom javascripte alebo vo funkci alebo v jquery, pretože toto je návratový zdroj kam sa požiadavka vráti
[settings,"názov callBack funkcie kam sa má vrátiť výsledok z PHP", arguments]);
t.sendData();
Výsledkom je, že do zadanej callBack funkcie sa vráti status a result
function callBack(status,result)
{
console.log([status,result]);
};
**status** je true/false, **result** je Object,ObjectArray, ev dľa výsledku
Komunikácia je nastavená tak, že čaká (x milisekúnd) čas zadaný v js_comunication.js v premenej
var __timeOut__ = 30;
Kým odošle požiadavku, to znamená ak v tomto čase príjde niekoľko požiadaviek, všetky sa zabalia do jednej jedinej požiadavky, ktorá sa následne spracuje v PHP časti a odošle sa späť v tom poradí ako bola odoslaná.