====== 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á.