Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verziou danej stránky.
Next revision | Previous revision | ||
dev:omega:js:js-php:start [2015/10/20 09:11] Boris Duchaj vytvorené |
dev:omega:js:js-php:start [2017/01/10 09:06] (aktuálne) Boris Duchaj |
||
---|---|---|---|
Riadok 1: | Riadok 1: | ||
- | Komunikácia medzi JavaScriptom a PHP API v Omege je zabezpečená triedou **commclass.js** v adresari //js// a **commJs.class.php** v adresari //include// | + | ====== 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 | ||
+ | |||
+ | <code tpl> | ||
+ | {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" | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | <code yaml> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | <color red> **Dôležité** </color> 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 | ||
+ | <code javascript> | ||
+ | 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(); | ||
+ | </code> | ||
+ | |||
+ | v prípade, že sa jedná o požiadavku na modul je nutné podobné zadanie ale | ||
+ | <code javascript> | ||
+ | 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(); | ||
+ | </code> | ||
+ | |||
+ | Výsledkom je, že do zadanej callBack funkcie sa vráti status a result | ||
+ | <code javascript> | ||
+ | function callBack(status,result) | ||
+ | { | ||
+ | console.log([status,result]); | ||
+ | }; | ||
+ | </code> | ||
+ | |||
+ | **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 | ||
+ | <code> | ||
+ | var __timeOut__ = 30; | ||
+ | </code> | ||
+ | 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á. |